OSDN Git Service

Added Single Shard metadata dumper
[automap/automap.git] / ShardProcessor / Program.cs
index 982ba6d..800712d 100644 (file)
@@ -1,4 +1,5 @@
 using System;
+using System.Diagnostics;
 using System.IO;
 using System.Text.RegularExpressions;
 
@@ -58,6 +59,10 @@ namespace ShardProcessor
                                Scan_PointsData( );                     
                        break;
 
+                       case @"--oneshard":
+                               Scan_OneShard( );
+                       break;
+
                default:
                        Console.WriteLine("Unrecognized Command: {0}", command);
                        break;
@@ -250,5 +255,48 @@ namespace ShardProcessor
                Console.WriteLine("Scanned {0} files, {1} errors, {2} FLAT entries", count, errors, flat);
                }
 
+               private static void Scan_OneShard( )
+               {
+               //--oneshard ~/ApplicationData/vintagestory/Maps/World_1316328588/Chunks/9363_9379.png
+               var oneChunkFile = new FileInfo(mapPath);
+               if (oneChunkFile.Exists) {
+
+
+               try {
+               using (var fileStream = oneChunkFile.OpenRead( )) {
+
+               PngReader pngRead = new PngReader(fileStream);
+               pngRead.ReadSkippingAllRows( );
+
+               //Parse PNG chunks for METADATA in shard
+               PngMetadataChunk metadataFromPng = pngRead.GetChunksList( ).GetById1(PngMetadataChunk.ID) as PngMetadataChunk;
+               ColumnMeta columnData = metadataFromPng.ChunkMetadata;
+               var metadata = pngRead.GetMetadata( );
+               var pngWriteTime = metadata.GetTime( );
+               var chunkX = metadata.GetTxtForKey(@"Chunk_X");
+               var chunkY = metadata.GetTxtForKey(@"Chunk_Y");
+               var pixelSize = metadata.GetTxtForKey(@"PxSz");
+               var gameDate = metadata.GetTxtForKey(@"GameDY");
+               var dateBlob = pngWriteTime.GetYMDHMS( );
+               /*
+               return new int[] {
+               this.year,
+               this.mon,
+               this.day,
+               this.hour,
+               this.min,
+               this.sec
+               */
+
+               Console.WriteLine($"PNG-Timestamp:  Y{dateBlob[0] - 456960} M{dateBlob[1]} D{dateBlob[2]} H{dateBlob[3]} M {dateBlob[4]} S{dateBlob[5]} Chunk: X {chunkX} Y {chunkY} PixelSize:{pixelSize} Game-Date: {gameDate}");
+
+               pngRead.End( );
+               }
+               } catch (Exception darn) {
+               Debug.Write("Oops! File causes: {0}", darn.ToString( ));
+               }
+
+               }
+               }
        }
 }