diff --git a/OpenRA.Game/Traits/Health.cs b/OpenRA.Game/Traits/Health.cs index 518fb4098b..b170dd28e6 100644 --- a/OpenRA.Game/Traits/Health.cs +++ b/OpenRA.Game/Traits/Health.cs @@ -26,7 +26,7 @@ namespace OpenRA.Traits public virtual object Create(ActorInitializer init) { return new Health(init, this); } } - public enum ExtendedDamageState { Undamaged, Normal, ThreeQuarter, Half, Quarter, Dead }; + public enum ExtendedDamageState { Dead, Quarter, Half, ThreeQuarter, Normal, Undamaged }; public class Health { @@ -140,24 +140,12 @@ namespace OpenRA.Traits public static class HealthExts { - public static int Health(this Actor self) - { - var health = self.traits.GetOrDefault(); - return (health == null) ? 0 : health.HP; - } - public static bool IsDead(this Actor self) { var health = self.traits.GetOrDefault(); return (health == null) ? true : health.IsDead; } - - public static DamageState GetDamageState(this Actor self) - { - var health = self.traits.GetOrDefault(); - return (health == null) ? DamageState.Normal : health.DamageState; - } - + public static ExtendedDamageState GetExtendedDamageState(this Actor self) { var health = self.traits.GetOrDefault(); diff --git a/OpenRA.Game/Traits/Render/RenderSimple.cs b/OpenRA.Game/Traits/Render/RenderSimple.cs index 164c023d09..61fd0e0d97 100644 --- a/OpenRA.Game/Traits/Render/RenderSimple.cs +++ b/OpenRA.Game/Traits/Render/RenderSimple.cs @@ -64,7 +64,7 @@ namespace OpenRA.Traits protected virtual string GetPrefix(Actor self) { - return self.GetDamageState() == DamageState.Half ? "damaged-" : ""; + return self.GetExtendedDamageState() <= ExtendedDamageState.Half ? "damaged-" : ""; } public void PlayCustomAnim(Actor self, string name) diff --git a/OpenRA.Game/Traits/Selectable.cs b/OpenRA.Game/Traits/Selectable.cs index ceeba62b18..53e878cf7e 100755 --- a/OpenRA.Game/Traits/Selectable.cs +++ b/OpenRA.Game/Traits/Selectable.cs @@ -62,7 +62,7 @@ namespace OpenRA.Traits void DrawHealthBar(Actor self, float2 xy, float2 Xy) { var health = self.traits.GetOrDefault(); - if (health == null) + if (self.IsDead() || health == null) return; var c = Color.Gray; diff --git a/OpenRA.Mods.RA/AutoHeal.cs b/OpenRA.Mods.RA/AutoHeal.cs index 8be135520a..e8b5d05f08 100644 --- a/OpenRA.Mods.RA/AutoHeal.cs +++ b/OpenRA.Mods.RA/AutoHeal.cs @@ -60,7 +60,7 @@ namespace OpenRA.Mods.RA return inRange .Where(a => a != self && self.Owner.Stances[ a.Owner ] == Stance.Ally) .Where(a => Combat.HasAnyValidWeapons(self, Target.FromActor(a))) - .Where(a => a.traits.Contains() && a.GetExtendedDamageState() != ExtendedDamageState.Undamaged) + .Where(a => a.traits.Contains() && a.GetExtendedDamageState() < ExtendedDamageState.Undamaged) .OrderBy(a => (a.Location - self.Location).LengthSquared) .FirstOrDefault(); } diff --git a/OpenRA.Mods.RA/EngineerRepair.cs b/OpenRA.Mods.RA/EngineerRepair.cs index 03a066255b..c190731eee 100644 --- a/OpenRA.Mods.RA/EngineerRepair.cs +++ b/OpenRA.Mods.RA/EngineerRepair.cs @@ -45,13 +45,13 @@ namespace OpenRA.Mods.RA public string VoicePhraseForOrder(Actor self, Order order) { return (order.OrderString == "EngineerRepair" - && order.TargetActor.GetExtendedDamageState() != ExtendedDamageState.Undamaged) ? "Attack" : null; + && order.TargetActor.GetExtendedDamageState() < ExtendedDamageState.Undamaged) ? "Attack" : null; } public void ResolveOrder(Actor self, Order order) { if (order.OrderString == "EngineerRepair" - && order.TargetActor.GetExtendedDamageState() != ExtendedDamageState.Undamaged) + && order.TargetActor.GetExtendedDamageState() < ExtendedDamageState.Undamaged) { if (self.Owner == self.World.LocalPlayer) self.World.AddFrameEndTask(w => diff --git a/OpenRA.Mods.RA/Orders/RepairOrderGenerator.cs b/OpenRA.Mods.RA/Orders/RepairOrderGenerator.cs index c38a720a0d..12ae45099d 100755 --- a/OpenRA.Mods.RA/Orders/RepairOrderGenerator.cs +++ b/OpenRA.Mods.RA/Orders/RepairOrderGenerator.cs @@ -35,7 +35,7 @@ namespace OpenRA.Mods.RA.Orders yield break; if (underCursor.Info.Traits.Contains() - && underCursor.GetExtendedDamageState() != ExtendedDamageState.Undamaged) + && underCursor.GetExtendedDamageState() < ExtendedDamageState.Undamaged) yield return new Order("Repair", underCursor); } } diff --git a/OpenRA.Mods.RA/Render/RenderBuildingWarFactory.cs b/OpenRA.Mods.RA/Render/RenderBuildingWarFactory.cs index b05e8032c3..a16a1384f7 100755 --- a/OpenRA.Mods.RA/Render/RenderBuildingWarFactory.cs +++ b/OpenRA.Mods.RA/Render/RenderBuildingWarFactory.cs @@ -27,7 +27,7 @@ namespace OpenRA.Mods.RA.Render string GetPrefix(Actor self) { - return self.GetDamageState() == DamageState.Half ? "damaged-" : ""; + return self.GetExtendedDamageState() <= ExtendedDamageState.Half ? "damaged-" : ""; } public RenderWarFactory(Actor self) diff --git a/OpenRA.Mods.RA/Repairable.cs b/OpenRA.Mods.RA/Repairable.cs index b50f92d349..ad68fb89f6 100644 --- a/OpenRA.Mods.RA/Repairable.cs +++ b/OpenRA.Mods.RA/Repairable.cs @@ -46,7 +46,7 @@ namespace OpenRA.Mods.RA bool CanRepair(Actor self) { var li = self.traits.GetOrDefault(); - return (Health.ExtendedDamageState != ExtendedDamageState.Undamaged || (li != null && !li.FullAmmo()) ); + return (Health.ExtendedDamageState < ExtendedDamageState.Undamaged || (li != null && !li.FullAmmo()) ); } public string CursorForOrder(Actor self, Order order) diff --git a/OpenRA.Mods.RA/RepairableNear.cs b/OpenRA.Mods.RA/RepairableNear.cs index c49afce54d..c50a879dd7 100644 --- a/OpenRA.Mods.RA/RepairableNear.cs +++ b/OpenRA.Mods.RA/RepairableNear.cs @@ -31,7 +31,7 @@ namespace OpenRA.Mods.RA if (underCursor.Owner == self.Owner && self.Info.Traits.Get().Buildings.Contains( underCursor.Info.Name ) && - self.GetExtendedDamageState() != ExtendedDamageState.Undamaged) + self.GetExtendedDamageState() < ExtendedDamageState.Undamaged) return new Order("Enter", self, underCursor); return null;