From 5c0a454b791d81dbe528255025a21c13307b139a Mon Sep 17 00:00:00 2001 From: mccarreon Date: Wed, 2 Aug 2023 22:54:05 -0700 Subject: [PATCH 1/3] start_round by minigame name --- code/Entities/MinigameManager.cs | 22 ++++++++++++++++------ code/Entities/RoundManager.cs | 32 ++++++++++++++++++++------------ 2 files changed, 36 insertions(+), 18 deletions(-) diff --git a/code/Entities/MinigameManager.cs b/code/Entities/MinigameManager.cs index 0832c8b..71f2fc9 100644 --- a/code/Entities/MinigameManager.cs +++ b/code/Entities/MinigameManager.cs @@ -1,7 +1,9 @@ using System; using System.Collections.Generic; using System.Linq; +using System.Reflection.Metadata.Ecma335; using LuckerGame.Minigames; +using LuckerGame.Minigames.RussianRoulette; using Sandbox; using Sandbox.UI; @@ -21,19 +23,27 @@ public partial class MinigameManager : Entity FindMinigames(); } - public void StartRandomMinigame(List players) + public void StartMinigame(List players, string minigameName = null) + { + if (CheckForMinigames()) + { + LoadedMinigame = string.IsNullOrEmpty( minigameName ) ? AvailableMinigames.OrderBy( _ => Guid.NewGuid() ).FirstOrDefault() : TypeLibrary.Create( minigameName ); + ChatBox.AddInformation( To.Everyone, $"Starting {LoadedMinigame.Name}" ); + LoadedMinigame.Initialize( players ); + } + } + + private bool CheckForMinigames() { if ( (AvailableMinigames?.Count ?? 0) == 0 ) { Log.Error( "Attempted to start minigame, but none available" ); - return; + return false; } - LoadedMinigame = AvailableMinigames.OrderBy( _ => Guid.NewGuid() ).FirstOrDefault(); - ChatBox.AddInformation( To.Everyone, $"Starting {LoadedMinigame.Name}" ); - LoadedMinigame.Initialize( players ); + return true; } - + private void FindMinigames() { AvailableMinigames = TypeLibrary.GetTypes() diff --git a/code/Entities/RoundManager.cs b/code/Entities/RoundManager.cs index 6bcae21..21af6e1 100644 --- a/code/Entities/RoundManager.cs +++ b/code/Entities/RoundManager.cs @@ -17,7 +17,7 @@ public partial class RoundManager : Entity /// The minigame manager we should be using to manage minigames /// private MinigameManager MinigameManager { get; set; } - + /// /// This percentage of the lobby must be ready to start the countdown for round start /// @@ -27,30 +27,30 @@ public partial class RoundManager : Entity /// The number of seconds from the timer starting before the round starts /// private const float RoundStartCountdownSeconds = 5f; - + /// /// The state of the current round /// [Net] public RoundState RoundState { get; private set; } - + #region Countdown State /// /// How long since we started counting down to game start. Only useful if in the StartCountdown state. /// [Net] public TimeSince TimeSinceCountdownStarted { get; set; } - + /// /// The number of seconds left in the countdown. Only useful if in the StartCountdown state. /// public int SecondsLeftInCountdown => (int)Math.Ceiling( RoundStartCountdownSeconds - TimeSinceCountdownStarted ); #endregion - + #region In Progress State private const int MinigamesPerRound = 1; - + private int MinigamesLeftInRound { get; set; } - + private List Players { get; set; } #endregion @@ -110,7 +110,7 @@ public partial class RoundManager : Entity } } - private void StartRound() + private void StartRound( string minigameName = null ) { if ( RoundState == RoundState.InProgress ) { @@ -120,12 +120,20 @@ public partial class RoundManager : Entity RoundState = RoundState.InProgress; Players = All.OfType().ToList(); - MinigameManager.StartRandomMinigame( Players ); + + if ( string.IsNullOrEmpty( minigameName ) ) + { + MinigameManager.StartMinigame( Players ); + } + else + { + MinigameManager.StartMinigame( Players, minigameName ); + } } - [ConCmd.Server("start_round")] - public static void ForceStart() + [ConCmd.Server( "start_round" )] + public static void ForceStart( string minigameName = null ) { - Entity.All.OfType().FirstOrDefault()?.StartRound(); + Entity.All.OfType().FirstOrDefault()?.StartRound( minigameName ); } } From 35be78c3417596e0782b54d72fb3167f7f85541e Mon Sep 17 00:00:00 2001 From: mccarreon Date: Wed, 2 Aug 2023 22:55:17 -0700 Subject: [PATCH 2/3] getting rid of unnecessary lines --- code/Entities/MinigameManager.cs | 2 -- 1 file changed, 2 deletions(-) diff --git a/code/Entities/MinigameManager.cs b/code/Entities/MinigameManager.cs index 71f2fc9..b3b8fa5 100644 --- a/code/Entities/MinigameManager.cs +++ b/code/Entities/MinigameManager.cs @@ -1,9 +1,7 @@ using System; using System.Collections.Generic; using System.Linq; -using System.Reflection.Metadata.Ecma335; using LuckerGame.Minigames; -using LuckerGame.Minigames.RussianRoulette; using Sandbox; using Sandbox.UI; From ef88c514541d62b8691b16be84f82d6a940f3004 Mon Sep 17 00:00:00 2001 From: mccarreon Date: Wed, 2 Aug 2023 23:12:31 -0700 Subject: [PATCH 3/3] shortening StartRound --- code/Entities/RoundManager.cs | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/code/Entities/RoundManager.cs b/code/Entities/RoundManager.cs index 21af6e1..e4f3780 100644 --- a/code/Entities/RoundManager.cs +++ b/code/Entities/RoundManager.cs @@ -120,15 +120,7 @@ public partial class RoundManager : Entity RoundState = RoundState.InProgress; Players = All.OfType().ToList(); - - if ( string.IsNullOrEmpty( minigameName ) ) - { - MinigameManager.StartMinigame( Players ); - } - else - { - MinigameManager.StartMinigame( Players, minigameName ); - } + MinigameManager.StartMinigame( Players, minigameName ); } [ConCmd.Server( "start_round" )]