Exemple #1
0
        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);
        }
Exemple #2
0
        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);
            }
        }