From ff147edb9cdab5c75bc1f42a6b4e8d16f332c5ad Mon Sep 17 00:00:00 2001 From: Luis Michaelis Date: Sun, 30 Jun 2024 07:22:21 +0200 Subject: [PATCH] [#7] feat(Item): add `Amount` and `Flags` from save-files --- ZenKit.Test/Vobs/TestItem.cs | 4 ++++ ZenKit/Native.cs | 12 ++++++++++++ ZenKit/Vobs/Item.cs | 12 ++++++++++++ 3 files changed, 28 insertions(+) diff --git a/ZenKit.Test/Vobs/TestItem.cs b/ZenKit.Test/Vobs/TestItem.cs index c59897e..103e977 100644 --- a/ZenKit.Test/Vobs/TestItem.cs +++ b/ZenKit.Test/Vobs/TestItem.cs @@ -10,6 +10,8 @@ public void TestLoad() { var vob = new Item("./Samples/G2/VOb/oCItem.zen", GameVersion.Gothic2); Assert.That(vob.Instance, Is.EqualTo("ITPL_BLUEPLANT")); + Assert.That(vob.Amount, Is.EqualTo(0)); + Assert.That(vob.Flags, Is.EqualTo(0)); } [Test] @@ -17,5 +19,7 @@ public void TestSetters() { var vob = new Item("./Samples/G2/VOb/oCItem.zen", GameVersion.Gothic2); vob.Instance = "ITPL_BLUEPLANT"; + vob.Amount = 1; + vob.Flags = 1; } } \ No newline at end of file diff --git a/ZenKit/Native.cs b/ZenKit/Native.cs index 5dda360..b3141fa 100644 --- a/ZenKit/Native.cs +++ b/ZenKit/Native.cs @@ -2218,6 +2218,18 @@ public static extern void [DllImport(DllName)] public static extern void ZkItem_setInstance(UIntPtr slf, string instance); + [DllImport(DllName)] + public static extern int ZkItem_getAmount(UIntPtr slf); + + [DllImport(DllName)] + public static extern void ZkItem_setAmount(UIntPtr slf, int amount); + + [DllImport(DllName)] + public static extern int ZkItem_getFlags(UIntPtr slf); + + [DllImport(DllName)] + public static extern void ZkItem_setFlags(UIntPtr slf, int flags); + [DllImport(DllName)] public static extern UIntPtr ZkLensFlare_load(UIntPtr buf, GameVersion version); diff --git a/ZenKit/Vobs/Item.cs b/ZenKit/Vobs/Item.cs index 032fd2f..2356c69 100644 --- a/ZenKit/Vobs/Item.cs +++ b/ZenKit/Vobs/Item.cs @@ -29,6 +29,18 @@ public string Instance set => Native.ZkItem_setInstance(Handle, value); } + public int Amount + { + get => Native.ZkItem_getAmount(Handle); + set => Native.ZkItem_setAmount(Handle, value); + } + + public int Flags + { + get => Native.ZkItem_getFlags(Handle); + set => Native.ZkItem_setFlags(Handle, value); + } + protected override void Delete() { Native.ZkItem_del(Handle);