IDictionary <UInt32, String> ReadStringMap(FileReader reader, FileHeaders.SCENARIO_HEADER header) { var map = new SortedDictionary <UInt32, String>(); reader.Stream.Position = header.StringTableOffset; while (true) { if (reader.Stream.Position == reader.Stream.Length) { break; } var offset = (UInt32)reader.Stream.Position; var str = reader.ReadString(); map.Add(offset, str); FileMap.Add(offset, str); if (str == "") { break; } } return(map); }
static FileHeaders.SCENARIO_HEADER UpdateHeader(FileHeaders.SCENARIO_HEADER header, Func <UInt32, UInt32> fixer) { Assert.IsNotNull(fixer, nameof(fixer)); header.StringTableOffset = fixer(header.StringTableOffset); header.FunctionTableOffset = (UInt16)fixer(header.FunctionTableOffset); return(header); }
List <T> ReadScenarioInfoList <T>(FileReader reader, FileHeaders.SCENARIO_HEADER header, Int32 index) where T : struct { return(ReadList <T>(reader, header.ScnInfoOffset[index], header.ScnInfoNumber[index])); }