diff --git a/OpenRa.Game/Building.cs b/OpenRa.Game/Building.cs index 04171865c9..3dd15bab13 100644 --- a/OpenRa.Game/Building.cs +++ b/OpenRa.Game/Building.cs @@ -16,6 +16,7 @@ namespace OpenRa.Game animation = new Animation( name ); animation.PlayThen( "make", delegate { animation.Play( "idle" ); } ); + owner.TechTree.Build( name, true ); } public override void Tick( Game game, int t ) diff --git a/OpenRa.Game/Game.cs b/OpenRa.Game/Game.cs index 485278b88e..ac1e9cf6f3 100644 --- a/OpenRa.Game/Game.cs +++ b/OpenRa.Game/Game.cs @@ -16,7 +16,8 @@ namespace OpenRa.Game public readonly Viewport viewport; public readonly PathFinder pathFinder; public readonly Network network; - public readonly TechTree.TechTree techTree = new TechTree.TechTree(); + + public int localPlayerIndex = 1; public readonly Dictionary players = new Dictionary(); @@ -26,7 +27,7 @@ namespace OpenRa.Game public Game(string mapName, Renderer renderer, int2 clientSize) { for( int i = 0 ; i < 8 ; i++ ) - players.Add( i, new Player( i, string.Format( "Multi{0}", i ) ) ); + players.Add( i, new Player( i, string.Format( "Multi{0}", i ), OpenRa.TechTree.Race.Soviet ) ); map = new Map(new IniFile(FileSystem.Open(mapName))); FileSystem.Mount(new Package("../../../" + map.Theater + ".mix")); diff --git a/OpenRa.Game/Player.cs b/OpenRa.Game/Player.cs index 2fa988b8fd..3fd049fbf4 100644 --- a/OpenRa.Game/Player.cs +++ b/OpenRa.Game/Player.cs @@ -8,11 +8,13 @@ namespace OpenRa.Game { public int Palette; public string PlayerName; + public TechTree.TechTree TechTree = new OpenRa.TechTree.TechTree(); - public Player( int palette, string playerName ) + public Player( int palette, string playerName, OpenRa.TechTree.Race race ) { this.Palette = palette; this.PlayerName = playerName; + TechTree.CurrentRace = race; } } } diff --git a/OpenRa.Game/Sidebar.cs b/OpenRa.Game/Sidebar.cs index f11c94ea14..4e59ef09a4 100644 --- a/OpenRa.Game/Sidebar.cs +++ b/OpenRa.Game/Sidebar.cs @@ -31,12 +31,10 @@ namespace OpenRa.Game public Sidebar( Race race, Renderer renderer, Game game ) { - this.techTree = game.techTree; + this.techTree = game.players[ game.localPlayerIndex ].TechTree; this.game = game; region = Region.Create(game.viewport, DockStyle.Right, 128, Paint, MouseHandler); game.viewport.AddRegion( region ); - techTree.CurrentRace = race; - techTree.Build("FACT", true); spriteRenderer = new SpriteRenderer(renderer, false); clockRenderer = new SpriteRenderer(renderer, true); @@ -163,7 +161,6 @@ namespace OpenRa.Game { Log.Write( "Player \"{0}\" builds {1}", building.owner.PlayerName, building.buildingName ); game.world.Add( newBuilding( xy, building.owner ) ); - game.techTree.Build( building.buildingName ); } game.world.orderGenerator = null; } );