mirror of
https://github.com/Kelsidavis/WoWee.git
synced 2026-04-16 09:13:50 +00:00
chore(renderer): extract AnimationController and remove audio pass-throughs
Extract ~1,500 lines of character animation state from Renderer into a dedicated
AnimationController class, and complete the AudioCoordinator migration by removing
all 10 audio pass-through getters from Renderer.
AnimationController:
- New: include/rendering/animation_controller.hpp (182 lines)
- New: src/rendering/animation_controller.cpp (1,703 lines)
- Moves: locomotion state machine (50+ members), mount animation (40+ members),
emote system, footstep triggering, surface detection, melee combat animations
- Renderer holds std::unique_ptr<AnimationController> and delegates completely
- AnimationController accesses audio via renderer_->getAudioCoordinator()
Audio caller migration:
- Migrate ~60 external callers from renderer->getXManager() to AudioCoordinator
directly, grouped by access pattern:
- UIServices: settings_panel, game_screen, toast_manager, chat_panel,
combat_ui, window_manager
- GameServices: game_handler, spell_handler, inventory_handler, quest_handler,
social_handler, combat_handler
- Application singleton: application.cpp, auth_screen.cpp, lua_engine.cpp
- Remove 10 pass-through getter definitions from renderer.cpp
- Remove 10 pass-through getter declarations from renderer.hpp
- Remove individual audio manager forward declarations from renderer.hpp
- Redirect 69 internal renderer.cpp audio calls to audioCoordinator_ directly
- game_handler.cpp: withSoundManager template uses services_.audioCoordinator;
MFP changed from &Renderer::getUiSoundManager to &AudioCoordinator::getUiSoundManager
- GameServices struct: add AudioCoordinator* audioCoordinator member
- settings_panel: applyAudioVolumes(Renderer*) -> applyAudioVolumes(AudioCoordinator*)
This commit is contained in:
parent
5ef600098a
commit
5af9f7aa4b
22 changed files with 2208 additions and 1958 deletions
|
|
@ -6,6 +6,7 @@
|
|||
#include "game/update_field_table.hpp"
|
||||
#include "game/opcode_table.hpp"
|
||||
#include "rendering/renderer.hpp"
|
||||
#include "audio/audio_coordinator.hpp"
|
||||
#include "audio/combat_sound_manager.hpp"
|
||||
#include "audio/activity_sound_manager.hpp"
|
||||
#include "core/application.hpp"
|
||||
|
|
@ -451,8 +452,8 @@ void CombatHandler::handleAttackerStateUpdate(network::Packet& packet) {
|
|||
}
|
||||
|
||||
// Play combat sounds via CombatSoundManager + character vocalizations
|
||||
if (auto* renderer = owner_.services().renderer) {
|
||||
if (auto* csm = renderer->getCombatSoundManager()) {
|
||||
if (auto* ac = owner_.services().audioCoordinator) {
|
||||
if (auto* csm = ac->getCombatSoundManager()) {
|
||||
auto weaponSize = audio::CombatSoundManager::WeaponSize::MEDIUM;
|
||||
if (data.isMiss()) {
|
||||
csm->playWeaponMiss(false);
|
||||
|
|
@ -466,7 +467,7 @@ void CombatHandler::handleAttackerStateUpdate(network::Packet& packet) {
|
|||
}
|
||||
}
|
||||
// Character vocalizations
|
||||
if (auto* asm_ = renderer->getActivitySoundManager()) {
|
||||
if (auto* asm_ = ac->getActivitySoundManager()) {
|
||||
if (isPlayerAttacker && !data.isMiss() && data.victimState != 1 && data.victimState != 2) {
|
||||
asm_->playAttackGrunt();
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue