18#include <unordered_map>
19#include <unordered_set>
79 GameMulti(
eng::id assignedId,
const std::shared_ptr<eng::IRenderer> &renderer,
80 const std::shared_ptr<eng::IAudio> &audio,
float skinIndex,
bool &showDebug, uint32_t sessionId);
161 std::unordered_map<uint32_t, ecs::Entity> &entityMap,
float smoothFactor,
float dt,
173 std::unordered_map<uint32_t, ecs::Entity> &entityMap,
float smoothFactor,
float dt,
195 std::unordered_map<uint32_t, InterpolationData>
Thread-safe event bus implementation for inter-component communication.
This file contains the Audio interface.
Heads-Up Display (HUD) system for R-Type multiplayer game.
Multiplayer player controller system for R-Type client.
Class for managing entities and their components.
Abstract class for scene.
Main multiplayer game scene handling networked gameplay.
GameMulti & operator=(const GameMulti &other)=delete
Deleted copy assignment operator (non-copyable)
GameMulti(eng::id assignedId, const std::shared_ptr< eng::IRenderer > &renderer, const std::shared_ptr< eng::IAudio > &audio, float skinIndex, bool &showDebug, uint32_t sessionId)
Constructor.
GameMulti(const GameMulti &other)=delete
Deleted copy constructor (non-copyable)
std::unordered_map< uint32_t, ecs::Entity > m_projectileEntities
Map of projectile ID to entity.
void processEventBus()
Process pending events from the event bus.
std::unique_ptr< PlayerControllerMulti > m_playerController
Player input controller.
uint32_t m_eventComponentId
Event bus component ID.
bool m_playMusic
Music playback flag.
bool m_firstWorldState
Flag indicating if this is the first world state (for player skin init)
std::unordered_map< uint32_t, ecs::Entity > m_enemyEntities
Map of enemy ID to entity.
float m_bossMusicTimer
Timer for boss music duration.
std::unordered_map< uint32_t, InterpolationData > m_projectileData
Interpolation data for projectiles.
~GameMulti() override=default
Destructor.
const std::shared_ptr< eng::IAudio > & m_audio
Audio interface reference.
std::unordered_map< eng::Key, bool > m_keysPressed
Current key press states.
void event(const eng::Event &event) override
Handle input events.
void updatePlayerSkin()
Update the local player's visual skin/appearance.
void update(float dt, const eng::WindowSize &size) override
Update the game scene (called each frame)
ecs::Entity m_bossMusicEntity
Entity for boss music.
static constexpr float PROJECTILE_SMOOTH_FACTOR
Interpolation speed for projectiles.
std::unordered_set< std::string > m_loadedFonts
Cache of loaded font paths.
static constexpr float ENEMY_SMOOTH_FACTOR
Interpolation speed for enemies.
void handleWorldStateUpdate(const utl::Event &event)
Handle world state update from server.
bool m_bossMusicStarted
Flag indicating if boss music has started.
static constexpr float BOSS_MUSIC_DURATION
Duration of boss music in seconds.
bool & m_showDebug
Debug mode flag reference.
void preloadCommonTextures()
Preload commonly used textures.
GameMulti(GameMulti &&other)=delete
Deleted move constructor (non-movable)
std::unordered_set< std::string > m_loadedTextures
Cache of loaded texture paths.
std::unique_ptr< StageManager > m_stageManager
Stage/level manager.
std::function< void()> onGameOver
Callback invoked when game ends.
ecs::Entity m_beginSoundEntity
Entity for game start sound.
bool & playMusic()
Get reference to music playback flag.
std::unordered_map< uint32_t, ecs::Entity > m_remotePlayers
Map of session ID to remote player entities.
void updateInterpolation(std::unordered_map< uint32_t, InterpolationData > &dataMap, std::unordered_map< uint32_t, ecs::Entity > &entityMap, float smoothFactor, float dt, ecs::Registry ®istry)
Update entity position interpolation.
std::unordered_map< uint32_t, InterpolationData > m_enemyData
Interpolation data for enemies.
void updateInterpolation(std::unordered_map< uint32_t, InterpolationData > &dataMap, std::unordered_map< uint32_t, ecs::Entity > &entityMap, float smoothFactor, float dt, ecs::Registry ®istry) const
Update entity position interpolation (const version)
uint32_t m_lastAckSeqId
Last acknowledged input sequence ID.
std::unordered_map< uint32_t, uint32_t > m_playerSkinMap
Map of player session ID to skin index.
bool m_starfieldCreated
Flag indicating if starfield background was created.
ecs::Entity m_localPlayerEntity
Local player entity.
void setupEventSubscriptions() const
Subscribe to event bus events.
float m_skinIndex
Local player skin index.
const std::shared_ptr< eng::IRenderer > & m_renderer
Renderer interface reference.
std::unordered_map< uint32_t, InterpolationData > m_remotePlayerData
Interpolation data for remote players.
GameMulti & operator=(GameMulti &&other)=delete
Deleted move assignment operator (non-movable)
static constexpr float REMOTE_PLAYER_SMOOTH_FACTOR
Interpolation speed for remote players.
std::unique_ptr< HUDSystem > m_hudSystem
HUD rendering system.
uint32_t m_sessionId
Local player session ID.
std::deque< PendingInput > m_inputHistory
History of unacknowledged inputs.
Event structure for inter-component communication.
This file contains the IScene class.
Data structure for entity position interpolation.
float targetVy
Target velocity from server.
float currentRotation
Current interpolated rotation.
float currentY
Current interpolated position.
float targetY
Target position from server update.
float targetRotation
Target rotation angle.
float smoothFactor
Interpolation smoothing factor (0.0-1.0)