mirror of
https://github.com/Kelsidavis/WoWee.git
synced 2026-04-03 20:03:50 +00:00
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*)
25 lines
776 B
C++
25 lines
776 B
C++
#pragma once
|
|
#include <cstdint>
|
|
|
|
namespace wowee {
|
|
namespace rendering { class Renderer; }
|
|
namespace pipeline { class AssetManager; }
|
|
namespace audio { class AudioCoordinator; }
|
|
namespace game { class ExpansionRegistry; }
|
|
|
|
namespace game {
|
|
|
|
// Explicit service dependencies for game handlers.
|
|
// Owned by Application, passed by reference to GameHandler at construction.
|
|
// Replaces hidden Application::getInstance() singleton access.
|
|
struct GameServices {
|
|
rendering::Renderer* renderer = nullptr;
|
|
audio::AudioCoordinator* audioCoordinator = nullptr;
|
|
pipeline::AssetManager* assetManager = nullptr;
|
|
ExpansionRegistry* expansionRegistry = nullptr;
|
|
uint32_t gryphonDisplayId = 0;
|
|
uint32_t wyvernDisplayId = 0;
|
|
};
|
|
|
|
} // namespace game
|
|
} // namespace wowee
|