fix: delegate all 113 stale GameHandler getters to domain handlers

PR #23 split GameHandler into 8 domain handlers but left 113 inline
getters reading stale duplicate member variables. Every feature that
relied on these getters was silently broken (showing empty/stale data):

InventoryHandler (32): bank, mail, auction house, guild bank, trainer,
  loot rolls, vendor, buyback, item text, master loot candidates
SocialHandler (43): guild roster, battlegrounds, LFG, duels, petitions,
  arena teams, instance lockouts, ready check, who results, played time
SpellHandler (10): talents, craft queue, GCD, pet unlearn, queued spell
QuestHandler (13): quest log, gossip POIs, quest offer/request windows,
  tracked quests, shared quests, NPC quest statuses
MovementHandler (15): all 8 server speeds, taxi state, taxi nodes/data

All converted from inline `{ return member_; }` to out-of-line
delegations: `return handler_ ? handler_->getter() : fallback;`
This commit is contained in:
Kelsi 2026-03-28 12:18:14 -07:00
parent d6b387ae35
commit ee02faa183
3 changed files with 752 additions and 172 deletions

View file

@ -5142,6 +5142,202 @@ void GameHandler::deleteEquipmentSet(uint64_t setGuid) {
if (inventoryHandler_) inventoryHandler_->deleteEquipmentSet(setGuid);
}
// --- Inventory state delegation (canonical state lives in InventoryHandler) ---
// Item text
bool GameHandler::isItemTextOpen() const {
return inventoryHandler_ ? inventoryHandler_->isItemTextOpen() : itemTextOpen_;
}
const std::string& GameHandler::getItemText() const {
if (inventoryHandler_) return inventoryHandler_->getItemText();
return itemText_;
}
void GameHandler::closeItemText() {
if (inventoryHandler_) inventoryHandler_->closeItemText();
else itemTextOpen_ = false;
}
// Loot
bool GameHandler::isLootWindowOpen() const {
return inventoryHandler_ ? inventoryHandler_->isLootWindowOpen() : lootWindowOpen;
}
const LootResponseData& GameHandler::getCurrentLoot() const {
if (inventoryHandler_) return inventoryHandler_->getCurrentLoot();
return currentLoot;
}
void GameHandler::setAutoLoot(bool enabled) {
if (inventoryHandler_) inventoryHandler_->setAutoLoot(enabled);
else autoLoot_ = enabled;
}
bool GameHandler::isAutoLoot() const {
return inventoryHandler_ ? inventoryHandler_->isAutoLoot() : autoLoot_;
}
void GameHandler::setAutoSellGrey(bool enabled) {
if (inventoryHandler_) inventoryHandler_->setAutoSellGrey(enabled);
else autoSellGrey_ = enabled;
}
bool GameHandler::isAutoSellGrey() const {
return inventoryHandler_ ? inventoryHandler_->isAutoSellGrey() : autoSellGrey_;
}
void GameHandler::setAutoRepair(bool enabled) {
if (inventoryHandler_) inventoryHandler_->setAutoRepair(enabled);
else autoRepair_ = enabled;
}
bool GameHandler::isAutoRepair() const {
return inventoryHandler_ ? inventoryHandler_->isAutoRepair() : autoRepair_;
}
const std::vector<uint64_t>& GameHandler::getMasterLootCandidates() const {
if (inventoryHandler_) return inventoryHandler_->getMasterLootCandidates();
return masterLootCandidates_;
}
bool GameHandler::hasMasterLootCandidates() const {
return inventoryHandler_ ? inventoryHandler_->hasMasterLootCandidates() : !masterLootCandidates_.empty();
}
bool GameHandler::hasPendingLootRoll() const {
return inventoryHandler_ ? inventoryHandler_->hasPendingLootRoll() : pendingLootRollActive_;
}
const LootRollEntry& GameHandler::getPendingLootRoll() const {
if (inventoryHandler_) return inventoryHandler_->getPendingLootRoll();
return pendingLootRoll_;
}
// Vendor
bool GameHandler::isVendorWindowOpen() const {
return inventoryHandler_ ? inventoryHandler_->isVendorWindowOpen() : vendorWindowOpen;
}
const ListInventoryData& GameHandler::getVendorItems() const {
if (inventoryHandler_) return inventoryHandler_->getVendorItems();
return currentVendorItems;
}
void GameHandler::setVendorCanRepair(bool v) {
if (inventoryHandler_) inventoryHandler_->setVendorCanRepair(v);
else currentVendorItems.canRepair = v;
}
const std::deque<GameHandler::BuybackItem>& GameHandler::getBuybackItems() const {
if (inventoryHandler_) {
// Layout-identical structs (InventoryHandler::BuybackItem == GameHandler::BuybackItem)
return reinterpret_cast<const std::deque<BuybackItem>&>(inventoryHandler_->getBuybackItems());
}
return buybackItems_;
}
uint64_t GameHandler::getVendorGuid() const {
if (inventoryHandler_) return inventoryHandler_->getVendorGuid();
return currentVendorItems.vendorGuid;
}
// Mail
bool GameHandler::isMailboxOpen() const {
return inventoryHandler_ ? inventoryHandler_->isMailboxOpen() : mailboxOpen_;
}
const std::vector<MailMessage>& GameHandler::getMailInbox() const {
if (inventoryHandler_) return inventoryHandler_->getMailInbox();
return mailInbox_;
}
int GameHandler::getSelectedMailIndex() const {
return inventoryHandler_ ? inventoryHandler_->getSelectedMailIndex() : selectedMailIndex_;
}
void GameHandler::setSelectedMailIndex(int idx) {
if (inventoryHandler_) inventoryHandler_->setSelectedMailIndex(idx);
else selectedMailIndex_ = idx;
}
bool GameHandler::isMailComposeOpen() const {
return inventoryHandler_ ? inventoryHandler_->isMailComposeOpen() : showMailCompose_;
}
void GameHandler::openMailCompose() {
if (inventoryHandler_) inventoryHandler_->openMailCompose();
else { showMailCompose_ = true; clearMailAttachments(); }
}
void GameHandler::closeMailCompose() {
if (inventoryHandler_) inventoryHandler_->closeMailCompose();
else { showMailCompose_ = false; clearMailAttachments(); }
}
bool GameHandler::hasNewMail() const {
return inventoryHandler_ ? inventoryHandler_->hasNewMail() : hasNewMail_;
}
const std::array<GameHandler::MailAttachSlot, 12>& GameHandler::getMailAttachments() const {
if (inventoryHandler_) {
// Layout-identical structs (InventoryHandler::MailAttachSlot == GameHandler::MailAttachSlot)
return reinterpret_cast<const std::array<MailAttachSlot, 12>&>(inventoryHandler_->getMailAttachments());
}
return mailAttachments_;
}
// Bank
bool GameHandler::isBankOpen() const {
return inventoryHandler_ ? inventoryHandler_->isBankOpen() : bankOpen_;
}
uint64_t GameHandler::getBankerGuid() const {
return inventoryHandler_ ? inventoryHandler_->getBankerGuid() : bankerGuid_;
}
int GameHandler::getEffectiveBankSlots() const {
return inventoryHandler_ ? inventoryHandler_->getEffectiveBankSlots() : effectiveBankSlots_;
}
int GameHandler::getEffectiveBankBagSlots() const {
return inventoryHandler_ ? inventoryHandler_->getEffectiveBankBagSlots() : effectiveBankBagSlots_;
}
// Guild Bank
bool GameHandler::isGuildBankOpen() const {
return inventoryHandler_ ? inventoryHandler_->isGuildBankOpen() : guildBankOpen_;
}
const GuildBankData& GameHandler::getGuildBankData() const {
if (inventoryHandler_) return inventoryHandler_->getGuildBankData();
return guildBankData_;
}
uint8_t GameHandler::getGuildBankActiveTab() const {
return inventoryHandler_ ? inventoryHandler_->getGuildBankActiveTab() : guildBankActiveTab_;
}
void GameHandler::setGuildBankActiveTab(uint8_t tab) {
if (inventoryHandler_) inventoryHandler_->setGuildBankActiveTab(tab);
else guildBankActiveTab_ = tab;
}
// Auction House
bool GameHandler::isAuctionHouseOpen() const {
return inventoryHandler_ ? inventoryHandler_->isAuctionHouseOpen() : auctionOpen_;
}
uint64_t GameHandler::getAuctioneerGuid() const {
return inventoryHandler_ ? inventoryHandler_->getAuctioneerGuid() : auctioneerGuid_;
}
const AuctionListResult& GameHandler::getAuctionBrowseResults() const {
if (inventoryHandler_) return inventoryHandler_->getAuctionBrowseResults();
return auctionBrowseResults_;
}
const AuctionListResult& GameHandler::getAuctionOwnerResults() const {
if (inventoryHandler_) return inventoryHandler_->getAuctionOwnerResults();
return auctionOwnerResults_;
}
const AuctionListResult& GameHandler::getAuctionBidderResults() const {
if (inventoryHandler_) return inventoryHandler_->getAuctionBidderResults();
return auctionBidderResults_;
}
int GameHandler::getAuctionActiveTab() const {
return inventoryHandler_ ? inventoryHandler_->getAuctionActiveTab() : auctionActiveTab_;
}
void GameHandler::setAuctionActiveTab(int tab) {
if (inventoryHandler_) inventoryHandler_->setAuctionActiveTab(tab);
else auctionActiveTab_ = tab;
}
float GameHandler::getAuctionSearchDelay() const {
return inventoryHandler_ ? inventoryHandler_->getAuctionSearchDelay() : auctionSearchDelayTimer_;
}
// Trainer
bool GameHandler::isTrainerWindowOpen() const {
return inventoryHandler_ ? inventoryHandler_->isTrainerWindowOpen() : trainerWindowOpen_;
}
const TrainerListData& GameHandler::getTrainerSpells() const {
if (inventoryHandler_) return inventoryHandler_->getTrainerSpells();
return currentTrainerList_;
}
const std::vector<GameHandler::TrainerTab>& GameHandler::getTrainerTabs() const {
if (inventoryHandler_) {
// Layout-identical structs (InventoryHandler::TrainerTab == GameHandler::TrainerTab)
return reinterpret_cast<const std::vector<TrainerTab>&>(inventoryHandler_->getTrainerTabs());
}
return trainerTabs_;
}
void GameHandler::sendMinimapPing(float wowX, float wowY) {
if (socialHandler_) socialHandler_->sendMinimapPing(wowX, wowY);
}
@ -9484,5 +9680,412 @@ void GameHandler::requestCalendar() {
if (socialHandler_) socialHandler_->requestCalendar();
}
// ============================================================
// Delegating getters — SocialHandler owns the canonical state
// ============================================================
uint32_t GameHandler::getTotalTimePlayed() const {
return socialHandler_ ? socialHandler_->getTotalTimePlayed() : 0;
}
uint32_t GameHandler::getLevelTimePlayed() const {
return socialHandler_ ? socialHandler_->getLevelTimePlayed() : 0;
}
const std::vector<GameHandler::WhoEntry>& GameHandler::getWhoResults() const {
if (socialHandler_) return socialHandler_->getWhoResults();
static const std::vector<WhoEntry> empty;
return empty;
}
uint32_t GameHandler::getWhoOnlineCount() const {
return socialHandler_ ? socialHandler_->getWhoOnlineCount() : 0;
}
const std::array<GameHandler::BgQueueSlot, 3>& GameHandler::getBgQueues() const {
if (socialHandler_) return socialHandler_->getBgQueues();
static const std::array<BgQueueSlot, 3> empty{};
return empty;
}
const std::vector<GameHandler::AvailableBgInfo>& GameHandler::getAvailableBgs() const {
if (socialHandler_) return socialHandler_->getAvailableBgs();
static const std::vector<AvailableBgInfo> empty;
return empty;
}
const GameHandler::BgScoreboardData* GameHandler::getBgScoreboard() const {
return socialHandler_ ? socialHandler_->getBgScoreboard() : nullptr;
}
const std::vector<GameHandler::BgPlayerPosition>& GameHandler::getBgPlayerPositions() const {
if (socialHandler_) return socialHandler_->getBgPlayerPositions();
static const std::vector<BgPlayerPosition> empty;
return empty;
}
bool GameHandler::isLoggingOut() const {
return socialHandler_ ? socialHandler_->isLoggingOut() : false;
}
float GameHandler::getLogoutCountdown() const {
return socialHandler_ ? socialHandler_->getLogoutCountdown() : 0.0f;
}
bool GameHandler::isInGuild() const {
if (socialHandler_) return socialHandler_->isInGuild();
const Character* ch = getActiveCharacter();
return ch && ch->hasGuild();
}
const std::string& GameHandler::getGuildName() const {
if (socialHandler_) return socialHandler_->getGuildName();
static const std::string empty;
return empty;
}
const GuildRosterData& GameHandler::getGuildRoster() const {
if (socialHandler_) return socialHandler_->getGuildRoster();
static const GuildRosterData empty;
return empty;
}
bool GameHandler::hasGuildRoster() const {
return socialHandler_ ? socialHandler_->hasGuildRoster() : false;
}
const std::vector<std::string>& GameHandler::getGuildRankNames() const {
if (socialHandler_) return socialHandler_->getGuildRankNames();
static const std::vector<std::string> empty;
return empty;
}
bool GameHandler::hasPendingGuildInvite() const {
return socialHandler_ ? socialHandler_->hasPendingGuildInvite() : false;
}
const std::string& GameHandler::getPendingGuildInviterName() const {
if (socialHandler_) return socialHandler_->getPendingGuildInviterName();
static const std::string empty;
return empty;
}
const std::string& GameHandler::getPendingGuildInviteGuildName() const {
if (socialHandler_) return socialHandler_->getPendingGuildInviteGuildName();
static const std::string empty;
return empty;
}
const GuildInfoData& GameHandler::getGuildInfoData() const {
if (socialHandler_) return socialHandler_->getGuildInfoData();
static const GuildInfoData empty;
return empty;
}
const GuildQueryResponseData& GameHandler::getGuildQueryData() const {
if (socialHandler_) return socialHandler_->getGuildQueryData();
static const GuildQueryResponseData empty;
return empty;
}
bool GameHandler::hasGuildInfoData() const {
return socialHandler_ ? socialHandler_->hasGuildInfoData() : false;
}
bool GameHandler::hasPetitionShowlist() const {
return socialHandler_ ? socialHandler_->hasPetitionShowlist() : false;
}
uint32_t GameHandler::getPetitionCost() const {
return socialHandler_ ? socialHandler_->getPetitionCost() : 0;
}
uint64_t GameHandler::getPetitionNpcGuid() const {
return socialHandler_ ? socialHandler_->getPetitionNpcGuid() : 0;
}
const GameHandler::PetitionInfo& GameHandler::getPetitionInfo() const {
if (socialHandler_) return socialHandler_->getPetitionInfo();
static const PetitionInfo empty;
return empty;
}
bool GameHandler::hasPetitionSignaturesUI() const {
return socialHandler_ ? socialHandler_->hasPetitionSignaturesUI() : false;
}
bool GameHandler::hasPendingReadyCheck() const {
return socialHandler_ ? socialHandler_->hasPendingReadyCheck() : false;
}
const std::string& GameHandler::getReadyCheckInitiator() const {
if (socialHandler_) return socialHandler_->getReadyCheckInitiator();
static const std::string empty;
return empty;
}
const std::vector<GameHandler::ReadyCheckResult>& GameHandler::getReadyCheckResults() const {
if (socialHandler_) return socialHandler_->getReadyCheckResults();
static const std::vector<ReadyCheckResult> empty;
return empty;
}
uint32_t GameHandler::getInstanceDifficulty() const {
return socialHandler_ ? socialHandler_->getInstanceDifficulty() : 0;
}
bool GameHandler::isInstanceHeroic() const {
return socialHandler_ ? socialHandler_->isInstanceHeroic() : false;
}
bool GameHandler::isInInstance() const {
return socialHandler_ ? socialHandler_->isInInstance() : false;
}
bool GameHandler::hasPendingDuelRequest() const {
return socialHandler_ ? socialHandler_->hasPendingDuelRequest() : false;
}
const std::string& GameHandler::getDuelChallengerName() const {
if (socialHandler_) return socialHandler_->getDuelChallengerName();
static const std::string empty;
return empty;
}
float GameHandler::getDuelCountdownRemaining() const {
return socialHandler_ ? socialHandler_->getDuelCountdownRemaining() : 0.0f;
}
const std::vector<GameHandler::InstanceLockout>& GameHandler::getInstanceLockouts() const {
if (socialHandler_) return socialHandler_->getInstanceLockouts();
static const std::vector<InstanceLockout> empty;
return empty;
}
GameHandler::LfgState GameHandler::getLfgState() const {
return socialHandler_ ? socialHandler_->getLfgState() : LfgState::None;
}
bool GameHandler::isLfgQueued() const {
return socialHandler_ ? socialHandler_->isLfgQueued() : false;
}
bool GameHandler::isLfgInDungeon() const {
return socialHandler_ ? socialHandler_->isLfgInDungeon() : false;
}
uint32_t GameHandler::getLfgDungeonId() const {
return socialHandler_ ? socialHandler_->getLfgDungeonId() : 0;
}
std::string GameHandler::getCurrentLfgDungeonName() const {
return socialHandler_ ? socialHandler_->getCurrentLfgDungeonName() : std::string{};
}
uint32_t GameHandler::getLfgProposalId() const {
return socialHandler_ ? socialHandler_->getLfgProposalId() : 0;
}
int32_t GameHandler::getLfgAvgWaitSec() const {
return socialHandler_ ? socialHandler_->getLfgAvgWaitSec() : -1;
}
uint32_t GameHandler::getLfgTimeInQueueMs() const {
return socialHandler_ ? socialHandler_->getLfgTimeInQueueMs() : 0;
}
uint32_t GameHandler::getLfgBootVotes() const {
return socialHandler_ ? socialHandler_->getLfgBootVotes() : 0;
}
uint32_t GameHandler::getLfgBootTotal() const {
return socialHandler_ ? socialHandler_->getLfgBootTotal() : 0;
}
uint32_t GameHandler::getLfgBootTimeLeft() const {
return socialHandler_ ? socialHandler_->getLfgBootTimeLeft() : 0;
}
uint32_t GameHandler::getLfgBootNeeded() const {
return socialHandler_ ? socialHandler_->getLfgBootNeeded() : 0;
}
const std::string& GameHandler::getLfgBootTargetName() const {
if (socialHandler_) return socialHandler_->getLfgBootTargetName();
static const std::string empty;
return empty;
}
const std::string& GameHandler::getLfgBootReason() const {
if (socialHandler_) return socialHandler_->getLfgBootReason();
static const std::string empty;
return empty;
}
const std::vector<GameHandler::ArenaTeamStats>& GameHandler::getArenaTeamStats() const {
if (socialHandler_) return socialHandler_->getArenaTeamStats();
static const std::vector<ArenaTeamStats> empty;
return empty;
}
// ---- SpellHandler delegating getters ----
int GameHandler::getCraftQueueRemaining() const {
return spellHandler_ ? spellHandler_->getCraftQueueRemaining() : 0;
}
uint32_t GameHandler::getCraftQueueSpellId() const {
return spellHandler_ ? spellHandler_->getCraftQueueSpellId() : 0;
}
uint32_t GameHandler::getQueuedSpellId() const {
return spellHandler_ ? spellHandler_->getQueuedSpellId() : 0;
}
const std::unordered_map<uint32_t, TalentEntry>& GameHandler::getAllTalents() const {
if (spellHandler_) return spellHandler_->getAllTalents();
static const std::unordered_map<uint32_t, TalentEntry> empty;
return empty;
}
const std::unordered_map<uint32_t, TalentTabEntry>& GameHandler::getAllTalentTabs() const {
if (spellHandler_) return spellHandler_->getAllTalentTabs();
static const std::unordered_map<uint32_t, TalentTabEntry> empty;
return empty;
}
float GameHandler::getGCDTotal() const {
return spellHandler_ ? spellHandler_->getGCDTotal() : 0.0f;
}
bool GameHandler::showTalentWipeConfirmDialog() const {
return spellHandler_ ? spellHandler_->showTalentWipeConfirmDialog() : false;
}
uint32_t GameHandler::getTalentWipeCost() const {
return spellHandler_ ? spellHandler_->getTalentWipeCost() : 0;
}
void GameHandler::cancelTalentWipe() {
if (spellHandler_) spellHandler_->cancelTalentWipe();
}
bool GameHandler::showPetUnlearnDialog() const {
return spellHandler_ ? spellHandler_->showPetUnlearnDialog() : false;
}
uint32_t GameHandler::getPetUnlearnCost() const {
return spellHandler_ ? spellHandler_->getPetUnlearnCost() : 0;
}
void GameHandler::cancelPetUnlearn() {
if (spellHandler_) spellHandler_->cancelPetUnlearn();
}
// ---- QuestHandler delegating getters ----
const std::vector<GossipPoi>& GameHandler::getGossipPois() const {
if (questHandler_) return questHandler_->getGossipPois();
static const std::vector<GossipPoi> empty;
return empty;
}
const std::unordered_map<uint64_t, QuestGiverStatus>& GameHandler::getNpcQuestStatuses() const {
if (questHandler_) return questHandler_->getNpcQuestStatuses();
static const std::unordered_map<uint64_t, QuestGiverStatus> empty;
return empty;
}
const std::vector<GameHandler::QuestLogEntry>& GameHandler::getQuestLog() const {
if (questHandler_) return questHandler_->getQuestLog();
static const std::vector<QuestLogEntry> empty;
return empty;
}
bool GameHandler::isQuestOfferRewardOpen() const {
return questHandler_ ? questHandler_->isQuestOfferRewardOpen() : false;
}
const QuestOfferRewardData& GameHandler::getQuestOfferReward() const {
if (questHandler_) return questHandler_->getQuestOfferReward();
static const QuestOfferRewardData empty;
return empty;
}
bool GameHandler::isQuestRequestItemsOpen() const {
return questHandler_ ? questHandler_->isQuestRequestItemsOpen() : false;
}
const QuestRequestItemsData& GameHandler::getQuestRequestItems() const {
if (questHandler_) return questHandler_->getQuestRequestItems();
static const QuestRequestItemsData empty;
return empty;
}
int GameHandler::getSelectedQuestLogIndex() const {
return questHandler_ ? questHandler_->getSelectedQuestLogIndex() : 0;
}
uint32_t GameHandler::getSharedQuestId() const {
return questHandler_ ? questHandler_->getSharedQuestId() : 0;
}
const std::string& GameHandler::getSharedQuestSharerName() const {
if (questHandler_) return questHandler_->getSharedQuestSharerName();
static const std::string empty;
return empty;
}
const std::string& GameHandler::getSharedQuestTitle() const {
if (questHandler_) return questHandler_->getSharedQuestTitle();
static const std::string empty;
return empty;
}
const std::unordered_set<uint32_t>& GameHandler::getTrackedQuestIds() const {
if (questHandler_) return questHandler_->getTrackedQuestIds();
static const std::unordered_set<uint32_t> empty;
return empty;
}
bool GameHandler::hasPendingSharedQuest() const {
return questHandler_ ? questHandler_->hasPendingSharedQuest() : false;
}
// ---- MovementHandler delegating getters ----
float GameHandler::getServerRunSpeed() const {
return movementHandler_ ? movementHandler_->getServerRunSpeed() : 7.0f;
}
float GameHandler::getServerWalkSpeed() const {
return movementHandler_ ? movementHandler_->getServerWalkSpeed() : 2.5f;
}
float GameHandler::getServerSwimSpeed() const {
return movementHandler_ ? movementHandler_->getServerSwimSpeed() : 4.722f;
}
float GameHandler::getServerSwimBackSpeed() const {
return movementHandler_ ? movementHandler_->getServerSwimBackSpeed() : 2.5f;
}
float GameHandler::getServerFlightSpeed() const {
return movementHandler_ ? movementHandler_->getServerFlightSpeed() : 7.0f;
}
float GameHandler::getServerFlightBackSpeed() const {
return movementHandler_ ? movementHandler_->getServerFlightBackSpeed() : 4.5f;
}
float GameHandler::getServerRunBackSpeed() const {
return movementHandler_ ? movementHandler_->getServerRunBackSpeed() : 4.5f;
}
float GameHandler::getServerTurnRate() const {
return movementHandler_ ? movementHandler_->getServerTurnRate() : 3.14159f;
}
bool GameHandler::isTaxiWindowOpen() const {
return movementHandler_ ? movementHandler_->isTaxiWindowOpen() : false;
}
bool GameHandler::isOnTaxiFlight() const {
return movementHandler_ ? movementHandler_->isOnTaxiFlight() : false;
}
bool GameHandler::isTaxiMountActive() const {
return movementHandler_ ? movementHandler_->isTaxiMountActive() : false;
}
bool GameHandler::isTaxiActivationPending() const {
return movementHandler_ ? movementHandler_->isTaxiActivationPending() : false;
}
const std::string& GameHandler::getTaxiDestName() const {
if (movementHandler_) return movementHandler_->getTaxiDestName();
static const std::string empty;
return empty;
}
const ShowTaxiNodesData& GameHandler::getTaxiData() const {
if (movementHandler_) return movementHandler_->getTaxiData();
static const ShowTaxiNodesData empty;
return empty;
}
uint32_t GameHandler::getTaxiCurrentNode() const {
if (movementHandler_) return movementHandler_->getTaxiData().nearestNode;
return 0;
}
const std::unordered_map<uint32_t, GameHandler::TaxiNode>& GameHandler::getTaxiNodes() const {
if (movementHandler_) return movementHandler_->getTaxiNodes();
static const std::unordered_map<uint32_t, TaxiNode> empty;
return empty;
}
} // namespace game
} // namespace wowee