mirror of
https://github.com/Kelsidavis/WoWee.git
synced 2026-03-23 07:40:14 +00:00
fix: stabilize turtle world entry session handling
This commit is contained in:
parent
4dba20b757
commit
b0fafe5efa
20 changed files with 2283 additions and 1380 deletions
|
|
@ -7,6 +7,7 @@
|
|||
#include "game/inventory.hpp"
|
||||
#include "game/spell_defines.hpp"
|
||||
#include "game/group_defines.hpp"
|
||||
#include "network/packet.hpp"
|
||||
#include <glm/glm.hpp>
|
||||
#include <memory>
|
||||
#include <string>
|
||||
|
|
@ -2089,6 +2090,15 @@ private:
|
|||
* Handle incoming packet from world server
|
||||
*/
|
||||
void handlePacket(network::Packet& packet);
|
||||
void enqueueIncomingPacket(const network::Packet& packet);
|
||||
void enqueueIncomingPacketFront(network::Packet&& packet);
|
||||
void processQueuedIncomingPackets();
|
||||
void enqueueUpdateObjectWork(UpdateObjectData&& data);
|
||||
void processPendingUpdateObjectWork(const std::chrono::steady_clock::time_point& start,
|
||||
float budgetMs);
|
||||
void processOutOfRangeObjects(const std::vector<uint64_t>& guids);
|
||||
void applyUpdateObjectBlock(const UpdateBlock& block, bool& newItemCreated);
|
||||
void finalizeUpdateObjectBatch(bool newItemCreated);
|
||||
|
||||
/**
|
||||
* Handle SMSG_AUTH_CHALLENGE from server
|
||||
|
|
@ -2413,6 +2423,14 @@ private:
|
|||
|
||||
// Network
|
||||
std::unique_ptr<network::WorldSocket> socket;
|
||||
std::deque<network::Packet> pendingIncomingPackets_;
|
||||
struct PendingUpdateObjectWork {
|
||||
UpdateObjectData data;
|
||||
size_t nextBlockIndex = 0;
|
||||
bool outOfRangeProcessed = false;
|
||||
bool newItemCreated = false;
|
||||
};
|
||||
std::deque<PendingUpdateObjectWork> pendingUpdateObjectWork_;
|
||||
|
||||
// State
|
||||
WorldState state = WorldState::DISCONNECTED;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue