mirror of
https://github.com/Kelsidavis/WoWee.git
synced 2026-04-03 20:03:50 +00:00
refactor(game): split GameHandler into domain handlers
Extract domain-specific logic from the monolithic GameHandler into
dedicated handler classes, each owning its own opcode registration,
state, and packet parsing:
- CombatHandler: combat, XP, kill, PvP, loot roll (~26 methods)
- SpellHandler: spells, auras, pet stable, talent (~3+ methods)
- SocialHandler: friends, guild, groups, BG, RAF, PvP AFK (~14+ methods)
- ChatHandler: chat messages, channels, GM tickets, server messages,
defense/area-trigger messages (~7+ methods)
- InventoryHandler: items, trade, loot, mail, vendor, equipment sets,
read item (~3+ methods)
- QuestHandler: gossip, quests, completed quest response (~5+ methods)
- MovementHandler: movement, follow, transport (~2 methods)
- WardenHandler: Warden anti-cheat module
Each handler registers its own dispatch table entries via
registerOpcodes(DispatchTable&), called from
GameHandler::registerOpcodeHandlers(). GameHandler retains core
orchestration: auth/session handshake, update-object parsing,
opcode routing, and cross-handler coordination.
game_handler.cpp reduced from ~10,188 to ~9,432 lines.
Also add a POST_BUILD CMake step to symlink Data/ next to the
executable so expansion profiles and opcode tables are found at
runtime when running from build/bin/.
This commit is contained in:
parent
3762dceaa6
commit
b2710258dc
21 changed files with 20771 additions and 17858 deletions
|
|
@ -450,6 +450,14 @@ set(WOWEE_SOURCES
|
|||
src/game/opcode_table.cpp
|
||||
src/game/update_field_table.cpp
|
||||
src/game/game_handler.cpp
|
||||
src/game/chat_handler.cpp
|
||||
src/game/movement_handler.cpp
|
||||
src/game/combat_handler.cpp
|
||||
src/game/spell_handler.cpp
|
||||
src/game/inventory_handler.cpp
|
||||
src/game/social_handler.cpp
|
||||
src/game/quest_handler.cpp
|
||||
src/game/warden_handler.cpp
|
||||
src/game/warden_crypto.cpp
|
||||
src/game/warden_module.cpp
|
||||
src/game/warden_emulator.cpp
|
||||
|
|
@ -884,6 +892,17 @@ add_custom_command(TARGET wowee POST_BUILD
|
|||
COMMENT "Syncing assets to $<TARGET_FILE_DIR:wowee>/assets"
|
||||
)
|
||||
|
||||
# Symlink Data/ next to the executable so expansion profiles, opcode tables,
|
||||
# and other runtime data files are found when running from the build directory.
|
||||
if(NOT WIN32)
|
||||
add_custom_command(TARGET wowee POST_BUILD
|
||||
COMMAND ${CMAKE_COMMAND} -E create_symlink
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/Data
|
||||
$<TARGET_FILE_DIR:wowee>/Data
|
||||
COMMENT "Symlinking Data to $<TARGET_FILE_DIR:wowee>/Data"
|
||||
)
|
||||
endif()
|
||||
|
||||
# On Windows, SDL 2.28+ uses LoadLibraryExW with LOAD_LIBRARY_SEARCH_DEFAULT_DIRS
|
||||
# which does NOT include System32. Copy vulkan-1.dll into the output directory so
|
||||
# SDL_Vulkan_LoadLibrary can locate it without needing a full system PATH search.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue