diff --git a/Assets/Scripts/Managers/MatchManager.cs b/Assets/Scripts/Managers/MatchManager.cs
index e582393..c217d26 100644
--- a/Assets/Scripts/Managers/MatchManager.cs
+++ b/Assets/Scripts/Managers/MatchManager.cs
@@ -140,6 +140,9 @@ namespace Managers
/// A change in the matches progression.
public void UpdateMatchCondition(MatchConditionUpdate update)
{
+ // Quit updating when the round is over
+ if (CurrentMatchResult.IsRoundWon)
+ return;
Player updatedPlayer = null;
foreach (Player p in PlayerManager.G.MatchPlayers)
{
@@ -169,7 +172,7 @@ namespace Managers
else
{
Log.Info($"Round {CurrentMatchResult.RoundsPlayed} of {MatchRule.rounds} has ended." +
- $"{CurrentMatchResult.Winner?.name} won this round.");
+ $"{CurrentMatchResult.Winner?.playerName} won this round.");
AnnounceRoundWinner(CurrentMatchResult);
}
}
@@ -278,11 +281,12 @@ namespace Managers
UIManager.G.Announcments.QueueAnnounceText($"{mr.Winner.playerName}" +
" has won the Round! \n" +
$"They won {winnerStats.RoundsWon} out of {MatchRule.rounds}.",
- 1.618f);
+ 3f);
- await Tween.Delay(1.618f * 0.33f);
+ await Tween.Delay(3f * 0.33f);
matchState = MatchState.Pause;
- await Tween.Delay(1.618f * 0.66f);
+ ResetRound();
+ await Tween.Delay(3f * 0.66f);
ResetMatchCharacters();
@@ -305,6 +309,14 @@ namespace Managers
SetupMatchPlayerStatistics();
}
+ ///
+ /// Resets the round statistics.
+ ///
+ public void ResetRound()
+ {
+ CurrentMatchResult.IsRoundWon = false;
+ }
+
///
/// Initializes the match, waits for match begin
/// confirmation by the players and counts down to start.
diff --git a/Assets/Scripts/Managers/UIManager.cs b/Assets/Scripts/Managers/UIManager.cs
index bda75fa..5e90f87 100644
--- a/Assets/Scripts/Managers/UIManager.cs
+++ b/Assets/Scripts/Managers/UIManager.cs
@@ -129,21 +129,29 @@ namespace Managers
public void ShowPauseMenu(Transform transform)
{
+ hUD?.Hide();
PauseMenu?.Show(transform);
}
public void HidePauseMenu()
{
PauseMenu?.Hide();
+ hUD?.Show();
}
public void ShowMatchEndMenu(Transform transform)
{
+ hUD?.Hide();
MatchEndMenu?.Show(transform);
}
public void HideMatchEndMenu()
{
MatchEndMenu?.Hide();
+ hUD?.Show();
+ }
+ public void ShowHUD()
+ {
+ hUD?.Show();
}
public void HideHUD()
diff --git a/Assets/Scripts/MatchLogic.cs b/Assets/Scripts/MatchLogic.cs
index 1efd065..56ea836 100644
--- a/Assets/Scripts/MatchLogic.cs
+++ b/Assets/Scripts/MatchLogic.cs
@@ -66,6 +66,7 @@ namespace GameLogic
/// Indicates whether a round or the whole match was won
///
public bool IsMatchWon { get; private set; }
+ public bool IsRoundWon { get; set; }
public int RoundsPlayed { get; private set; }
public Player Winner { get; private set; }
public List Opponents { get; private set; }
@@ -86,25 +87,35 @@ namespace GameLogic
Opponents = mps.Keys.Where(player => player != Winner).ToList();
mps[Winner].RoundsWon += 1;
RoundsPlayed += 1;
+ IsRoundWon = true;
}
else
{
Winner = null;
}
- // TODO: this is wrong winning 2 rounds can decide the match
+
+ foreach (Player p in mps.Keys)
+ {
+ if (mps[p].RoundsWon > rules.rounds / 2)
+ {
+ IsMatchWon = true;
+ Winner = p;
+ Opponents = mps.Keys.Where(player => player != Winner).ToList();
+ return;
+ }
+ }
+
if (RoundsPlayed == rules.rounds)
{
IsMatchWon = true;
Winner = mps.Aggregate((p1, p2) =>
p1.Value.RoundsWon > p2.Value.RoundsWon ? p1 : p2).Key;
Opponents = mps.Keys.Where(player => player != Winner).ToList();
+ return;
}
- else
+ foreach (var statistic in mps.Values)
{
- foreach (var statistic in mps.Values)
- {
- statistic.IsOut = false;
- }
+ statistic.IsOut = false;
}
}
}
diff --git a/Assets/Scripts/UI/HUD.cs b/Assets/Scripts/UI/HUD.cs
index daa16d1..65a3e99 100644
--- a/Assets/Scripts/UI/HUD.cs
+++ b/Assets/Scripts/UI/HUD.cs
@@ -36,4 +36,9 @@ public class HUD : MonoBehaviour
canvas.enabled = false;
}
+ public void Show()
+ {
+ canvas.enabled = true;
+ }
+
}