diff --git a/OpenRA.Game/Traits/TraitsInterfaces.cs b/OpenRA.Game/Traits/TraitsInterfaces.cs index 4e1457d89d..4d37136723 100755 --- a/OpenRA.Game/Traits/TraitsInterfaces.cs +++ b/OpenRA.Game/Traits/TraitsInterfaces.cs @@ -138,7 +138,7 @@ namespace OpenRA.Traits public interface ITags { IEnumerable GetTags(); } public interface ISelectionBar { float GetValue(); Color GetColor(); } - public interface ITeleportable : IOccupySpace + public interface IPositionable : IOccupySpace { bool CanEnterCell(CPos location); void SetPosition(Actor self, CPos cell); diff --git a/OpenRA.Mods.Cnc/Missions/Gdi01Script.cs b/OpenRA.Mods.Cnc/Missions/Gdi01Script.cs index 4b1e8276e6..97fc4f0c66 100644 --- a/OpenRA.Mods.Cnc/Missions/Gdi01Script.cs +++ b/OpenRA.Mods.Cnc/Missions/Gdi01Script.cs @@ -205,7 +205,7 @@ namespace OpenRA.Mods.Cnc.Missions { if (b.Destroyed) return; w2.Add(b); - b.TraitsImplementing().FirstOrDefault().SetPosition(b, a.Location); + b.TraitsImplementing().FirstOrDefault().SetPosition(b, a.Location); b.QueueActivity(mobile.MoveTo(unload, 2)); }); } diff --git a/OpenRA.Mods.Cnc/Missions/Nod01Script.cs b/OpenRA.Mods.Cnc/Missions/Nod01Script.cs index d0f8c6d517..1eb7a1c667 100644 --- a/OpenRA.Mods.Cnc/Missions/Nod01Script.cs +++ b/OpenRA.Mods.Cnc/Missions/Nod01Script.cs @@ -5,6 +5,7 @@ * available to you under the terms of the GNU General Public License * as published by the Free Software Foundation. For more information, * see COPYING. +<<<<<<< HEAD */ #endregion @@ -135,7 +136,7 @@ namespace OpenRA.Mods.Cnc.Missions IEnumerable UnitsNearActor(Actor actor, int range) { return world.FindActorsInCircle(actor.CenterPosition, WRange.FromCells(range)) - .Where(a => a.IsInWorld && a != world.WorldActor && !a.Destroyed && a.HasTrait() && !a.Owner.NonCombatant); + .Where(a => a.IsInWorld && a != world.WorldActor && !a.Destroyed && a.HasTrait() && !a.Owner.NonCombatant); } void NODReinforceNthA() diff --git a/OpenRA.Mods.RA/AI/HackyAI.cs b/OpenRA.Mods.RA/AI/HackyAI.cs index f759199a26..c0201ce051 100644 --- a/OpenRA.Mods.RA/AI/HackyAI.cs +++ b/OpenRA.Mods.RA/AI/HackyAI.cs @@ -763,7 +763,7 @@ namespace OpenRA.Mods.RA.AI if (!buildableThings.Any()) return null; var myUnits = p.World - .ActorsWithTrait() + .ActorsWithTrait() .Where(a => a.Actor.Owner == p) .Select(a => a.Actor.Info.Name).ToArray(); @@ -783,7 +783,7 @@ namespace OpenRA.Mods.RA.AI int CountUnits(string unit, Player owner) { - return world.ActorsWithTrait().Where(a => a.Actor.Owner == owner && a.Actor.Info.Name == unit).Count(); + return world.ActorsWithTrait().Where(a => a.Actor.Owner == owner && a.Actor.Info.Name == unit).Count(); } int? CountBuildingByCommonName(string commonName, Player owner) @@ -1145,7 +1145,7 @@ namespace OpenRA.Mods.RA.AI void FindNewUnits(Actor self) { - var newUnits = self.World.ActorsWithTrait() + var newUnits = self.World.ActorsWithTrait() .Where(a => a.Actor.Owner == p && !a.Actor.HasTrait() && !activeUnits.Contains(a.Actor)) .Select(a => a.Actor).ToArray(); diff --git a/OpenRA.Mods.RA/Activities/Teleport.cs b/OpenRA.Mods.RA/Activities/Teleport.cs index 0b58ab398e..39ad10bd0d 100755 --- a/OpenRA.Mods.RA/Activities/Teleport.cs +++ b/OpenRA.Mods.RA/Activities/Teleport.cs @@ -1,4 +1,4 @@ -#region Copyright & License Information +#region Copyright & License Information /* * Copyright 2007-2011 The OpenRA Developers (see AUTHORS) * This file is part of OpenRA, which is free software. It is made @@ -34,7 +34,7 @@ namespace OpenRA.Mods.RA.Activities Sound.Play(sound, self.CenterPosition); Sound.Play(sound, destination.CenterPosition); - self.Trait().SetPosition(self, destination); + self.Trait().SetPosition(self, destination); self.Generation++; if (killCargo && self.HasTrait()) @@ -68,7 +68,7 @@ namespace OpenRA.Mods.RA.Activities public override Activity Tick(Actor self) { - self.Trait().SetPosition(self, destination); + self.Trait().SetPosition(self, destination); self.Generation++; return NextActivity; } diff --git a/OpenRA.Mods.RA/Air/Aircraft.cs b/OpenRA.Mods.RA/Air/Aircraft.cs index f105538e3c..74ed1da009 100755 --- a/OpenRA.Mods.RA/Air/Aircraft.cs +++ b/OpenRA.Mods.RA/Air/Aircraft.cs @@ -36,7 +36,7 @@ namespace OpenRA.Mods.RA.Air public int GetInitialFacing() { return InitialFacing; } } - public class Aircraft : IFacing, ITeleportable, ISync, INotifyKilled, IIssueOrder, IOrderVoice + public class Aircraft : IFacing, IPositionable, ISync, INotifyKilled, IIssueOrder, IOrderVoice { public IDisposable reservation; diff --git a/OpenRA.Mods.RA/Air/EjectOnDeath.cs b/OpenRA.Mods.RA/Air/EjectOnDeath.cs index 879aebc631..24e357239b 100644 --- a/OpenRA.Mods.RA/Air/EjectOnDeath.cs +++ b/OpenRA.Mods.RA/Air/EjectOnDeath.cs @@ -1,4 +1,4 @@ -#region Copyright & License Information +#region Copyright & License Information /* * Copyright 2007-2011 The OpenRA Developers (see AUTHORS) * This file is part of OpenRA, which is free software. It is made @@ -30,7 +30,7 @@ namespace OpenRA.Mods.RA var pilot = self.World.CreateActor(false, info.PilotActor.ToLowerInvariant(), new TypeDictionary { new OwnerInit(self.Owner) }); var r = self.World.SharedRandom.Next(1, 100); - var aircraft = self.Trait(); + var aircraft = self.Trait(); if (IsSuitableCell(pilot, self.Location) && r > 100 - info.SuccessRate && aircraft.Altitude > 10 && self.Owner.WinState != WinState.Lost) @@ -44,7 +44,7 @@ namespace OpenRA.Mods.RA bool IsSuitableCell(Actor actorToDrop, CPos p) { - return actorToDrop.Trait().CanEnterCell(p); + return actorToDrop.Trait().CanEnterCell(p); } } } \ No newline at end of file diff --git a/OpenRA.Mods.RA/Bridge.cs b/OpenRA.Mods.RA/Bridge.cs index 3eb7dc9cac..ec2d7545f0 100644 --- a/OpenRA.Mods.RA/Bridge.cs +++ b/OpenRA.Mods.RA/Bridge.cs @@ -158,7 +158,7 @@ namespace OpenRA.Mods.RA { foreach (var c in TileSprites[currentTemplate].Keys) foreach (var a in self.World.ActorMap.GetUnitsAt(c)) - if (a.HasTrait() && !a.Trait().CanEnterCell(c)) + if (a.HasTrait() && !a.Trait().CanEnterCell(c)) a.Kill(self); } diff --git a/OpenRA.Mods.RA/ChronoshiftDeploy.cs b/OpenRA.Mods.RA/ChronoshiftDeploy.cs index dc96a6b006..0a6c5bb7a6 100644 --- a/OpenRA.Mods.RA/ChronoshiftDeploy.cs +++ b/OpenRA.Mods.RA/ChronoshiftDeploy.cs @@ -94,7 +94,7 @@ namespace OpenRA.Mods.RA public bool CanJumpTo(CPos xy, bool ignoreVis) { - var movement = self.TraitOrDefault(); + var movement = self.TraitOrDefault(); if (chargeTick <= 0 // Can jump && (self.Location - xy).Length <= Info.JumpDistance // Within jump range diff --git a/OpenRA.Mods.RA/Chronoshiftable.cs b/OpenRA.Mods.RA/Chronoshiftable.cs index 44e54bc9e4..2c70fffd64 100755 --- a/OpenRA.Mods.RA/Chronoshiftable.cs +++ b/OpenRA.Mods.RA/Chronoshiftable.cs @@ -1,4 +1,4 @@ -#region Copyright & License Information +#region Copyright & License Information /* * Copyright 2007-2013 The OpenRA Developers (see AUTHORS) * This file is part of OpenRA, which is free software. It is made @@ -58,7 +58,7 @@ namespace OpenRA.Mods.RA public virtual bool CanChronoshiftTo(Actor self, CPos targetLocation) { // TODO: Allow enemy units to be chronoshifted into bad terrain to kill them - return (self.HasTrait() && self.Trait().CanEnterCell(targetLocation)); + return (self.HasTrait() && self.Trait().CanEnterCell(targetLocation)); } public virtual bool Teleport(Actor self, CPos targetLocation, int duration, bool killCargo, Actor chronosphere) diff --git a/OpenRA.Mods.RA/Crate.cs b/OpenRA.Mods.RA/Crate.cs index 8acafa496c..fde9751988 100644 --- a/OpenRA.Mods.RA/Crate.cs +++ b/OpenRA.Mods.RA/Crate.cs @@ -24,7 +24,7 @@ namespace OpenRA.Mods.RA } // ITeleportable is required for paradrop - class Crate : ITick, ITeleportable, ICrushable, ISync, INotifyParachuteLanded + class Crate : ITick, IPositionable, ICrushable, ISync, INotifyParachuteLanded { readonly Actor self; [Sync] int ticks; diff --git a/OpenRA.Mods.RA/Effects/Parachute.cs b/OpenRA.Mods.RA/Effects/Parachute.cs index 9939f0f74a..8ebbf056e1 100644 --- a/OpenRA.Mods.RA/Effects/Parachute.cs +++ b/OpenRA.Mods.RA/Effects/Parachute.cs @@ -36,7 +36,7 @@ namespace OpenRA.Mods.RA.Effects parachuteOffset = pai.Offset; // Adjust x,y to match the target subcell - cargo.Trait().SetPosition(cargo, dropPosition.ToCPos()); + cargo.Trait().SetPosition(cargo, dropPosition.ToCPos()); var cp = cargo.CenterPosition; pos = new WPos(cp.X, cp.Y, dropPosition.Z); } diff --git a/OpenRA.Mods.RA/Minelayer.cs b/OpenRA.Mods.RA/Minelayer.cs index ddd6de89f2..f6d25c367f 100644 --- a/OpenRA.Mods.RA/Minelayer.cs +++ b/OpenRA.Mods.RA/Minelayer.cs @@ -1,4 +1,4 @@ -#region Copyright & License Information +#region Copyright & License Information /* * Copyright 2007-2011 The OpenRA Developers (see AUTHORS) * This file is part of OpenRA, which is free software. It is made @@ -60,7 +60,7 @@ namespace OpenRA.Mods.RA if (order.OrderString == "PlaceMinefield") { - var movement = self.Trait(); + var movement = self.Trait(); minefield = GetMinefieldCells(minefieldStart, order.TargetLocation, self.Info.Traits.Get().MinefieldDepth) @@ -130,7 +130,7 @@ namespace OpenRA.Mods.RA if (!minelayer.IsInWorld) return; - var movement = minelayer.Trait(); + var movement = minelayer.Trait(); var minefield = GetMinefieldCells(minefieldStart, lastMousePos, minelayer.Info.Traits.Get().MinefieldDepth) .Where(p => movement.CanEnterCell(p)).ToArray(); diff --git a/OpenRA.Mods.RA/Missions/Allies02Script.cs b/OpenRA.Mods.RA/Missions/Allies02Script.cs index 89bebdd3b1..f6a63cd091 100644 --- a/OpenRA.Mods.RA/Missions/Allies02Script.cs +++ b/OpenRA.Mods.RA/Missions/Allies02Script.cs @@ -170,7 +170,7 @@ namespace OpenRA.Mods.RA.Missions if (yak == null || (yak != null && !yak.IsDead() && (yak.GetCurrentActivity() is FlyCircle || yak.IsIdle))) { var alliedUnitsNearYakPoint = world.FindAliveCombatantActorsInCircle(yakAttackPoint.CenterPosition, WRange.FromCells(10)) - .Where(a => a.Owner != soviets && a.HasTrait() && a != tanya && a != einstein && a != engineer); + .Where(a => a.Owner != soviets && a.HasTrait() && a != tanya && a != einstein && a != engineer); if (alliedUnitsNearYakPoint.Any()) YakStrafe(alliedUnitsNearYakPoint); } @@ -384,7 +384,7 @@ namespace OpenRA.Mods.RA.Missions bool AlliesNearTown() { return world.FindAliveCombatantActorsInCircle(townPoint.CenterPosition, WRange.FromCells(AlliedTownTransferRange)) - .Any(a => a.Owner == allies1 && a.HasTrait()); + .Any(a => a.Owner == allies1 && a.HasTrait()); } void TransferTownUnitsToAllies() @@ -399,7 +399,7 @@ namespace OpenRA.Mods.RA.Missions var sovietAttackUnits = world.FindAliveCombatantActorsInCircle(sovietTownAttackPoint1.CenterPosition, WRange.FromCells(SovietTownAttackGroupRange)) .Union(world.FindAliveCombatantActorsInCircle(sovietTownAttackPoint2.CenterPosition, WRange.FromCells(SovietTownAttackGroupRange))) .Union(world.FindAliveCombatantActorsInCircle(townPoint.CenterPosition, WRange.FromCells(AlliedTownTransferRange))) - .Where(a => a.HasTrait() && a.Owner == soviets); + .Where(a => a.HasTrait() && a.Owner == soviets); foreach (var unit in sovietAttackUnits) unit.QueueActivity(new AttackMove.AttackMoveActivity(unit, new Move.Move(townPoint.Location, SovietTownMoveNearEnough))); diff --git a/OpenRA.Mods.RA/Missions/MissionUtils.cs b/OpenRA.Mods.RA/Missions/MissionUtils.cs index 8e1fff1360..8bd035139c 100644 --- a/OpenRA.Mods.RA/Missions/MissionUtils.cs +++ b/OpenRA.Mods.RA/Missions/MissionUtils.cs @@ -106,7 +106,7 @@ namespace OpenRA.Mods.RA.Missions public static bool AreaSecuredWithUnits(World world, Player player, WPos location, WRange range) { - var units = world.FindAliveCombatantActorsInCircle(location, range).Where(a => a.HasTrait()); + var units = world.FindAliveCombatantActorsInCircle(location, range).Where(a => a.HasTrait()); return units.Any() && units.All(a => a.Owner == player); } diff --git a/OpenRA.Mods.RA/Missions/Survival01Script.cs b/OpenRA.Mods.RA/Missions/Survival01Script.cs index 4f93229a60..4a77635de2 100644 --- a/OpenRA.Mods.RA/Missions/Survival01Script.cs +++ b/OpenRA.Mods.RA/Missions/Survival01Script.cs @@ -1,4 +1,4 @@ -#region Copyright & License Information +#region Copyright & License Information /* * Copyright 2007-2013 The OpenRA Developers (see AUTHORS) * This file is part of OpenRA, which is free software. It is made @@ -185,7 +185,7 @@ namespace OpenRA.Mods.RA.Missions var units = world.CreateActor((sovietInfantry).Random(world.SharedRandom), new TypeDictionary { new LocationInit(sovietinfantryentry1.Location), new OwnerInit(soviets) }); units.QueueActivity(new Move.Move(sovietinfantryrally1.Location, 3)); var unitsincircle = world.FindAliveCombatantActorsInCircle(sovietinfantryrally1.CenterPosition, WRange.FromCells(10)) - .Where(a => a.Owner == soviets && a.IsIdle && a.HasTrait()); + .Where(a => a.Owner == soviets && a.IsIdle && a.HasTrait()); if (unitsincircle.Count() >= sovietInfantryGroupSize) { foreach (var scatteredunits in unitsincircle) diff --git a/OpenRA.Mods.RA/Missions/Survival02Script.cs b/OpenRA.Mods.RA/Missions/Survival02Script.cs index 9e4da5604e..47b54ab47b 100644 --- a/OpenRA.Mods.RA/Missions/Survival02Script.cs +++ b/OpenRA.Mods.RA/Missions/Survival02Script.cs @@ -1,4 +1,4 @@ -#region Copyright & License Information +#region Copyright & License Information /* * Copyright 2007-2013 The OpenRA Developers (see AUTHORS) * This file is part of OpenRA, which is free software. It is made @@ -299,7 +299,7 @@ namespace OpenRA.Mods.RA.Missions void ManageSovietUnits() { var units = world.FindAliveCombatantActorsInCircle(sovietrally.CenterPosition, WRange.FromCells(3)) - .Where(u => u.IsIdle && u.HasTrait() && u.HasTrait() && u.Owner == soviets); + .Where(u => u.IsIdle && u.HasTrait() && u.HasTrait() && u.Owner == soviets); if (units.Count() >= sovietAttackGroupSize) { foreach (var unit in units) diff --git a/OpenRA.Mods.RA/Move/Mobile.cs b/OpenRA.Mods.RA/Move/Mobile.cs index 22f285c9cf..082b2d8b32 100755 --- a/OpenRA.Mods.RA/Move/Mobile.cs +++ b/OpenRA.Mods.RA/Move/Mobile.cs @@ -145,7 +145,7 @@ namespace OpenRA.Mods.RA.Move public int GetInitialFacing() { return InitialFacing; } } - public class Mobile : IIssueOrder, IResolveOrder, IOrderVoice, ITeleportable, IFacing, ISync + public class Mobile : IIssueOrder, IResolveOrder, IOrderVoice, IPositionable, IFacing, ISync { public readonly Actor self; public readonly MobileInfo Info; diff --git a/OpenRA.Mods.RA/Orders/SetChronoTankDestination.cs b/OpenRA.Mods.RA/Orders/SetChronoTankDestination.cs index 5b31bc408b..3b4d2f3ab5 100644 --- a/OpenRA.Mods.RA/Orders/SetChronoTankDestination.cs +++ b/OpenRA.Mods.RA/Orders/SetChronoTankDestination.cs @@ -1,4 +1,4 @@ -#region Copyright & License Information +#region Copyright & License Information /* * Copyright 2007-2011 The OpenRA Developers (see AUTHORS) * This file is part of OpenRA, which is free software. It is made @@ -50,7 +50,7 @@ namespace OpenRA.Mods.RA.Orders if (!world.LocalPlayer.Shroud.IsExplored(xy)) return "move-blocked"; - var movement = self.TraitOrDefault(); + var movement = self.TraitOrDefault(); return (movement.CanEnterCell(xy)) ? "chrono-target" : "move-blocked"; } } diff --git a/OpenRA.Mods.RA/ParaDrop.cs b/OpenRA.Mods.RA/ParaDrop.cs index 9adc524ad7..992d8c3033 100644 --- a/OpenRA.Mods.RA/ParaDrop.cs +++ b/OpenRA.Mods.RA/ParaDrop.cs @@ -1,4 +1,4 @@ -#region Copyright & License Information +#region Copyright & License Information /* * Copyright 2007-2011 The OpenRA Developers (see AUTHORS) * This file is part of OpenRA, which is free software. It is made @@ -60,7 +60,7 @@ namespace OpenRA.Mods.RA bool IsSuitableCell(Actor actorToDrop, CPos p) { - return actorToDrop.Trait().CanEnterCell(p); + return actorToDrop.Trait().CanEnterCell(p); } void FinishedDropping(Actor self) diff --git a/OpenRA.Mods.RA/Player/PlayerStatistics.cs b/OpenRA.Mods.RA/Player/PlayerStatistics.cs index c6fdaaef0f..631c10c221 100644 --- a/OpenRA.Mods.RA/Player/PlayerStatistics.cs +++ b/OpenRA.Mods.RA/Player/PlayerStatistics.cs @@ -112,7 +112,7 @@ namespace OpenRA.Mods.RA attackerStats.BuildingsKilled++; defenderStats.BuildingsDead++; } - else if (self.HasTrait()) + else if (self.HasTrait()) { attackerStats.UnitsKilled++; defenderStats.UnitsDead++; diff --git a/OpenRA.Mods.RA/Production.cs b/OpenRA.Mods.RA/Production.cs index 3a516b6bb8..daa7a2cf05 100755 --- a/OpenRA.Mods.RA/Production.cs +++ b/OpenRA.Mods.RA/Production.cs @@ -67,7 +67,7 @@ namespace OpenRA.Mods.RA // TODO: Move this into an *Init // TODO: We should be adjusting the actual position for aircraft, not just visuals. - var teleportable = newUnit.Trait(); + var teleportable = newUnit.Trait(); teleportable.AdjustPxPosition(newUnit, PPos.FromWPos(spawn)); // TODO: Generalize this for non-mobile (e.g. aircraft) too