aboutsummaryrefslogtreecommitdiffstats
path: root/code/pawn
diff options
context:
space:
mode:
Diffstat (limited to 'code/pawn')
-rw-r--r--code/pawn/Player.Character.cs17
-rw-r--r--code/pawn/Player.cs12
-rw-r--r--code/pawn/component/camera/BaseCameraComponent.cs17
-rw-r--r--code/pawn/component/camera/PlayerCameraComponent.cs16
-rw-r--r--code/pawn/component/camera/SpectatorCameraComponent.cs17
-rw-r--r--code/pawn/component/movement/WalkControllerComponent.cs2
6 files changed, 52 insertions, 29 deletions
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<BaseCameraComponent>();
public BaseControllerComponent Controller => Components.Get<BaseControllerComponent>();
@@ -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<WalkControllerComponent>();
Components.Create<PlayerCameraComponent>();
Components.Create<AnimatorComponent>();
@@ -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<SpectatorCameraComponent>();
}
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<Player>, 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<IClient> 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<IClient> 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;