This commit is contained in:
Matthias Mailänder
2014-07-04 17:14:48 +02:00
parent 7b5f000ba0
commit 1e2e7bcf42
7 changed files with 16 additions and 15 deletions

View File

@@ -674,7 +674,7 @@ namespace OpenRA.Mods.RA.AI
{
var buildings = self.World.ActorsWithTrait<RallyPoint>()
.Where(rp => rp.Actor.Owner == p &&
!IsRallyPointValid(rp.Trait.rallyPoint, rp.Actor.Info.Traits.GetOrDefault<BuildingInfo>())).ToArray();
!IsRallyPointValid(rp.Trait.Location, rp.Actor.Info.Traits.GetOrDefault<BuildingInfo>())).ToArray();
if (buildings.Length > 0)
BotDebug("Bot {0} needs to find rallypoints for {1} buildings.",

View File

@@ -31,7 +31,7 @@ namespace OpenRA.Mods.RA.Air
var hasHost = host != null;
var rp = hasHost ? host.TraitOrDefault<RallyPoint>() : null;
var destination = rp != null ? rp.rallyPoint :
var destination = rp != null ? rp.Location :
(hasHost ? self.World.Map.CellContaining(host.CenterPosition) : self.Location);
return new AttackMove.AttackMoveActivity(self, self.Trait<IMove>().MoveTo(destination, 1));

4
OpenRA.Mods.RA/Effects/RallyPoint.cs Executable file → Normal file
View File

@@ -42,9 +42,9 @@ namespace OpenRA.Mods.RA.Effects
{
flag.Tick();
circles.Tick();
if (cachedLocation != rp.rallyPoint)
if (cachedLocation != rp.Location)
{
cachedLocation = rp.rallyPoint;
cachedLocation = rp.Location;
circles.Play("circles");
}

View File

@@ -62,7 +62,7 @@ namespace OpenRA.Mods.RA
var fi = producee.Traits.Get<IFacingInfo>();
var initialFacing = exitinfo.Facing < 0 ? Util.GetFacing(to - spawn, fi.GetInitialFacing()) : exitinfo.Facing;
var exitLocation = rp.Value != null ? rp.Value.rallyPoint : exit;
var exitLocation = rp.Value != null ? rp.Value.Location : exit;
var target = Target.FromCell(self.World, exitLocation);
self.World.AddFrameEndTask(w =>

View File

@@ -1,6 +1,6 @@
#region Copyright & License Information
/*
* Copyright 2007-2011 The OpenRA Developers (see AUTHORS)
* Copyright 2007-2014 The OpenRA Developers (see AUTHORS)
* This file is part of OpenRA, which is free software. It is made
* available to you under the terms of the GNU General Public License
* as published by the Free Software Foundation. For more information,
@@ -24,11 +24,11 @@ namespace OpenRA.Mods.RA
public class RallyPoint : IIssueOrder, IResolveOrder, ISync
{
[Sync] public CPos rallyPoint;
[Sync] public CPos Location;
public RallyPoint(Actor self, RallyPointInfo info)
{
rallyPoint = self.Location + info.RallyPoint;
Location = self.Location + info.RallyPoint;
self.World.AddFrameEndTask(w => w.Add(new Effects.RallyPoint(self, info.IndicatorPalettePrefix)));
}
@@ -48,7 +48,7 @@ namespace OpenRA.Mods.RA
public void ResolveOrder(Actor self, Order order)
{
if (order.OrderString == "SetRallyPoint")
rallyPoint = order.TargetLocation;
Location = order.TargetLocation;
}
class RallyPointOrderTargeter : IOrderTargeter
@@ -67,6 +67,7 @@ namespace OpenRA.Mods.RA
cursor = "ability";
return true;
}
return false;
}

View File

@@ -86,8 +86,8 @@ namespace OpenRA.Mods.RA
if (rp != null)
self.QueueActivity(new CallFunc(() =>
{
self.SetTargetLine(Target.FromCell(self.World, rp.rallyPoint), Color.Green);
self.QueueActivity(movement.MoveTo(rp.rallyPoint, order.TargetActor));
self.SetTargetLine(Target.FromCell(self.World, rp.Location), Color.Green);
self.QueueActivity(movement.MoveTo(rp.Location, order.TargetActor));
}));
}
}

View File

@@ -31,7 +31,7 @@ end
Production.SetRallyPoint = function(factory, location)
local srp = Actor.Trait(factory, "RallyPoint")
if srp ~= nil then
srp.rallyPoint = location.Location
srp.Location = location.Location
end
end