From 028c5b520149ca1a253e03d7fa501d94871c9e8a Mon Sep 17 00:00:00 2001 From: Paul Chote Date: Fri, 30 Jul 2010 21:26:46 +1200 Subject: [PATCH] Merge the two DamageState types --- OpenRA.Game/Traits/Building.cs | 2 +- OpenRA.Game/Traits/Health.cs | 17 ----------------- OpenRA.Game/Traits/TraitsInterfaces.cs | 4 ---- OpenRA.Game/Traits/Unit.cs | 2 +- OpenRA.Mods.Cnc/CriticalBuildingState.cs | 2 +- OpenRA.Mods.Cnc/TiberiumRefineryDockAction.cs | 2 +- OpenRA.Mods.RA/Bridge.cs | 14 +++++++------- OpenRA.Mods.RA/DemoTruck.cs | 2 +- OpenRA.Mods.RA/EmitInfantryOnSell.cs | 2 +- OpenRA.Mods.RA/Explodes.cs | 2 +- OpenRA.Mods.RA/GivesExperience.cs | 2 +- OpenRA.Mods.RA/Harvester.cs | 2 +- OpenRA.Mods.RA/LeavesHusk.cs | 2 +- OpenRA.Mods.RA/OreRefinery.cs | 2 +- OpenRA.Mods.RA/Render/RenderBuilding.cs | 12 ++++++------ OpenRA.Mods.RA/Render/RenderBuildingTurreted.cs | 12 ++++++------ .../Render/RenderBuildingWarFactory.cs | 9 +++++---- OpenRA.Mods.RA/Render/RenderInfantry.cs | 2 +- OpenRA.Mods.RA/Render/RenderUnit.cs | 2 +- 19 files changed, 37 insertions(+), 57 deletions(-) diff --git a/OpenRA.Game/Traits/Building.cs b/OpenRA.Game/Traits/Building.cs index e35fe99e6e..47403b26fb 100644 --- a/OpenRA.Game/Traits/Building.cs +++ b/OpenRA.Game/Traits/Building.cs @@ -78,7 +78,7 @@ namespace OpenRA.Traits public void Damaged(Actor self, AttackInfo e) { - if (e.DamageState == DamageState.Dead) + if (e.ExtendedDamageState == ExtendedDamageState.Dead) { self.World.WorldActor.traits.Get().AddEffect(10, self.CenterLocation, 1); Sound.Play(Info.DestroyedSound, self.CenterLocation); diff --git a/OpenRA.Game/Traits/Health.cs b/OpenRA.Game/Traits/Health.cs index 8c3b5d5c75..20fd7a3b64 100644 --- a/OpenRA.Game/Traits/Health.cs +++ b/OpenRA.Game/Traits/Health.cs @@ -52,21 +52,7 @@ namespace OpenRA.Traits public bool IsDead { get { return hp <= 0; } } public bool RemoveOnDeath = true; - - public DamageState DamageState - { - get - { - if (hp <= 0) - return DamageState.Dead; - if (hp < MaxHP * 0.5f) - return DamageState.Half; - - return DamageState.Normal; - } - } - public ExtendedDamageState ExtendedDamageState { get @@ -94,7 +80,6 @@ namespace OpenRA.Traits { if (IsDead) return; /* overkill! don't count extra hits as more kills! */ - var oldState = this.DamageState; var oldExtendedState = this.ExtendedDamageState; /* apply the damage modifiers, if we have any. */ @@ -124,9 +109,7 @@ namespace OpenRA.Traits { Attacker = attacker, Damage = damage, - DamageState = this.DamageState, ExtendedDamageState = this.ExtendedDamageState, - DamageStateChanged = this.DamageState != oldState, ExtendedDamageStateChanged = this.ExtendedDamageState != oldExtendedState, Warhead = warhead }); diff --git a/OpenRA.Game/Traits/TraitsInterfaces.cs b/OpenRA.Game/Traits/TraitsInterfaces.cs index a695ed8a73..e1ba1487f7 100644 --- a/OpenRA.Game/Traits/TraitsInterfaces.cs +++ b/OpenRA.Game/Traits/TraitsInterfaces.cs @@ -15,8 +15,6 @@ using OpenRA.Graphics; namespace OpenRA.Traits { - public enum DamageState { Normal, Half, Dead }; - // depends on the order of pips in WorldRenderer.cs! public enum PipType { Transparent, Green, Yellow, Red, Gray }; public enum TagType { None, Fake, Primary }; @@ -27,9 +25,7 @@ namespace OpenRA.Traits public Actor Attacker; public WarheadInfo Warhead; public int Damage; - public DamageState DamageState; public ExtendedDamageState ExtendedDamageState; - public bool DamageStateChanged; public bool ExtendedDamageStateChanged; } diff --git a/OpenRA.Game/Traits/Unit.cs b/OpenRA.Game/Traits/Unit.cs index d2b9c57e7b..b0c2b5bbbc 100755 --- a/OpenRA.Game/Traits/Unit.cs +++ b/OpenRA.Game/Traits/Unit.cs @@ -32,7 +32,7 @@ namespace OpenRA.Traits public void Damaged(Actor self, AttackInfo e) { - if (e.DamageState == DamageState.Dead) + if (e.ExtendedDamageState == ExtendedDamageState.Dead) if (self.Owner == self.World.LocalPlayer) Sound.PlayVoice("Lost", self); } diff --git a/OpenRA.Mods.Cnc/CriticalBuildingState.cs b/OpenRA.Mods.Cnc/CriticalBuildingState.cs index 7532912440..2f76359ec9 100644 --- a/OpenRA.Mods.Cnc/CriticalBuildingState.cs +++ b/OpenRA.Mods.Cnc/CriticalBuildingState.cs @@ -31,7 +31,7 @@ namespace OpenRA.Mods.Cnc public void Damaged(Actor self, AttackInfo e) { - if (e.DamageStateChanged && e.DamageState == DamageState.Dead) + if (e.ExtendedDamageStateChanged && e.ExtendedDamageState == ExtendedDamageState.Dead) { self.traits.Get().anim.PlayRepeating("critical-idle"); self.World.AddFrameEndTask( diff --git a/OpenRA.Mods.Cnc/TiberiumRefineryDockAction.cs b/OpenRA.Mods.Cnc/TiberiumRefineryDockAction.cs index ce0d45e2aa..7357b6d85a 100644 --- a/OpenRA.Mods.Cnc/TiberiumRefineryDockAction.cs +++ b/OpenRA.Mods.Cnc/TiberiumRefineryDockAction.cs @@ -82,7 +82,7 @@ namespace OpenRA.Mods.Cnc public void Damaged (Actor self, AttackInfo e) { - if (e.DamageState == DamageState.Dead) + if (e.ExtendedDamageState == ExtendedDamageState.Dead) CancelDock(self, dockedHarv); } diff --git a/OpenRA.Mods.RA/Bridge.cs b/OpenRA.Mods.RA/Bridge.cs index ded089bfa2..18d8d46a14 100644 --- a/OpenRA.Mods.RA/Bridge.cs +++ b/OpenRA.Mods.RA/Bridge.cs @@ -160,18 +160,18 @@ namespace OpenRA.Mods.RA void UpdateState() { // If this is a long bridge next to a destroyed shore piece, we need die to give clean edges to the break - if (Info.Long && Health.DamageState != DamageState.Dead && + if (Info.Long && Health.ExtendedDamageState != ExtendedDamageState.Dead && ((southNeighbour != null && Info.ShorePieces.Contains(southNeighbour.Type) && !IsIntact(southNeighbour)) || (northNeighbour != null && Info.ShorePieces.Contains(northNeighbour.Type) && !IsIntact(northNeighbour)))) { self.Kill(self); // this changes the damagestate } - var ds = Health.DamageState; - currentTemplate = (ds == DamageState.Half && Info.DamagedTemplate > 0) ? Info.DamagedTemplate : - (ds == DamageState.Dead && Info.DestroyedTemplate > 0) ? Info.DestroyedTemplate : Info.Template; + var ds = Health.ExtendedDamageState; + currentTemplate = (ds == ExtendedDamageState.Half && Info.DamagedTemplate > 0) ? Info.DamagedTemplate : + (ds == ExtendedDamageState.Dead && Info.DestroyedTemplate > 0) ? Info.DestroyedTemplate : Info.Template; - if (Info.Long && ds == DamageState.Dead) + if (Info.Long && ds == ExtendedDamageState.Dead) { // Long bridges have custom art for multiple segments being destroyed bool waterToSouth = !IsIntact(southNeighbour); @@ -185,7 +185,7 @@ namespace OpenRA.Mods.RA currentTemplate = Info.DestroyedPlusSouthTemplate; } - if (ds == DamageState.Dead && !dead) + if (ds == ExtendedDamageState.Dead && !dead) { dead = true; KillUnitsOnBridge(); @@ -198,7 +198,7 @@ namespace OpenRA.Mods.RA public void Damaged(Actor self, AttackInfo e) { - if (e.DamageStateChanged) + if (e.ExtendedDamageStateChanged) { UpdateState(); if (northNeighbour != null) northNeighbour.UpdateState(); diff --git a/OpenRA.Mods.RA/DemoTruck.cs b/OpenRA.Mods.RA/DemoTruck.cs index 6daa3102c8..8b276a6844 100644 --- a/OpenRA.Mods.RA/DemoTruck.cs +++ b/OpenRA.Mods.RA/DemoTruck.cs @@ -27,7 +27,7 @@ namespace OpenRA.Mods.RA // Fire primary on death public void Damaged(Actor self, AttackInfo e) { - if (e.DamageState == DamageState.Dead) + if (e.ExtendedDamageState == ExtendedDamageState.Dead) Detonate(self, e.Attacker); } diff --git a/OpenRA.Mods.RA/EmitInfantryOnSell.cs b/OpenRA.Mods.RA/EmitInfantryOnSell.cs index 9105a0c02a..ac9df2ebdf 100644 --- a/OpenRA.Mods.RA/EmitInfantryOnSell.cs +++ b/OpenRA.Mods.RA/EmitInfantryOnSell.cs @@ -57,7 +57,7 @@ namespace OpenRA.Mods.RA public void Damaged(Actor self, AttackInfo e) { - if (e.DamageStateChanged && e.DamageState == DamageState.Dead) + if (e.ExtendedDamageStateChanged && e.ExtendedDamageState == ExtendedDamageState.Dead) Emit(self); } } diff --git a/OpenRA.Mods.RA/Explodes.cs b/OpenRA.Mods.RA/Explodes.cs index 3f991c7b00..b82ebc95b0 100644 --- a/OpenRA.Mods.RA/Explodes.cs +++ b/OpenRA.Mods.RA/Explodes.cs @@ -25,7 +25,7 @@ namespace OpenRA.Mods.RA { public void Damaged(Actor self, AttackInfo e) { - if (e.DamageState == DamageState.Dead) + if (e.ExtendedDamageState == ExtendedDamageState.Dead) { var weapon = ChooseWeaponForExplosion(self); if (weapon != null) diff --git a/OpenRA.Mods.RA/GivesExperience.cs b/OpenRA.Mods.RA/GivesExperience.cs index 0f80ff9075..ba794d929d 100644 --- a/OpenRA.Mods.RA/GivesExperience.cs +++ b/OpenRA.Mods.RA/GivesExperience.cs @@ -18,7 +18,7 @@ namespace OpenRA.Mods.RA { public void Damaged(Actor self, AttackInfo e) { - if (e.DamageState == DamageState.Dead) + if (e.ExtendedDamageState == ExtendedDamageState.Dead) { // Prevent TK from giving exp if (e.Attacker == null || e.Attacker.Owner.Stances[ self.Owner ] == Stance.Ally ) diff --git a/OpenRA.Mods.RA/Harvester.cs b/OpenRA.Mods.RA/Harvester.cs index 0ebd2cfe06..1a8a3d9a3f 100755 --- a/OpenRA.Mods.RA/Harvester.cs +++ b/OpenRA.Mods.RA/Harvester.cs @@ -164,7 +164,7 @@ namespace OpenRA.Mods.RA public void Damaged(Actor self, AttackInfo e) { - if (e.DamageState == DamageState.Dead) + if (e.ExtendedDamageState == ExtendedDamageState.Dead) if (LinkedProc != null) LinkedProc.traits.WithInterface().FirstOrDefault().UnlinkHarvester(LinkedProc,self); } diff --git a/OpenRA.Mods.RA/LeavesHusk.cs b/OpenRA.Mods.RA/LeavesHusk.cs index bed5690bbf..89f35ed60a 100644 --- a/OpenRA.Mods.RA/LeavesHusk.cs +++ b/OpenRA.Mods.RA/LeavesHusk.cs @@ -22,7 +22,7 @@ namespace OpenRA.Mods.RA { public void Damaged(Actor self, AttackInfo e) { - if (e.DamageState == DamageState.Dead) + if (e.ExtendedDamageState == ExtendedDamageState.Dead) self.World.AddFrameEndTask(w => { var info = self.Info.Traits.Get(); diff --git a/OpenRA.Mods.RA/OreRefinery.cs b/OpenRA.Mods.RA/OreRefinery.cs index 5e6ef0c827..d8469380eb 100755 --- a/OpenRA.Mods.RA/OreRefinery.cs +++ b/OpenRA.Mods.RA/OreRefinery.cs @@ -92,7 +92,7 @@ namespace OpenRA.Mods.RA public void Damaged (Actor self, AttackInfo e) { - if (e.DamageState == DamageState.Dead) + if (e.ExtendedDamageState == ExtendedDamageState.Dead) foreach (var harv in LinkedHarv) harv.traits.Get ().UnlinkProc(harv, self); } diff --git a/OpenRA.Mods.RA/Render/RenderBuilding.cs b/OpenRA.Mods.RA/Render/RenderBuilding.cs index 2cc891cc63..f5ccfebc21 100755 --- a/OpenRA.Mods.RA/Render/RenderBuilding.cs +++ b/OpenRA.Mods.RA/Render/RenderBuilding.cs @@ -58,19 +58,19 @@ namespace OpenRA.Mods.RA.Render public virtual void Damaged(Actor self, AttackInfo e) { - if (!e.DamageStateChanged) + if (!e.ExtendedDamageStateChanged) return; - - switch( e.DamageState ) + + switch( e.ExtendedDamageState ) { - case DamageState.Normal: + case ExtendedDamageState.ThreeQuarter: case ExtendedDamageState.Normal: case ExtendedDamageState.Undamaged: anim.ReplaceAnim("idle"); break; - case DamageState.Half: + case ExtendedDamageState.Half: case ExtendedDamageState.Quarter: anim.ReplaceAnim("damaged-idle"); Sound.Play(self.Info.Traits.Get().DamagedSound, self.CenterLocation); break; - case DamageState.Dead: + case ExtendedDamageState.Dead: self.World.AddFrameEndTask(w => w.Add(new Explosion(w, self.CenterLocation.ToInt2(), "building", false))); break; } diff --git a/OpenRA.Mods.RA/Render/RenderBuildingTurreted.cs b/OpenRA.Mods.RA/Render/RenderBuildingTurreted.cs index e62127bb25..d4ee7ca9cd 100755 --- a/OpenRA.Mods.RA/Render/RenderBuildingTurreted.cs +++ b/OpenRA.Mods.RA/Render/RenderBuildingTurreted.cs @@ -31,15 +31,15 @@ namespace OpenRA.Mods.RA.Render public override void Damaged(Actor self, AttackInfo e) { - if (!e.DamageStateChanged) return; + if (!e.ExtendedDamageStateChanged) return; - switch (e.DamageState) + switch( e.ExtendedDamageState ) { - case DamageState.Normal: - anim.Play( "idle" ); + case ExtendedDamageState.ThreeQuarter: case ExtendedDamageState.Normal: case ExtendedDamageState.Undamaged: + anim.ReplaceAnim("idle"); break; - case DamageState.Half: - anim.Play( "damaged-idle" ); + case ExtendedDamageState.Half: case ExtendedDamageState.Quarter: + anim.ReplaceAnim("damaged-idle"); Sound.Play(self.Info.Traits.Get().DamagedSound, self.CenterLocation); break; } diff --git a/OpenRA.Mods.RA/Render/RenderBuildingWarFactory.cs b/OpenRA.Mods.RA/Render/RenderBuildingWarFactory.cs index a16a1384f7..c3730ef509 100755 --- a/OpenRA.Mods.RA/Render/RenderBuildingWarFactory.cs +++ b/OpenRA.Mods.RA/Render/RenderBuildingWarFactory.cs @@ -53,13 +53,14 @@ namespace OpenRA.Mods.RA.Render public void Damaged(Actor self, AttackInfo e) { - if (!e.DamageStateChanged) return; - switch (e.DamageState) + if (!e.ExtendedDamageStateChanged) return; + + switch( e.ExtendedDamageState ) { - case DamageState.Normal: + case ExtendedDamageState.ThreeQuarter: case ExtendedDamageState.Normal: case ExtendedDamageState.Undamaged: roof.ReplaceAnim(roof.CurrentSequence.Name.Replace("damaged-","")); break; - case DamageState.Half: + case ExtendedDamageState.Half: case ExtendedDamageState.Quarter: roof.ReplaceAnim("damaged-" + roof.CurrentSequence.Name); break; } diff --git a/OpenRA.Mods.RA/Render/RenderInfantry.cs b/OpenRA.Mods.RA/Render/RenderInfantry.cs index 8947a3128e..62b19a86c4 100755 --- a/OpenRA.Mods.RA/Render/RenderInfantry.cs +++ b/OpenRA.Mods.RA/Render/RenderInfantry.cs @@ -78,7 +78,7 @@ namespace OpenRA.Mods.RA.Render public void Damaged(Actor self, AttackInfo e) { - if (e.DamageState == DamageState.Dead) + if (e.ExtendedDamageState == ExtendedDamageState.Dead) { var death = e.Warhead != null ? e.Warhead.InfDeath : 0; Sound.PlayVoice("Die", self); diff --git a/OpenRA.Mods.RA/Render/RenderUnit.cs b/OpenRA.Mods.RA/Render/RenderUnit.cs index 96b2d2f16d..cb2670a7f7 100755 --- 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.Half) return; + if (e.ExtendedDamageState > ExtendedDamageState.Half) return; if (isSmoking) return; isSmoking = true;