Fix map loading; some cleanups

This commit is contained in:
Paul Chote
2010-03-03 22:55:14 +13:00
parent d405523378
commit 5c26386b2e
6 changed files with 26 additions and 27 deletions

View File

@@ -53,24 +53,22 @@ namespace OpenRA.FileFormats
public string TileSuffix { get { return "." + Truncate(Theater, 3); } } public string TileSuffix { get { return "." + Truncate(Theater, 3); } }
public Map(string Filename) public Map(string filename)
{ {
IniFile file = new IniFile(FileSystem.Open(Filename)); IniFile file = new IniFile(FileSystem.Open(filename));
IniSection basic = file.GetSection("Basic"); IniSection basic = file.GetSection("Basic");
Title = basic.GetValue("Name", "(null)"); Title = basic.GetValue("Name", "(null)");
INIFormat = int.Parse(basic.GetValue("NewINIFormat", "0")); INIFormat = int.Parse(basic.GetValue("NewINIFormat", "0"));
IniSection map = file.GetSection("Map"); IniSection map = file.GetSection("Map");
Theater = Truncate(map.GetValue("Theater", "DESERT"), 8); Theater = Truncate(map.GetValue("Theater", "TEMPERAT"), 8);
XOffset = int.Parse(map.GetValue("X", "0")); XOffset = int.Parse(map.GetValue("X", "0"));
YOffset = int.Parse(map.GetValue("Y", "0")); YOffset = int.Parse(map.GetValue("Y", "0"));
Width = int.Parse(map.GetValue("Width", "0")); Width = int.Parse(map.GetValue("Width", "0"));
Height = int.Parse(map.GetValue("Height", "0")); Height = int.Parse(map.GetValue("Height", "0"));
Log.Write("Map format is {0}",INIFormat);
MapSize = (INIFormat == 3) ? 128 : 64; MapSize = (INIFormat == 3) ? 128 : 64;
MapTiles = new TileReference[ MapSize, MapSize ]; MapTiles = new TileReference[ MapSize, MapSize ];
@@ -87,7 +85,7 @@ namespace OpenRA.FileFormats
} }
else // CNC else // CNC
{ {
UnpackCncTileData(FileSystem.Open(Filename.Substring(0,Filename.Length-4)+".bin")); UnpackCncTileData(FileSystem.Open(filename.Substring(0,filename.Length-4)+".bin"));
ReadCncTrees(file); ReadCncTrees(file);
} }

View File

@@ -101,7 +101,7 @@ namespace OpenRA
Timer.Time( "ChromeProv, SeqProv, viewport: {0}" ); Timer.Time( "ChromeProv, SeqProv, viewport: {0}" );
skipMakeAnims = true; skipMakeAnims = true;
foreach (var actorReference in Game.world.Map.Actors) foreach (var actorReference in world.Map.Actors)
world.CreateActor(actorReference.Name, actorReference.Location, world.players.Values.FirstOrDefault(p => p.InternalName == actorReference.Owner) ?? world.players[0]); world.CreateActor(actorReference.Name, actorReference.Location, world.players.Values.FirstOrDefault(p => p.InternalName == actorReference.Owner) ?? world.players[0]);
skipMakeAnims = false; skipMakeAnims = false;
Timer.Time( "map actors: {0}" ); Timer.Time( "map actors: {0}" );

View File

@@ -22,6 +22,7 @@ using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Xml; using System.Xml;
using System.IO;
using OpenRA.FileFormats; using OpenRA.FileFormats;
namespace OpenRA.Graphics namespace OpenRA.Graphics
@@ -65,12 +66,14 @@ namespace OpenRA.Graphics
static void LoadSequencesForUnit(XmlElement eUnit) static void LoadSequencesForUnit(XmlElement eUnit)
{ {
string unitName = eUnit.GetAttribute("name"); string unitName = eUnit.GetAttribute("name");
Log.Write("Loading sequence {0}", unitName); // Log.Write("Loading sequence {0}", unitName);
var sequences = eUnit.SelectNodes("./sequence").OfType<XmlElement>() try {
.Select(e => new Sequence(unitName, e)) var sequences = eUnit.SelectNodes("./sequence").OfType<XmlElement>()
.ToDictionary(s => s.Name); .Select(e => new Sequence(unitName, e))
.ToDictionary(s => s.Name);
units.Add(unitName, sequences);
units.Add(unitName, sequences);
} catch (FileNotFoundException) {} // Do nothing; we can crash later if we actually wanted art
} }
public static Sequence GetSequence(string unitName, string sequenceName) public static Sequence GetSequence(string unitName, string sequenceName)

View File

@@ -18,16 +18,9 @@ Packages:
mods/cnc/packages/temperat.mix mods/cnc/packages/temperat.mix
mods/cnc/packages/winter.mix mods/cnc/packages/winter.mix
mods/cnc/packages/desert.mix mods/cnc/packages/desert.mix
# Cannot qualify the RA names because they may live inside a mix # TODO: Obsolete conquer.mix
~main.mix ~main.mix
redalert.mix
speech.mix
temperat.mix
snow.mix
interior.mix
# general.mix
conquer.mix conquer.mix
sounds.mix
LegacyRules: LegacyRules:
mods/cnc/minimal.ini: Minimal rules definitions mods/cnc/minimal.ini: Minimal rules definitions
@@ -47,7 +40,7 @@ Sequences:
mods/cnc/sequences-structures.xml: mods/cnc/sequences-structures.xml:
mods/cnc/sequences-vehicles.xml: mods/cnc/sequences-vehicles.xml:
mods/cnc/sequences-infantry.xml: mods/cnc/sequences-infantry.xml:
mods/cnc/sequences-map.xml: mods/cnc/sequences-map.xml: Trees etc
mods/cnc/sequences.xml: Obsolete; will disappear once done converting mods/cnc/sequences.xml: Obsolete; will disappear once done converting
Chrome: Chrome:
@@ -56,7 +49,3 @@ Chrome:
Assemblies: Assemblies:
mods/cnc/OpenRA.Mods.Cnc.dll: Cnc mod traits mods/cnc/OpenRA.Mods.Cnc.dll: Cnc mod traits
mods/ra/OpenRA.Mods.RA.dll: Red alert mod traits mods/ra/OpenRA.Mods.RA.dll: Red alert mod traits
Maps:
scg01ea.ini: GDI Mission 1
scm01ea.ini: Green Acres

View File

@@ -1,6 +1,9 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<sequences> <sequences>
<!-- Blossom Tree --> <!-- Blossom Trees -->
<unit name="split2">
<sequence name="idle" start="0" length="1" />
</unit>
<unit name="split3"> <unit name="split3">
<sequence name="idle" start="0" length="1" /> <sequence name="idle" start="0" length="1" />
</unit> </unit>

View File

@@ -1,3 +1,9 @@
SPLIT2:
Inherits: ^Building
RenderBuilding:
Palette: terrain
SeedsOre:
-Selectable:
SPLIT3: SPLIT3:
Inherits: ^Building Inherits: ^Building
RenderBuilding: RenderBuilding: