PlaceBuilding now works on behalf of an actor, not a player.

This commit is contained in:
Bob
2009-12-16 01:12:02 +13:00
parent e505726a8b
commit 6b777ddcf4
2 changed files with 8 additions and 8 deletions

View File

@@ -294,7 +294,7 @@ namespace OpenRa.Game
if (producing.Done) if (producing.Done)
{ {
if (group == "Building" || group == "Defense") if (group == "Building" || group == "Defense")
Game.controller.orderGenerator = new PlaceBuilding(player, item); Game.controller.orderGenerator = new PlaceBuilding(player.PlayerActor, item);
} }
else else
Game.controller.AddOrder(Order.PauseProduction(player, item, false)); Game.controller.AddOrder(Order.PauseProduction(player, item, false));

View File

@@ -5,12 +5,12 @@ namespace OpenRa.Game
{ {
class PlaceBuilding : IOrderGenerator class PlaceBuilding : IOrderGenerator
{ {
public readonly Player Owner; readonly Actor Producer;
public readonly BuildingInfo Building; readonly BuildingInfo Building;
public PlaceBuilding(Player owner, string name) public PlaceBuilding(Actor producer, string name)
{ {
Owner = owner; Producer = producer;
Building = (BuildingInfo)Rules.UnitInfo[ name ]; Building = (BuildingInfo)Rules.UnitInfo[ name ];
} }
@@ -21,10 +21,10 @@ namespace OpenRa.Game
if( !Game.CanPlaceBuilding( Building, xy, null, true ) ) if( !Game.CanPlaceBuilding( Building, xy, null, true ) )
yield break; yield break;
if (!Game.IsCloseEnoughToBase(Owner, Building, xy)) if (!Game.IsCloseEnoughToBase(Producer.Owner, Building, xy))
yield break; yield break;
yield return OpenRa.Game.Order.PlaceBuilding( Owner, xy, Building.Name ); yield return OpenRa.Game.Order.PlaceBuilding( Producer.Owner, xy, Building.Name );
} }
else // rmb else // rmb
{ {
@@ -34,7 +34,7 @@ namespace OpenRa.Game
public void Tick() public void Tick()
{ {
var producing = Owner.PlayerActor.traits.Get<Traits.ProductionQueue>().Producing( Rules.UnitCategory[ Building.Name ] ); var producing = Producer.traits.Get<Traits.ProductionQueue>().Producing( Rules.UnitCategory[ Building.Name ] );
if( producing == null || producing.Item != Building.Name || producing.RemainingTime != 0 ) if( producing == null || producing.Item != Building.Name || producing.RemainingTime != 0 )
Game.world.AddFrameEndTask( _ => { Game.controller.orderGenerator = null; } ); Game.world.AddFrameEndTask( _ => { Game.controller.orderGenerator = null; } );
} }