revert CaptureActor.Range, PascalCase conventions, compatibilty

the hardcoded Range=3 was crap for smaller/bigger buildings
try not to break TransformOnCapture as it is used for cnc husks
This commit is contained in:
Matthias Mailänder
2012-07-28 02:51:19 +02:00
committed by Chris Forbes
parent 3a1c4d1e6f
commit affa9ca336
4 changed files with 12 additions and 8 deletions

View File

@@ -9,8 +9,8 @@
#endregion #endregion
using System.Linq; using System.Linq;
using OpenRA.Traits;
using OpenRA.Mods.RA.Move; using OpenRA.Mods.RA.Move;
using OpenRA.Traits;
namespace OpenRA.Mods.RA.Activities namespace OpenRA.Mods.RA.Activities
{ {
@@ -26,6 +26,12 @@ namespace OpenRA.Mods.RA.Activities
if (target == null || !target.IsInWorld || target.IsDead()) return NextActivity; if (target == null || !target.IsInWorld || target.IsDead()) return NextActivity;
if (target.Owner == self.Owner) return NextActivity; if (target.Owner == self.Owner) return NextActivity;
// Need to be next to building, TODO: stop capture when going away
var mobile = self.Trait<Mobile>();
var nearest = target.OccupiesSpace.NearestCellTo(mobile.toCell);
if ((nearest - mobile.toCell).LengthSquared > 2)
return Util.SequenceActivities(new MoveAdjacentTo(Target.FromActor(target)), this);
var capturable = target.TraitOrDefault<Capturable>(); var capturable = target.TraitOrDefault<Capturable>();
if (capturable != null && capturable.CaptureInProgress && capturable.Captor.Owner.Stances[self.Owner] == Stance.Ally) if (capturable != null && capturable.CaptureInProgress && capturable.Captor.Owner.Stances[self.Owner] == Stance.Ally)
return NextActivity; return NextActivity;
@@ -34,12 +40,9 @@ namespace OpenRA.Mods.RA.Activities
if (sellable != null && sellable.Selling) if (sellable != null && sellable.Selling)
return NextActivity; return NextActivity;
var captures = self.TraitOrDefault<Captures>();
var capturesInfo = self.Info.Traits.Get<CapturesInfo>();
if (captures != null && Combat.IsInRange(self.CenterLocation, capturesInfo.Range, target))
target.Trait<Capturable>().BeginCapture(target, self); target.Trait<Capturable>().BeginCapture(target, self);
else
return Util.SequenceActivities(self.Trait<Mobile>().MoveWithinRange(Target.FromActor(target), capturesInfo.Range), this); var capturesInfo = self.Info.Traits.Get<CapturesInfo>();
if (capturesInfo != null && capturesInfo.wastedAfterwards) if (capturesInfo != null && capturesInfo.wastedAfterwards)
self.World.AddFrameEndTask(w => self.Destroy()); self.World.AddFrameEndTask(w => self.Destroy());

View File

@@ -22,7 +22,6 @@ namespace OpenRA.Mods.RA
class CapturesInfo : ITraitInfo class CapturesInfo : ITraitInfo
{ {
public string[] CaptureTypes = {"building"}; public string[] CaptureTypes = {"building"};
public int Range = 3;
public bool wastedAfterwards = true; public bool wastedAfterwards = true;
public object Create(ActorInitializer init) { return new Captures(init.self, this); } public object Create(ActorInitializer init) { return new Captures(init.self, this); }
} }

View File

@@ -17,6 +17,7 @@ namespace OpenRA.Mods.RA
{ {
[ActorReference] public readonly string IntoActor = null; [ActorReference] public readonly string IntoActor = null;
public readonly int ForceHealthPercentage = 0; public readonly int ForceHealthPercentage = 0;
public readonly bool SkipMakeAnims = true;
public virtual object Create(ActorInitializer init) { return new TransformOnCapture(this); } public virtual object Create(ActorInitializer init) { return new TransformOnCapture(this); }
} }
@@ -32,7 +33,7 @@ namespace OpenRA.Mods.RA
var facing = self.TraitOrDefault<IFacing>(); var facing = self.TraitOrDefault<IFacing>();
var transform = new Transform(self, Info.IntoActor) { ForceHealthPercentage = Info.ForceHealthPercentage }; var transform = new Transform(self, Info.IntoActor) { ForceHealthPercentage = Info.ForceHealthPercentage };
if (facing != null) transform.Facing = facing.Facing; if (facing != null) transform.Facing = facing.Facing;
transform.SkipMakeAnims = true; transform.SkipMakeAnims = Info.SkipMakeAnims;
self.CancelActivity(); self.CancelActivity();
self.QueueActivity(transform); self.QueueActivity(transform);
} }

View File

@@ -32,6 +32,7 @@ V01:
Range: 10 Range: 10
TransformOnCapture: TransformOnCapture:
IntoActor: v01.sniper IntoActor: v01.sniper
SkipMakeAnims: true
Capturable: Capturable:
Type: civilianbuilding Type: civilianbuilding
CaptureCompleteTime: 0 CaptureCompleteTime: 0