Adds damage debug overlay

This commit is contained in:
DeadlySurprise
2014-09-03 14:17:50 +02:00
parent 8e4b5af352
commit 7183c52a2e
11 changed files with 38 additions and 16 deletions

View File

@@ -12,6 +12,7 @@ using System;
using System.Drawing;
using OpenRA.Graphics;
using OpenRA.Traits;
using OpenRA.Mods.RA.Effects;
namespace OpenRA.Mods.RA
{
@@ -20,7 +21,7 @@ namespace OpenRA.Mods.RA
public object Create(ActorInitializer init) { return new CombatDebugOverlay(init.self); }
}
public class CombatDebugOverlay : IPostRender
public class CombatDebugOverlay : IPostRender, INotifyDamage
{
Lazy<AttackBase> attack;
Lazy<IBodyOrientation> coords;
@@ -87,5 +88,19 @@ namespace OpenRA.Mods.RA
}
}
}
public void Damaged(Actor self, AttackInfo e)
{
if (devMode == null || !devMode.ShowCombatGeometry || e.Damage == 0)
return;
var health = self.TraitOrDefault<Health>();
if (health == null)
return;
var damageText = "{0} ({1}%)".F(-e.Damage, e.Damage * 100 / health.MaxHP);
self.World.AddFrameEndTask(w => w.Add(new FloatingText(self.CenterPosition, e.Attacker.Owner.Color.RGB, damageText, 30)));
}
}
}