Merge the two DamageState types
This commit is contained in:
@@ -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<ScreenShaker>().AddEffect(10, self.CenterLocation, 1);
|
||||
Sound.Play(Info.DestroyedSound, self.CenterLocation);
|
||||
|
||||
@@ -53,20 +53,6 @@ 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
|
||||
});
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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<RenderSimple>().anim.PlayRepeating("critical-idle");
|
||||
self.World.AddFrameEndTask(
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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 )
|
||||
|
||||
@@ -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<IAcceptOre>().FirstOrDefault().UnlinkHarvester(LinkedProc,self);
|
||||
}
|
||||
|
||||
@@ -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<LeavesHuskInfo>();
|
||||
|
||||
@@ -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<Harvester> ().UnlinkProc(harv, self);
|
||||
}
|
||||
|
||||
@@ -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<BuildingInfo>().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;
|
||||
}
|
||||
|
||||
@@ -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<BuildingInfo>().DamagedSound, self.CenterLocation);
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user