a bit of cleanup

This commit is contained in:
Chris Forbes
2010-06-12 21:48:52 +12:00
parent 02350e6ac8
commit bcf7328d77

View File

@@ -27,38 +27,39 @@ namespace OpenRA.Traits
class PlaceBuilding : IResolveOrder class PlaceBuilding : IResolveOrder
{ {
public void ResolveOrder( Actor self, Order order ) public void ResolveOrder(Actor self, Order order)
{ {
if( order.OrderString == "PlaceBuilding" || order.OrderString == "LineBuild" ) if (order.OrderString == "PlaceBuilding" || order.OrderString == "LineBuild")
{ {
self.World.AddFrameEndTask( w => self.World.AddFrameEndTask(w =>
{ {
var prevItems = GetNumBuildables(self.Owner); var prevItems = GetNumBuildables(self.Owner);
var queue = self.traits.Get<ProductionQueue>(); var queue = self.traits.Get<ProductionQueue>();
var unit = Rules.Info[ order.TargetString ]; var unit = Rules.Info[order.TargetString];
var producing = queue.CurrentItem(unit.Category); var producing = queue.CurrentItem(unit.Category);
if( producing == null || producing.Item != order.TargetString || producing.RemainingTime != 0 ) if (producing == null || producing.Item != order.TargetString || producing.RemainingTime != 0)
return; return;
if( order.OrderString == "LineBuild" ) var buildingInfo = unit.Traits.Get<BuildingInfo>();
if (order.OrderString == "LineBuild")
{ {
bool playSounds = true; bool playSounds = true;
var buildingInfo = unit.Traits.Get<BuildingInfo>(); foreach (var t in LineBuildUtils.GetLineBuildCells(w, order.TargetLocation, order.TargetString, buildingInfo))
foreach( var t in LineBuildUtils.GetLineBuildCells( w, order.TargetLocation, order.TargetString, buildingInfo ) )
{ {
var building = w.CreateActor( order.TargetString, t, order.Player ); var building = w.CreateActor(order.TargetString, t, order.Player);
if( playSounds ) if (playSounds)
foreach( var s in building.Info.Traits.Get<BuildingInfo>().BuildSounds ) foreach (var s in buildingInfo.BuildSounds)
Sound.PlayToPlayer( order.Player, s, building.CenterLocation ); Sound.PlayToPlayer(order.Player, s, building.CenterLocation);
playSounds = false; playSounds = false;
} }
} }
else else
{ {
var building = w.CreateActor( order.TargetString, order.TargetLocation, order.Player ); var building = w.CreateActor(order.TargetString, order.TargetLocation, order.Player);
foreach (var s in building.Info.Traits.Get<BuildingInfo>().BuildSounds) foreach (var s in buildingInfo.BuildSounds)
Sound.PlayToPlayer(order.Player, s, building.CenterLocation); Sound.PlayToPlayer(order.Player, s, building.CenterLocation);
} }
@@ -79,7 +80,7 @@ namespace OpenRA.Traits
w.Add(new DelayedAction(10, w.Add(new DelayedAction(10,
() => Sound.PlayToPlayer(order.Player, () => Sound.PlayToPlayer(order.Player,
w.WorldActor.Info.Traits.Get<EvaAlertsInfo>().NewOptions))); w.WorldActor.Info.Traits.Get<EvaAlertsInfo>().NewOptions)));
} ); });
} }
} }