# Function names for sacred.exe (Sacred Gold 2.28), applied to the Ghidra
# project by tools/rename.ps1. One "0xADDRESS Name" per line; "Class::Method"
# names go into a class namespace. Keep in sync with src/game/addresses.h.

# --- startup / engine core ---------------------------------------------------
0x0066f1c0 Log
0x00813140 CmdLineHasFlag
0x0066e500 GetMouseClientPos
0x008122a0 MainWindowProc
0x00849701 __RTDynamicCast
0x0084aa86 ToUpper

# --- renderer ----------------------------------------------------------------
0x00645390 DxDriver7::SetDisplayMode
0x00645f70 DxDriver7::Flip
0x00646f50 DxDriver7::BeginScene
0x00646fd0 DxDriver7::EndScene
0x006469d0 DxDriver7::LoadingScreen

# --- kernel event queue ------------------------------------------------------
0x00808490 Kernel_Instance
0x00808930 cKernel::PostEvent       # (event, flags, delayMs); key events (category 4) are queued
0x008087b0 cKernel::DispatchQueued

# --- engine (cEngine, vtable 0x88ff34) ---------------------------------------
0x0060e3f0 cEngine::RenderThreadLoop
0x0060f1d0 cEngine::Tick            # per game tick (10 Hz): queued events, then hold-to-move orders
0x00618130 cEngine::ReceiveEvent    # vf00: offers events to the UI, then engine hotkeys (A, P, Q/W/E/R/B/Space, ^)
0x00617360 cEngine::HandleMouseButton  # click: pick object / walk to ground point
0x006170d0 cEngine::SendCreatureOrder  # (creature, cEvent_creature*): snaps ground targets, then creature->vf18
0x00611f10 cEngine::UpdateCursorPick   # per frame: object under the cursor
0x00610650 cEngine::ScrollInput        # arrow keys: walk object #2 or scroll the camera
0x00613040 cEngine::UseActionSlot      # hotkeys Q/W/E/R/B/Space
0x00613710 cEngine::CaptureScreen      # save-game thumbnail

# --- objects / creatures -----------------------------------------------------
0x005fe060 cObjectManager::GetObject   # (id); manager at *0xad3bc0
0x00603e90 cObjectManager::GetPlayerHero
0x00546ed0 cCreature::IsWalking        # state +0x150 == 1
0x0052e400 cCreature::ReceiveOrder     # vf18
0x004fb620 cCreature::TraceToCursor    # line trace from the creature to the cursor's world point (aiming)

# --- mouse cursor (single instance) ------------------------------------------
0x006550f0 MouseCursor_Instance
0x00654e10 cMouseCursor::cMouseCursor
0x00655670 cMouseCursor::SetPosition
0x006559e0 cMouseCursor::GetX
0x006559f0 cMouseCursor::GetY
0x006559a0 cMouseCursor::GetPreviousPosition
0x006555e0 cMouseCursor::DrawItem
0x00655ab0 cMouseCursor::IsButtonHeld

# --- world view (cWorldView0, vtable 0x8900f8) -------------------------------
0x00624ae0 cWorldView0::SetupView
0x00628210 cWorldView0::SetZoom
0x006322b0 cWorldView0::Render
0x0062a730 cWorldView0::UpdateCamera
0x0062b000 cWorldView0::RenderTileRow     # tiles + collects objects into the draw lists
0x0062e580 cWorldView0::DrawObjects
0x006300d0 cWorldView0::DrawObjects2
0x00623c40 cWorldView0::WorldToScreen
0x00623a20 cWorldView0::ScreenToView
0x00626d30 cWorldView0::PickObjectAt      # (screen x, y) -> object id
0x00627260 cWorldView0::DrawObjectLabels  # Alt
0x006426a0 BuildOrthoMatrix

# --- UI ----------------------------------------------------------------------
0x00756820 UiManager_Instance             # *0x17ecb3c
0x00756940 cUI_Manager::ThreadLoop
0x00757120 cUI_Manager::ReceiveEvent      # vf00: UI hotkeys (C F H I L M N O S T)
0x007587b0 cUI_Manager::Render
0x0075a860 cUI_Manager::GetFocus
0x0075a370 cUI_Manager::IsUiAtPoint
0x0075bbf0 cUI_Manager::DrawStatusLine
0x0075c200 cUI_Manager::DrawMessage
0x00731d40 cUI_Window2::HitTest
0x006dfb10 cUI_Taskbar2::HitTest
0x006e1970 cUI_Taskbar2::HandleEvent      # digit keys: 1-5 weapon sets, 6-0 combat-art slots
0x006e1440 cUI_Taskbar2::SelectWeaponSet  # digits 1-5
0x006e17d0 cUI_Taskbar2::SelectSkillSlot  # digits 6-0: right mouse button combat art
0x006e3ac0 cUI_Taskbar2::Render
0x006e7300 cUI_Tooltip::Render
# cInventoryEntry (32 x 0x1180 in one block, see docs/skill-slots.md)
0x005deb80 cInventoryManager::Instance        # allocates 32 inventories (0x23008 bytes)
0x005dec50 cInventoryManager::GetInventory    # index * 0x1180
0x005d7a10 cInventoryEntry::Construct
0x005d7bf0 cInventoryEntry::Destruct
0x005d7d30 cInventoryEntry::Clear              # zeroes grid, weapon sets, art slots
0x005d80e0 cInventoryEntry::ReplaceItemId      # grid + weapon sets
0x005d86c0 cInventoryEntry::GetWeaponSetItem   # (set, hand)
0x005d86f0 cInventoryEntry::SetWeaponSetItem   # (set, hand, id, notify) -> network 299
0x005d8930 cInventoryEntry::SetWeaponSet       # (set, left, right, notify) -> network 300
0x005d8be0 cInventoryEntry::TakeWeaponSetItem
0x005d8d00 cInventoryEntry::GetWeaponSetItemPos
0x005d9200 cInventoryEntry::SetArtVariant      # 0x1162 bit 2: second art slot set (mounted?)
0x005d93e0 cInventoryEntry::GetArtSlotType
0x005d9420 cInventoryEntry::GetArtSlotRef
0x005d9480 cInventoryEntry::SetArtSlot         # -> network 0x129
0x005d9680 cInventoryEntry::ClearArtSlot       # -> network 0x12a
0x005d9820 cInventoryEntry::SelectSlot         # (slot, kind 0 weapons / 1 arts) -> +0xd58
0x005d9b60 cInventoryEntry::GetSelectedSlot    # (kind)
0x005dd9f0 cInventoryEntry::Serialize          # (stream, write)
0x005de8a0 cInventoryEntry::FixInventory
0x005da880 cInventoryEntry::GetPotionRef
0x0057f750 SlotCountForLevel                   # table 0x95503c, max 5
0x008110d0 GameWindowProc                    # in-game window procedure: keys (dead keys, modifiers 0x182cdec)
