private bool LoadFile(Stream stream) { string magic = stream.ReadAscii(8); uint strategySetCount = stream.ReadUInt32().SwapEndian(); uint strategyOptionCount = stream.ReadUInt32().SwapEndian(); uint refStringStart = stream.ReadUInt32().SwapEndian(); StrategySetList = new List <StrategySet>((int)strategySetCount); for (uint i = 0; i < strategySetCount; ++i) { StrategySet ss = new StrategySet(stream, refStringStart); StrategySetList.Add(ss); } StrategyOptionList = new List <StrategyOption>((int)strategyOptionCount); for (uint i = 0; i < strategyOptionCount; ++i) { StrategyOption so = new StrategyOption(stream, refStringStart); StrategyOptionList.Add(so); } StrategyOptionDict = new Dictionary <uint, StrategyOption>(StrategyOptionList.Count); foreach (var option in StrategyOptionList) { StrategyOptionDict.Add(option.InGameID, option); } return(true); }
private bool LoadFile(Stream stream, EndianUtils.Endianness endian, BitUtils.Bitness bits) { string magic = stream.ReadAscii(8); if (magic != "T8BTTA ") { throw new Exception("Invalid magic."); } uint strategySetCount = stream.ReadUInt32().FromEndian(endian); uint strategyOptionCount = stream.ReadUInt32().FromEndian(endian); uint refStringStart = stream.ReadUInt32().FromEndian(endian); StrategySetList = new List <StrategySet>((int)strategySetCount); for (uint i = 0; i < strategySetCount; ++i) { StrategySet ss = new StrategySet(stream, refStringStart, endian, bits); StrategySetList.Add(ss); } StrategyOptionList = new List <StrategyOption>((int)strategyOptionCount); for (uint i = 0; i < strategyOptionCount; ++i) { StrategyOption so = new StrategyOption(stream, refStringStart, endian, bits); StrategyOptionList.Add(so); } StrategyOptionDict = new Dictionary <uint, StrategyOption>(StrategyOptionList.Count); foreach (var option in StrategyOptionList) { StrategyOptionDict.Add(option.InGameID, option); } return(true); }