From 9c4ad15d1e889fee8c301eb0765adfbdaf1f6d5d Mon Sep 17 00:00:00 2001 From: Taryn Date: Sun, 2 Feb 2014 01:30:21 -0600 Subject: [PATCH] Changed most references of trait Mobile -> IMove. In Mobile.cs IsMoving now has a public set as opposed to the initial internal. Added IMoveInfo interface to go with *Info classes that require IMove. WithRotor now uses IMove.IsMoving instead of (self.CenterPosition.Z > 0) as part of a check. --- OpenRA.Game/Traits/TraitsInterfaces.cs | 2 ++ OpenRA.Mods.RA/Activities/Attack.cs | 2 +- OpenRA.Mods.RA/Activities/DeliverResources.cs | 4 ++-- OpenRA.Mods.RA/Activities/LayMines.cs | 6 +++--- OpenRA.Mods.RA/Air/Helicopter.cs | 3 ++- OpenRA.Mods.RA/Air/Plane.cs | 3 ++- OpenRA.Mods.RA/Move/Drag.cs | 10 +++++----- OpenRA.Mods.RA/Move/Mobile.cs | 4 ++-- OpenRA.Mods.RA/Render/RenderInfantry.cs | 6 +++--- OpenRA.Mods.RA/Render/WithRotor.cs | 4 +++- OpenRA.Mods.RA/Render/WithVoxelWalkerBody.cs | 8 ++++---- OpenRA.Mods.RA/Repairable.cs | 6 +++--- OpenRA.Mods.RA/RepairableNear.cs | 4 ++-- 13 files changed, 34 insertions(+), 28 deletions(-) diff --git a/OpenRA.Game/Traits/TraitsInterfaces.cs b/OpenRA.Game/Traits/TraitsInterfaces.cs index e63053720a..999d42b78e 100755 --- a/OpenRA.Game/Traits/TraitsInterfaces.cs +++ b/OpenRA.Game/Traits/TraitsInterfaces.cs @@ -148,6 +148,7 @@ namespace OpenRA.Traits void SetVisualPosition(Actor self, WPos pos); } + public interface IMoveInfo { } public interface IMove { Activity MoveTo(CPos cell, int nearEnough); @@ -155,6 +156,7 @@ namespace OpenRA.Traits Activity MoveWithinRange(Target target, WRange range); Activity MoveFollow(Actor self, Target target, WRange range); CPos NearestMoveableCell(CPos target); + bool IsMoving { get; set; } } public interface INotifyBlockingMove { void OnNotifyBlockingMove(Actor self, Actor blocking); } diff --git a/OpenRA.Mods.RA/Activities/Attack.cs b/OpenRA.Mods.RA/Activities/Attack.cs index 53a763ffef..90efafca78 100755 --- a/OpenRA.Mods.RA/Activities/Attack.cs +++ b/OpenRA.Mods.RA/Activities/Attack.cs @@ -64,7 +64,7 @@ namespace OpenRA.Mods.RA.Activities nextPathTime = self.World.SharedRandom.Next(delayBetweenPathingAttempts - delaySpread, delayBetweenPathingAttempts + delaySpread); - return (AllowMovement) ? Util.SequenceActivities(self.Trait().MoveWithinRange(Target, Range), this) : NextActivity; + return (AllowMovement) ? Util.SequenceActivities(self.Trait().MoveWithinRange(Target, Range), this) : NextActivity; } var desiredFacing = Util.GetFacing(Target.CenterPosition - self.CenterPosition, 0); diff --git a/OpenRA.Mods.RA/Activities/DeliverResources.cs b/OpenRA.Mods.RA/Activities/DeliverResources.cs index a37d2b5846..00fedd3efa 100755 --- a/OpenRA.Mods.RA/Activities/DeliverResources.cs +++ b/OpenRA.Mods.RA/Activities/DeliverResources.cs @@ -26,7 +26,7 @@ namespace OpenRA.Mods.RA.Activities if (NextActivity != null) return NextActivity; - var mobile = self.Trait(); + var movement = self.Trait(); var harv = self.Trait(); // Find the nearest best refinery if not explicitly ordered to a specific refinery: @@ -56,7 +56,7 @@ namespace OpenRA.Mods.RA.Activities self.SetTargetLine(Target.FromActor(proc), Color.Green, false); if (self.Location != proc.Location + iao.DeliverOffset) - return Util.SequenceActivities(mobile.MoveTo(proc.Location + iao.DeliverOffset, 0), this); + return Util.SequenceActivities(movement.MoveTo(proc.Location + iao.DeliverOffset, 0), this); if (!isDocking) { diff --git a/OpenRA.Mods.RA/Activities/LayMines.cs b/OpenRA.Mods.RA/Activities/LayMines.cs index 3d14ee2c53..f036253da2 100644 --- a/OpenRA.Mods.RA/Activities/LayMines.cs +++ b/OpenRA.Mods.RA/Activities/LayMines.cs @@ -23,7 +23,7 @@ namespace OpenRA.Mods.RA.Activities { if (IsCanceled) return NextActivity; - var mobile = self.Trait(); + var movement = self.Trait(); var limitedAmmo = self.TraitOrDefault(); if (!limitedAmmo.HasAmmo()) { @@ -38,7 +38,7 @@ namespace OpenRA.Mods.RA.Activities return Util.SequenceActivities( new MoveAdjacentTo(self, Target.FromActor(rearmTarget)), - mobile.MoveTo(rearmTarget.CenterPosition.ToCPos(), rearmTarget), + movement.MoveTo(rearmTarget.CenterPosition.ToCPos(), rearmTarget), new Rearm(self), new Repair(rearmTarget), this ); @@ -57,7 +57,7 @@ namespace OpenRA.Mods.RA.Activities { var p = ml.minefield.Random(self.World.SharedRandom); if (ShouldLayMine(self, p)) - return Util.SequenceActivities( mobile.MoveTo(p, 0), this ); + return Util.SequenceActivities( movement.MoveTo(p, 0), this ); } // TODO: return somewhere likely to be safe (near fix) so we're not sitting out in the minefield. diff --git a/OpenRA.Mods.RA/Air/Helicopter.cs b/OpenRA.Mods.RA/Air/Helicopter.cs index 039cb87a38..d1687f109a 100755 --- a/OpenRA.Mods.RA/Air/Helicopter.cs +++ b/OpenRA.Mods.RA/Air/Helicopter.cs @@ -15,7 +15,7 @@ using OpenRA.Traits; namespace OpenRA.Mods.RA.Air { - class HelicopterInfo : AircraftInfo + class HelicopterInfo : AircraftInfo, IMoveInfo { public readonly WRange IdealSeparation = new WRange(1706); public readonly bool LandWhenIdle = true; @@ -30,6 +30,7 @@ namespace OpenRA.Mods.RA.Air public HelicopterInfo Info; Actor self; bool firstTick = true; + public bool IsMoving { get { return self.CenterPosition.Z > 0; } set { } } public Helicopter(ActorInitializer init, HelicopterInfo info) : base(init, info) diff --git a/OpenRA.Mods.RA/Air/Plane.cs b/OpenRA.Mods.RA/Air/Plane.cs index e21b6e0468..07e15802b0 100755 --- a/OpenRA.Mods.RA/Air/Plane.cs +++ b/OpenRA.Mods.RA/Air/Plane.cs @@ -14,7 +14,7 @@ using OpenRA.Traits; namespace OpenRA.Mods.RA.Air { - public class PlaneInfo : AircraftInfo + public class PlaneInfo : AircraftInfo, IMoveInfo { public readonly WAngle MaximumPitch = WAngle.FromDegrees(10); @@ -26,6 +26,7 @@ namespace OpenRA.Mods.RA.Air public readonly PlaneInfo Info; [Sync] public WPos RTBPathHash; Actor self; + public bool IsMoving { get { return self.CenterPosition.Z > 0; } set { } } public Plane(ActorInitializer init, PlaneInfo info) : base(init, info) diff --git a/OpenRA.Mods.RA/Move/Drag.cs b/OpenRA.Mods.RA/Move/Drag.cs index 41c8ff89ed..15574e9761 100755 --- a/OpenRA.Mods.RA/Move/Drag.cs +++ b/OpenRA.Mods.RA/Move/Drag.cs @@ -29,7 +29,7 @@ namespace OpenRA.Mods.RA.Move public override Activity Tick(Actor self) { var positionable = self.Trait(); - var mobile = positionable as Mobile; + var movement = self.Trait(); var pos = length > 1 ? WPos.Lerp(start, end, ticks, length - 1) @@ -38,14 +38,14 @@ namespace OpenRA.Mods.RA.Move positionable.SetVisualPosition(self, pos); if (++ticks >= length) { - if (mobile != null) - mobile.IsMoving = false; + if (movement != null) + movement.IsMoving = false; return NextActivity; } - if (mobile != null) - mobile.IsMoving = true; + if (movement != null) + movement.IsMoving = true; return this; } diff --git a/OpenRA.Mods.RA/Move/Mobile.cs b/OpenRA.Mods.RA/Move/Mobile.cs index 6ca8d2c80e..6c29aa2686 100755 --- a/OpenRA.Mods.RA/Move/Mobile.cs +++ b/OpenRA.Mods.RA/Move/Mobile.cs @@ -19,7 +19,7 @@ using OpenRA.Traits; namespace OpenRA.Mods.RA.Move { [Desc("Unit is able to move.")] - public class MobileInfo : ITraitInfo, IOccupySpaceInfo, IFacingInfo, UsesInit, UsesInit, UsesInit + public class MobileInfo : ITraitInfo, IOccupySpaceInfo, IFacingInfo, IMoveInfo, UsesInit, UsesInit, UsesInit { [FieldLoader.LoadUsing("LoadSpeeds")] [Desc("Set Water: 0 for ground units and lower the value on rough terrain.")] @@ -148,7 +148,7 @@ namespace OpenRA.Mods.RA.Move { public readonly Actor self; public readonly MobileInfo Info; - public bool IsMoving { get; internal set; } + public bool IsMoving { get; set; } int __facing; CPos __fromCell, __toCell; diff --git a/OpenRA.Mods.RA/Render/RenderInfantry.cs b/OpenRA.Mods.RA/Render/RenderInfantry.cs index 1098fd8dfc..d79adb7f9a 100644 --- a/OpenRA.Mods.RA/Render/RenderInfantry.cs +++ b/OpenRA.Mods.RA/Render/RenderInfantry.cs @@ -35,12 +35,12 @@ namespace OpenRA.Mods.RA.Render IdleAnimating } - protected bool dirty = false; - + Mobile mobile; RenderInfantryInfo info; + public bool IsMoving { get; set; } + protected bool dirty = false; string idleSequence; int idleDelay; - Mobile mobile; protected virtual string NormalizeInfantrySequence(Actor self, string baseSequence) { diff --git a/OpenRA.Mods.RA/Render/WithRotor.cs b/OpenRA.Mods.RA/Render/WithRotor.cs index c5110777d3..ad37e57b15 100755 --- a/OpenRA.Mods.RA/Render/WithRotor.cs +++ b/OpenRA.Mods.RA/Render/WithRotor.cs @@ -34,12 +34,14 @@ namespace OpenRA.Mods.RA.Render { WithRotorInfo info; Animation rotorAnim; + IMove movement; public WithRotor(Actor self, WithRotorInfo info) { this.info = info; var rs = self.Trait(); var body = self.Trait(); + movement = self.Trait(); rotorAnim = new Animation(rs.GetImage(self)); rotorAnim.PlayRepeating(info.Sequence); @@ -50,7 +52,7 @@ namespace OpenRA.Mods.RA.Render public void Tick(Actor self) { - var isFlying = self.CenterPosition.Z > 0 && !self.IsDead(); + var isFlying = movement.IsMoving && !self.IsDead(); if (isFlying ^ (rotorAnim.CurrentSequence.Name != info.Sequence)) return; diff --git a/OpenRA.Mods.RA/Render/WithVoxelWalkerBody.cs b/OpenRA.Mods.RA/Render/WithVoxelWalkerBody.cs index 4b6fbfe5b7..b95786ccbf 100755 --- a/OpenRA.Mods.RA/Render/WithVoxelWalkerBody.cs +++ b/OpenRA.Mods.RA/Render/WithVoxelWalkerBody.cs @@ -16,7 +16,7 @@ using OpenRA.Traits; namespace OpenRA.Mods.RA.Render { - public class WithVoxelWalkerBodyInfo : ITraitInfo, Requires, Requires + public class WithVoxelWalkerBodyInfo : ITraitInfo, Requires, Requires { public readonly int TickRate = 5; public object Create(ActorInitializer init) { return new WithVoxelWalkerBody(init.self, this); } @@ -25,14 +25,14 @@ namespace OpenRA.Mods.RA.Render public class WithVoxelWalkerBody : IAutoSelectionSize, ITick { WithVoxelWalkerBodyInfo info; - Mobile mobile; + IMove movement; int2 size; uint tick, frame, frames; public WithVoxelWalkerBody(Actor self, WithVoxelWalkerBodyInfo info) { this.info = info; - mobile = self.Trait(); + movement = self.Trait(); var body = self.Trait(); var rv = self.Trait(); @@ -53,7 +53,7 @@ namespace OpenRA.Mods.RA.Render public void Tick(Actor self) { - if (mobile.IsMoving) + if (movement.IsMoving) tick++; if (tick < info.TickRate) diff --git a/OpenRA.Mods.RA/Repairable.cs b/OpenRA.Mods.RA/Repairable.cs index e34488d9f0..7c246ff359 100644 --- a/OpenRA.Mods.RA/Repairable.cs +++ b/OpenRA.Mods.RA/Repairable.cs @@ -73,13 +73,13 @@ namespace OpenRA.Mods.RA if( !CanRepairAt( order.TargetActor ) || !CanRepair() ) return; - var mobile = self.Trait(); + var movement = self.Trait(); var target = Target.FromOrder(order); self.SetTargetLine(target, Color.Green); self.CancelActivity(); self.QueueActivity(new MoveAdjacentTo(self, target)); - self.QueueActivity(mobile.MoveTo(order.TargetActor.CenterPosition.ToCPos(), order.TargetActor)); + self.QueueActivity(movement.MoveTo(order.TargetActor.CenterPosition.ToCPos(), order.TargetActor)); self.QueueActivity(new Rearm(self)); self.QueueActivity(new Repair(order.TargetActor)); @@ -88,7 +88,7 @@ namespace OpenRA.Mods.RA self.QueueActivity(new CallFunc(() => { self.SetTargetLine(Target.FromCell(rp.rallyPoint), Color.Green); - self.QueueActivity(mobile.MoveTo(rp.rallyPoint, order.TargetActor)); + self.QueueActivity(movement.MoveTo(rp.rallyPoint, order.TargetActor)); })); } } diff --git a/OpenRA.Mods.RA/RepairableNear.cs b/OpenRA.Mods.RA/RepairableNear.cs index e8e209f71a..14b49382be 100644 --- a/OpenRA.Mods.RA/RepairableNear.cs +++ b/OpenRA.Mods.RA/RepairableNear.cs @@ -65,11 +65,11 @@ namespace OpenRA.Mods.RA { if (order.OrderString == "RepairNear" && CanRepairAt(order.TargetActor) && ShouldRepair()) { - var mobile = self.Trait(); + var movement = self.Trait(); var target = Target.FromOrder(order); self.CancelActivity(); - self.QueueActivity(mobile.MoveWithinRange(target, new WRange(1024*info.CloseEnough))); + self.QueueActivity(movement.MoveWithinRange(target, new WRange(1024*info.CloseEnough))); self.QueueActivity(new Repair(order.TargetActor)); self.SetTargetLine(target, Color.Green, false);