Add level-up ding animation with cheer emote and test button

- Trigger ding when UNIT_FIELD_LEVEL increases for player: plays LevelUp sound,
  cheer emote animation, and shows screen overlay
- renderDingEffect(): 3 expanding golden rings + "LEVEL X!" / "DING!" text
  drawn via ImDrawList foreground (3s duration, fades out last 0.8s)
- triggerDing() wires sound (UiSoundManager::playLevelUp) + emote + overlay
- LevelUpCallback in GameHandler fires on genuine level increase (newLevel > oldLevel)
- "Test: Level Up" button in escape menu triggers ding at current player level
This commit is contained in:
Kelsi 2026-02-17 17:23:42 -08:00
parent eebc0007a6
commit 897867bf7b
5 changed files with 121 additions and 0 deletions

View file

@ -1280,6 +1280,13 @@ void Application::setupUICallbacks() {
despawnOnlineGameObject(guid);
});
// Level-up callback — play sound, cheer emote, and trigger UI ding overlay
gameHandler->setLevelUpCallback([this](uint32_t newLevel) {
if (uiManager) {
uiManager->getGameScreen().triggerDing(newLevel);
}
});
// Mount callback (online mode) - defer heavy model load to next frame
gameHandler->setMountCallback([this](uint32_t mountDisplayId) {
if (mountDisplayId == 0) {