mirror of
https://github.com/Kelsidavis/WoWee.git
synced 2026-03-22 23:30:14 +00:00
feat: show quest objective progress toasts on kill and item collection
Adds a visual progress overlay at bottom-right when quest kill counts or item collection updates arrive. Each toast shows the quest title, objective name, a fill-progress bar, and an X/Y count. Toasts coalesce when the same objective updates multiple times, and auto-dismiss after 4s. Wires a new QuestProgressCallback through GameHandler to trigger the UI.
This commit is contained in:
parent
5216582f15
commit
c3afe543c6
4 changed files with 152 additions and 0 deletions
|
|
@ -1432,6 +1432,13 @@ public:
|
|||
// Area discovery callback — fires when SMSG_EXPLORATION_EXPERIENCE is received
|
||||
using AreaDiscoveryCallback = std::function<void(const std::string& areaName, uint32_t xpGained)>;
|
||||
void setAreaDiscoveryCallback(AreaDiscoveryCallback cb) { areaDiscoveryCallback_ = std::move(cb); }
|
||||
|
||||
// Quest objective progress callback — fires on SMSG_QUESTUPDATE_ADD_KILL / ADD_ITEM
|
||||
// questTitle: name of the quest; objectiveName: creature/item name; current/required counts
|
||||
using QuestProgressCallback = std::function<void(const std::string& questTitle,
|
||||
const std::string& objectiveName,
|
||||
uint32_t current, uint32_t required)>;
|
||||
void setQuestProgressCallback(QuestProgressCallback cb) { questProgressCallback_ = std::move(cb); }
|
||||
const std::unordered_map<uint32_t, uint64_t>& getCriteriaProgress() const { return criteriaProgress_; }
|
||||
/// Returns the WoW PackedTime earn date for an achievement, or 0 if unknown.
|
||||
uint32_t getAchievementDate(uint32_t id) const {
|
||||
|
|
@ -2754,6 +2761,7 @@ private:
|
|||
OtherPlayerLevelUpCallback otherPlayerLevelUpCallback_;
|
||||
AchievementEarnedCallback achievementEarnedCallback_;
|
||||
AreaDiscoveryCallback areaDiscoveryCallback_;
|
||||
QuestProgressCallback questProgressCallback_;
|
||||
MountCallback mountCallback_;
|
||||
TaxiPrecacheCallback taxiPrecacheCallback_;
|
||||
TaxiOrientationCallback taxiOrientationCallback_;
|
||||
|
|
|
|||
|
|
@ -538,6 +538,19 @@ private:
|
|||
size_t whisperSeenCount_ = 0; // how many chat entries have been scanned for whispers
|
||||
void renderWhisperToasts();
|
||||
|
||||
// Quest objective progress toast ("Quest: <ObjectiveName> X/Y")
|
||||
struct QuestProgressToastEntry {
|
||||
std::string questTitle;
|
||||
std::string objectiveName;
|
||||
uint32_t current = 0;
|
||||
uint32_t required = 0;
|
||||
float age = 0.0f;
|
||||
};
|
||||
static constexpr float QUEST_TOAST_DURATION = 4.0f;
|
||||
std::vector<QuestProgressToastEntry> questToasts_;
|
||||
bool questProgressCallbackSet_ = false;
|
||||
void renderQuestProgressToasts();
|
||||
|
||||
// Zone discovery text ("Entering: <ZoneName>")
|
||||
static constexpr float ZONE_TEXT_DURATION = 5.0f;
|
||||
float zoneTextTimer_ = 0.0f;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue