BuildUnit order is now in replay

This commit is contained in:
Chris Forbes
2009-10-29 20:45:07 +13:00
parent 318a1c40dd
commit c3f8019ab4
5 changed files with 107 additions and 97 deletions

View File

@@ -22,7 +22,6 @@ namespace OpenRa.Game
foreach (var order in orderGenerator.Order(xy.ToInt2(), left)) foreach (var order in orderGenerator.Order(xy.ToInt2(), left))
{ {
recentOrders.Add(order); recentOrders.Add(order);
//UnitOrders.ProcessOrder( order );
if (order.Subject != null && order.Player == Game.LocalPlayer) if (order.Subject != null && order.Player == Game.LocalPlayer)
doVoice = order.Subject; doVoice = order.Subject;
} }
@@ -30,6 +29,8 @@ namespace OpenRa.Game
Game.PlaySound(Game.SovietVoices.First.GetNext() + GetVoiceSuffix(doVoice), false); Game.PlaySound(Game.SovietVoices.First.GetNext() + GetVoiceSuffix(doVoice), false);
} }
public void AddOrder(Order o) { recentOrders.Add(o); }
public List<Order> GetRecentOrders() public List<Order> GetRecentOrders()
{ {
var ret = recentOrders; var ret = recentOrders;

View File

@@ -255,7 +255,7 @@ namespace OpenRa.Game
mobile.QueueActivity(new Mobile.MoveTo(unit.Location + new int2(0, 3))); mobile.QueueActivity(new Mobile.MoveTo(unit.Location + new int2(0, 3)));
} }
world.AddFrameEndTask(_ => world.Add(unit)); world.Add(unit);
if (producer.traits.Contains<RenderWarFactory>()) if (producer.traits.Contains<RenderWarFactory>())
producer.traits.Get<RenderWarFactory>().EjectUnit(); producer.traits.Get<RenderWarFactory>().EjectUnit();

View File

@@ -104,5 +104,10 @@ namespace OpenRa.Game
{ {
return new Order(subject, "PlaceBuilding", null, null, target, buildingName); return new Order(subject, "PlaceBuilding", null, null, target, buildingName);
} }
public static Order BuildUnit(Player subject, string unitName)
{
return new Order(subject, "BuildUnit", null, null, int2.Zero, unitName);
}
} }
} }

View File

@@ -60,14 +60,13 @@ namespace OpenRa.Game
public void Build(SidebarItem item) public void Build(SidebarItem item)
{ {
if (item != null) if (item == null) return;
{
if (item.techTreeItem.IsStructure) if (item.techTreeItem.IsStructure)
Game.controller.orderGenerator = new PlaceBuilding(Game.LocalPlayer, Game.controller.orderGenerator = new PlaceBuilding(Game.LocalPlayer,
item.techTreeItem.tag.ToLowerInvariant()); item.techTreeItem.tag.ToLowerInvariant());
else else
Game.BuildUnit(Game.LocalPlayer, item.techTreeItem.tag.ToLowerInvariant()); Game.controller.AddOrder(Order.BuildUnit(Game.LocalPlayer, item.techTreeItem.tag.ToLowerInvariant()));
}
} }
void LoadSprites( string category, string group ) void LoadSprites( string category, string group )

View File

@@ -65,6 +65,11 @@ namespace OpenRa.Game
} ); } );
break; break;
} }
case "BuildUnit":
{
Game.world.AddFrameEndTask(_ => Game.BuildUnit( order.Player, order.TargetString ));
break;
}
default: default:
throw new NotImplementedException(); throw new NotImplementedException();
} }