mirror of
https://github.com/xivdev/Penumbra.git
synced 2025-12-12 18:27:24 +01:00
40 lines
1.3 KiB
C#
40 lines
1.3 KiB
C#
using System;
|
|
using Lumina.Excel.GeneratedSheets;
|
|
using Action = Lumina.Excel.GeneratedSheets.Action;
|
|
|
|
namespace Penumbra.GameData.Enums
|
|
{
|
|
public enum ChangedItemType
|
|
{
|
|
None,
|
|
Item,
|
|
Action,
|
|
Customization,
|
|
}
|
|
|
|
public static class ChangedItemExtensions
|
|
{
|
|
public static (ChangedItemType, uint) ChangedItemToTypeAndId( object? item )
|
|
{
|
|
return item switch
|
|
{
|
|
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, uint id )
|
|
{
|
|
return type switch
|
|
{
|
|
ChangedItemType.None => null,
|
|
ChangedItemType.Item => ObjectIdentification.DataManager?.GetExcelSheet< Item >()?.GetRow( id ),
|
|
ChangedItemType.Action => ObjectIdentification.DataManager?.GetExcelSheet< Action >()?.GetRow( id ),
|
|
ChangedItemType.Customization => null,
|
|
_ => throw new ArgumentOutOfRangeException( nameof( type ), type, null )
|
|
};
|
|
}
|
|
}
|
|
}
|