Ignore:
Timestamp:
Sep 17, 2014, 12:34:39 PM (10 years ago)
Author:
alloc
Message:

fixes

File:
1 edited

Legend:

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

    r189 r192  
    2222                }
    2323
     24                private static object lockObject = new object ();
    2425                private MapRenderBlockBuffer[] zoomLevelBuffers;
    2526                private Dictionary<Vector2i, Color[]> dirtyChunks = new Dictionary<Vector2i, Color[]> ();
     
    3334                        Constants.MAP_DIRECTORY = StaticDirectories.GetSaveGameDir () + "/map";
    3435
    35                         if (File.Exists (Constants.MAP_DIRECTORY + "/mapinfo.json")) {
    36                                 LoadMapInfo ();
    37                         } else {
    38                                 WriteMapInfo ();
     36                        lock (lockObject) {
     37                                if (!LoadMapInfo ())
     38                                        WriteMapInfo ();
    3939                        }
    4040
     
    5555                                        try {
    5656                                                if (!Instance.renderingFullMap) {
    57                                                         lock (Instance.zoomLevelBuffers) {
     57                                                        lock (lockObject) {
    5858                                                                Chunk c = (Chunk)o;
    5959                                                                Vector3i cPos = c.GetWorldPos ();
     
    100100                        );
    101101
    102                         lock (Instance.zoomLevelBuffers) {
     102                        lock (lockObject) {
    103103                                for (int i = 0; i < Constants.ZOOMLEVELS; i++) {
    104104                                        zoomLevelBuffers [i].ResetBlock ();
     
    172172                private void TimedRendering (object source, System.Timers.ElapsedEventArgs e)
    173173                {
    174                         lock (zoomLevelBuffers) {
     174                        lock (lockObject) {
    175175                                RenderDirtyChunks ();
    176176                                if (dirtyChunks.Count > 0)
     
    251251                }
    252252
    253                 private void LoadMapInfo ()
     253                private bool LoadMapInfo ()
    254254                {
    255255                        if (File.Exists (Constants.MAP_DIRECTORY + "/mapinfo.json")) {
    256256                                string json = File.ReadAllText (Constants.MAP_DIRECTORY + "/mapinfo.json", Encoding.UTF8);
    257                                 JSONNode node = Parser.Parse (json);
    258                                 if (node is JSONObject) {
    259                                         JSONObject jo = (JSONObject)node;
    260                                         if (jo.ContainsKey ("blockSize"))
    261                                                 Constants.MAP_BLOCK_SIZE = ((JSONNumber)jo ["blockSize"]).GetInt ();
    262                                         if (jo.ContainsKey ("maxZoom"))
    263                                                 Constants.ZOOMLEVELS = ((JSONNumber)jo ["maxZoom"]).GetInt () + 1;
    264                                 }
    265                         }
     257                                try {
     258                                        JSONNode node = Parser.Parse (json);
     259                                        if (node is JSONObject) {
     260                                                JSONObject jo = (JSONObject)node;
     261                                                if (jo.ContainsKey ("blockSize"))
     262                                                        Constants.MAP_BLOCK_SIZE = ((JSONNumber)jo ["blockSize"]).GetInt ();
     263                                                if (jo.ContainsKey ("maxZoom"))
     264                                                        Constants.ZOOMLEVELS = ((JSONNumber)jo ["maxZoom"]).GetInt () + 1;
     265                                                return true;
     266                                        }
     267                                } catch (MalformedJSONException e) {
     268                                        Log.Out ("Exception in LoadMapInfo: " + e);
     269                                } catch (InvalidCastException e) {
     270                                        Log.Out ("Exception in LoadMapInfo: " + e);
     271                                }
     272                        }
     273                        return false;
    266274                }
    267275
Note: See TracChangeset for help on using the changeset viewer.