public WDT(IBinaryReader reader) { int chunkId = 0; Dictionary <int, string>?mwmosNameOffsets = null; while (!reader.IsFinished()) { var chunkName = reader.ReadChunkName(); var size = reader.ReadInt32(); var offset = reader.Offset; var partialReader = new LimitedReader(reader, size); if (chunkName == "MVER") { Version = reader.ReadUInt32(); } else if (chunkName == "MPHD") { Header = WDTHeader.Read(partialReader); } else if (chunkName == "MAIN") { Chunks[chunkId++] = new WDTChunk(partialReader); } else if (chunkName == "MWMO") { Mwmo = ChunkedUtils.ReadZeroTerminatedStringArrays(partialReader, true, out mwmosNameOffsets)[0]; } else if (chunkName == "MODF") { WorldMapObject = MODF.Read(partialReader); } reader.Offset = offset + size; } }