Updates based on PR feedback

This commit is contained in:
gamer147
2023-08-05 22:04:44 -04:00
parent 1b34af21ee
commit 5735087889
10 changed files with 85 additions and 76 deletions

View File

@@ -6,18 +6,18 @@ using Sandbox;
namespace LuckerGame.Entities;
/// <summary>
/// Represents a Player.
/// Represents a person playing the game.
/// This could belong to a Client or a Bot and represents a common entity to operate on for games and keeping score
/// </summary>
public partial class Lucker : Entity
{
/// <summary>
/// The entity this player controls. This value is networked and should be accessed through <see cref="Pawn"/>.
/// The entity this lucker controls. This value is networked and should be accessed through <see cref="Pawn"/>.
/// </summary>
[Net] private Entity InternalPawn { get; set; }
/// <summary>
/// Accesses or sets the entity this player current controls
/// Accesses or sets the entity this lucker currently controls
/// </summary>
public Entity Pawn
{
@@ -33,7 +33,7 @@ public partial class Lucker : Entity
}
/// <summary>
/// Before the round has started, this player indicated they were ready
/// Before the round has started, this lucker indicated they were ready
/// </summary>
[Net] public bool Ready { get; set; }
@@ -45,20 +45,20 @@ public partial class Lucker : Entity
[BindComponent] public LuckerStats Stats { get; }
/// <summary>
/// Creates and properly sets up a Player entity for a given client
/// Creates and properly sets up a <see cref="Lucker"/> entity for a given client
/// </summary>
/// <param name="client">the client to own the player</param>
/// <returns>the newly created player</returns>
/// <param name="client">the client to own the lucker</param>
/// <returns>the newly created lucker</returns>
public static Lucker CreateLuckerForClient( IClient client )
{
var player = new Lucker();
client.Pawn = player;
player.Owner = client as Entity;
player.Name = client.Name;
var camera = player.Components.Create<RTSCamera>();
var stats = player.Components.Create<LuckerStats>();
var lucker = new Lucker();
client.Pawn = lucker;
lucker.Owner = client as Entity;
lucker.Name = client.Name;
lucker.Components.Create<RTSCamera>();
lucker.Components.Create<LuckerStats>();
return player;
return lucker;
}
/// <summary>
@@ -69,12 +69,12 @@ public partial class Lucker : Entity
public static void ReadyUpCommand(bool readyState)
{
var client = ConsoleSystem.Caller;
var player = client.Pawn as Lucker;
player.SetReady( readyState );
var lucker = client.Pawn as Lucker;
lucker.SetReady( readyState );
}
/// <summary>
/// Sets this player's ready state
/// Sets this lucker's ready state
/// </summary>
/// <param name="ready">the ready state being set</param>
public void SetReady(bool ready)
@@ -82,7 +82,7 @@ public partial class Lucker : Entity
Ready = ready;
if ( Game.IsServer )
{
Event.Run( LuckerEvent.PlayerReady, this, ready );
Event.Run( LuckerEvent.LuckerReady, this, ready );
}
}

View File

@@ -23,9 +23,9 @@ public partial class MinigameManager : Entity
private List<TypeDescription> AvailableMinigames { get; set; }
/// <summary>
/// The players involved in the current minigame
/// The luckers involved in the current minigame
/// </summary>
private List<Lucker> InvolvedPlayers { get; set; }
private List<Lucker> InvolvedLuckers { get; set; }
public override void Spawn()
{
@@ -33,14 +33,17 @@ public partial class MinigameManager : Entity
FindMinigames();
}
public void StartMinigame(List<Lucker> players, string minigameName = null)
public void StartMinigame(List<Lucker> luckers, string minigameName = null)
{
InvolvedPlayers = players.ToList();
InvolvedLuckers = luckers.ToList();
if (CheckForMinigames())
{
LoadedMinigame = string.IsNullOrEmpty( minigameName ) ? TypeLibrary.Create<Minigame>(AvailableMinigames.OrderBy( _ => Guid.NewGuid() ).FirstOrDefault().TargetType) : 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}" );
LoadedMinigame.Initialize( players );
LoadedMinigame.Initialize( luckers );
}
}
@@ -69,19 +72,19 @@ public partial class MinigameManager : Entity
}
/// <summary>
/// Goes through the players included in the loaded minigame and deletes and nulls out any pawns assigned to them
/// Goes through the luckers included in the loaded minigame and deletes and nulls out any pawns assigned to them
/// </summary>
private void CleanupPlayerPawns()
private void CleanupLuckerPawns()
{
if ( LoadedMinigame is not { IsValid: true } || InvolvedPlayers == null)
if ( LoadedMinigame is not { IsValid: true } || InvolvedLuckers == null)
{
Log.Warning( "Attempted to clean up players without a minigame loaded!" );
return;
}
InvolvedPlayers.ForEach( player =>
InvolvedLuckers.ForEach( lucker =>
{
player.Pawn?.Delete();
player.Pawn = null;
lucker.Pawn?.Delete();
lucker.Pawn = null;
} );
}
@@ -100,11 +103,16 @@ public partial class MinigameManager : Entity
{
return false;
}
LoadedMinigame.Cleanup();
CleanupPlayerPawns();
LoadedMinigame = null;
EndMinigame();
return true;
}
private void EndMinigame()
{
LoadedMinigame.Cleanup();
CleanupLuckerPawns();
LoadedMinigame.Delete();
LoadedMinigame = null;
InvolvedLuckers = null;
}
}

View File

@@ -52,7 +52,7 @@ public partial class RoundManager : Entity
[ConVar.Replicated("lucker_minigames_per_round")]
public static int MinigamesLeftInRound { get; set; }
private List<Lucker> Players { get; set; }
private List<Lucker> Luckers { get; set; }
#endregion
/// <inheritdoc/>
@@ -83,7 +83,7 @@ public partial class RoundManager : Entity
MinigamesLeftInRound--;
if ( MinigamesLeftInRound > 0 )
{
MinigameManager.StartMinigame( Players );
MinigameManager.StartMinigame( Luckers );
}
else
{
@@ -94,11 +94,12 @@ public partial class RoundManager : Entity
}
/// <summary>
/// Is triggered whenever a player readies up
/// Is triggered whenever a lucker readies up or readies down
/// </summary>
/// <param name="readyLucker">the player that readied up, discarded</param>
[LuckerEvent.PlayerReady]
public void HandlePlayerReady( Lucker readyLucker, bool ready )
/// <param name="readyLucker">the lucker that readied up</param>
/// <param name="ready">the lucker's ready state</param>
[LuckerEvent.LuckerReady]
public void HandleLuckerReady( Lucker readyLucker, bool ready )
{
if ( RoundState != RoundState.NotStarted && RoundState != RoundState.StartCountdown )
{
@@ -107,9 +108,9 @@ public partial class RoundManager : Entity
Log.Info( $"{readyLucker.Client.Name} set ready to {ready}" );
var message = $"{readyLucker.Client.Name} is {(ready ? "now ready." : "no longer ready.")}";
ChatBox.AddInformation( To.Everyone, message );
var players = All.OfType<Lucker>().ToList();
var readiedCount = players.Count( player => player.Ready );
var totalCount = players.Count;
var luckers = All.OfType<Lucker>().ToList();
var readiedCount = luckers.Count( lucker => lucker.Ready );
var totalCount = luckers.Count;
if ( (float)readiedCount / totalCount > RequiredReadyPercent && RoundState == RoundState.NotStarted )
{
Log.Info( "Countdown started" );
@@ -132,13 +133,13 @@ public partial class RoundManager : Entity
}
RoundState = RoundState.InProgress;
Players = All.OfType<Lucker>().ToList();
Players.ForEach( player =>
Luckers = All.OfType<Lucker>().ToList();
Luckers.ForEach( lucker =>
{
player.Ready = false;
lucker.Ready = false;
} );
MinigamesLeftInRound = MinigamesPerRound;
MinigameManager.StartMinigame( Players, minigameName );
MinigameManager.StartMinigame( Luckers, minigameName );
}
[ConCmd.Server( "start_round" )]

View File

@@ -76,7 +76,7 @@ public partial class Weapon : AnimatedEntity
}
/// <summary>
/// Called when the weapon is either removed from the player, or holstered.
/// Called when the weapon is either removed from the pawn, or holstered.
/// </summary>
public void OnHolster()
{