start_round by minigame name
This commit is contained in:
@@ -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,17 +23,25 @@ public partial class MinigameManager : Entity
|
||||
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 )
|
||||
{
|
||||
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()
|
||||
|
||||
@@ -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<Lucker>().ToList();
|
||||
MinigameManager.StartRandomMinigame( Players );
|
||||
|
||||
if ( string.IsNullOrEmpty( minigameName ) )
|
||||
{
|
||||
MinigameManager.StartMinigame( Players );
|
||||
}
|
||||
else
|
||||
{
|
||||
MinigameManager.StartMinigame( Players, minigameName );
|
||||
}
|
||||
}
|
||||
|
||||
[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 );
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user