Index: binary-improvements/7dtd-server-fixes/src/FileCache/MapTileCache.cs
===================================================================
--- binary-improvements/7dtd-server-fixes/src/FileCache/MapTileCache.cs	(revision 326)
+++ binary-improvements/7dtd-server-fixes/src/FileCache/MapTileCache.cs	(revision 329)
@@ -2,4 +2,5 @@
 using System.IO;
 using UnityEngine;
+using UnityEngine.Profiling;
 using Object = UnityEngine.Object;
 
@@ -26,4 +27,7 @@
 		public void SetZoomCount (int count) {
 			cache = new CurrentZoomFile[count];
+			for (int i = 0; i < cache.Length; i++) {
+				cache [i] = new CurrentZoomFile ();
+			}
 		}
 
@@ -31,19 +35,23 @@
 			try {
 				lock (cache) {
-					if (cache [zoomlevel].filename == null || !cache [zoomlevel].filename.Equals (filename)) {
-						cache [zoomlevel].filename = filename;
+					CurrentZoomFile cacheEntry = cache [zoomlevel];
+					
+					if (cacheEntry.filename == null || !cacheEntry.filename.Equals (filename)) {
+						cacheEntry.filename = filename;
 
 						if (!File.Exists (filename)) {
-							cache [zoomlevel].data = null;
+							cacheEntry.pngData = null;
 							return null;
 						}
 
-						cache [zoomlevel].data = File.ReadAllBytes (filename);
+						Profiler.BeginSample ("ReadPng");
+						cacheEntry.pngData = File.ReadAllBytes (filename);
+						Profiler.EndSample ();
 					}
 
-					return cache [zoomlevel].data;
+					return cacheEntry.pngData;
 				}
 			} catch (Exception e) {
-				Log.Out ("Error in MapTileCache.LoadTile: " + e);
+				Log.Warning ("Error in MapTileCache.LoadTile: " + e);
 			}
 
@@ -51,16 +59,21 @@
 		}
 
-		public void SaveTile (int zoomlevel, byte[] content) {
+		public void SaveTile (int zoomlevel, byte[] contentPng) {
 			try {
 				lock (cache) {
-					if (cache [zoomlevel].filename == null) {
+					CurrentZoomFile cacheEntry = cache [zoomlevel];
+					
+					if (string.IsNullOrEmpty (cacheEntry.filename)) {
 						return;
 					}
+					
+					cacheEntry.pngData = contentPng;
 
-					cache [zoomlevel].data = content;
-					File.WriteAllBytes (cache [zoomlevel].filename, content);
+					Profiler.BeginSample ("WritePng");
+					File.WriteAllBytes (cacheEntry.filename, contentPng);
+					Profiler.EndSample ();
 				}
 			} catch (Exception e) {
-				Log.Out ("Error in MapTileCache.SaveTile: " + e);
+				Log.Warning ("Error in MapTileCache.SaveTile: " + e);
 			}
 		}
@@ -71,5 +84,5 @@
 					foreach (CurrentZoomFile czf in cache) {
 						if (czf.filename != null && czf.filename.Equals (filename)) {
-							return czf.data;
+							return czf.pngData;
 						}
 					}
@@ -82,5 +95,5 @@
 				}
 			} catch (Exception e) {
-				Log.Out ("Error in MapTileCache.GetFileContent: " + e);
+				Log.Warning ("Error in MapTileCache.GetFileContent: " + e);
 			}
 
@@ -88,7 +101,7 @@
 		}
 
-		private struct CurrentZoomFile {
+		private class CurrentZoomFile {
 			public string filename;
-			public byte[] data;
+			public byte[] pngData;
 		}
 	}
