3 using System.Collections.Generic;
5 using System.Data.Common;
6 using System.Data.SQLite;
12 using Vintagestory.API.Common;
13 using Vintagestory.GameContent;
14 using Vintagestory.API.Util;
15 using Vintagestory.API.MathTools;
17 namespace ShardProcessor
19 public class WalkableMapDB : MapDB
21 private SQLiteCommand walkMapPieceCmd;
23 public WalkableMapDB(ILogger logger) : base(logger)
27 public override void OnOpened( )
31 walkMapPieceCmd = sqliteConn.CreateCommand( );
32 walkMapPieceCmd.CommandText = @"SELECT position, data FROM mappiece";
33 walkMapPieceCmd.Prepare( );
37 public IEnumerable<LocalizedMapPiece> WalkMapTiles( )
39 using (SQLiteDataReader sqlite_datareader = walkMapPieceCmd.ExecuteReader( ))
41 int numForPos = sqlite_datareader.GetOrdinal(@"position");
42 int numForData = sqlite_datareader.GetOrdinal(@"data");
44 while (sqlite_datareader.Read( ))
46 var posInteger = sqlite_datareader.GetInt64(numForPos);//[];//Integer KEY
47 object data = sqlite_datareader[numForData];
48 if (data == null) yield return null;
50 var rawMapP = SerializerUtil.Deserialize<MapPieceDB>(data as byte[ ]);
52 var nextPiece = new LocalizedMapPiece( ) {
53 ChunkPos = posInteger.Convert(),
54 Pixels = rawMapP.Pixels,
57 yield return nextPiece;
63 public class LocalizedMapPiece : MapPieceDB
65 public Vec2i ChunkPos;
69 public static class MapDB_Assist
71 public static Vec2i Convert(this long input)
73 var vector = new Vec2i( );
74 vector.X = ( int )(0x7FFFFFF & input); //Passthru only last 27 bits
75 vector.Y = ( int )(input >> 27 );//Shift 27 right