Engine-Pong/Game/Behaviours/PongScoreboard.cs

48 lines
1021 B
C#
Raw Normal View History

2024-01-28 15:33:36 +03:00
using System;
using Syntriax.Engine.Core;
namespace Pong.Behaviours;
public class PongScoreboard(int WinScore) : BehaviourOverride
{
public Action? OnReset { get; set; } = null;
public Action? OnFinished { get; set; } = null;
public Action? OnScored { get; set; } = null;
public int ScoreLeft { get; private set; } = 0;
public int ScoreRight { get; private set; } = 0;
public int ScoreSum => ScoreLeft + ScoreRight;
public int WinScore { get; } = WinScore;
public void ScoreToLeft()
{
ScoreLeft++;
OnScored?.Invoke();
CheckFinish();
}
public void ScoreToRight()
{
ScoreRight++;
OnScored?.Invoke();
CheckFinish();
}
public void Reset()
{
ScoreLeft = ScoreRight = 0;
OnReset?.Invoke();
}
private void CheckFinish()
{
2024-01-29 12:34:27 +03:00
int halfwayScore = (int)(WinScore * .5f);
if (ScoreLeft > halfwayScore || ScoreRight > halfwayScore)
2024-01-28 15:33:36 +03:00
OnFinished?.Invoke();
}
}