46 lines
937 B
C#
46 lines
937 B
C#
|
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()
|
||
|
{
|
||
|
if (ScoreSum == WinScore)
|
||
|
OnFinished?.Invoke();
|
||
|
}
|
||
|
}
|