aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--code/pawn/component/camera/BaseCameraComponent.cs15
-rw-r--r--code/pawn/component/camera/PlayerCameraComponent.cs15
-rw-r--r--code/pawn/component/camera/SpectatorCameraComponent.cs15
-rw-r--r--code/ui/PlayerInfo.razor9
-rw-r--r--code/ui/health/Health.razor6
-rw-r--r--code/ui/team/TeamInfo.razor6
-rw-r--r--code/ui/weapon/Reload.razor8
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;