From 6d38a73a43db7eec57cecf980eebe6e610df4de4 Mon Sep 17 00:00:00 2001 From: Leonardo Bishop Date: Mon, 31 Jul 2023 02:37:57 +0100 Subject: Add character names --- code/pawn/Player.Character.cs | 17 +++++++++++++++++ code/pawn/Player.cs | 12 ++++++------ code/pawn/component/camera/BaseCameraComponent.cs | 17 ++++++++++++++--- code/pawn/component/camera/PlayerCameraComponent.cs | 16 ---------------- code/pawn/component/camera/SpectatorCameraComponent.cs | 17 ++++++++++++++--- code/pawn/component/movement/WalkControllerComponent.cs | 2 +- 6 files changed, 52 insertions(+), 29 deletions(-) create mode 100644 code/pawn/Player.Character.cs (limited to 'code/pawn') diff --git a/code/pawn/Player.Character.cs b/code/pawn/Player.Character.cs new file mode 100644 index 0000000..a8fc19c --- /dev/null +++ b/code/pawn/Player.Character.cs @@ -0,0 +1,17 @@ +using Sandbox; + +namespace MurderGame; + +public partial class Player +{ + [Net] public Team Team { get; set; } + + [Net] public string CharacterName { get; set; } + + [Net] public string HexColor { get; set; } + + public string GetTeamName() + { + return TeamOperations.GetTeamName( Team ); + } +} diff --git a/code/pawn/Player.cs b/code/pawn/Player.cs index 7462c6e..1d87d94 100644 --- a/code/pawn/Player.cs +++ b/code/pawn/Player.cs @@ -41,8 +41,6 @@ public partial class Player : AnimatedEntity ); } - [Net] - public Team CurrentTeam { get; set; } public BaseCameraComponent Camera => Components.Get(); public BaseControllerComponent Controller => Components.Get(); @@ -61,7 +59,7 @@ public partial class Player : AnimatedEntity [Net, Predicted] public TimeSince TimeSinceDeath { get; set; } = 0; - + public override void Spawn() { SetModel( "models/citizen/citizen.vmdl" ); @@ -87,7 +85,6 @@ public partial class Player : AnimatedEntity EnableAllCollisions = true; EnableDrawing = true; - Components.RemoveAll(); Components.Create(); Components.Create(); Components.Create(); @@ -102,7 +99,6 @@ public partial class Player : AnimatedEntity { DisablePlayer(); DeleteRagdoll(); - Components.RemoveAll(); } public void DeleteRagdoll() @@ -185,7 +181,11 @@ public partial class Player : AnimatedEntity if (Game.IsServer && Camera is not SpectatorCameraComponent && LifeState == LifeState.Dead && TimeSinceDeath > 3.5) { DeathOverlay.Hide( To.Single( Client ) ); - Components.RemoveAll(); + Components.Remove( Controller ); + Components.Remove( Camera ); + Components.Remove( Animator ); + Components.Remove( Inventory ); + Components.Remove( FallDamage ); Components.Create(); } diff --git a/code/pawn/component/camera/BaseCameraComponent.cs b/code/pawn/component/camera/BaseCameraComponent.cs index 029586a..401d702 100644 --- a/code/pawn/component/camera/BaseCameraComponent.cs +++ b/code/pawn/component/camera/BaseCameraComponent.cs @@ -20,16 +20,27 @@ public class BaseCameraComponent : EntityComponent, ISingletonComponent public virtual InventoryComponent GetObservedInventory() { - return null; + return Entity.Inventory; } public virtual float GetObservedHealth() { - return 0; + return Entity.Health; } public virtual Team GetObservedTeam() { - return Team.Spectator; + return Entity.Team; + } + + public virtual string GetObservedName() + { + var characterName = Entity.CharacterName; + return string.IsNullOrWhiteSpace( characterName ) ? Entity.Client.Name : characterName; + } + + public virtual string GetObservedColour() + { + return Entity.HexColor; } } diff --git a/code/pawn/component/camera/PlayerCameraComponent.cs b/code/pawn/component/camera/PlayerCameraComponent.cs index 702f0c8..5ec9f7b 100644 --- a/code/pawn/component/camera/PlayerCameraComponent.cs +++ b/code/pawn/component/camera/PlayerCameraComponent.cs @@ -43,21 +43,5 @@ public class PlayerCameraComponent : BaseCameraComponent var pl = Entity as Player; var viewAngles = (pl.ViewAngles + Input.AnalogLook).Normal; pl.ViewAngles = viewAngles.WithPitch( viewAngles.pitch.Clamp( -89f, 89f ) ); - return; - } - - public override InventoryComponent GetObservedInventory() - { - return Entity.Inventory; - } - - public override float GetObservedHealth() - { - return Entity.Health; - } - - public override Team GetObservedTeam() - { - return Entity.CurrentTeam; } } diff --git a/code/pawn/component/camera/SpectatorCameraComponent.cs b/code/pawn/component/camera/SpectatorCameraComponent.cs index fba33a5..3baf1a9 100644 --- a/code/pawn/component/camera/SpectatorCameraComponent.cs +++ b/code/pawn/component/camera/SpectatorCameraComponent.cs @@ -47,7 +47,7 @@ public partial class SpectatorCameraComponent : BaseCameraComponent private List GetTargets() { - return Game.Clients.Where(c => c.Pawn is Player player && player.CurrentTeam != Team.Spectator && player.LifeState == LifeState.Alive).ToList(); + return Game.Clients.Where(c => c.Pawn is Player player && player.Team != Team.Spectator && player.LifeState == LifeState.Alive).ToList(); } private void FindNextTarget(List targets, bool backwards) @@ -70,11 +70,22 @@ public partial class SpectatorCameraComponent : BaseCameraComponent public override float GetObservedHealth() { - return Target?.Health ?? Entity.Health; + return Target?.Health ?? base.GetObservedHealth(); } public override Team GetObservedTeam() { - return Target?.CurrentTeam ?? Entity.CurrentTeam; + return Target?.Team ?? base.GetObservedTeam(); + } + + public override string GetObservedName() + { + var characterName = Entity.CharacterName; + return string.IsNullOrWhiteSpace( characterName ) ? (Target?.Client.Name ?? "Unknown") : characterName; + } + + public override string GetObservedColour() + { + return Target?.HexColor ?? base.GetObservedColour(); } } diff --git a/code/pawn/component/movement/WalkControllerComponent.cs b/code/pawn/component/movement/WalkControllerComponent.cs index 765437c..da4ad5b 100644 --- a/code/pawn/component/movement/WalkControllerComponent.cs +++ b/code/pawn/component/movement/WalkControllerComponent.cs @@ -10,7 +10,7 @@ public partial class WalkControllerComponent : BaseControllerComponent { get { - return TeamCapabilities.CanSprint( Entity.CurrentTeam ); + return TeamCapabilities.CanSprint( Entity.Team ); } } [Net] public float SprintSpeed { get; set; } = 320.0f; -- cgit v1.2.3-70-g09d2