diff options
| author | Leonardo Bishop <me@leonardobishop.com> | 2023-07-30 19:12:09 +0100 |
|---|---|---|
| committer | Leonardo Bishop <me@leonardobishop.com> | 2023-07-30 19:12:09 +0100 |
| commit | 4ae38adb208c435ff6a021cdd0517768c5314fe6 (patch) | |
| tree | 18ccbffd5fd3d385983ba41f3cd0031586995733 | |
| parent | 970e3de202b1482ae72b85487414d9b933818774 (diff) | |
Add observed health and team colours to spectator mode
| -rw-r--r-- | code/pawn/component/camera/BaseCameraComponent.cs | 15 | ||||
| -rw-r--r-- | code/pawn/component/camera/PlayerCameraComponent.cs | 15 | ||||
| -rw-r--r-- | code/pawn/component/camera/SpectatorCameraComponent.cs | 15 | ||||
| -rw-r--r-- | code/ui/PlayerInfo.razor | 9 | ||||
| -rw-r--r-- | code/ui/health/Health.razor | 6 | ||||
| -rw-r--r-- | code/ui/team/TeamInfo.razor | 6 | ||||
| -rw-r--r-- | code/ui/weapon/Reload.razor | 8 |
7 files changed, 60 insertions, 14 deletions
diff --git a/code/pawn/component/camera/BaseCameraComponent.cs b/code/pawn/component/camera/BaseCameraComponent.cs index be310c8..029586a 100644 --- a/code/pawn/component/camera/BaseCameraComponent.cs +++ b/code/pawn/component/camera/BaseCameraComponent.cs @@ -17,4 +17,19 @@ public class BaseCameraComponent : EntityComponent<Player>, ISingletonComponent {
}
+
+ public virtual InventoryComponent GetObservedInventory()
+ {
+ return null;
+ }
+
+ public virtual float GetObservedHealth()
+ {
+ return 0;
+ }
+
+ public virtual Team GetObservedTeam()
+ {
+ return Team.Spectator;
+ }
}
diff --git a/code/pawn/component/camera/PlayerCameraComponent.cs b/code/pawn/component/camera/PlayerCameraComponent.cs index 5011c67..702f0c8 100644 --- a/code/pawn/component/camera/PlayerCameraComponent.cs +++ b/code/pawn/component/camera/PlayerCameraComponent.cs @@ -45,4 +45,19 @@ public class PlayerCameraComponent : BaseCameraComponent 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 f81e186..bba92f6 100644 --- a/code/pawn/component/camera/SpectatorCameraComponent.cs +++ b/code/pawn/component/camera/SpectatorCameraComponent.cs @@ -38,4 +38,19 @@ public class SpectatorCameraComponent : BaseCameraComponent {
return Game.Clients.Where(c => c.Pawn is Player player && player.CurrentTeam != Team.Spectator && player.LifeState == LifeState.Alive).ToList();
}
+
+ public override InventoryComponent GetObservedInventory()
+ {
+ return Target?.Inventory;
+ }
+
+ public override float GetObservedHealth()
+ {
+ return Target?.Health ?? Entity.Health;
+ }
+
+ public override Team GetObservedTeam()
+ {
+ return Target?.CurrentTeam ?? Entity.CurrentTeam;
+ }
}
diff --git a/code/ui/PlayerInfo.razor b/code/ui/PlayerInfo.razor index 2acdef0..fed61c0 100644 --- a/code/ui/PlayerInfo.razor +++ b/code/ui/PlayerInfo.razor @@ -26,12 +26,13 @@ playerinfo { {
public string GetTeamColour()
{
- var ClientPawn = Game.LocalPawn;
- if (ClientPawn is Player)
+ var clientPawn = Game.LocalPawn;
+ if (clientPawn is Player {Camera: not null } player)
{
- return TeamOperations.GetTeamColour(((Player)ClientPawn).CurrentTeam);
+ var colour = TeamOperations.GetTeamColour(player.Camera.GetObservedTeam());
+ return string.IsNullOrWhiteSpace(colour) ? "white" : colour;
}
- return "";
+ return "white";
}
protected override int BuildHash()
diff --git a/code/ui/health/Health.razor b/code/ui/health/Health.razor index 8961f63..9600c8b 100644 --- a/code/ui/health/Health.razor +++ b/code/ui/health/Health.razor @@ -30,10 +30,10 @@ Health { public int GetHealth()
{
- var ClientPawn = Game.LocalPawn;
- if (ClientPawn is Player)
+ var clientPawn = Game.LocalPawn;
+ if (clientPawn is Player {Camera: not null } player)
{
- return ClientPawn.Health.CeilToInt();
+ return player.Camera.GetObservedHealth().CeilToInt();
}
return 0;
}
diff --git a/code/ui/team/TeamInfo.razor b/code/ui/team/TeamInfo.razor index 883dcf0..4451810 100644 --- a/code/ui/team/TeamInfo.razor +++ b/code/ui/team/TeamInfo.razor @@ -22,10 +22,10 @@ public string GetTeamName()
{
- var ClientPawn = Game.LocalPawn;
- if (ClientPawn is Player)
+ var clientPawn = Game.LocalPawn;
+ if (clientPawn is Player {Camera: not null } player)
{
- return TeamOperations.GetTeamName(((Player)ClientPawn).CurrentTeam);
+ return TeamOperations.GetTeamName(player.Camera.GetObservedTeam());
}
return "";
}
diff --git a/code/ui/weapon/Reload.razor b/code/ui/weapon/Reload.razor index d325ade..190a84c 100644 --- a/code/ui/weapon/Reload.razor +++ b/code/ui/weapon/Reload.razor @@ -60,11 +60,11 @@ reload { protected override int BuildHash()
{
- var localPawn = Game.LocalPawn;
- if (localPawn is Player player)
+ var clientPawn = Game.LocalPawn;
+ if (clientPawn is Player {Camera: not null } player)
{
- var inventory = player.Inventory;
- if (inventory != null && inventory.GetCurrentWeapon() != null)
+ var inventory = player.Camera.GetObservedInventory();
+ if (inventory?.GetCurrentWeapon() != null)
{
var weapon = inventory.GetCurrentWeapon();
var ammo = weapon.Ammo;
|
