17#include <unordered_map>
94 [[nodiscard]]
const std::string
getName()
const override {
return "RType_Server"; }
112 void start()
override;
118 void stop()
override;
125 void update(
float deltaTime)
override;
Server-side collision detection and resolution system for R-Type.
Server-side enemy AI and behavior system for R-Type.
Server-side enemy spawning system for R-Type game progression.
Centralized entity lifecycle management system for R-Type server.
Thread-safe event bus implementation for inter-component communication.
This file contains the Game interface.
This file contains the Registry class declaration.
Wave-based enemy spawning management system for R-Type server.
Class for managing entities and their components.
Main game server plugin for R-Type multiplayer gameplay.
std::unique_ptr< EntityManager > m_entityManager
Centralized entity lifecycle manager.
void update(float deltaTime) override
Update the game server (called each tick)
ecs::Registry m_registry
ECS registry containing all game entities.
State m_gameState
Current server state.
std::unordered_map< std::uint32_t, bool > m_playerShooting
Map of session ID to shooting state.
~RTypeServer() override=default
Destructor.
std::unique_ptr< WaveManager > m_waveManager
Wave-based enemy spawning manager.
RTypeServer()
Constructor.
float m_lastBroadcastTime
Time since last world state broadcast.
const std::string getName() const override
Get plugin name.
LevelState m_levelState
Current level state.
void updateEntities(float deltaTime)
Update entity lifetimes and physics.
void checkGameOver()
Check for game over conditions.
void broadcastWorldState() const
Broadcast complete world state to all clients.
utl::EventBus & m_eventBus
Event bus for inter-system communication.
RTypeServer & operator=(const RTypeServer &)=delete
Deleted copy assignment operator (non-copyable)
std::unordered_map< std::uint32_t, float > m_lastShotTime
Map of session ID to last shot timestamp.
void processServerStartEvent(const utl::Event &event)
Process server start event from network layer.
std::unique_ptr< EnemyAISystem > m_enemyAISystem
Enemy behavior and AI system.
void stop() override
Stop the game server.
void start() override
Start the game server.
std::unique_ptr< EnemySpawnSystem > m_enemySpawnSystem
Enemy spawning system (legacy/unused)
void processGameStartEvent(const utl::Event &event)
Process game start event from lobby system.
void updateSystems(float deltaTime)
Update all game systems (AI, collision, spawning)
utl::PluginType getType() const override
Get plugin type.
const float PROJECTILE_COOLDOWN
Cooldown between player shots (seconds)
void processPlayerInputEvent(const utl::Event &event)
Process player input event.
void processPlayerDisconnectEvent(const utl::Event &event)
Process player disconnect event.
RTypeServer(const RTypeServer &)=delete
Deleted copy constructor (non-copyable)
RTypeServer & operator=(RTypeServer &&)=delete
Deleted move assignment operator (non-movable)
void handlePlayerShooting(std::uint32_t sessionId, float deltaTime)
Handle player shooting logic.
RTypeServer(RTypeServer &&)=delete
Deleted move constructor (non-movable)
std::unique_ptr< CollisionSystem > m_collisionSystem
Collision detection and resolution system.
State getState() const override
Get current game state.
Thread-safe event bus for decoupled component communication.
Event structure for inter-component communication.
LevelState
State enumeration for level progression.
@ WAITING_FOR_PLAYERS
Waiting for players to join before starting.
@ COMPLETED
Level successfully completed (all waves cleared)
@ IN_PROGRESS
Game is actively running.
@ LOOSE
Game over (all players dead)