public LoadResult LoadData(string filename) { UnloadData(); if (!File.Exists(filename)) { return(LoadResult.FileNotFound); } using BinaryReader reader = new(new FileStream(filename, FileMode.Open, FileAccess.Read)); MapFileHeader header = reader.Read <MapFileHeader>(); if (header.mapMagic != MapConst.MapMagic || (header.versionMagic != MapConst.MapVersionMagic && header.versionMagic != MapConst.MapVersionMagic2)) // Hack for some different extractors using v2.0 header { Log.outError(LogFilter.Maps, $"Map file '{filename}' is from an incompatible map version. Please recreate using the mapextractor."); return(LoadResult.ReadFromFileFailed); } if (header.areaMapOffset != 0 && !LoadAreaData(reader, header.areaMapOffset)) { Log.outError(LogFilter.Maps, "Error loading map area data"); return(LoadResult.ReadFromFileFailed); } if (header.heightMapOffset != 0 && !LoadHeightData(reader, header.heightMapOffset)) { Log.outError(LogFilter.Maps, "Error loading map height data"); return(LoadResult.ReadFromFileFailed); } if (header.liquidMapOffset != 0 && !LoadLiquidData(reader, header.liquidMapOffset)) { Log.outError(LogFilter.Maps, "Error loading map liquids data"); return(LoadResult.ReadFromFileFailed); } if (header.holesSize != 0 && !LoadHolesData(reader, header.holesOffset)) { Log.outError(LogFilter.Maps, "Error loading map holes data"); return(LoadResult.ReadFromFileFailed); } return(LoadResult.Success); }
public bool LoadData(string filename) { UnloadData(); if (!File.Exists(filename)) { return(true); } _fileExists = true; using (BinaryReader reader = new BinaryReader(new FileStream(filename, FileMode.Open, FileAccess.Read))) { MapFileHeader header = reader.Read <MapFileHeader>(); if (header.mapMagic != MapConst.MapMagic || header.versionMagic != MapConst.MapVersionMagic) { Log.outError(LogFilter.Maps, $"Map file '{filename}' is from an incompatible map version. Please recreate using the mapextractor."); return(false); } if (header.areaMapOffset != 0 && !LoadAreaData(reader, header.areaMapOffset)) { Log.outError(LogFilter.Maps, "Error loading map area data"); return(false); } if (header.heightMapOffset != 0 && !LoadHeightData(reader, header.heightMapOffset)) { Log.outError(LogFilter.Maps, "Error loading map height data"); return(false); } if (header.liquidMapOffset != 0 && !LoadLiquidData(reader, header.liquidMapOffset)) { Log.outError(LogFilter.Maps, "Error loading map liquids data"); return(false); } return(true); } }