diff --git a/Penumbra.GameData/Enums/ChangedItemExtensions.cs b/Penumbra.GameData/Enums/ChangedItemExtensions.cs index 8dbd5bb6..f2b531d6 100644 --- a/Penumbra.GameData/Enums/ChangedItemExtensions.cs +++ b/Penumbra.GameData/Enums/ChangedItemExtensions.cs @@ -1,5 +1,7 @@ +using System; +using Dalamud.Data; +using Lumina.Excel.GeneratedSheets; using Penumbra.Api.Enums; -using Penumbra.GameData.Structs; using Action = Lumina.Excel.GeneratedSheets.Action; namespace Penumbra.GameData.Enums; @@ -10,10 +12,22 @@ public static class ChangedItemExtensions { return item switch { - null => (ChangedItemType.None, 0), - EquipItem i => (ChangedItemType.Item, i.Id), - Action a => (ChangedItemType.Action, a.RowId), - _ => (ChangedItemType.Customization, 0), + null => (ChangedItemType.None, 0), + Item i => (ChangedItemType.Item, i.RowId), + Action a => (ChangedItemType.Action, a.RowId), + _ => (ChangedItemType.Customization, 0), + }; + } + + public static object? GetObject(this ChangedItemType type, DataManager manager, uint id) + { + return type switch + { + ChangedItemType.None => null, + ChangedItemType.Item => manager.GetExcelSheet()?.GetRow(id), + ChangedItemType.Action => manager.GetExcelSheet()?.GetRow(id), + ChangedItemType.Customization => null, + _ => throw new ArgumentOutOfRangeException(nameof(type), type, null), }; } }