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

@ -3886,6 +3886,7 @@ void GameHandler::handleUpdateObject(network::Packet& packet) {
LOG_INFO("Next level XP updated: ", val);
}
else if (key == ufPlayerLevel) {
uint32_t oldLevel = serverPlayerLevel_;
serverPlayerLevel_ = val;
LOG_INFO("Level updated: ", val);
for (auto& ch : characters) {
@ -3894,6 +3895,9 @@ void GameHandler::handleUpdateObject(network::Packet& packet) {
break;
}
}
if (val > oldLevel && oldLevel > 0 && levelUpCallback_) {
levelUpCallback_(val);
}
}
else if (key == ufCoinage) {
playerMoneyCopper_ = val;