feat: show stat gains in level-up toast from SMSG_LEVELUP_INFO

Parse hp/mana/str/agi/sta/int/spi deltas from SMSG_LEVELUP_INFO payload
and display them in green below the "You have reached level X!" banner.
Extends DING_DURATION to 4s to give players time to read the gains.
This commit is contained in:
Kelsi 2026-03-12 17:54:49 -07:00
parent 6df8c72cf7
commit 6957ba97ea
4 changed files with 80 additions and 9 deletions

View file

@ -1438,6 +1438,14 @@ public:
using LevelUpCallback = std::function<void(uint32_t newLevel)>;
void setLevelUpCallback(LevelUpCallback cb) { levelUpCallback_ = std::move(cb); }
// Stat deltas from the last SMSG_LEVELUP_INFO (valid until next level-up)
struct LevelUpDeltas {
uint32_t hp = 0;
uint32_t mana = 0;
uint32_t str = 0, agi = 0, sta = 0, intel = 0, spi = 0;
};
const LevelUpDeltas& getLastLevelUpDeltas() const { return lastLevelUpDeltas_; }
// Other player level-up callback — fires when another player gains a level
using OtherPlayerLevelUpCallback = std::function<void(uint64_t guid, uint32_t newLevel)>;
void setOtherPlayerLevelUpCallback(OtherPlayerLevelUpCallback cb) { otherPlayerLevelUpCallback_ = std::move(cb); }
@ -2793,6 +2801,7 @@ private:
NpcVendorCallback npcVendorCallback_;
ChargeCallback chargeCallback_;
LevelUpCallback levelUpCallback_;
LevelUpDeltas lastLevelUpDeltas_;
OtherPlayerLevelUpCallback otherPlayerLevelUpCallback_;
AchievementEarnedCallback achievementEarnedCallback_;
AreaDiscoveryCallback areaDiscoveryCallback_;