cleaning techtree & sidebar; building placement is mostly fixed

This commit is contained in:
Chris Forbes
2009-10-20 22:35:05 +13:00
parent b3aa4bf60b
commit 6c0ced3e9a
8 changed files with 121 additions and 144 deletions

View File

@@ -0,0 +1,51 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace OpenRa.Game
{
class PlaceBuildingOrder : Order
{
PlaceBuilding building;
int2 xy;
public PlaceBuildingOrder(PlaceBuilding building, int2 xy)
{
this.building = building;
this.xy = xy;
}
public override void Apply(bool leftMouseButton)
{
if (leftMouseButton)
{
Game.world.AddFrameEndTask(_ =>
{
Log.Write("Player \"{0}\" builds {1}", building.Owner.PlayerName, building.Name);
//Adjust placement for cursor to be in middle
var footprint = Rules.Footprint.GetFootprint(building.Name);
int maxWidth = 0;
foreach (var row in footprint)
if (row.Length > maxWidth)
maxWidth = row.Length;
Game.world.Add(new Actor(building.Name,
xy - new int2(maxWidth / 2, footprint.Length / 2), building.Owner));
Game.controller.orderGenerator = null;
Game.worldRenderer.uiOverlay.KillOverlay();
});
}
else
{
Game.world.AddFrameEndTask(_ =>
{
Game.controller.orderGenerator = null;
Game.worldRenderer.uiOverlay.KillOverlay();
});
}
}
}
}