OSDN Git Service

Merge branch 'Split_renderers' into vgd
authorThe Grand Dog <alex.h@me.com>
Wed, 11 Mar 2020 13:35:18 +0000 (09:35 -0400)
committerThe Grand Dog <alex.h@me.com>
Wed, 11 Mar 2020 13:35:18 +0000 (09:35 -0400)
1  2 
Automap/Automap.csproj
Automap/Data/BlockDesignator.cs
Automap/Data/EntityDesignator.cs
Automap/Designators/DefaultDesignators.cs
Automap/Subsystems/AutomapSystem.cs

      <Compile Include="Subsystems\AutomapSystem.cs" />
      <Compile Include="Subsystems\AutomapGUIDialog.cs" />
      <Compile Include="Renderers\IChunkRenderer.cs" />
 -    <Compile Include="Renderers\StandardRenerer.cs" />
 +    <Compile Include="Renderers\StandardRenderer.cs" />
      <Compile Include="Renderers\AlternateRenderer.cs" />
 -    <Compile Include="Data\EntitiesOfInterest.cs" />
 -    <Compile Include="Data\EntityDesignator.cs" />
      <Compile Include="Data\StatusData.cs" />
      <Compile Include="Data\CommandData.cs" />
-     <Compile Include="Data\RunState.cs" />
+     <Compile Include="Data\CommandType.cs" />
+     <Compile Include="Data\PersistedConfiguration.cs" />
    </ItemGroup>
    <ItemGroup>
      <Folder Include="VS_libs\" />
Simple merge
Simple merge
@@@ -169,17 -183,14 +183,16 @@@ namespace Automa
                                                }
  
                                                ColumnMeta chunkMeta;
 -                                              if (chunkTopMetadata.Contains(mostActiveCol.Key)) {
 -                                              chunkMeta = chunkTopMetadata[mostActiveCol.Key];
 +                                              if (chunkTopMetadata.Contains(mostActiveCol.Key))
 +                                              {
 +                                                      chunkMeta = chunkTopMetadata[mostActiveCol.Key];
                                                }
 -                                              else {
 -                                              chunkMeta = CreateColumnMetadata(mostActiveCol, mapChunk);
 +                                              else
 +                                              {
 +                                                      chunkMeta = CreateColumnMetadata(mostActiveCol, mapChunk);
                                                }
  
-                                               UpdateEntityMetadata();
-                                               ProcessChunkBlocks(mostActiveCol.Key, mapChunk, chunkMeta);
+                                               ProcessChunkBlocks(mostActiveCol.Key, mapChunk, ref chunkMeta);
  
                                                PngWriter pngWriter = SetupPngImage(mostActiveCol.Key, chunkMeta);
                                                ChunkRenderer.GenerateChunkPngShard(mostActiveCol.Key, mapChunk, chunkMeta, pngWriter, out updatedPixels);
                {
                        string jsonFilename = Path.Combine(path, "Metadata.js");
  
-                       StreamWriter jsonWriter = new StreamWriter(jsonFilename, false, Encoding.UTF8);
+                       StreamWriter stream = new StreamWriter(jsonFilename, false, Encoding.UTF8);
+                       using (stream) {
+                       JsonTextWriter jsonWriter = new JsonTextWriter(stream);
+                       jsonWriter.Formatting = Formatting.None;
+                       jsonWriter.StringEscapeHandling = StringEscapeHandling.EscapeHtml;
+                       jsonWriter.Indentation = 0;
+                       //jsonWriter.AutoCompleteOnClose = true;
+                       jsonWriter.QuoteChar = '\'';
+                       jsonWriter.DateFormatHandling = DateFormatHandling.IsoDateFormat;
+                       jsonWriter.DateTimeZoneHandling = DateTimeZoneHandling.Utc;
                        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);
-                               // this is so that the tool tip doesnt need to be hard coded in the map 
-                               jsonWriter.Write("ViewFrame.chunks.chunkMetaNames=[");
-                               // there are 10 (TEN) (ten) things
-                               jsonWriter.Write("'Loc.','Age','Temp.','Y Max','Fert.','Forest','Rain','Shrub','Air','Non-Air'");
-                               jsonWriter.Write("];");
+                               jsonWriter.WriteRaw("ViewFrame.chunks={};\n");
+                               jsonWriter.WriteRaw("ViewFrame.chunks.worldSeedNum=" );
+                               jsonWriter.WriteValue(ClientAPI.World.Seed);
+                               jsonWriter.WriteRaw(";\n");
+                               jsonWriter.WriteRaw("ViewFrame.chunks.genTime=");
+                               jsonWriter.WriteValue(DateTimeOffset.UtcNow);
+                               jsonWriter.WriteRaw(";\n");
+                               jsonWriter.WriteRaw("ViewFrame.chunks.startCoords=");
+                               jsonWriter.WriteStartArray( );
+                               jsonWriter.WriteValue(startChunkColumn.X);
+                               jsonWriter.WriteValue(startChunkColumn.Y);
+                               jsonWriter.WriteEndArray( );
+                               jsonWriter.WriteRaw(";\n");
+                               jsonWriter.WriteRaw("ViewFrame.chunks.chunkSize=");
+                               jsonWriter.WriteValue(chunkSize);
+                               jsonWriter.WriteRaw(";\n");
+                               jsonWriter.WriteRaw("ViewFrame.chunks.northMostChunk=");
+                               jsonWriter.WriteValue(chunkTopMetadata.North_mostChunk);
+                               jsonWriter.WriteRaw(";\n");
+                               jsonWriter.WriteRaw("ViewFrame.chunks.southMostChunk=");
+                               jsonWriter.WriteValue(chunkTopMetadata.South_mostChunk);
+                               jsonWriter.WriteRaw(";\n");
+                               jsonWriter.WriteRaw("ViewFrame.chunks.westMostChunk=");
+                               jsonWriter.WriteValue(chunkTopMetadata.West_mostChunk);
+                               jsonWriter.WriteRaw(";\n");
+                               jsonWriter.WriteRaw("ViewFrame.chunks.eastMostChunk=");
+                               jsonWriter.WriteValue(chunkTopMetadata.East_mostChunk);
+                               jsonWriter.WriteRaw(";\n");
                                //MAP object format - [key, value]: key is "x_y"
-                               jsonWriter.Write("ViewFrame.chunks.chunkMetadata=new Map([");
+                               jsonWriter.WriteRaw("ViewFrame.chunks.chunkMetadata=");
+                               jsonWriter.WriteStartConstructor("Map");
+                               jsonWriter.WriteStartArray( );//An array of... 2-component arrays
                                foreach (var shard in chunkTopMetadata)
                                {
-                                       jsonWriter.Write("['{0}_{1}',", shard.Location.X, shard.Location.Y);
-                                       jsonWriter.Write("[");
-                                       // 10 things but 0 indexed so NINE (9)
-                                       jsonWriter.Write("'{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}'",
-                                               shard.Location.PrettyCoords(ClientAPI),
-                                               shard.ChunkAge.ToString("g"),//World age - relative? or last edit ??
-                                               shard.Temperature.ToString("F1"),
-                                               shard.YMax,
-                                               shard.Fertility.ToString("F1"),
-                                               shard.ForestDensity.ToString("F1"),
-                                               shard.Rainfall.ToString("F1"),
-                                               shard.ShrubDensity.ToString("F1"),
-                                               shard.AirBlocks,
-                                               shard.NonAirBlocks
-                                       );
-                                       //TODO: Rock-ratio, also requires a BlockID => Name lookup table....elsewhere
-                                       jsonWriter.Write("]],");
+                                       jsonWriter.WriteStartArray( );//Start tuple
+                                       jsonWriter.WriteValue($"{shard.Location.X}_{shard.Location.Y}");//Key of Tuple
+                                       jsonWriter.WriteStartObject( );
+                                       jsonWriter.WritePropertyName("prettyCoord");
+                                       jsonWriter.WriteValue( shard.Location.PrettyCoords(ClientAPI));
+                                       jsonWriter.WritePropertyName("chunkAge");
+                                       jsonWriter.WriteValue(shard.ChunkAge);
+                                       jsonWriter.WritePropertyName("temp");
+                                       jsonWriter.WriteValue(shard.Temperature);
+                                       jsonWriter.WritePropertyName("YMax");
+                                       jsonWriter.WriteValue(shard.YMax);
+                                       jsonWriter.WritePropertyName("fert");
+                                       jsonWriter.WriteValue(shard.Fertility);
+                                       
+                                       jsonWriter.WritePropertyName("forestDens");
+                       jsonWriter.WriteValue( shard.ForestDensity);
+                                       jsonWriter.WritePropertyName("rain"); 
+                       jsonWriter.WriteValue( shard.Rainfall);
+                                       jsonWriter.WritePropertyName("shrubDens");
+                       jsonWriter.WriteValue(  shard.ShrubDensity);
+                                       jsonWriter.WritePropertyName("airBlocks");
+                       jsonWriter.WriteValue( shard.AirBlocks);
+                                       jsonWriter.WritePropertyName("nonAirBlocks");
+                       jsonWriter.WriteValue(  shard.NonAirBlocks);
+                                       //TODO: Heightmap ?
+                                       //Start rockMap ; FOR a Ratio....on tooltip GUI
+                                       jsonWriter.WritePropertyName("rockRatio");
+                                       jsonWriter.WriteStartConstructor("Map");
+                                       jsonWriter.WriteStartArray( );
+                                       foreach (var rockEntry in shard.RockRatio) {
+                                               var rockBlock = ClientAPI.World.GetBlock(rockEntry.Key);
+                                               jsonWriter.WriteStartArray( );
+                                               jsonWriter.WriteValue(rockBlock.Code.Path);
+                                               jsonWriter.WriteValue(rockEntry.Value);//Total per chunk-column
+                                               jsonWriter.WriteEndArray( );
+                                       }
+                                       jsonWriter.WriteEndArray( );
+                                       jsonWriter.WriteEndConstructor( );//end rock-map
+                                       jsonWriter.WriteEndObject( );//end Map value: {Object}
+                                       jsonWriter.WriteEndArray( );//end Tuple
                                }
-                               jsonWriter.Write("]);");
  
+                               jsonWriter.WriteEndArray( );//Enclose tuples of chunkMetadata
+                               jsonWriter.WriteEndConstructor( );//Close constructor of Map (chunkMetadata)
+                               jsonWriter.WriteRaw(";\n");
+                               jsonWriter.WriteRaw("ViewFrame.chunks.pointsOfInterest=");
+                               jsonWriter.WriteStartConstructor("Map");
+                               jsonWriter.WriteStartArray( );//An array of... 2-component arrays
  
-                               jsonWriter.Write("ViewFrame.chunks.pointsOfInterest=new Map([");
                                foreach (var poi in POIs)
                                {
-                                       jsonWriter.Write("['{0}_{1}',", (float) poi.Location.X / chunkSize, (float) poi.Location.Z / chunkSize);
-                                       jsonWriter.Write("{");
-                                       jsonWriter.Write("prettyCoord:'{0}',", poi.Location.PrettyCoords(ClientAPI));
-                                       jsonWriter.Write("notes:{0},", JsonConvert.ToString(poi.Notes, '\'', StringEscapeHandling.EscapeHtml));
-                                       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.WriteStartArray( );
+                                       jsonWriter.WriteValue($"{poi.Location.X}_{poi.Location.Z}");
+                                       jsonWriter.WriteStartObject();
+                                       jsonWriter.WritePropertyName("prettyCoord");
+                                       jsonWriter.WriteValue(poi.Location.PrettyCoords(ClientAPI) );
+                                       jsonWriter.WritePropertyName("notes");
+                                       jsonWriter.WriteValue(poi.Notes);//Encoded to HTML Entities
+                                       jsonWriter.WritePropertyName("time");
+                                       jsonWriter.WriteValue(poi.Timestamp);
+                                       
+                                       jsonWriter.WritePropertyName("chunkPos");
+                                       jsonWriter.WriteValue($"{(poi.Location.X / chunkSize)}_{(poi.Location.Z / chunkSize)}");
+                                       
+                                       jsonWriter.WriteEndObject( );
+                                       jsonWriter.WriteEndArray( );
                                }
 +                              jsonWriter.Write("]);");
  
 -                              foreach (var poi in EOIs)
 +                              jsonWriter.Write("ViewFrame.chunks.entitiesOfInterest=new Map([");
 +                              foreach (var eoi in EOIs)
                                {
-                                       jsonWriter.Write("['{0}_{1}',", (float) eoi.Location.X / chunkSize, (float) eoi.Location.Z / chunkSize);
-                                       jsonWriter.Write("{");
-                                       jsonWriter.Write("prettyCoord:'{0}',", eoi.Location.PrettyCoords(ClientAPI));
-                                       jsonWriter.Write("notes:{0},", JsonConvert.ToString(eoi.Notes, '\'', StringEscapeHandling.EscapeHtml));
-                                       jsonWriter.Write("time:new Date('{0}'),", eoi.Timestamp.ToString("O"));
-                                       jsonWriter.Write("chunkPos:'{0}_{1}',", (eoi.Location.X / chunkSize), (eoi.Location.Z / chunkSize));
-                                       jsonWriter.Write("entityId:'{0}'", eoi.EntityId);
-                                       jsonWriter.Write("}],");
+                                       jsonWriter.WriteStartArray( );
+                                       jsonWriter.WriteValue($"{poi.Location.X}_{poi.Location.Z}");
+                                       jsonWriter.WriteStartObject( );
+                                       jsonWriter.WritePropertyName("prettyCoord");
+                                       jsonWriter.WriteValue(poi.Location.PrettyCoords(ClientAPI));
+                                       jsonWriter.WritePropertyName("notes");
+                                       jsonWriter.WriteValue(poi.Notes);//Encoded to HTML Entities
+                                       jsonWriter.WritePropertyName("time");
+                                       jsonWriter.WriteValue(poi.Timestamp);
+                                       jsonWriter.WritePropertyName("chunkPos");
+                                       jsonWriter.WriteValue($"{(poi.Location.X / chunkSize)}_{(poi.Location.Z / chunkSize)}");
+                                       jsonWriter.WriteEndObject( );
+                                       jsonWriter.WriteEndArray( );
                                }
-                               jsonWriter.Write("]);");
+                               jsonWriter.WriteEndArray( );
+                               jsonWriter.WriteEndConstructor( );
+                               jsonWriter.WriteRaw(";\n");
+                               jsonWriter.WriteWhitespace("\n");
+                               jsonWriter.WriteComment("============= BlockID's for Rockmap / Rock-ratios ===============");
+                               jsonWriter.WriteWhitespace("\n");
+                               jsonWriter.WriteRaw("ViewFrame.chunks.rock_Lookup =");
+                               jsonWriter.WriteStartConstructor("Map");
+                               jsonWriter.WriteStartArray( );//An array of... 2-component arrays
+                               foreach (var entry in RockIdCodes) {
+                               var block = ClientAPI.World.GetBlock(entry.Key);
+                               
+                               jsonWriter.WriteStartArray( );
+                               jsonWriter.WriteValue(block.Code.Path);
+                                                                       
+                               jsonWriter.WriteStartObject( );
+                               jsonWriter.WritePropertyName("assetCode");
+                               jsonWriter.WriteValue(entry.Value);
+                               jsonWriter.WritePropertyName("name");
+                               jsonWriter.WriteValue(Lang.GetUnformatted(block.Code.Path));
+                               //Color?
+                               jsonWriter.WriteEndObject( );
+                               jsonWriter.WriteEndArray( );
+                               }
+                               jsonWriter.WriteEndArray( );
+                               jsonWriter.WriteEndConstructor();
+                               
+                               jsonWriter.WriteRaw(";\n");
  
                                jsonWriter.Flush();
                        }