From c74bb90b861251b3674c04c454f4fd0ff715ff60 Mon Sep 17 00:00:00 2001 From: unknown Date: Sat, 24 Apr 2021 20:12:29 -0400 Subject: [PATCH] better handling of item version --- Makefile | 3 ++ src/D2SLib.csproj | 2 +- src/Model/Save/Items.cs | 11 ++-- test/Resources/JSON/DannyIsGreat.json | 76 +++++++++++++-------------- 4 files changed, 48 insertions(+), 44 deletions(-) create mode 100644 Makefile diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..f43321c --- /dev/null +++ b/Makefile @@ -0,0 +1,3 @@ +#todo... better method +nuget: + dotnet nuget push D2SLib.1.0.2.nupkg --api-key $NUGET_APIKEY --source https://api.nuget.org/v3/index.json diff --git a/src/D2SLib.csproj b/src/D2SLib.csproj index 8d15a12..764e9d7 100644 --- a/src/D2SLib.csproj +++ b/src/D2SLib.csproj @@ -10,7 +10,7 @@ true https://github.com/dschu012/D2SLib git - 1.0.1 + 1.0.2 diff --git a/src/Model/Save/Items.cs b/src/Model/Save/Items.cs index bb730a6..57f192c 100644 --- a/src/Model/Save/Items.cs +++ b/src/Model/Save/Items.cs @@ -86,7 +86,7 @@ public class Item public UInt16? Header { get; set; } [JsonIgnore] public BitArray? Flags { get; set; } - public UInt16 Version { get; set; } + public string Version { get; set; } public ItemMode Mode { get; set; } public ItemLocation Location { get; set; } public byte X { get; set; } @@ -210,11 +210,11 @@ protected static void ReadCompact(BitReader reader, Item item, UInt32 version) item.Flags = new BitArray(reader.ReadBytes(4)); if(version <= 0x60) { - item.Version = reader.ReadUInt16(10); + item.Version = Convert.ToString(reader.ReadUInt16(10), 10); } else if(version >= 0x61) { - item.Version = reader.ReadUInt16(3); + item.Version = Convert.ToString(reader.ReadUInt16(3), 2); } item.Mode = (ItemMode)reader.ReadByte(3); item.Location = (ItemLocation)reader.ReadByte(4); @@ -267,11 +267,12 @@ protected static void WriteCompact(BitWriter writer, Item item, UInt32 version) } if (version <= 0x60) { - writer.WriteUInt16(item.Version, 10); + //todo. how do we handle 1.15 version to 1.14. maybe this should be a string + writer.WriteUInt16(Convert.ToUInt16(item.Version, 10), 10); } else if (version >= 0x61) { - writer.WriteUInt16(item.Version, 3); + writer.WriteUInt16(Convert.ToUInt16(item.Version, 2), 3); } writer.WriteByte((byte)item.Mode, 3); writer.WriteByte((byte)item.Location, 4); diff --git a/test/Resources/JSON/DannyIsGreat.json b/test/Resources/JSON/DannyIsGreat.json index 6ceab37..986dcde 100644 --- a/test/Resources/JSON/DannyIsGreat.json +++ b/test/Resources/JSON/DannyIsGreat.json @@ -3615,7 +3615,7 @@ "Count": 27, "Items": [ { - "Version": 5, + "Version": "101", "Mode": 1, "Location": 10, "X": 10, @@ -3699,7 +3699,7 @@ "IsRuneword": false }, { - "Version": 5, + "Version": "101", "Mode": 1, "Location": 3, "X": 3, @@ -3711,7 +3711,7 @@ "TotalNumberOfSockets": 3, "SocketedItems": [ { - "Version": 5, + "Version": "101", "Mode": 6, "Location": 0, "X": 0, @@ -3760,7 +3760,7 @@ "IsRuneword": false }, { - "Version": 5, + "Version": "101", "Mode": 6, "Location": 0, "X": 1, @@ -3809,7 +3809,7 @@ "IsRuneword": false }, { - "Version": 5, + "Version": "101", "Mode": 6, "Location": 0, "X": 2, @@ -3940,7 +3940,7 @@ "IsRuneword": true }, { - "Version": 5, + "Version": "101", "Mode": 1, "Location": 8, "X": 8, @@ -4024,7 +4024,7 @@ "IsRuneword": false }, { - "Version": 5, + "Version": "101", "Mode": 0, "Location": 0, "X": 0, @@ -4077,7 +4077,7 @@ "IsRuneword": false }, { - "Version": 5, + "Version": "101", "Mode": 0, "Location": 0, "X": 0, @@ -4197,7 +4197,7 @@ "IsRuneword": false }, { - "Version": 5, + "Version": "101", "Mode": 0, "Location": 0, "X": 0, @@ -4250,7 +4250,7 @@ "IsRuneword": false }, { - "Version": 5, + "Version": "101", "Mode": 0, "Location": 0, "X": 0, @@ -4303,7 +4303,7 @@ "IsRuneword": false }, { - "Version": 5, + "Version": "101", "Mode": 0, "Location": 0, "X": 9, @@ -4574,7 +4574,7 @@ "IsRuneword": false }, { - "Version": 5, + "Version": "101", "Mode": 0, "Location": 0, "X": 9, @@ -4845,7 +4845,7 @@ "IsRuneword": false }, { - "Version": 5, + "Version": "101", "Mode": 0, "Location": 0, "X": 9, @@ -5116,7 +5116,7 @@ "IsRuneword": false }, { - "Version": 5, + "Version": "101", "Mode": 0, "Location": 0, "X": 9, @@ -5387,7 +5387,7 @@ "IsRuneword": false }, { - "Version": 5, + "Version": "101", "Mode": 0, "Location": 0, "X": 8, @@ -5658,7 +5658,7 @@ "IsRuneword": false }, { - "Version": 5, + "Version": "101", "Mode": 0, "Location": 0, "X": 8, @@ -5929,7 +5929,7 @@ "IsRuneword": false }, { - "Version": 5, + "Version": "101", "Mode": 0, "Location": 0, "X": 8, @@ -6200,7 +6200,7 @@ "IsRuneword": false }, { - "Version": 5, + "Version": "101", "Mode": 0, "Location": 0, "X": 1, @@ -6253,7 +6253,7 @@ "IsRuneword": false }, { - "Version": 5, + "Version": "101", "Mode": 1, "Location": 2, "X": 2, @@ -6337,7 +6337,7 @@ "IsRuneword": false }, { - "Version": 5, + "Version": "101", "Mode": 0, "Location": 0, "X": 8, @@ -6608,7 +6608,7 @@ "IsRuneword": false }, { - "Version": 5, + "Version": "101", "Mode": 0, "Location": 0, "X": 7, @@ -6879,7 +6879,7 @@ "IsRuneword": false }, { - "Version": 5, + "Version": "101", "Mode": 0, "Location": 0, "X": 7, @@ -7150,7 +7150,7 @@ "IsRuneword": false }, { - "Version": 5, + "Version": "101", "Mode": 0, "Location": 0, "X": 7, @@ -7421,7 +7421,7 @@ "IsRuneword": false }, { - "Version": 5, + "Version": "101", "Mode": 0, "Location": 0, "X": 7, @@ -7692,7 +7692,7 @@ "IsRuneword": false }, { - "Version": 5, + "Version": "101", "Mode": 0, "Location": 0, "X": 2, @@ -7745,7 +7745,7 @@ "IsRuneword": false }, { - "Version": 5, + "Version": "101", "Mode": 2, "Location": 0, "X": 0, @@ -7794,7 +7794,7 @@ "IsRuneword": false }, { - "Version": 5, + "Version": "101", "Mode": 1, "Location": 11, "X": 11, @@ -7905,7 +7905,7 @@ "IsRuneword": false }, { - "Version": 5, + "Version": "101", "Mode": 1, "Location": 1, "X": 1, @@ -7964,7 +7964,7 @@ "IsRuneword": false }, { - "Version": 5, + "Version": "101", "Mode": 1, "Location": 4, "X": 4, @@ -7976,7 +7976,7 @@ "TotalNumberOfSockets": 4, "SocketedItems": [ { - "Version": 5, + "Version": "101", "Mode": 6, "Location": 0, "X": 0, @@ -8025,7 +8025,7 @@ "IsRuneword": false }, { - "Version": 5, + "Version": "101", "Mode": 6, "Location": 0, "X": 1, @@ -8074,7 +8074,7 @@ "IsRuneword": false }, { - "Version": 5, + "Version": "101", "Mode": 6, "Location": 0, "X": 2, @@ -8123,7 +8123,7 @@ "IsRuneword": false }, { - "Version": 5, + "Version": "101", "Mode": 6, "Location": 0, "X": 3, @@ -8274,7 +8274,7 @@ "IsRuneword": true }, { - "Version": 5, + "Version": "101", "Mode": 1, "Location": 5, "X": 5, @@ -8286,7 +8286,7 @@ "TotalNumberOfSockets": 4, "SocketedItems": [ { - "Version": 5, + "Version": "101", "Mode": 6, "Location": 0, "X": 0, @@ -8335,7 +8335,7 @@ "IsRuneword": false }, { - "Version": 5, + "Version": "101", "Mode": 6, "Location": 0, "X": 1, @@ -8384,7 +8384,7 @@ "IsRuneword": false }, { - "Version": 5, + "Version": "101", "Mode": 6, "Location": 0, "X": 2, @@ -8433,7 +8433,7 @@ "IsRuneword": false }, { - "Version": 5, + "Version": "101", "Mode": 6, "Location": 0, "X": 3,