diff --git a/include/game/game_handler.hpp b/include/game/game_handler.hpp index d3f3ad11..e4a2c38f 100644 --- a/include/game/game_handler.hpp +++ b/include/game/game_handler.hpp @@ -1446,21 +1446,10 @@ public: // Quest-starting items: right-click triggers quest offer dialog via questgiver protocol void offerQuestFromItem(uint64_t itemGuid, uint32_t questId); uint64_t getBagItemGuid(int bagIndex, int slotIndex) const; - bool isGossipWindowOpen() const { return gossipWindowOpen; } - const GossipMessageData& getCurrentGossip() const { return currentGossip; } - bool isQuestDetailsOpen() { - // Check if delayed opening timer has expired - if (questDetailsOpen) return true; - if (questDetailsOpenTime != std::chrono::steady_clock::time_point{}) { - if (std::chrono::steady_clock::now() >= questDetailsOpenTime) { - questDetailsOpen = true; - questDetailsOpenTime = std::chrono::steady_clock::time_point{}; - return true; - } - } - return false; - } - const QuestDetailsData& getQuestDetails() const { return currentQuestDetails; } + bool isGossipWindowOpen() const; + const GossipMessageData& getCurrentGossip() const; + bool isQuestDetailsOpen(); + const QuestDetailsData& getQuestDetails() const; // Gossip POI (aliased from handler_types.hpp) using GossipPoi = game::GossipPoi; diff --git a/src/game/game_handler.cpp b/src/game/game_handler.cpp index 94510a1b..d18bab1d 100644 --- a/src/game/game_handler.cpp +++ b/src/game/game_handler.cpp @@ -1467,10 +1467,10 @@ void GameHandler::update(float deltaTime) { LOG_INFO(label, " closed: walked too far from NPC"); } }; - closeIfTooFar(vendorWindowOpen, currentVendorItems.vendorGuid, [this]{ closeVendor(); }, "Vendor"); - closeIfTooFar(gossipWindowOpen, currentGossip.npcGuid, [this]{ closeGossip(); }, "Gossip"); - closeIfTooFar(taxiWindowOpen_, taxiNpcGuid_, [this]{ closeTaxi(); }, "Taxi window"); - closeIfTooFar(trainerWindowOpen_, currentTrainerList_.trainerGuid, [this]{ closeTrainer(); }, "Trainer"); + closeIfTooFar(isVendorWindowOpen(), getVendorItems().vendorGuid, [this]{ closeVendor(); }, "Vendor"); + closeIfTooFar(isGossipWindowOpen(), getCurrentGossip().npcGuid, [this]{ closeGossip(); }, "Gossip"); + closeIfTooFar(isTaxiWindowOpen(), taxiNpcGuid_, [this]{ closeTaxi(); }, "Taxi window"); + closeIfTooFar(isTrainerWindowOpen(), getTrainerSpells().trainerGuid, [this]{ closeTrainer(); }, "Trainer"); updateEntityInterpolation(deltaTime); @@ -9973,6 +9973,22 @@ void GameHandler::cancelPetUnlearn() { // ---- QuestHandler delegating getters ---- +bool GameHandler::isGossipWindowOpen() const { + return questHandler_ ? questHandler_->isGossipWindowOpen() : gossipWindowOpen; +} +const GossipMessageData& GameHandler::getCurrentGossip() const { + if (questHandler_) return questHandler_->getCurrentGossip(); + return currentGossip; +} +bool GameHandler::isQuestDetailsOpen() { + if (questHandler_) return questHandler_->isQuestDetailsOpen(); + return questDetailsOpen; +} +const QuestDetailsData& GameHandler::getQuestDetails() const { + if (questHandler_) return questHandler_->getQuestDetails(); + return currentQuestDetails; +} + const std::vector& GameHandler::getGossipPois() const { if (questHandler_) return questHandler_->getGossipPois(); static const std::vector empty;