Change spacebar key to move to the last visible radar ping location
This commit is contained in:
@@ -28,8 +28,7 @@ namespace OpenRA.Mods.RA
|
||||
readonly RadarPings radarPings;
|
||||
readonly BaseAttackNotifierInfo info;
|
||||
|
||||
public int lastAttackTime;
|
||||
public CPos lastAttackLocation;
|
||||
int lastAttackTime;
|
||||
|
||||
public BaseAttackNotifier(Actor self, BaseAttackNotifierInfo info)
|
||||
{
|
||||
@@ -61,7 +60,6 @@ namespace OpenRA.Mods.RA
|
||||
radarPings.Add(() => self.Owner == self.World.LocalPlayer, self.CenterPosition, info.RadarPingColor, info.RadarPingDuration);
|
||||
}
|
||||
|
||||
lastAttackLocation = self.CenterPosition.ToCPos();
|
||||
lastAttackTime = self.World.FrameNumber;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -27,8 +27,7 @@ namespace OpenRA.Mods.RA
|
||||
readonly RadarPings radarPings;
|
||||
readonly HarvesterAttackNotifierInfo info;
|
||||
|
||||
public int lastAttackTime;
|
||||
public CPos lastAttackLocation;
|
||||
int lastAttackTime;
|
||||
|
||||
public HarvesterAttackNotifier(Actor self, HarvesterAttackNotifierInfo info)
|
||||
{
|
||||
@@ -55,7 +54,6 @@ namespace OpenRA.Mods.RA
|
||||
radarPings.Add(() => self.Owner == self.World.LocalPlayer, self.CenterPosition, info.RadarPingColor, info.RadarPingDuration);
|
||||
}
|
||||
|
||||
lastAttackLocation = self.CenterPosition.ToCPos();
|
||||
lastAttackTime = self.World.FrameNumber;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -22,12 +22,14 @@ namespace OpenRA.Mods.RA.Widgets
|
||||
{
|
||||
readonly World world;
|
||||
readonly WorldRenderer worldRenderer;
|
||||
readonly RadarPings radarPings;
|
||||
|
||||
[ObjectCreator.UseCtor]
|
||||
public WorldCommandWidget(World world, WorldRenderer worldRenderer)
|
||||
{
|
||||
this.world = world;
|
||||
this.worldRenderer = worldRenderer;
|
||||
radarPings = world.WorldActor.TraitOrDefault<RadarPings>();
|
||||
}
|
||||
|
||||
public override string GetCursor(int2 pos) { return null; }
|
||||
@@ -241,17 +243,10 @@ namespace OpenRA.Mods.RA.Widgets
|
||||
|
||||
bool ToLastEvent()
|
||||
{
|
||||
if (world.LocalPlayer == null)
|
||||
if (radarPings == null || radarPings.LastPingPosition == null)
|
||||
return true;
|
||||
|
||||
var eventNotifier = world.LocalPlayer.PlayerActor.TraitOrDefault<BaseAttackNotifier>();
|
||||
if (eventNotifier == null)
|
||||
return true;
|
||||
|
||||
if (eventNotifier.lastAttackTime < 0)
|
||||
return true;
|
||||
|
||||
worldRenderer.Viewport.Center(eventNotifier.lastAttackLocation.CenterPosition);
|
||||
worldRenderer.Viewport.Center(radarPings.LastPingPosition.Value);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@@ -30,6 +30,8 @@ namespace OpenRA.Mods.RA
|
||||
public readonly List<RadarPing> Pings = new List<RadarPing>();
|
||||
readonly RadarPingsInfo info;
|
||||
|
||||
public WPos? LastPingPosition;
|
||||
|
||||
public RadarPings(RadarPingsInfo info)
|
||||
{
|
||||
this.info = info;
|
||||
@@ -46,7 +48,12 @@ namespace OpenRA.Mods.RA
|
||||
{
|
||||
var ping = new RadarPing(isVisible, position, color, duration,
|
||||
info.FromRadius, info.ToRadius, info.ShrinkSpeed, info.RotationSpeed);
|
||||
|
||||
if (ping.IsVisible())
|
||||
LastPingPosition = ping.Position;
|
||||
|
||||
Pings.Add(ping);
|
||||
|
||||
return ping;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user