Change how minigames are found and loaded to avoid needing to reset tons of state in initialize

This commit is contained in:
gamer147
2023-08-03 12:42:39 -04:00
parent a5a734b31a
commit 35b16afd9a
2 changed files with 4 additions and 3 deletions

View File

@@ -13,7 +13,7 @@ namespace LuckerGame.Entities;
public partial class MinigameManager : Entity public partial class MinigameManager : Entity
{ {
[Net] public Minigame LoadedMinigame { get; private set; } [Net] public Minigame LoadedMinigame { get; private set; }
private List<Minigame> AvailableMinigames { get; set; } private List<TypeDescription> AvailableMinigames { get; set; }
private List<Lucker> InvolvedPlayers { get; set; } private List<Lucker> InvolvedPlayers { get; set; }
public override void Spawn() public override void Spawn()
@@ -27,7 +27,7 @@ public partial class MinigameManager : Entity
InvolvedPlayers = players.ToList(); InvolvedPlayers = players.ToList();
if (CheckForMinigames()) if (CheckForMinigames())
{ {
LoadedMinigame = string.IsNullOrEmpty( minigameName ) ? AvailableMinigames.OrderBy( _ => Guid.NewGuid() ).FirstOrDefault() : TypeLibrary.Create<Minigame>( minigameName ); LoadedMinigame = string.IsNullOrEmpty( minigameName ) ? TypeLibrary.Create<Minigame>(AvailableMinigames.OrderBy( _ => Guid.NewGuid() ).FirstOrDefault().TargetType) : TypeLibrary.Create<Minigame>( minigameName );
ChatBox.AddInformation( To.Everyone, $"Starting {LoadedMinigame.Name}" ); ChatBox.AddInformation( To.Everyone, $"Starting {LoadedMinigame.Name}" );
LoadedMinigame.Initialize( players ); LoadedMinigame.Initialize( players );
} }
@@ -48,7 +48,7 @@ public partial class MinigameManager : Entity
{ {
AvailableMinigames = TypeLibrary.GetTypes<Minigame>() AvailableMinigames = TypeLibrary.GetTypes<Minigame>()
.Where( type => !type.IsAbstract && !type.IsInterface ) .Where( type => !type.IsAbstract && !type.IsInterface )
.Select( td => TypeLibrary.Create<Minigame>( td.TargetType ) ).ToList(); .ToList();
} }
[Event.Hotload] [Event.Hotload]

View File

@@ -61,6 +61,7 @@ public class RussianRouletteMinigame : Minigame
pawn.LookAt(Shooter.Position); pawn.LookAt(Shooter.Position);
} ); } );
TimeSinceShot = 0; TimeSinceShot = 0;
Taunted = 0;
} }
public override bool Tick() public override bool Tick()