diff options
Diffstat (limited to 'code/pawn')
| -rw-r--r-- | code/pawn/Player.Character.cs | 17 | ||||
| -rw-r--r-- | code/pawn/Player.cs | 12 | ||||
| -rw-r--r-- | code/pawn/component/camera/BaseCameraComponent.cs | 17 | ||||
| -rw-r--r-- | code/pawn/component/camera/PlayerCameraComponent.cs | 16 | ||||
| -rw-r--r-- | code/pawn/component/camera/SpectatorCameraComponent.cs | 17 | ||||
| -rw-r--r-- | code/pawn/component/movement/WalkControllerComponent.cs | 2 |
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;
|
