diff --git a/OpenRA.Game/Traits/SupportPower.cs b/OpenRA.Game/Traits/SupportPower.cs index 73de5147c1..aa87ab76c9 100644 --- a/OpenRA.Game/Traits/SupportPower.cs +++ b/OpenRA.Game/Traits/SupportPower.cs @@ -45,7 +45,9 @@ namespace OpenRA.Traits public bool IsUsed; public bool IsAvailable; public bool IsReady { get { return IsAvailable && RemainingTime == 0; } } - public readonly Player Owner; + + protected readonly Actor Self; + protected readonly Player Owner; bool notifiedCharging; bool notifiedReady; @@ -54,6 +56,7 @@ namespace OpenRA.Traits { Info = info; RemainingTime = TotalTime; + Self = self; Owner = self.Owner; self.Trait().Add( Info.Prerequisites.Select( a => Rules.Info[ a.ToLowerInvariant() ] ).ToList(), this ); diff --git a/OpenRA.Mods.Cnc/IonCannonPower.cs b/OpenRA.Mods.Cnc/IonCannonPower.cs index 051f68f8a3..7da305e20d 100644 --- a/OpenRA.Mods.Cnc/IonCannonPower.cs +++ b/OpenRA.Mods.Cnc/IonCannonPower.cs @@ -42,7 +42,7 @@ namespace OpenRA.Mods.Cnc protected override void OnActivate() { - Game.world.OrderGenerator = + Self.World.OrderGenerator = new GenericSelectTargetWithBuilding(Owner.PlayerActor, "IonCannon", "ability"); } } diff --git a/OpenRA.Mods.RA/Effects/NukeLaunch.cs b/OpenRA.Mods.RA/Effects/NukeLaunch.cs index b3f2251db4..ab060c94aa 100755 --- a/OpenRA.Mods.RA/Effects/NukeLaunch.cs +++ b/OpenRA.Mods.RA/Effects/NukeLaunch.cs @@ -35,8 +35,8 @@ namespace OpenRA.Mods.RA.Effects if (silo == null) { - altitude = Game.world.Map.Height*Game.CellSize; - StartDescent(Game.world); + altitude = silo.World.Map.Height*Game.CellSize; + StartDescent(silo.World); } else pos = silo.CenterLocation + spawnOffset; @@ -65,7 +65,7 @@ namespace OpenRA.Mods.RA.Effects if (altitude <= 0) { // Trigger screen desaturate effect - foreach (var a in Game.world.Queries.WithTrait()) + foreach (var a in world.Queries.WithTrait()) a.Trait.Enable(); Explode(world); diff --git a/OpenRA.Mods.RA/GainsExperience.cs b/OpenRA.Mods.RA/GainsExperience.cs index 30a249b065..906d4c01c1 100644 --- a/OpenRA.Mods.RA/GainsExperience.cs +++ b/OpenRA.Mods.RA/GainsExperience.cs @@ -89,7 +89,7 @@ namespace OpenRA.Mods.RA foreach (var r in rs) yield return r; - if (self.Owner == Game.world.LocalPlayer && Level > 0) + if (self.Owner == self.World.LocalPlayer && Level > 0) { RankAnim.Tick(); // hack var bounds = self.GetBounds(true); diff --git a/OpenRA.Mods.RA/Minelayer.cs b/OpenRA.Mods.RA/Minelayer.cs index 73882a7a23..5e2a361a5e 100644 --- a/OpenRA.Mods.RA/Minelayer.cs +++ b/OpenRA.Mods.RA/Minelayer.cs @@ -127,7 +127,7 @@ namespace OpenRA.Mods.RA var minefield = GetMinefieldCells(ml.minefieldStart, lastMousePos, minelayer.Info.Traits.Get().MinefieldDepth) .Where(p => movement.CanEnterCell(p)).ToArray(); - Game.world.WorldRenderer.DrawLocus(Color.Cyan, minefield); + world.WorldRenderer.DrawLocus(Color.Cyan, minefield); } public void RenderBeforeWorld(World world) { } @@ -141,7 +141,7 @@ namespace OpenRA.Mods.RA return; if (minefield != null) - Game.world.WorldRenderer.DrawLocus(Color.Cyan, minefield); + self.World.WorldRenderer.DrawLocus(Color.Cyan, minefield); } } } diff --git a/OpenRA.Mods.RA/Orders/RepairOrderGenerator.cs b/OpenRA.Mods.RA/Orders/RepairOrderGenerator.cs index 8df31eb6bd..0bd4c0fe87 100644 --- a/OpenRA.Mods.RA/Orders/RepairOrderGenerator.cs +++ b/OpenRA.Mods.RA/Orders/RepairOrderGenerator.cs @@ -48,7 +48,7 @@ namespace OpenRA.Mods.RA.Orders public static bool PlayerIsAllowedToRepair( World world ) { - return Game.world.Queries.OwnedBy[ Game.world.LocalPlayer ].WithTrait().Any(); + return world.Queries.OwnedBy[ world.LocalPlayer ].WithTrait().Any(); } public void RenderAfterWorld( World world ) {} diff --git a/OpenRA.Mods.RA/SupportPowers/AirstrikePower.cs b/OpenRA.Mods.RA/SupportPowers/AirstrikePower.cs index 2b8bdef8b6..d16391ceeb 100755 --- a/OpenRA.Mods.RA/SupportPowers/AirstrikePower.cs +++ b/OpenRA.Mods.RA/SupportPowers/AirstrikePower.cs @@ -32,7 +32,7 @@ namespace OpenRA.Mods.RA protected override void OnActivate() { - Game.world.OrderGenerator = new GenericSelectTarget(Owner.PlayerActor, Info.OrderName, "ability"); + Self.World.OrderGenerator = new GenericSelectTarget(Owner.PlayerActor, Info.OrderName, "ability"); } public void ResolveOrder(Actor self, Order order) diff --git a/OpenRA.Mods.RA/SupportPowers/ChronoshiftPower.cs b/OpenRA.Mods.RA/SupportPowers/ChronoshiftPower.cs index c735982aee..f99af11dea 100755 --- a/OpenRA.Mods.RA/SupportPowers/ChronoshiftPower.cs +++ b/OpenRA.Mods.RA/SupportPowers/ChronoshiftPower.cs @@ -24,7 +24,7 @@ namespace OpenRA.Mods.RA class ChronoshiftPower : SupportPower, IResolveOrder { public ChronoshiftPower(Actor self, ChronoshiftPowerInfo info) : base(self, info) { } - protected override void OnActivate() { Game.world.OrderGenerator = new SelectTarget(); } + protected override void OnActivate() { Self.World.OrderGenerator = new SelectTarget(); } public void ResolveOrder(Actor self, Order order) { diff --git a/OpenRA.Mods.RA/SupportPowers/IronCurtainPower.cs b/OpenRA.Mods.RA/SupportPowers/IronCurtainPower.cs index 1f991d2ae2..5e04cc44ff 100755 --- a/OpenRA.Mods.RA/SupportPowers/IronCurtainPower.cs +++ b/OpenRA.Mods.RA/SupportPowers/IronCurtainPower.cs @@ -29,7 +29,7 @@ namespace OpenRA.Mods.RA protected override void OnFinishCharging() { Sound.PlayToPlayer(Owner, "ironrdy1.aud"); } protected override void OnActivate() { - Game.world.OrderGenerator = new SelectTarget(); + Self.World.OrderGenerator = new SelectTarget(); Sound.Play("slcttgt1.aud"); } diff --git a/OpenRA.Mods.RA/SupportPowers/NukePower.cs b/OpenRA.Mods.RA/SupportPowers/NukePower.cs index 1cc72d7ae4..197e64eab1 100755 --- a/OpenRA.Mods.RA/SupportPowers/NukePower.cs +++ b/OpenRA.Mods.RA/SupportPowers/NukePower.cs @@ -27,7 +27,7 @@ namespace OpenRA.Mods.RA protected override void OnActivate() { - Game.world.OrderGenerator = + Self.World.OrderGenerator = new GenericSelectTargetWithBuilding(Owner.PlayerActor, "NuclearMissile", "nuke"); } diff --git a/OpenRA.Mods.RA/SupportPowers/ParatroopersPower.cs b/OpenRA.Mods.RA/SupportPowers/ParatroopersPower.cs index 3b3a67e636..75707bf947 100755 --- a/OpenRA.Mods.RA/SupportPowers/ParatroopersPower.cs +++ b/OpenRA.Mods.RA/SupportPowers/ParatroopersPower.cs @@ -33,7 +33,7 @@ namespace OpenRA.Mods.RA protected override void OnActivate() { - Game.world.OrderGenerator = + Self.World.OrderGenerator = new GenericSelectTarget( Owner.PlayerActor, "ParatroopersActivate", "ability" ); } diff --git a/OpenRA.Mods.RA/SupportPowers/SpyPlanePower.cs b/OpenRA.Mods.RA/SupportPowers/SpyPlanePower.cs index 2a34e5feb9..2917b1027a 100755 --- a/OpenRA.Mods.RA/SupportPowers/SpyPlanePower.cs +++ b/OpenRA.Mods.RA/SupportPowers/SpyPlanePower.cs @@ -29,7 +29,7 @@ namespace OpenRA.Mods.RA protected override void OnFinishCharging() { Sound.PlayToPlayer(Owner, "spypln1.aud"); } protected override void OnActivate() { - Game.world.OrderGenerator = new GenericSelectTarget(Owner.PlayerActor, "SpyPlane", "ability"); + Self.World.OrderGenerator = new GenericSelectTarget(Owner.PlayerActor, "SpyPlane", "ability"); Sound.Play("slcttgt1.aud"); } diff --git a/OpenRA.Mods.RA/World/ChoosePaletteOnSelect.cs b/OpenRA.Mods.RA/World/ChoosePaletteOnSelect.cs index b43338f5ec..11528e8e6d 100755 --- a/OpenRA.Mods.RA/World/ChoosePaletteOnSelect.cs +++ b/OpenRA.Mods.RA/World/ChoosePaletteOnSelect.cs @@ -14,13 +14,23 @@ using OpenRA.Widgets; namespace OpenRA.Mods.RA.Widgets { - class ChoosePaletteOnSelectInfo : TraitInfo { } + class ChoosePaletteOnSelectInfo : ITraitInfo + { + public object Create( ActorInitializer init ) { return new ChoosePaletteOnSelect( init ); } + } class ChoosePaletteOnSelect : INotifySelection { + readonly World world; + + public ChoosePaletteOnSelect( ActorInitializer init ) + { + world = init.world; + } + public void SelectionChanged() { - var firstItem = Game.world.Selection.Actors.FirstOrDefault( + var firstItem = world.Selection.Actors.FirstOrDefault( a => a.World.LocalPlayer == a.Owner && a.HasTrait()); if (firstItem == null)