mirror of
https://github.com/Kelsidavis/WoWee.git
synced 2026-04-12 15:53:50 +00:00
refactor(game): extract EntityController from GameHandler (step 1.3)
Moves entity lifecycle, name/creature/game-object caches, transport GUID tracking, and the entire update-object pipeline out of GameHandler into a new EntityController class (friend-class pattern, same as CombatHandler et al.). What moved: - applyUpdateObjectBlock() — 1,520-line core of all entity creation, field updates, and movement application - processOutOfRangeObjects() / finalizeUpdateObjectBatch() - handleUpdateObject() / handleCompressedUpdateObject() / handleDestroyObject() - handleNameQueryResponse() / handleCreatureQueryResponse() - handleGameObjectQueryResponse() / handleGameObjectPageText() - handlePageTextQueryResponse() - enqueueUpdateObjectWork() / processPendingUpdateObjectWork() - playerNameCache, playerClassRaceCache_, pendingNameQueries - creatureInfoCache, pendingCreatureQueries - gameObjectInfoCache_, pendingGameObjectQueries_ - transportGuids_, serverUpdatedTransportGuids_ - EntityManager (accessed by other handlers via getEntityManager()) 8 opcodes re-registered by EntityController::registerOpcodes(): SMSG_UPDATE_OBJECT, SMSG_COMPRESSED_UPDATE_OBJECT, SMSG_DESTROY_OBJECT, SMSG_NAME_QUERY_RESPONSE, SMSG_CREATURE_QUERY_RESPONSE, SMSG_GAMEOBJECT_QUERY_RESPONSE, SMSG_GAMEOBJECT_PAGETEXT, SMSG_PAGE_TEXT_QUERY_RESPONSE Other handler files (combat, movement, social, spell, inventory, quest, chat) updated to access EntityManager via getEntityManager() and the name cache via getPlayerNameCache() — no logic changes. Also included: - .clang-tidy: add modernize-use-nodiscard, modernize-use-designated-initializers; set -std=c++20 in ExtraArgs - test.sh: prepend clang's own resource include dir before GCC's to silence xmmintrin.h / ia32intrin.h conflicts during clang-tidy runs Line counts: entity_controller.hpp 147 lines (new) entity_controller.cpp 2172 lines (new) game_handler.cpp 8095 lines (was 10143, −2048) Build: 0 errors, 0 warnings.
This commit is contained in:
parent
4f2a4e5520
commit
f5757aca83
15 changed files with 2497 additions and 2260 deletions
|
|
@ -138,8 +138,8 @@ void ChatHandler::sendChatMessage(ChatType type, const std::string& message, con
|
|||
echo.language = language;
|
||||
echo.message = message;
|
||||
|
||||
auto nameIt = owner_.playerNameCache.find(owner_.playerGuid);
|
||||
if (nameIt != owner_.playerNameCache.end()) {
|
||||
auto nameIt = owner_.getPlayerNameCache().find(owner_.playerGuid);
|
||||
if (nameIt != owner_.getPlayerNameCache().end()) {
|
||||
echo.senderName = nameIt->second;
|
||||
}
|
||||
|
||||
|
|
@ -179,11 +179,11 @@ void ChatHandler::handleMessageChat(network::Packet& packet) {
|
|||
|
||||
// Resolve sender name from entity/cache if not already set by parser
|
||||
if (data.senderName.empty() && data.senderGuid != 0) {
|
||||
auto nameIt = owner_.playerNameCache.find(data.senderGuid);
|
||||
if (nameIt != owner_.playerNameCache.end()) {
|
||||
auto nameIt = owner_.getPlayerNameCache().find(data.senderGuid);
|
||||
if (nameIt != owner_.getPlayerNameCache().end()) {
|
||||
data.senderName = nameIt->second;
|
||||
} else {
|
||||
auto entity = owner_.entityManager.getEntity(data.senderGuid);
|
||||
auto entity = owner_.getEntityManager().getEntity(data.senderGuid);
|
||||
if (entity) {
|
||||
if (entity->getType() == ObjectType::PLAYER) {
|
||||
auto player = std::dynamic_pointer_cast<Player>(entity);
|
||||
|
|
@ -356,11 +356,11 @@ void ChatHandler::handleTextEmote(network::Packet& packet) {
|
|||
}
|
||||
|
||||
std::string senderName;
|
||||
auto nameIt = owner_.playerNameCache.find(data.senderGuid);
|
||||
if (nameIt != owner_.playerNameCache.end()) {
|
||||
auto nameIt = owner_.getPlayerNameCache().find(data.senderGuid);
|
||||
if (nameIt != owner_.getPlayerNameCache().end()) {
|
||||
senderName = nameIt->second;
|
||||
} else {
|
||||
auto entity = owner_.entityManager.getEntity(data.senderGuid);
|
||||
auto entity = owner_.getEntityManager().getEntity(data.senderGuid);
|
||||
if (entity) {
|
||||
auto unit = std::dynamic_pointer_cast<Unit>(entity);
|
||||
if (unit) senderName = unit->getName();
|
||||
|
|
@ -685,7 +685,7 @@ void ChatHandler::handleChannelList(network::Packet& packet) {
|
|||
uint64_t memberGuid = packet.readUInt64();
|
||||
uint8_t memberFlags = packet.readUInt8();
|
||||
std::string name;
|
||||
auto entity = owner_.entityManager.getEntity(memberGuid);
|
||||
auto entity = owner_.getEntityManager().getEntity(memberGuid);
|
||||
if (entity) {
|
||||
auto player = std::dynamic_pointer_cast<Player>(entity);
|
||||
if (player && !player->getName().empty()) name = player->getName();
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue