Convert Health Radius to world coordinates.

This commit is contained in:
Paul Chote
2013-12-24 22:22:56 +13:00
parent aa2f865d5d
commit c49b06fdde
3 changed files with 4 additions and 6 deletions

View File

@@ -17,7 +17,8 @@ namespace OpenRA.Traits
public class HealthInfo : ITraitInfo, UsesInit<HealthInit> public class HealthInfo : ITraitInfo, UsesInit<HealthInit>
{ {
public readonly int HP = 0; public readonly int HP = 0;
public readonly float Radius = 10; [Desc("Physical size of the unit used for damage calculations. Impacts within this radius apply full damage")]
public readonly WRange Radius = new WRange(426);
public virtual object Create(ActorInitializer init) { return new Health(init, this); } public virtual object Create(ActorInitializer init) { return new Health(init, this); }
} }

View File

@@ -192,7 +192,7 @@ namespace OpenRA.Mods.RA
var rawDamage = (float)warhead.Damage; var rawDamage = (float)warhead.Damage;
if (withFalloff) if (withFalloff)
{ {
var distance = (int)Math.Max(0, (target.CenterPosition - pos).Length * Game.CellSize / 1024 - healthInfo.Radius); var distance = Math.Max(0, (target.CenterPosition - pos).Length - healthInfo.Radius.Range) * Game.CellSize / 1024;
var falloff = (float)GetDamageFalloff(distance / warhead.Spread); var falloff = (float)GetDamageFalloff(distance / warhead.Spread);
rawDamage = (float)(falloff * rawDamage); rawDamage = (float)(falloff * rawDamage);
} }

View File

@@ -42,10 +42,7 @@ namespace OpenRA.Mods.RA
return; return;
if (health.Value != null) if (health.Value != null)
{ wr.DrawRangeCircle(self.CenterPosition, health.Value.Info.Radius, Color.Red);
var range = new WRange((int)(health.Value.Info.Radius * 1024 / Game.CellSize));
wr.DrawRangeCircle(self.CenterPosition, range, Color.Red);
}
var wlr = Game.Renderer.WorldLineRenderer; var wlr = Game.Renderer.WorldLineRenderer;
var c = Color.White; var c = Color.White;