start_round with minigame name #1

Merged
conco merged 3 commits from terry-races into master 2023-08-03 06:15:15 +00:00
2 changed files with 36 additions and 18 deletions
Showing only changes of commit 5c0a454b79 - Show all commits

View File

@@ -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()

View File

@@ -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 ) )
fork marked this conversation as resolved Outdated
Outdated
Review

Just pass in minigameName, we check if it's null so either it's null and we pass null or we dont pass null and it's stil null.

Just pass in minigameName, we check if it's null so either it's null and we pass null or we dont pass null and it's stil null.
Outdated
Review

DONE

DONE
{
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<RoundManager>().FirstOrDefault()?.StartRound();
Entity.All.OfType<RoundManager>().FirstOrDefault()?.StartRound( minigameName );
}
}