diff --git a/OpenRa.FileFormats/FieldLoader.cs b/OpenRa.FileFormats/FieldLoader.cs index f5f1b1616f..ab521d305c 100644 --- a/OpenRa.FileFormats/FieldLoader.cs +++ b/OpenRa.FileFormats/FieldLoader.cs @@ -11,7 +11,8 @@ namespace OpenRa.FileFormats foreach (var x in ini) { var field = self.GetType().GetField(x.Key.Trim()); - field.SetValue(self, GetValue(field.FieldType, x.Value.Trim())); + if( field != null ) + field.SetValue(self, GetValue(field.FieldType, x.Value.Trim())); } } diff --git a/OpenRa.FileFormats/FileSystem.cs b/OpenRa.FileFormats/FileSystem.cs index 387023aa39..5d015acddc 100644 --- a/OpenRa.FileFormats/FileSystem.cs +++ b/OpenRa.FileFormats/FileSystem.cs @@ -27,6 +27,10 @@ namespace OpenRa.FileFormats FileSystem.Mount( new Package( "speech.mix" ) ); FileSystem.Mount( new Package( "allies.mix" ) ); FileSystem.Mount( new Package( "russian.mix" ) ); + + FileSystem.Mount( new Package( "temperat.mix" ) ); + FileSystem.Mount( new Package( "snow.mix" ) ); + FileSystem.Mount( new Package( "interior.mix" ) ); } public static void MountAftermathPackages() diff --git a/OpenRa.FileFormats/Walkability.cs b/OpenRa.FileFormats/Walkability.cs index a94045b6f2..ef9426ff37 100644 --- a/OpenRa.FileFormats/Walkability.cs +++ b/OpenRa.FileFormats/Walkability.cs @@ -6,7 +6,7 @@ namespace OpenRa.FileFormats { public class TileTemplate { - public int Index; + public int Index; // not valid for `interior` stuff. only used for bridges. public string Name; public int2 Size; public string Bridge; @@ -36,10 +36,11 @@ namespace OpenRa.FileFormats p => int.Parse(p.Key.Substring(8)), p => int.Parse(p.Value)), Name = section.GetValue("Name", null).ToLowerInvariant(), - Index = int.Parse(section.Name.Substring(3)), Bridge = section.GetValue("bridge", null), HP = float.Parse(section.GetValue("hp", "0")) }; + tile.Index = -1; + int.TryParse(section.Name.Substring(3), out tile.Index); walkability[tile.Name] = tile; } diff --git a/OpenRa.Game/Game.cs b/OpenRa.Game/Game.cs index e9e2f4db2e..5d5b393c90 100644 --- a/OpenRa.Game/Game.cs +++ b/OpenRa.Game/Game.cs @@ -46,7 +46,6 @@ namespace OpenRa Game.changePending = false; Game.mapName = mapName; SheetBuilder.Initialize(renderer); - SpriteSheetBuilder.Initialize(); FileSystem.UnmountTemporaryPackages(); Timer.Time( "reset: {0}" ); @@ -71,8 +70,8 @@ namespace OpenRa Timer.Time( "SeqProv, viewport: {0}" ); skipMakeAnims = true; - foreach (var treeReference in Game.world.Map.Trees) - world.CreateActor(treeReference.Image, new int2(treeReference.Location), null); + //foreach (var treeReference in Game.world.Map.Trees) + // world.CreateActor(treeReference.Image, new int2(treeReference.Location), null); Timer.Time( "trees: {0}" ); world.LoadMapActors(Rules.AllRules); diff --git a/OpenRa.Game/Graphics/SpriteSheetBuilder.cs b/OpenRa.Game/Graphics/SpriteSheetBuilder.cs index 3b168da665..b7054962ff 100644 --- a/OpenRa.Game/Graphics/SpriteSheetBuilder.cs +++ b/OpenRa.Game/Graphics/SpriteSheetBuilder.cs @@ -6,13 +6,19 @@ namespace OpenRa.Graphics { static class SpriteSheetBuilder { - public static void Initialize() + public static void Initialize( Map map ) { + exts = new[] { + "." + map.Theater.Substring( 0, 3 ).ToLowerInvariant(), + ".shp", + ".tem", + ".sno", + ".int" }; sprites = new Cache( LoadSprites ); } static Cache sprites; - static readonly string[] exts = { ".tem", ".sno", ".int", ".shp" }; + static string[] exts; static Sprite[] LoadSprites(string filename) { diff --git a/OpenRa.Game/World.cs b/OpenRa.Game/World.cs index 43e2d4c670..c3fb15b429 100644 --- a/OpenRa.Game/World.cs +++ b/OpenRa.Game/World.cs @@ -56,9 +56,8 @@ namespace OpenRa Map = new Map( Rules.AllRules ); Timer.Time( "new Map: {0}" ); - FileSystem.MountTemporary( new Package( Map.Theater + ".mix" ) ); - Timer.Time( "mount temporary packages: {0}" ); TileSet = new TileSet( Map.TileSuffix ); + SpriteSheetBuilder.Initialize( Map ); Timer.Time( "Tileset: {0}" ); BuildingInfluence = new BuildingInfluenceMap( this ); diff --git a/SequenceEditor/Program.cs b/SequenceEditor/Program.cs index ad668bddd6..1059ccc730 100644 --- a/SequenceEditor/Program.cs +++ b/SequenceEditor/Program.cs @@ -76,8 +76,6 @@ namespace SequenceEditor } catch( FileNotFoundException ){} - FileSystem.MountTemporary(new Package("temperat.mix")); - XmlFilename = args.FirstOrDefault( x => x.EndsWith(".xml") ) ?? "sequences.xml"; Doc = new XmlDocument(); Doc.Load(XmlFilename); diff --git a/templates.ini b/templates.ini index b3d10064a0..990bc437a4 100644 --- a/templates.ini +++ b/templates.ini @@ -2835,8 +2835,825 @@ tiletype19=2 tiletype23=2 tiletype24=2 + +; interior tiles + + +;;;;;; the interior `clear` tile is incompatible with the temperat/snow ones. +;[INT_clear1] +;Name=clear1 +;width=1 +;height=1 +;tiletype0=7 + +[INT_arro0001] +Name=arro0001 +width=1 +height=1 +tiletype0=0 +[INT_arro0002] +Name=arro0002 +width=1 +height=1 +tiletype0=0 +[INT_arro0003] +Name=arro0003 +width=1 +height=1 +tiletype0=0 +[Blah] +Name=arro0004 +width=1 +height=1 +tiletype0=0 +[INT_arro0005] +Name=arro0005 +width=1 +height=1 +tiletype0=0 +[INT_arro0006] +Name=arro0006 +width=1 +height=1 +tiletype0=0 +[INT_arro0007] +Name=arro0007 +width=1 +height=1 +tiletype0=0 +[INT_arro0008] +Name=arro0008 +width=1 +height=1 +tiletype0=0 +[INT_arro0009] +Name=arro0009 +width=1 +height=1 +tiletype0=0 +[INT_arro0010] +Name=arro0010 +width=1 +height=1 +tiletype0=0 +[INT_arro0011] +Name=arro0011 +width=1 +height=1 +tiletype0=0 +[INT_arro0012] +Name=arro0012 +width=1 +height=1 +tiletype0=0 +[INT_arro0013] +Name=arro0013 +width=1 +height=1 +tiletype0=0 +[INT_arro0014] +Name=arro0014 +width=1 +height=1 +tiletype0=0 +[INT_arro0015] +Name=arro0015 +width=1 +height=1 +tiletype0=0 + +[INT_flor0001] +Name=flor0001 +width=1 +height=1 +tiletype0=0 +[INT_flor0002] +Name=flor0002 +width=1 +height=1 +tiletype0=0 +[INT_flor0003] +Name=flor0003 +width=1 +height=1 +tiletype0=0 +[INT_flor0004] +Name=flor0004 +width=1 +height=1 +tiletype0=0 +[INT_flor0005] +Name=flor0005 +width=1 +height=1 +tiletype0=0 +[INT_flor0006] +Name=flor0006 +width=1 +height=1 +tiletype0=0 +[INT_flor0007] +Name=flor0007 +width=1 +height=1 +tiletype0=0 + +[INT_gflr0001] +Name=gflr0001 +width=1 +height=1 +tiletype0=0 +[INT_gflr0002] +Name=gflr0002 +width=1 +height=1 +tiletype0=0 +[INT_gflr0003] +Name=gflr0003 +width=1 +height=1 +tiletype0=0 +[INT_gflr0004] +Name=gflr0004 +width=1 +height=1 +tiletype0=0 +[INT_gflr0005] +Name=gflr0005 +width=1 +height=1 +tiletype0=0 + +[INT_gstr0001] +Name=gstr0001 +width=1 +height=1 +tiletype0=0 +[INT_gstr0002] +Name=gstr0002 +width=1 +height=1 +tiletype0=0 +[INT_gstr0003] +Name=gstr0003 +width=1 +height=1 +tiletype0=0 +[INT_gstr0004] +Name=gstr0004 +width=1 +height=1 +tiletype0=0 +[INT_gstr0005] +Name=gstr0005 +width=1 +height=1 +tiletype0=0 +[INT_gstr0006] +Name=gstr0006 +width=1 +height=1 +tiletype0=0 +[INT_gstr0007] +Name=gstr0007 +width=1 +height=1 +tiletype0=0 +[INT_gstr0008] +Name=gstr0008 +width=1 +height=1 +tiletype0=0 +[INT_gstr0009] +Name=gstr0009 +width=1 +height=1 +tiletype0=0 +[INT_gstr0010] +Name=gstr0010 +width=1 +height=1 +tiletype0=0 +[INT_gstr0011] +Name=gstr0011 +width=1 +height=1 +tiletype0=0 + +[INT_lwal0001] +Name=lwal0001 +width=1 +height=1 +tiletype0=7 +[INT_lwal0002] +Name=lwal0002 +width=1 +height=1 +tiletype0=7 +[INT_lwal0003] +Name=lwal0003 +width=1 +height=1 +tiletype0=7 +[INT_lwal0004] +Name=lwal0004 +width=1 +height=1 +tiletype0=7 +[INT_lwal0005] +Name=lwal0005 +width=1 +height=1 +tiletype0=7 +[INT_lwal0006] +Name=lwal0006 +width=1 +height=1 +tiletype0=7 +[INT_lwal0007] +Name=lwal0007 +width=1 +height=1 +tiletype0=7 +[INT_lwal0008] +Name=lwal0008 +width=1 +height=1 +tiletype0=7 +[INT_lwal0009] +Name=lwal0009 +width=1 +height=1 +tiletype0=7 +[INT_lwal0010] +Name=lwal0010 +width=1 +height=1 +tiletype0=7 +[INT_lwal0011] +Name=lwal0011 +width=1 +height=1 +tiletype0=7 +[INT_lwal0012] +Name=lwal0012 +width=1 +height=1 +tiletype0=7 +[INT_lwal0013] +Name=lwal0013 +width=1 +height=1 +tiletype0=7 +[INT_lwal0014] +Name=lwal0014 +width=1 +height=1 +tiletype0=7 +[INT_lwal0015] +Name=lwal0015 +width=1 +height=1 +tiletype0=7 +[INT_lwal0016] +Name=lwal0016 +width=1 +height=1 +tiletype0=7 +[INT_lwal0017] +Name=lwal0017 +width=1 +height=1 +tiletype0=7 +[INT_lwal0018] +Name=lwal0018 +width=1 +height=1 +tiletype0=7 +[INT_lwal0019] +Name=lwal0019 +width=1 +height=1 +tiletype0=7 +[INT_lwal0020] +Name=lwal0020 +width=1 +height=1 +tiletype0=7 +[INT_lwal0021] +Name=lwal0021 +width=1 +height=1 +tiletype0=7 +[INT_lwal0022] +Name=lwal0022 +width=1 +height=1 +tiletype0=7 +[INT_lwal0023] +Name=lwal0023 +width=1 +height=1 +tiletype0=7 +[INT_lwal0024] +Name=lwal0024 +width=1 +height=1 +tiletype0=7 +[INT_lwal0025] +Name=lwal0025 +width=1 +height=1 +tiletype0=7 +[INT_lwal0026] +Name=lwal0026 +width=1 +height=1 +tiletype0=7 +[INT_lwal0027] +Name=lwal0027 +width=1 +height=1 +tiletype0=7 + +[INT_strp0001] +Name=strp0001 +width=1 +height=1 +tiletype0=0 +[INT_strp0002] +Name=strp0002 +width=1 +height=1 +tiletype0=0 +[INT_strp0003] +Name=strp0003 +width=1 +height=1 +tiletype0=0 +[INT_strp0004] +Name=strp0004 +width=1 +height=1 +tiletype0=0 +[INT_strp0005] +Name=strp0005 +width=1 +height=1 +tiletype0=0 +[INT_strp0006] +Name=strp0006 +width=1 +height=1 +tiletype0=0 +[INT_strp0007] +Name=strp0007 +width=1 +height=1 +tiletype0=0 +[INT_strp0008] +Name=strp0008 +width=1 +height=1 +tiletype0=0 +[INT_strp0009] +Name=strp0009 +width=1 +height=1 +tiletype0=0 +[INT_strp0010] +Name=strp0010 +width=1 +height=1 +tiletype0=0 +[INT_strp0011] +Name=strp0011 +width=1 +height=1 +tiletype0=0 + +[INT_wall0001] +Name=wall0001 +width=1 +height=1 +tiletype0=7 +[INT_wall0002] +Name=wall0002 +width=1 +height=1 +tiletype0=7 +[INT_wall0003] +Name=wall0003 +width=1 +height=1 +tiletype0=7 +[INT_wall0004] +Name=wall0004 +width=1 +height=1 +tiletype0=7 +[INT_wall0005] +Name=wall0005 +width=1 +height=1 +tiletype0=7 +[INT_wall0006] +Name=wall0006 +width=1 +height=1 +tiletype0=7 +[INT_wall0007] +Name=wall0007 +width=1 +height=1 +tiletype0=7 +[INT_wall0008] +Name=wall0008 +width=1 +height=1 +tiletype0=7 +[INT_wall0009] +Name=wall0009 +width=1 +height=1 +tiletype0=7 +[INT_wall0010] +Name=wall0010 +width=1 +height=1 +tiletype0=7 +[INT_wall0011] +Name=wall0011 +width=1 +height=1 +tiletype0=7 +[INT_wall0012] +Name=wall0012 +width=1 +height=1 +tiletype0=7 +[INT_wall0013] +Name=wall0013 +width=1 +height=1 +tiletype0=7 +[INT_wall0014] +Name=wall0014 +width=1 +height=1 +tiletype0=7 +[INT_wall0015] +Name=wall0015 +width=1 +height=1 +tiletype0=7 +[INT_wall0016] +Name=wall0016 +width=1 +height=1 +tiletype0=7 +[INT_wall0017] +Name=wall0017 +width=1 +height=1 +tiletype0=7 +[INT_wall0018] +Name=wall0018 +width=1 +height=1 +tiletype0=7 +[INT_wall0019] +Name=wall0019 +width=1 +height=1 +tiletype0=7 +[INT_wall0020] +Name=wall0020 +width=1 +height=1 +tiletype0=7 +[INT_wall0021] +Name=wall0021 +width=1 +height=1 +tiletype0=7 +[INT_wall0022] +Name=wall0022 +width=1 +height=1 +tiletype0=7 + +[INT_wall0023] +Name=wall0023 +width=2 +height=2 +tiletype0=7 +tiletype1=7 +tiletype2=7 +[INT_wall0024] +Name=wall0024 +width=2 +height=2 +tiletype0=7 +tiletype1=7 +tiletype2=7 +[INT_wall0025] +Name=wall0025 +width=2 +height=2 +tiletype0=7 +tiletype1=7 +tiletype2=7 +[INT_wall0026] +Name=wall0026 +width=2 +height=2 +tiletype0=7 +tiletype1=7 +tiletype2=7 +[INT_wall0027] +Name=wall0027 +width=2 +height=2 +tiletype0=7 +tiletype1=7 +tiletype3=7 +[INT_wall0028] +Name=wall0028 +width=2 +height=2 +tiletype0=7 +tiletype1=7 +tiletype3=7 +[INT_wall0029] +Name=wall0029 +width=2 +height=2 +tiletype0=7 +tiletype1=7 +tiletype3=7 +[INT_wall0030] +Name=wall0030 +width=2 +height=2 +tiletype0=7 +tiletype1=7 +tiletype3=7 +[INT_wall0031] +Name=wall0031 +width=2 +height=2 +tiletype0=7 +tiletype2=7 +tiletype3=7 +[INT_wall0032] +Name=wall0032 +width=2 +height=2 +tiletype0=7 +tiletype2=7 +tiletype3=7 +[INT_wall0033] +Name=wall0033 +width=2 +height=2 +tiletype0=7 +tiletype2=7 +tiletype3=7 +[INT_wall0034] +Name=wall0034 +width=2 +height=2 +tiletype0=7 +tiletype2=7 +tiletype3=7 +[INT_wall0035] +Name=wall0035 +width=2 +height=2 +tiletype1=7 +tiletype2=7 +tiletype3=7 +[INT_wall0036] +Name=wall0036 +width=2 +height=2 +tiletype1=7 +tiletype2=7 +tiletype3=7 +[INT_wall0037] +Name=wall0037 +width=2 +height=2 +tiletype1=7 +tiletype2=7 +tiletype3=7 +[INT_wall0038] +Name=wall0038 +width=2 +height=2 +tiletype1=7 +tiletype2=7 +tiletype3=7 + +[INT_wall0039] +Name=wall0039 +width=2 +height=3 +tiletype0=7 +tiletype2=7 +tiletype3=7 +tiletype4=7 +[INT_wall0040] +Name=wall0040 +width=2 +height=3 +tiletype0=7 +tiletype2=7 +tiletype3=7 +tiletype4=7 +[INT_wall0041] +Name=wall0041 +width=2 +height=3 +tiletype1=7 +tiletype2=7 +tiletype3=7 +tiletype5=7 +[INT_wall0042] +Name=wall0042 +width=2 +height=3 +tiletype1=7 +tiletype2=7 +tiletype3=7 +tiletype5=7 + +[INT_wall0043] +Name=wall0043 +width=3 +height=2 +tiletype1=7 +tiletype3=7 +tiletype4=7 +tiletype5=7 +[INT_wall0044] +Name=wall0044 +width=3 +height=2 +tiletype1=7 +tiletype3=7 +tiletype4=7 +tiletype5=7 +[INT_wall0045] +Name=wall0045 +width=3 +height=2 +tiletype1=7 +tiletype3=7 +tiletype4=7 +tiletype5=7 +[INT_wall0046] +Name=wall0046 +width=3 +height=2 +tiletype1=7 +tiletype3=7 +tiletype4=7 +tiletype5=7 +[INT_wall0047] +Name=wall0047 +width=3 +height=2 +tiletype0=7 +tiletype1=7 +tiletype2=7 +tiletype4=7 +[INT_wall0048] +Name=wall0048 +width=3 +height=2 +tiletype0=7 +tiletype1=7 +tiletype2=7 +tiletype4=7 +[INT_wall0049] +Name=wall0049 +width=3 +height=3 +tiletype1=7 +tiletype3=7 +tiletype4=7 +tiletype5=7 +tiletype7=7 + +[INT_xtra0001] +Name=xtra0001 +width=1 +height=1 +tiletype0=7 +[INT_xtra0002] +Name=xtra0002 +width=2 +height=1 +tiletype0=7 +tiletype1=0 +[INT_xtra0003] +Name=xtra0003 +width=1 +height=1 +tiletype0=7 +[INT_xtra0004] +Name=xtra0004 +width=1 +height=2 +tiletype0=7 +tiletype1=0 +[INT_xtra0005] +Name=xtra0005 +width=1 +height=1 +tiletype0=7 +[INT_xtra0006] +Name=xtra0006 +width=2 +height=1 +tiletype0=7 +tiletype1=0 +[INT_xtra0007] +Name=xtra0007 +width=1 +height=1 +tiletype0=7 +[INT_xtra0008] +Name=xtra0008 +width=1 +height=2 +tiletype0=7 +tiletype1=0 +[INT_xtra0009] +Name=xtra0009 +width=1 +height=1 +tiletype0=7 +[INT_xtra0010] +Name=xtra0010 +width=1 +height=1 +tiletype0=7 +[INT_xtra0011] +Name=xtra0011 +width=1 +height=1 +tiletype0=7 +[INT_xtra0012] +Name=xtra0012 +width=1 +height=2 +tiletype0=7 +tiletype1=0 +[INT_xtra0013] +Name=xtra0013 +width=1 +height=2 +tiletype0=7 +tiletype1=0 +[INT_xtra0014] +Name=xtra0014 +width=3 +height=2 +tiletype0=0 +tiletype1=7 +tiletype2=0 +tiletype3=0 +tiletype4=0 +tiletype5=0 +[INT_xtra0015] +Name=xtra0015 +width=3 +height=2 +tiletype0=7 +tiletype1=7 +tiletype2=7 +tiletype3=7 +tiletype4=7 +tiletype5=7 +[INT_xtra0016] +Name=xtra0016 +width=2 +height=4 +tiletype0=7 +tiletype1=7 +tiletype2=7 +tiletype3=7 +tiletype4=7 +tiletype5=7 +tiletype6=7 +tiletype7=7 + +; special tile [TEM65534] Name=Bogus width=1 height=1 -tiletype0=10 \ No newline at end of file +tiletype0=10