From 71db52c5443a7bf82d9a23a770994a42b043be04 Mon Sep 17 00:00:00 2001 From: Leonardo Bishop Date: Thu, 27 Jul 2023 22:11:31 +0100 Subject: Initial commit --- code/Game.cs | 75 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 code/Game.cs (limited to 'code/Game.cs') diff --git a/code/Game.cs b/code/Game.cs new file mode 100644 index 0000000..e603fda --- /dev/null +++ b/code/Game.cs @@ -0,0 +1,75 @@ + +using Sandbox; +using System; +using System.Collections.Generic; +using System.Linq; + +namespace MurderGame; + +public partial class MurderGame : Sandbox.GameManager +{ + public MurderGame() + { + if ( Game.IsClient ) + { + Game.RootPanel = new Hud(); + } + // if ( Game.IsServer ) + // { + // // The packageName should always match org.ident + // // In this case, we ask to download gvar.citizen_zombie -> https://asset.party/gvar/citizen_zombie + // DownloadAsset( "gvar.citizen_zombie" ); + // } + } + + public static MurderGame Instance + { + get => Current as MurderGame; + } + + + [ConVar.Server( "mm_min_players", Help = "The minimum number of players required to start a round." )] + public static int MinPlayers { get; set; } = 2; + + [ConVar.Server( "mm_allow_suicide", Help = "Allow players to kill themselves during a round." )] + public static bool AllowSuicide { get; set; } = true; + + [ConVar.Server( "mm_round_time", Help = "The amount of time in a round." )] + public static int RoundTime { get; set; } = 600; + + [Net] + public BasePhase CurrentPhase { get; set; } = new WaitPhase() { CountIn = true }; + + [GameEvent.Tick.Server] + public void TickServer() + { + CurrentPhase.Tick(); + + if (CurrentPhase.NextPhase != null && CurrentPhase.IsFinished) + { + CurrentPhase.Deactivate(); + CurrentPhase = CurrentPhase.NextPhase; + Log.Info("Advancing phase to " + CurrentPhase.ToString()); + CurrentPhase.Activate(); + } + } + + public override void ClientJoined( IClient client ) + { + base.ClientJoined( client ); + + // Create a pawn for this client to play with + var pawn = new Player(); + client.Pawn = pawn; + + var spawnpoints = Entity.All.OfType(); + var randomSpawnPoint = spawnpoints.OrderBy( x => Guid.NewGuid() ).FirstOrDefault(); + if ( randomSpawnPoint != null ) + { + var tx = randomSpawnPoint.Transform; + tx.Position = tx.Position + Vector3.Up * 50.0f; + pawn.Transform = tx; + } + } +} + -- cgit v1.2.3-70-g09d2