pruning refs to Game.world

This commit is contained in:
Bob
2010-08-20 17:46:58 +12:00
parent 0e71af25f4
commit 3f68330c70
13 changed files with 30 additions and 17 deletions

View File

@@ -45,7 +45,9 @@ namespace OpenRA.Traits
public bool IsUsed; public bool IsUsed;
public bool IsAvailable; public bool IsAvailable;
public bool IsReady { get { return IsAvailable && RemainingTime == 0; } } public bool IsReady { get { return IsAvailable && RemainingTime == 0; } }
public readonly Player Owner;
protected readonly Actor Self;
protected readonly Player Owner;
bool notifiedCharging; bool notifiedCharging;
bool notifiedReady; bool notifiedReady;
@@ -54,6 +56,7 @@ namespace OpenRA.Traits
{ {
Info = info; Info = info;
RemainingTime = TotalTime; RemainingTime = TotalTime;
Self = self;
Owner = self.Owner; Owner = self.Owner;
self.Trait<TechTreeCache>().Add( Info.Prerequisites.Select( a => Rules.Info[ a.ToLowerInvariant() ] ).ToList(), this ); self.Trait<TechTreeCache>().Add( Info.Prerequisites.Select( a => Rules.Info[ a.ToLowerInvariant() ] ).ToList(), this );

View File

@@ -42,7 +42,7 @@ namespace OpenRA.Mods.Cnc
protected override void OnActivate() protected override void OnActivate()
{ {
Game.world.OrderGenerator = Self.World.OrderGenerator =
new GenericSelectTargetWithBuilding<IonControl>(Owner.PlayerActor, "IonCannon", "ability"); new GenericSelectTargetWithBuilding<IonControl>(Owner.PlayerActor, "IonCannon", "ability");
} }
} }

View File

@@ -35,8 +35,8 @@ namespace OpenRA.Mods.RA.Effects
if (silo == null) if (silo == null)
{ {
altitude = Game.world.Map.Height*Game.CellSize; altitude = silo.World.Map.Height*Game.CellSize;
StartDescent(Game.world); StartDescent(silo.World);
} }
else else
pos = silo.CenterLocation + spawnOffset; pos = silo.CenterLocation + spawnOffset;
@@ -65,7 +65,7 @@ namespace OpenRA.Mods.RA.Effects
if (altitude <= 0) if (altitude <= 0)
{ {
// Trigger screen desaturate effect // Trigger screen desaturate effect
foreach (var a in Game.world.Queries.WithTrait<NukePaletteEffect>()) foreach (var a in world.Queries.WithTrait<NukePaletteEffect>())
a.Trait.Enable(); a.Trait.Enable();
Explode(world); Explode(world);

View File

@@ -89,7 +89,7 @@ namespace OpenRA.Mods.RA
foreach (var r in rs) foreach (var r in rs)
yield return r; yield return r;
if (self.Owner == Game.world.LocalPlayer && Level > 0) if (self.Owner == self.World.LocalPlayer && Level > 0)
{ {
RankAnim.Tick(); // hack RankAnim.Tick(); // hack
var bounds = self.GetBounds(true); var bounds = self.GetBounds(true);

View File

@@ -127,7 +127,7 @@ namespace OpenRA.Mods.RA
var minefield = GetMinefieldCells(ml.minefieldStart, lastMousePos, minelayer.Info.Traits.Get<MinelayerInfo>().MinefieldDepth) var minefield = GetMinefieldCells(ml.minefieldStart, lastMousePos, minelayer.Info.Traits.Get<MinelayerInfo>().MinefieldDepth)
.Where(p => movement.CanEnterCell(p)).ToArray(); .Where(p => movement.CanEnterCell(p)).ToArray();
Game.world.WorldRenderer.DrawLocus(Color.Cyan, minefield); world.WorldRenderer.DrawLocus(Color.Cyan, minefield);
} }
public void RenderBeforeWorld(World world) { } public void RenderBeforeWorld(World world) { }
@@ -141,7 +141,7 @@ namespace OpenRA.Mods.RA
return; return;
if (minefield != null) if (minefield != null)
Game.world.WorldRenderer.DrawLocus(Color.Cyan, minefield); self.World.WorldRenderer.DrawLocus(Color.Cyan, minefield);
} }
} }
} }

View File

@@ -48,7 +48,7 @@ namespace OpenRA.Mods.RA.Orders
public static bool PlayerIsAllowedToRepair( World world ) public static bool PlayerIsAllowedToRepair( World world )
{ {
return Game.world.Queries.OwnedBy[ Game.world.LocalPlayer ].WithTrait<AllowsBuildingRepair>().Any(); return world.Queries.OwnedBy[ world.LocalPlayer ].WithTrait<AllowsBuildingRepair>().Any();
} }
public void RenderAfterWorld( World world ) {} public void RenderAfterWorld( World world ) {}

View File

@@ -32,7 +32,7 @@ namespace OpenRA.Mods.RA
protected override void OnActivate() 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) public void ResolveOrder(Actor self, Order order)

View File

@@ -24,7 +24,7 @@ namespace OpenRA.Mods.RA
class ChronoshiftPower : SupportPower, IResolveOrder class ChronoshiftPower : SupportPower, IResolveOrder
{ {
public ChronoshiftPower(Actor self, ChronoshiftPowerInfo info) : base(self, info) { } 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) public void ResolveOrder(Actor self, Order order)
{ {

View File

@@ -29,7 +29,7 @@ namespace OpenRA.Mods.RA
protected override void OnFinishCharging() { Sound.PlayToPlayer(Owner, "ironrdy1.aud"); } protected override void OnFinishCharging() { Sound.PlayToPlayer(Owner, "ironrdy1.aud"); }
protected override void OnActivate() protected override void OnActivate()
{ {
Game.world.OrderGenerator = new SelectTarget(); Self.World.OrderGenerator = new SelectTarget();
Sound.Play("slcttgt1.aud"); Sound.Play("slcttgt1.aud");
} }

View File

@@ -27,7 +27,7 @@ namespace OpenRA.Mods.RA
protected override void OnActivate() protected override void OnActivate()
{ {
Game.world.OrderGenerator = Self.World.OrderGenerator =
new GenericSelectTargetWithBuilding<NukeSilo>(Owner.PlayerActor, "NuclearMissile", "nuke"); new GenericSelectTargetWithBuilding<NukeSilo>(Owner.PlayerActor, "NuclearMissile", "nuke");
} }

View File

@@ -33,7 +33,7 @@ namespace OpenRA.Mods.RA
protected override void OnActivate() protected override void OnActivate()
{ {
Game.world.OrderGenerator = Self.World.OrderGenerator =
new GenericSelectTarget( Owner.PlayerActor, "ParatroopersActivate", "ability" ); new GenericSelectTarget( Owner.PlayerActor, "ParatroopersActivate", "ability" );
} }

View File

@@ -29,7 +29,7 @@ namespace OpenRA.Mods.RA
protected override void OnFinishCharging() { Sound.PlayToPlayer(Owner, "spypln1.aud"); } protected override void OnFinishCharging() { Sound.PlayToPlayer(Owner, "spypln1.aud"); }
protected override void OnActivate() 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"); Sound.Play("slcttgt1.aud");
} }

View File

@@ -14,13 +14,23 @@ using OpenRA.Widgets;
namespace OpenRA.Mods.RA.Widgets namespace OpenRA.Mods.RA.Widgets
{ {
class ChoosePaletteOnSelectInfo : TraitInfo<ChoosePaletteOnSelect> { } class ChoosePaletteOnSelectInfo : ITraitInfo
{
public object Create( ActorInitializer init ) { return new ChoosePaletteOnSelect( init ); }
}
class ChoosePaletteOnSelect : INotifySelection class ChoosePaletteOnSelect : INotifySelection
{ {
readonly World world;
public ChoosePaletteOnSelect( ActorInitializer init )
{
world = init.world;
}
public void SelectionChanged() public void SelectionChanged()
{ {
var firstItem = Game.world.Selection.Actors.FirstOrDefault( var firstItem = world.Selection.Actors.FirstOrDefault(
a => a.World.LocalPlayer == a.Owner && a.HasTrait<Production>()); a => a.World.LocalPlayer == a.Owner && a.HasTrait<Production>());
if (firstItem == null) if (firstItem == null)