+ string jsonFilename = Path.Combine(path, "Metadata.js");
+
+ StreamWriter jsonWriter = new StreamWriter(jsonFilename, false, Encoding.UTF8);
+ using (jsonWriter)
+ {
+ jsonWriter.Write("ViewFrame.chunks={};");
+ jsonWriter.Write("ViewFrame.chunks.worldSeedNum={0};", ClientAPI.World.Seed);
+ jsonWriter.Write("ViewFrame.chunks.genTime=new Date('{0}');", DateTimeOffset.UtcNow.ToString("O"));
+ jsonWriter.Write("ViewFrame.chunks.startCoords=[{0},{1}];", startChunkColumn.X, startChunkColumn.Y);
+ jsonWriter.Write("ViewFrame.chunks.chunkSize={0};", chunkSize);
+ jsonWriter.Write("ViewFrame.chunks.northMostChunk={0};", chunkTopMetadata.North_mostChunk);
+ jsonWriter.Write("ViewFrame.chunks.southMostChunk={0};", chunkTopMetadata.South_mostChunk);
+ jsonWriter.Write("ViewFrame.chunks.eastMostChunk={0};", chunkTopMetadata.East_mostChunk);
+ jsonWriter.Write("ViewFrame.chunks.westMostChunk={0};", chunkTopMetadata.West_mostChunk);
+ //MAP object format - [key, value]: key is "x_y"
+ jsonWriter.Write("ViewFrame.chunks.chunkMetadata=new Map([");
+ foreach (var shard in chunkTopMetadata)
+ {
+ jsonWriter.Write("['{0}_{1}',", shard.Location.X, shard.Location.Y);
+ jsonWriter.Write("{");
+ jsonWriter.Write("prettyCoord:'{0}',", shard.Location.PrettyCoords(ClientAPI));
+ jsonWriter.Write("chunkAge:'{0}',", shard.ChunkAge.ToString("g"));//World age - relative? or last edit ??
+ jsonWriter.Write("temp:{0},", shard.Temperature.ToString("F1"));
+ jsonWriter.Write("YMax:{0},", shard.YMax);
+ jsonWriter.Write("fert:{0},", shard.Fertility.ToString("F1"));
+ jsonWriter.Write("forestDens:{0},", shard.ForestDensity.ToString("F1"));
+ jsonWriter.Write("rain:{0},", shard.Rainfall.ToString("F1"));
+ jsonWriter.Write("shrubDens:{0},", shard.ShrubDensity.ToString("F1"));
+ jsonWriter.Write("airBlocks:{0},", shard.AirBlocks);
+ jsonWriter.Write("nonAirBlocks:{0},", shard.NonAirBlocks);
+ //TODO: Heightmap
+ //TODO: Rock-ratio
+ jsonWriter.Write("}],");
+ }
+ jsonWriter.Write("]);");
+
+
+ jsonWriter.Write("ViewFrame.chunks.pointsOfInterest = new Map([");
+ foreach (var poi in POIs)
+ {
+ jsonWriter.Write("['{0}_{1}',", poi.Location.X, poi.Location.Z);
+ jsonWriter.Write("{");
+ jsonWriter.Write("prettyCoord:'{0}',", poi.Location.PrettyCoords(ClientAPI));
+ jsonWriter.Write("notes:'{0}',", poi.Notes.Replace("'", "\'").Replace("\n","\\n"));
+ jsonWriter.Write("time:new Date('{0}'),", poi.Timestamp.ToString("O"));
+ jsonWriter.Write("chunkPos:'{0}_{1}',", (poi.Location.X / chunkSize), (poi.Location.Z / chunkSize));
+ jsonWriter.Write("}],");
+ }
+
+ foreach (var poi in EOIs)
+ {
+ jsonWriter.Write("['{0}_{1}',", poi.Location.X, poi.Location.Z);
+ jsonWriter.Write("{");
+ jsonWriter.Write("prettyCoord:'{0}',", poi.Location.PrettyCoords(ClientAPI));
+ jsonWriter.Write("notes:'{0}',", poi.Notes.Replace("'", "\'"));
+ jsonWriter.Write("time:new Date('{0}'),", poi.Timestamp.ToString("O"));
+ jsonWriter.Write("chunkPos:'{0}_{1}',", (poi.Location.X / chunkSize), (poi.Location.Z / chunkSize));
+ jsonWriter.Write("}],");
+ }
+ jsonWriter.Write("]);");
+
+ jsonWriter.Flush();