R-Type
Distributed multiplayer game engine in C++
Loading...
Searching...
No Matches
IGameLogic.hpp
Go to the documentation of this file.
1/*
2** EPITECH PROJECT, 2025
3** rtype
4** File description:
5** IGameLogic.hpp - Interface for server-side game logic
6*/
7
8#pragma once
9
10#include <cstdint>
11#include <memory>
12
13namespace ecs {
14 class Registry;
15 class ISystem;
16} // namespace ecs
17
18namespace ecs::wrapper {
19 class ECSWorld;
20}
21
22namespace server {
23
42 class IGameLogic {
43 public:
44 virtual ~IGameLogic() = default;
45
50 virtual bool initialize() = 0;
51
57 virtual void update(float deltaTime, uint32_t currentTick) = 0;
58
65 virtual uint32_t spawnPlayer(uint32_t playerId, const std::string &playerName) = 0;
66
71 virtual void despawnPlayer(uint32_t playerId) = 0;
72
81 virtual void processPlayerInput(uint32_t playerId, int inputX, int inputY, bool isShooting,
82 uint32_t sequenceId) = 0;
83
89 virtual uint32_t getLastProcessedInput(uint32_t playerId) const = 0;
90
95 virtual ecs::Registry &getRegistry() = 0;
96
101 virtual bool isGameActive() const = 0;
102
106 virtual void resetGame() = 0;
107
112 virtual const class GameRules &getGameRules() const = 0;
113 };
114
115} // namespace server
Manages entities, their signatures and component type registrations.
Definition Registry.hpp:68
Centralized game rules and configuration.
Definition GameRules.hpp:21
Interface for server-side game logic orchestration.
virtual ecs::Registry & getRegistry()=0
Get reference to the ECS registry.
virtual void resetGame()=0
Reset game state (new game)
virtual bool isGameActive() const =0
Check if the game is active.
virtual const class GameRules & getGameRules() const =0
Get the game rules.
virtual void processPlayerInput(uint32_t playerId, int inputX, int inputY, bool isShooting, uint32_t sequenceId)=0
Process player input event.
virtual bool initialize()=0
Initialize game logic and ECS systems.
virtual uint32_t getLastProcessedInput(uint32_t playerId) const =0
Get the last processed input sequence ID for a player.
virtual uint32_t spawnPlayer(uint32_t playerId, const std::string &playerName)=0
Spawn a player entity.
virtual void despawnPlayer(uint32_t playerId)=0
Remove a player from the game.
virtual ~IGameLogic()=default
virtual void update(float deltaTime, uint32_t currentTick)=0
Update game state for one frame.
Maximum number of distinct component types supported by the Registry.
Definition GameLogic.hpp:26