From 8528c5d3a361f7ade75e9efd99781e79200a179e Mon Sep 17 00:00:00 2001 From: Paul Chote Date: Fri, 30 Jul 2010 22:02:19 +1200 Subject: [PATCH] Correct the ordering on DamageState --- OpenRA.Game/Traits/Health.cs | 2 +- OpenRA.Game/Traits/Render/RenderSimple.cs | 2 +- OpenRA.Mods.RA/AutoHeal.cs | 2 +- OpenRA.Mods.RA/Bridge.cs | 4 ++-- OpenRA.Mods.RA/EngineerRepair.cs | 4 ++-- OpenRA.Mods.RA/Orders/RepairOrderGenerator.cs | 2 +- OpenRA.Mods.RA/Render/RenderBuilding.cs | 18 +++++++----------- .../Render/RenderBuildingTurreted.cs | 13 +++++-------- .../Render/RenderBuildingWarFactory.cs | 15 +++++---------- OpenRA.Mods.RA/Render/RenderUnit.cs | 2 +- OpenRA.Mods.RA/Repairable.cs | 2 +- OpenRA.Mods.RA/RepairableNear.cs | 2 +- 12 files changed, 28 insertions(+), 40 deletions(-) diff --git a/OpenRA.Game/Traits/Health.cs b/OpenRA.Game/Traits/Health.cs index 1b901bac38..3b8f01dccf 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 DamageState { Dead, Critical, Heavy, Medium, Light, Undamaged }; + public enum DamageState { Undamaged, Light, Medium, Heavy, Critical, Dead }; public class Health { diff --git a/OpenRA.Game/Traits/Render/RenderSimple.cs b/OpenRA.Game/Traits/Render/RenderSimple.cs index c3ddc8b7e4..403cc1df20 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.Heavy ? "damaged-" : ""; + return self.GetDamageState() >= DamageState.Heavy ? "damaged-" : ""; } public void PlayCustomAnim(Actor self, string name) diff --git a/OpenRA.Mods.RA/AutoHeal.cs b/OpenRA.Mods.RA/AutoHeal.cs index 4bcb4e0602..41e27ff979 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 => !a.IsDead()) - .Where(a => a.traits.Contains() && a.GetDamageState() < DamageState.Undamaged) + .Where(a => a.traits.Contains() && a.GetDamageState() > DamageState.Undamaged) .Where(a => Combat.HasAnyValidWeapons(self, Target.FromActor(a))) .OrderBy(a => (a.Location - self.Location).LengthSquared) .FirstOrDefault(); diff --git a/OpenRA.Mods.RA/Bridge.cs b/OpenRA.Mods.RA/Bridge.cs index 0d3c816aac..3b3beb90bf 100644 --- a/OpenRA.Mods.RA/Bridge.cs +++ b/OpenRA.Mods.RA/Bridge.cs @@ -168,8 +168,8 @@ namespace OpenRA.Mods.RA } var ds = Health.DamageState; - currentTemplate = (ds == DamageState.Heavy && Info.DamagedTemplate > 0) ? Info.DamagedTemplate : - (ds == DamageState.Dead && Info.DestroyedTemplate > 0) ? Info.DestroyedTemplate : Info.Template; + currentTemplate = (ds == DamageState.Dead && Info.DestroyedTemplate > 0) ? Info.DestroyedTemplate : + (ds >= DamageState.Heavy && Info.DamagedTemplate > 0) ? Info.DamagedTemplate : Info.Template; if (Info.Long && ds == DamageState.Dead) { diff --git a/OpenRA.Mods.RA/EngineerRepair.cs b/OpenRA.Mods.RA/EngineerRepair.cs index 5f78435c8a..fecbaeaddb 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.GetDamageState() < DamageState.Undamaged) ? "Attack" : null; + && order.TargetActor.GetDamageState() > DamageState.Undamaged) ? "Attack" : null; } public void ResolveOrder(Actor self, Order order) { if (order.OrderString == "EngineerRepair" - && order.TargetActor.GetDamageState() < DamageState.Undamaged) + && order.TargetActor.GetDamageState() > DamageState.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 d1d15dd6a6..d22a5449ec 100644 --- 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.GetDamageState() < DamageState.Undamaged) + && underCursor.GetDamageState() > DamageState.Undamaged) yield return new Order("Repair", underCursor); } } diff --git a/OpenRA.Mods.RA/Render/RenderBuilding.cs b/OpenRA.Mods.RA/Render/RenderBuilding.cs index 063a35260d..adb7a9d429 100644 --- a/OpenRA.Mods.RA/Render/RenderBuilding.cs +++ b/OpenRA.Mods.RA/Render/RenderBuilding.cs @@ -61,19 +61,15 @@ namespace OpenRA.Mods.RA.Render if (!e.DamageStateChanged) return; - switch( e.DamageState ) + if (e.DamageState == DamageState.Dead) + self.World.AddFrameEndTask(w => w.Add(new Explosion(w, self.CenterLocation.ToInt2(), "building", false))); + else if (e.DamageState >= DamageState.Heavy) { - case DamageState.Medium: case DamageState.Light: case DamageState.Undamaged: - anim.ReplaceAnim("idle"); - break; - case DamageState.Heavy: case DamageState.Critical: - anim.ReplaceAnim("damaged-idle"); - Sound.Play(self.Info.Traits.Get().DamagedSound, self.CenterLocation); - break; - case DamageState.Dead: - self.World.AddFrameEndTask(w => w.Add(new Explosion(w, self.CenterLocation.ToInt2(), "building", false))); - break; + anim.ReplaceAnim("damaged-idle"); + Sound.Play(self.Info.Traits.Get().DamagedSound, self.CenterLocation); } + else + anim.ReplaceAnim("idle"); } public void Selling( Actor self ) diff --git a/OpenRA.Mods.RA/Render/RenderBuildingTurreted.cs b/OpenRA.Mods.RA/Render/RenderBuildingTurreted.cs index 2a34d02b13..ba89f7dd69 100644 --- a/OpenRA.Mods.RA/Render/RenderBuildingTurreted.cs +++ b/OpenRA.Mods.RA/Render/RenderBuildingTurreted.cs @@ -33,16 +33,13 @@ namespace OpenRA.Mods.RA.Render { if (!e.DamageStateChanged) return; - switch( e.DamageState ) + if (e.DamageState >= DamageState.Heavy) { - case DamageState.Medium: case DamageState.Light: case DamageState.Undamaged: - anim.ReplaceAnim("idle"); - break; - case DamageState.Heavy: case DamageState.Critical: - anim.ReplaceAnim("damaged-idle"); - Sound.Play(self.Info.Traits.Get().DamagedSound, self.CenterLocation); - break; + anim.ReplaceAnim("damaged-idle"); + Sound.Play(self.Info.Traits.Get().DamagedSound, self.CenterLocation); } + else + anim.ReplaceAnim("idle"); } } } diff --git a/OpenRA.Mods.RA/Render/RenderBuildingWarFactory.cs b/OpenRA.Mods.RA/Render/RenderBuildingWarFactory.cs index 367adcd09c..7de2a0d36d 100644 --- 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.Heavy ? "damaged-" : ""; + return self.GetDamageState() >= DamageState.Heavy ? "damaged-" : ""; } public RenderWarFactory(Actor self) @@ -55,15 +55,10 @@ namespace OpenRA.Mods.RA.Render { if (!e.DamageStateChanged) return; - switch( e.DamageState ) - { - case DamageState.Medium: case DamageState.Light: case DamageState.Undamaged: - roof.ReplaceAnim(roof.CurrentSequence.Name.Replace("damaged-","")); - break; - case DamageState.Heavy: case DamageState.Critical: - roof.ReplaceAnim("damaged-" + roof.CurrentSequence.Name); - break; - } + if (e.DamageState >= DamageState.Heavy) + roof.ReplaceAnim("damaged-" + roof.CurrentSequence.Name); + else + roof.ReplaceAnim(roof.CurrentSequence.Name.Replace("damaged-","")); } public void UnitProduced(Actor self, Actor other) diff --git a/OpenRA.Mods.RA/Render/RenderUnit.cs b/OpenRA.Mods.RA/Render/RenderUnit.cs index d1c30109f4..46754487f1 100644 --- a/OpenRA.Mods.RA/Render/RenderUnit.cs +++ b/OpenRA.Mods.RA/Render/RenderUnit.cs @@ -37,7 +37,7 @@ namespace OpenRA.Mods.RA.Render public void Damaged(Actor self, AttackInfo e) { - if (e.DamageState > DamageState.Heavy) return; + if (e.DamageState < DamageState.Heavy) return; if (isSmoking) return; isSmoking = true; diff --git a/OpenRA.Mods.RA/Repairable.cs b/OpenRA.Mods.RA/Repairable.cs index 9695ca6b36..c324271d01 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.DamageState < DamageState.Undamaged || (li != null && !li.FullAmmo()) ); + return (Health.DamageState > DamageState.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 87b56fd6b9..254fd3dff6 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.GetDamageState() < DamageState.Undamaged) + self.GetDamageState() > DamageState.Undamaged) return new Order("Enter", self, underCursor); return null;