From 4ae38adb208c435ff6a021cdd0517768c5314fe6 Mon Sep 17 00:00:00 2001 From: Leonardo Bishop Date: Sun, 30 Jul 2023 19:12:09 +0100 Subject: Add observed health and team colours to spectator mode --- code/pawn/component/camera/BaseCameraComponent.cs | 15 +++++++++++++++ code/pawn/component/camera/PlayerCameraComponent.cs | 15 +++++++++++++++ code/pawn/component/camera/SpectatorCameraComponent.cs | 15 +++++++++++++++ 3 files changed, 45 insertions(+) (limited to 'code/pawn/component') 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, 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; + } } -- cgit v1.2.3-70-g09d2