start_round by minigame name

This commit is contained in:
mccarreon
2023-08-02 22:54:05 -07:00
parent bdb25fd3ce
commit 5c0a454b79
2 changed files with 36 additions and 18 deletions

View File

@@ -1,7 +1,9 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Reflection.Metadata.Ecma335;
using LuckerGame.Minigames; using LuckerGame.Minigames;
using LuckerGame.Minigames.RussianRoulette;
using Sandbox; using Sandbox;
using Sandbox.UI; using Sandbox.UI;
@@ -21,17 +23,25 @@ public partial class MinigameManager : Entity
FindMinigames(); FindMinigames();
} }
public void StartRandomMinigame(List<Lucker> players) public void StartMinigame(List<Lucker> players, string minigameName = null)
{
if (CheckForMinigames())
{
LoadedMinigame = string.IsNullOrEmpty( minigameName ) ? AvailableMinigames.OrderBy( _ => Guid.NewGuid() ).FirstOrDefault() : TypeLibrary.Create<Minigame>( minigameName );
ChatBox.AddInformation( To.Everyone, $"Starting {LoadedMinigame.Name}" );
LoadedMinigame.Initialize( players );
}
}
private bool CheckForMinigames()
{ {
if ( (AvailableMinigames?.Count ?? 0) == 0 ) if ( (AvailableMinigames?.Count ?? 0) == 0 )
{ {
Log.Error( "Attempted to start minigame, but none available" ); Log.Error( "Attempted to start minigame, but none available" );
return; return false;
} }
LoadedMinigame = AvailableMinigames.OrderBy( _ => Guid.NewGuid() ).FirstOrDefault(); return true;
ChatBox.AddInformation( To.Everyone, $"Starting {LoadedMinigame.Name}" );
LoadedMinigame.Initialize( players );
} }
private void FindMinigames() private void FindMinigames()

View File

@@ -110,7 +110,7 @@ public partial class RoundManager : Entity
} }
} }
private void StartRound() private void StartRound( string minigameName = null )
{ {
if ( RoundState == RoundState.InProgress ) if ( RoundState == RoundState.InProgress )
{ {
@@ -120,12 +120,20 @@ public partial class RoundManager : Entity
RoundState = RoundState.InProgress; RoundState = RoundState.InProgress;
Players = All.OfType<Lucker>().ToList(); Players = All.OfType<Lucker>().ToList();
MinigameManager.StartRandomMinigame( Players );
if ( string.IsNullOrEmpty( minigameName ) )
{
MinigameManager.StartMinigame( Players );
}
else
{
MinigameManager.StartMinigame( Players, minigameName );
}
} }
[ConCmd.Server("start_round")] [ConCmd.Server( "start_round" )]
public static void ForceStart() public static void ForceStart( string minigameName = null )
{ {
Entity.All.OfType<RoundManager>().FirstOrDefault()?.StartRound(); Entity.All.OfType<RoundManager>().FirstOrDefault()?.StartRound( minigameName );
} }
} }