From a410dd36022b986917558b51791174d78375efdc Mon Sep 17 00:00:00 2001 From: melchior Date: Fri, 21 May 2021 21:18:32 -0400 Subject: [PATCH] Added Single Shard metadata dumper --- ShardProcessor/Program.cs | 48 ++++++++++++++++++++++++++++++++++++ ShardProcessor/ShardProcessor.csproj | 2 +- 2 files changed, 49 insertions(+), 1 deletion(-) diff --git a/ShardProcessor/Program.cs b/ShardProcessor/Program.cs index 982ba6d..800712d 100644 --- a/ShardProcessor/Program.cs +++ b/ShardProcessor/Program.cs @@ -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( )); + } + + } + } } } diff --git a/ShardProcessor/ShardProcessor.csproj b/ShardProcessor/ShardProcessor.csproj index 11a7a93..03c8b6f 100644 --- a/ShardProcessor/ShardProcessor.csproj +++ b/ShardProcessor/ShardProcessor.csproj @@ -18,7 +18,7 @@ prompt 4 true - --shards ~/ApplicationData/vintagestory/Maps/World_19781215 + true -- 2.11.0