mirror of
https://github.com/kwsch/NHSE.git
synced 2026-08-26 12:55:33 -05:00
Extract shared interface
This commit is contained in:
@@ -5,7 +5,7 @@
|
||||
namespace NHSE.Core
|
||||
{
|
||||
[StructLayout(LayoutKind.Explicit, Size = SIZE, Pack = 1)]
|
||||
public class FieldItem
|
||||
public class FieldItem : IHeldItem
|
||||
{
|
||||
public const ushort EXTENSION = 0xFFFD;
|
||||
public const ushort NONE = 0xFFFE;
|
||||
@@ -63,7 +63,7 @@ public void Delete()
|
||||
Count = UseCount = 0;
|
||||
}
|
||||
|
||||
public void CopyFrom(Item item)
|
||||
public void CopyFrom(IHeldItem item)
|
||||
{
|
||||
ItemId = item.ItemId;
|
||||
Flags0 = item.Flags0;
|
||||
|
||||
11
NHSE.Core/Structures/Item/IHeldItem.cs
Normal file
11
NHSE.Core/Structures/Item/IHeldItem.cs
Normal file
@@ -0,0 +1,11 @@
|
||||
namespace NHSE.Core
|
||||
{
|
||||
public interface IHeldItem
|
||||
{
|
||||
ushort ItemId { get; set; }
|
||||
byte Flags0 { get; set; }
|
||||
byte Flags1 { get; set; }
|
||||
ushort Count { get; set; }
|
||||
ushort UseCount { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -3,8 +3,8 @@
|
||||
|
||||
namespace NHSE.Core
|
||||
{
|
||||
[StructLayout(LayoutKind.Sequential)]
|
||||
public class Item
|
||||
[StructLayout(LayoutKind.Explicit, Size = SIZE, Pack = 1)]
|
||||
public class Item : IHeldItem
|
||||
{
|
||||
public static readonly Item NO_ITEM = new Item {ItemId = NONE};
|
||||
public const ushort NONE = 0xFFFE;
|
||||
@@ -16,11 +16,11 @@ public class Item
|
||||
0x1E1B, 0x1E1C, 0x1E1D, 0x1E1E, 0x1E1F, 0x1E20, 0x1E21, 0x1E22
|
||||
};
|
||||
|
||||
public ushort ItemId;
|
||||
public byte Flags0;
|
||||
public byte Flags1;
|
||||
public ushort Count;
|
||||
public ushort UseCount;
|
||||
[field: FieldOffset(0)] public ushort ItemId { get; set; }
|
||||
[field: FieldOffset(2)] public byte Flags0 { get; set; }
|
||||
[field: FieldOffset(3)] public byte Flags1 { get; set; }
|
||||
[field: FieldOffset(4)] public ushort Count { get; set; }
|
||||
[field: FieldOffset(6)] public ushort UseCount { get; set; }
|
||||
|
||||
public ItemType Type => (ItemType) (Flags1 & 3);
|
||||
public int ReservedIndex => (Flags1 >> 2) & 0xF;
|
||||
|
||||
@@ -4,7 +4,7 @@ public static class ItemInfo
|
||||
{
|
||||
private static readonly byte[] ItemKinds = ResourceUtil.GetBinaryResource("item_kind.bin");
|
||||
|
||||
public static ItemKind GetItemKind(Item item) => GetItemKind(item.ItemId);
|
||||
public static ItemKind GetItemKind(IHeldItem item) => GetItemKind(item.ItemId);
|
||||
public static ItemKind GetItemKind(FieldItem item) => GetItemKind(item.DisplayItemId);
|
||||
|
||||
public static ItemKind GetItemKind(ushort id)
|
||||
|
||||
Reference in New Issue
Block a user