diff --git a/OpenRa.Game/Actor.cs b/OpenRa.Game/Actor.cs index fd685c4a8a..759a4ad391 100755 --- a/OpenRa.Game/Actor.cs +++ b/OpenRa.Game/Actor.cs @@ -47,12 +47,12 @@ namespace OpenRa.Game + "; add Traits= to units.ini for appropriate unit" ); } - public Actor( TreeReference tree, TreeCache treeRenderer ) - { - ActorID = 0xffffffff; - Location = new int2( tree.Location ); - traits.Add( new Traits.Tree( treeRenderer.GetImage( tree.Image ) ) ); - } + //public Actor( TreeReference tree, TreeCache treeRenderer ) + //{ + // ActorID = 0xffffffff; + // Location = new int2( tree.Location ); + // traits.Add( new Traits.Tree( treeRenderer.GetImage( tree.Image ) ) ); + //} public void Tick() { diff --git a/OpenRa.Game/Game.cs b/OpenRa.Game/Game.cs index bae9ae9e39..8041feb2c7 100644 --- a/OpenRa.Game/Game.cs +++ b/OpenRa.Game/Game.cs @@ -20,7 +20,6 @@ namespace OpenRa.Game public static readonly int CellSize = 24; public static World world; - static TreeCache treeCache; public static Viewport viewport; public static PathFinder PathFinder; public static WorldRenderer worldRenderer; @@ -75,14 +74,15 @@ namespace OpenRa.Game viewport = new Viewport( clientSize, Rules.Map.Offset, Rules.Map.Offset + Rules.Map.Size, renderer ); world = new World(); - treeCache = new TreeCache(Rules.Map); - - foreach (TreeReference treeReference in Rules.Map.Trees) - world.Add(new Actor(treeReference, treeCache)); BuildingInfluence = new BuildingInfluenceMap(); UnitInfluence = new UnitInfluenceMap(); + foreach (TreeReference treeReference in Rules.Map.Trees) + world.Add(new Actor(treeReference.Image, + new int2(treeReference.Location), + null)); + LoadMapBuildings(Rules.AllRules); LoadMapUnits(Rules.AllRules); diff --git a/OpenRa.Game/GameRules/Rules.cs b/OpenRa.Game/GameRules/Rules.cs index 817786ae1a..412114f1d2 100755 --- a/OpenRa.Game/GameRules/Rules.cs +++ b/OpenRa.Game/GameRules/Rules.cs @@ -31,14 +31,16 @@ namespace OpenRa.Game FileSystem.Open( "rules.ini" ), FileSystem.Open( "aftermathUnits.ini" ), FileSystem.Open( "units.ini" ), - FileSystem.Open( "campaignUnits.ini" ) ); + FileSystem.Open("campaignUnits.ini"), + FileSystem.Open("trees.ini")); else AllRules = new IniFile( FileSystem.Open("session.ini"), FileSystem.Open(mapFileName), FileSystem.Open("rules.ini"), FileSystem.Open("units.ini"), - FileSystem.Open("campaignUnits.ini")); + FileSystem.Open("campaignUnits.ini"), + FileSystem.Open("trees.ini")); General = new GeneralInfo(); FieldLoader.Load(General, AllRules.GetSection("General")); diff --git a/OpenRa.Game/Graphics/UnitSheetBuilder.cs b/OpenRa.Game/Graphics/UnitSheetBuilder.cs index e455ba2dc1..6e423517c7 100644 --- a/OpenRa.Game/Graphics/UnitSheetBuilder.cs +++ b/OpenRa.Game/Graphics/UnitSheetBuilder.cs @@ -24,7 +24,7 @@ namespace OpenRa.Game.Graphics int low = sprites.Count; - ShpReader reader = new ShpReader( FileSystem.OpenWithExts( name, ".shp", ".tem", ".sno", ".int" ) ); + ShpReader reader = new ShpReader( FileSystem.OpenWithExts( name, ".tem", ".sno", ".int", ".shp" ) ); foreach (ImageHeader h in reader) sprites.Add(SheetBuilder.Add(h.Image, reader.Size)); diff --git a/OpenRa.Game/OpenRa.Game.csproj b/OpenRa.Game/OpenRa.Game.csproj index 608ff6e91f..a513bba673 100644 --- a/OpenRa.Game/OpenRa.Game.csproj +++ b/OpenRa.Game/OpenRa.Game.csproj @@ -137,7 +137,6 @@ - diff --git a/OpenRa.Game/Traits/Building.cs b/OpenRa.Game/Traits/Building.cs index acd2ab866f..70e6dc18dd 100644 --- a/OpenRa.Game/Traits/Building.cs +++ b/OpenRa.Game/Traits/Building.cs @@ -26,7 +26,8 @@ namespace OpenRa.Game.Traits public void BuildingComplete(Actor self) { - self.Owner.ChangePower(unitInfo.Power); + if (self.Owner != null) + self.Owner.ChangePower(unitInfo.Power); } } } diff --git a/OpenRa.Game/Traits/RenderBuilding.cs b/OpenRa.Game/Traits/RenderBuilding.cs index 866e8bdbd5..bb3872c8e7 100644 --- a/OpenRa.Game/Traits/RenderBuilding.cs +++ b/OpenRa.Game/Traits/RenderBuilding.cs @@ -66,7 +66,8 @@ namespace OpenRa.Game.Traits public override IEnumerable> Render(Actor self) { - yield return Tuple.New(anim.Image, 24f * (float2)self.Location, self.Owner.Palette); + var pal = self.Owner == null ? 0 : self.Owner.Palette; + yield return Tuple.New(anim.Image, 24f * (float2)self.Location, pal); } public virtual void Damaged(Actor self, DamageState state) diff --git a/sequences.xml b/sequences.xml index b4822c05c7..78ee18e470 100644 --- a/sequences.xml +++ b/sequences.xml @@ -1,4 +1,4 @@ - +