refactor: extract updateTimers() from GameHandler::update()

Move 164 lines of timer/pending-state logic into updateTimers():
auction delay, quest accept timeouts, money delta, GO loot retries,
name query resync, loot money notifications, auto-inspect throttling.
update() is now ~430 lines (down from original 704).
This commit is contained in:
Kelsi 2026-03-25 15:23:31 -07:00
parent 7066062136
commit 6343ceb151
2 changed files with 36 additions and 30 deletions

View file

@ -2315,6 +2315,7 @@ public:
*/
void update(float deltaTime);
void updateNetworking(float deltaTime);
void updateTimers(float deltaTime);
/**
* Reset DBC-backed caches so they reload from new expansion data.

View file

@ -928,36 +928,7 @@ void GameHandler::updateNetworking(float deltaTime) {
}
}
void GameHandler::update(float deltaTime) {
// Fire deferred char-create callback (outside ImGui render)
if (pendingCharCreateResult_) {
pendingCharCreateResult_ = false;
if (charCreateCallback_) {
charCreateCallback_(pendingCharCreateSuccess_, pendingCharCreateMsg_);
}
}
if (!socket) {
return;
}
updateNetworking(deltaTime);
if (!socket) return; // disconnect() may have been called
// Validate target still exists
if (targetGuid != 0 && !entityManager.hasEntity(targetGuid)) {
clearTarget();
}
// Detect combat state transitions → fire PLAYER_REGEN_DISABLED / PLAYER_REGEN_ENABLED
{
bool combatNow = isInCombat();
if (combatNow != wasCombat_) {
wasCombat_ = combatNow;
fireAddonEvent(combatNow ? "PLAYER_REGEN_DISABLED" : "PLAYER_REGEN_ENABLED", {});
}
}
void GameHandler::updateTimers(float deltaTime) {
if (auctionSearchDelayTimer_ > 0.0f) {
auctionSearchDelayTimer_ -= deltaTime;
if (auctionSearchDelayTimer_ < 0.0f) auctionSearchDelayTimer_ = 0.0f;
@ -1122,6 +1093,40 @@ void GameHandler::update(float deltaTime) {
LOG_DEBUG("Sent CMSG_INSPECT for player 0x", std::hex, guid, std::dec);
}
}
}
void GameHandler::update(float deltaTime) {
// Fire deferred char-create callback (outside ImGui render)
if (pendingCharCreateResult_) {
pendingCharCreateResult_ = false;
if (charCreateCallback_) {
charCreateCallback_(pendingCharCreateSuccess_, pendingCharCreateMsg_);
}
}
if (!socket) {
return;
}
updateNetworking(deltaTime);
if (!socket) return; // disconnect() may have been called
// Validate target still exists
if (targetGuid != 0 && !entityManager.hasEntity(targetGuid)) {
clearTarget();
}
// Detect combat state transitions → fire PLAYER_REGEN_DISABLED / PLAYER_REGEN_ENABLED
{
bool combatNow = isInCombat();
if (combatNow != wasCombat_) {
wasCombat_ = combatNow;
fireAddonEvent(combatNow ? "PLAYER_REGEN_DISABLED" : "PLAYER_REGEN_ENABLED", {});
}
}
updateTimers(deltaTime);
// Send periodic heartbeat if in world
if (state == WorldState::IN_WORLD) {