From fbe308750253768e65cad79e318640787bd1c2a0 Mon Sep 17 00:00:00 2001 From: Syntriax Date: Sun, 28 Jan 2024 15:33:36 +0300 Subject: [PATCH] feat: PongScoreboard --- Game/Behaviours/PongScoreboard.cs | 45 +++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 Game/Behaviours/PongScoreboard.cs diff --git a/Game/Behaviours/PongScoreboard.cs b/Game/Behaviours/PongScoreboard.cs new file mode 100644 index 0000000..58cc316 --- /dev/null +++ b/Game/Behaviours/PongScoreboard.cs @@ -0,0 +1,45 @@ +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(); + } +}