Minor changes on Sidebar

This commit is contained in:
Bob
2009-10-30 04:44:29 +13:00
parent 0af1e86e65
commit 179d071a97
5 changed files with 234 additions and 233 deletions

View File

@@ -65,7 +65,7 @@ namespace OpenRa.Game
Game.world.Add( new Actor( "jeep", Game.map.Offset + new int2( 9, 15 ), Game.players[ 1 ] ) );
Game.world.Add( new Actor( "3tnk", Game.map.Offset + new int2( 12, 7 ), Game.players[ 1 ] ) );
sidebar = new Sidebar(renderer);
sidebar = new Sidebar(renderer, Game.LocalPlayer);
renderer.BuildPalette(Game.map);

View File

@@ -43,7 +43,7 @@ namespace OpenRa.Game
}
}
// Key: Production category. Categories are: building, infantry, vehicle, boat, plane (and one per super, if they're done in here)
// Key: Production category. Categories are: building, infantry, vehicle, ship, plane (and one per super, if they're done in here)
readonly Dictionary<string, ProductionItem> production = new Dictionary<string, ProductionItem>();
public void ProductionInit( string category )

View File

@@ -13,7 +13,7 @@ namespace OpenRa.Game
class Sidebar
{
TechTree.TechTree techTree;
Player player;
SpriteRenderer spriteRenderer, clockRenderer;
Sprite blank;
@@ -25,17 +25,17 @@ namespace OpenRa.Game
Dictionary<string, Sprite> sprites = new Dictionary<string,Sprite>();
const int spriteWidth = 64, spriteHeight = 48;
static string[] groups = new string[] { "building", "vehicle", "boat", "infantry", "plane" };
static string[] groups = new string[] { "building", "vehicle", "ship", "infantry", "plane" };
Dictionary<string, string> itemGroups = new Dictionary<string,string>(); //item->group
Dictionary<string, Animation> clockAnimations = new Dictionary<string,Animation>(); //group->clockAnimation
List<SidebarItem> items = new List<SidebarItem>();
public Sidebar( Renderer renderer )
public Sidebar( Renderer renderer, Player player )
{
this.techTree = Game.LocalPlayer.TechTree;
this.techTree.BuildableItemsChanged += PopulateItemList;
this.player = player;
this.player.TechTree.BuildableItemsChanged += PopulateItemList;
region = GRegion.Create(Game.viewport, DockStyle.Right, 128, Paint, MouseHandler);
Game.viewport.AddRegion( region );
spriteRenderer = new SpriteRenderer(renderer, false);
@@ -44,12 +44,12 @@ namespace OpenRa.Game
LoadSprites( "BuildingTypes", "building" );
LoadSprites( "VehicleTypes", "vehicle" );
LoadSprites( "InfantryTypes", "infantry" );
LoadSprites( "ShipTypes", "boat" );
LoadSprites( "ShipTypes", "ship" );
LoadSprites( "PlaneTypes", "plane" );
foreach (string group in groups)
{
Game.LocalPlayer.ProductionInit( group );
player.ProductionInit( group );
clockAnimations.Add( group, new Animation( "clock" ) );
clockAnimations[ group ].PlayFetchIndex( "idle", ClockAnimFrame( group ) );
}
@@ -62,7 +62,7 @@ namespace OpenRa.Game
{
return () =>
{
var producing = Game.LocalPlayer.Producing( group );
var producing = player.Producing( group );
if( producing == null ) return 0;
return ( producing.TotalTime - producing.RemainingTime ) * NumClockFrames / producing.TotalTime;
};
@@ -73,10 +73,10 @@ namespace OpenRa.Game
if (item == null) return;
if (item.techTreeItem.IsStructure)
Game.controller.orderGenerator = new PlaceBuilding(Game.LocalPlayer,
Game.controller.orderGenerator = new PlaceBuilding(player,
item.techTreeItem.tag.ToLowerInvariant());
else
Game.controller.AddOrder(Order.BuildUnit(Game.LocalPlayer, item.techTreeItem.tag.ToLowerInvariant()));
Game.controller.AddOrder(Order.BuildUnit(player, item.techTreeItem.tag.ToLowerInvariant()));
}
void LoadSprites( string category, string group )
@@ -112,7 +112,7 @@ namespace OpenRa.Game
items.Clear();
foreach (Item i in techTree.BuildableItems)
foreach (Item i in player.TechTree.BuildableItems)
{
Sprite sprite;
if (!sprites.TryGetValue(i.tag, out sprite)) continue;
@@ -125,7 +125,7 @@ namespace OpenRa.Game
unitPos += spriteHeight;
}
foreach( string g in groups ) Game.LocalPlayer.CancelProduction( g );
foreach( string g in groups ) player.CancelProduction( g );
}
void Paint()
@@ -133,7 +133,7 @@ namespace OpenRa.Game
foreach( SidebarItem i in items )
{
var group = itemGroups[ i.techTreeItem.tag ];
var producing = Game.LocalPlayer.Producing( group );
var producing = player.Producing( group );
if( producing != null && producing.Item == i.techTreeItem.tag )
{
clockAnimations[ group ].Tick();
@@ -167,9 +167,9 @@ namespace OpenRa.Game
if (item != null)
{
string group = itemGroups[item.techTreeItem.tag];
if (Game.LocalPlayer.Producing(group) == null)
if (player.Producing(group) == null)
{
Game.LocalPlayer.BeginProduction( group, new ProductionItem( item.techTreeItem.tag, 25, 0 ) );
player.BeginProduction( group, new ProductionItem( item.techTreeItem.tag, 25, 0 ) );
Build(item);
}
}
@@ -181,7 +181,7 @@ namespace OpenRa.Game
if( item != null )
{
string group = itemGroups[ item.techTreeItem.tag ];
Game.LocalPlayer.CancelProduction( group );
player.CancelProduction( group );
}
}
}

View File

@@ -3,6 +3,7 @@ using System.Collections.Generic;
using System.Linq;
using OpenRa.FileFormats;
using OpenRa.Game.GameRules;
using IjwFramework.Types;
namespace OpenRa.TechTree
{
@@ -33,7 +34,7 @@ namespace OpenRa.TechTree
Race race = Race.None;
foreach (string s in owners)
race |= (Race)Enum.Parse(typeof(Race), s, true);
race |= Enum<Race>.Parse(s);
return race;
}