acdream/src/AcDream.Core/Items/ShortcutEntry.cs
Erik b5b230c860 feat(ui): preserve exact retail shortcut records
Carry signed index, object id, and raw spell word losslessly through PlayerDescription, session storage, drag mutation, and AddShortcut wire serialization while keeping gmToolbarUI object-only. Retire AP-103 and record the live ACE relog persistence gate.

Co-Authored-By: Codex <codex@openai.com>
2026-07-11 09:17:33 +02:00

14 lines
580 B
C#

namespace AcDream.Core.Items;
/// <summary>
/// Lossless retail <c>ShortCutData</c> value: signed slot index, object id,
/// and raw 32-bit spell word. The C++ object is 16 bytes including its vtable;
/// the packed value is exactly 12 bytes. Retail anchors:
/// <c>ShortCutData::ShortCutData @ 0x005D55E0</c>,
/// <c>ShortCutManager::AddShortCut @ 0x005D5790</c>, and
/// <c>acclient.h:36484</c>.
/// </summary>
public readonly record struct ShortcutEntry(int Index, uint ObjectId, uint SpellId)
{
public ShortcutEntry WithIndex(int index) => this with { Index = index };
}