Convert range circle rendering to world coords.

This commit is contained in:
Paul Chote
2013-12-24 10:56:49 +13:00
parent 253349e3eb
commit 1a31368953
8 changed files with 47 additions and 30 deletions

View File

@@ -26,11 +26,15 @@ namespace OpenRA.Mods.RA
public void Render(WorldRenderer wr, World w, ActorInfo ai, WPos centerPosition)
{
var range = ai.Traits.WithInterface<ArmamentInfo>()
.Select(a => Rules.Weapons[a.Weapon.ToLowerInvariant()].Range).Max();
wr.DrawRangeCircleWithContrast(
Color.FromArgb(128, Color.Yellow), wr.ScreenPxPosition(centerPosition),
ai.Traits.WithInterface<ArmamentInfo>()
.Select(a => Rules.Weapons[a.Weapon.ToLowerInvariant()].Range).Max(),
Color.FromArgb(96, Color.Black));
centerPosition,
new WRange((int)(1024 * range)),
Color.FromArgb(128, Color.Yellow),
Color.FromArgb(96, Color.Black)
);
foreach (var a in w.ActorsWithTrait<RenderRangeCircle>())
if (a.Actor.Owner == a.Actor.World.LocalPlayer)
@@ -52,12 +56,12 @@ namespace OpenRA.Mods.RA
if (self.Owner != self.World.LocalPlayer)
return;
// Hack: Convert world coords to cells
var pxRange = self.Trait<AttackBase>().GetMaximumRange().Range / 1024f;
wr.DrawRangeCircleWithContrast(
self.CenterPosition,
self.Trait<AttackBase>().GetMaximumRange(),
Color.FromArgb(128, Color.Yellow),
wr.ScreenPxPosition(self.CenterPosition), pxRange,
Color.FromArgb(96, Color.Black));
Color.FromArgb(96, Color.Black)
);
}
}
}