Ignore:
Timestamp:
Sep 10, 2014, 8:09:28 PM (10 years ago)
Author:
alloc
Message:

fixes

File:
1 edited

Legend:

Unmodified
Added
Removed
  • binary-improvements/7dtd-server-fixes/src/MapRendering/MapRendering.cs

    r168 r187  
     1using AllocsFixes.JSON;
    12using System;
    23using System.Collections.Generic;
    34using System.IO;
     5using System.Text;
    46using System.Threading;
    57using UnityEngine;
     
    2022                }
    2123
    22                 private MapRenderBlockBuffer[] zoomLevelBuffers = new MapRenderBlockBuffer[Constants.ZOOMLEVELS];
     24                private MapRenderBlockBuffer[] zoomLevelBuffers;
    2325                private Dictionary<Vector2i, Color[]> dirtyChunks = new Dictionary<Vector2i, Color[]> ();
    2426                private System.Timers.Timer chunkSaveTimer = new System.Timers.Timer (500);
     
    3133                        Constants.MAP_DIRECTORY = StaticDirectories.GetSaveGameDir () + "/map";
    3234
     35                        if (File.Exists (Constants.MAP_DIRECTORY + "/mapinfo.json")) {
     36                                LoadMapInfo ();
     37                        } else {
     38                                WriteMapInfo ();
     39                        }
     40
     41                        zoomLevelBuffers = new MapRenderBlockBuffer[Constants.ZOOMLEVELS];
    3342                        for (int i = 0; i < Constants.ZOOMLEVELS; i++) {
    3443                                zoomLevelBuffers [i] = new MapRenderBlockBuffer (i);
     
    100109                                }
    101110
    102                                 if (Directory.Exists (Constants.MAP_DIRECTORY))
     111                                if (Directory.Exists (Constants.MAP_DIRECTORY)) {
    103112                                        Directory.Delete (Constants.MAP_DIRECTORY, true);
     113                                }
     114                                WriteMapInfo ();
    104115
    105116                                renderingFullMap = true;
     
    239250                }
    240251
     252                private void WriteMapInfo ()
     253                {
     254                        JSONObject mapInfo = new JSONObject ();
     255                        mapInfo.Add ("blockSize", new JSONNumber (Constants.MAP_BLOCK_SIZE));
     256                        mapInfo.Add ("maxZoom", new JSONNumber (Constants.ZOOMLEVELS - 1));
     257
     258                        Directory.CreateDirectory (Constants.MAP_DIRECTORY);
     259                        File.WriteAllText (Constants.MAP_DIRECTORY + "/mapinfo.json", mapInfo.ToString (), Encoding.UTF8);
     260                }
     261
     262                private void LoadMapInfo ()
     263                {
     264                        if (File.Exists (Constants.MAP_DIRECTORY + "/mapinfo.json")) {
     265                                string json = File.ReadAllText (Constants.MAP_DIRECTORY + "/mapinfo.json", Encoding.UTF8);
     266                                JSONNode node = Parser.Parse (json);
     267                                if (node is JSONObject) {
     268                                        JSONObject jo = (JSONObject)node;
     269                                        if (jo.ContainsKey ("blockSize"))
     270                                                Constants.MAP_BLOCK_SIZE = ((JSONNumber)jo ["blockSize"]).GetInt ();
     271                                        if (jo.ContainsKey ("maxZoom"))
     272                                                Constants.ZOOMLEVELS = ((JSONNumber)jo ["maxZoom"]).GetInt () + 1;
     273                                }
     274                        }
     275                }
     276
    241277                private void getWorldExtent (RegionFileManager rfm, out Vector2i minChunk, out Vector2i maxChunk,
    242278                                            out Vector2i minPos, out Vector2i maxPos,
Note: See TracChangeset for help on using the changeset viewer.