namespace AcDream.App.UI; /// /// Narrow numeric-state bridge for widgets imported from retail LayoutDesc data. /// Controllers use retail state ids without knowing how names/media are stored. /// public interface IUiDatStateful { uint ActiveRetailStateId { get; } bool TrySetRetailState(uint stateId); } public static class RetailUiStateIds { public const uint Closed = 11u; public const uint Open = 12u; public const uint HideDetail = 0x10000006u; public const uint ShowDetail = 0x10000007u; public const uint ObjectSelected = 0x1000000Bu; public const uint StackedItemSelected = 0x1000000Cu; public const uint ItemSlotEmpty = 0x1000001Cu; public const uint Maximized = 0x10000047u; public const uint Minimized = 0x10000048u; public const uint LockedUi = 0x10000063u; public const uint UnlockedUi = 0x10000064u; public static string StateName(uint stateId) => stateId switch { Closed => "Closed", Open => "Open", HideDetail => "HideDetail", ShowDetail => "ShowDetail", ObjectSelected => "ObjectSelected", StackedItemSelected => "StackedItemSelected", ItemSlotEmpty => "ItemSlot_Empty", Maximized => "Maximized", Minimized => "Minimized", LockedUi => "LockedUI", UnlockedUi => "UnlockedUI", _ => "", }; public static bool TryStateId(string stateName, out uint stateId) { stateId = stateName switch { "Closed" => Closed, "Open" => Open, "HideDetail" => HideDetail, "ShowDetail" => ShowDetail, "ObjectSelected" => ObjectSelected, "StackedItemSelected" => StackedItemSelected, "ItemSlot_Empty" => ItemSlotEmpty, "Maximized" => Maximized, "Minimized" => Minimized, "LockedUI" => LockedUi, "UnlockedUI" => UnlockedUi, _ => 0u, }; return stateId != 0; } }