Air-Trap 1.0.0
A multiplayer R-Type clone game engine built with C++23 and ECS architecture
Loading...
Searching...
No Matches
PlayerSystem.cpp
Go to the documentation of this file.
1
9
10namespace rtp::server {
12 // Public API
14
16 : _network(network), _registry(registry) {}
17
18 void PlayerSystem::update(float dt)
19 {
20 (void)dt;
21 };
22
23 PlayerPtr PlayerSystem::createPlayer(uint32_t sessionId, const std::string& username)
24 {
25 auto it = _players.find(sessionId);
26 if (it == _players.end()) {
27 log::warning("Auth: sessionId {} not in _players yet, creating Player now", sessionId);
28 _players[sessionId] = std::make_shared<Player>(sessionId);
29 it = _players.find(sessionId);
30 }
31 it->second->setUsername(username);
32 log::info("Player created for Session ID {}", sessionId);
33 return it->second;
34 }
35
36 uint32_t PlayerSystem::removePlayer(uint32_t sessionId)
37 {
38 uint32_t entityId = 0;
39
40 auto itP = _players.find(sessionId);
41 if (itP != _players.end()) {
42 entityId = itP->second->getEntityId();
43 }
44 _players.erase(sessionId);
45 log::info("Player removed for Session ID {}", sessionId);
46 return entityId;
47 }
48
49 void PlayerSystem::updatePlayerUsername(uint32_t sessionId, const std::string& username)
50 {
51 auto it = _players.find(sessionId);
52 if (it != _players.end()) {
53 it->second->setUsername(username);
54 log::info("Updated username for Session ID {}: {}", sessionId, username);
55 }
56 }
57
58 PlayerPtr PlayerSystem::getPlayer(uint32_t sessionId) const
59 {
60 auto it = _players.find(sessionId);
61 if (it != _players.end()) {
62 return it->second;
63 }
64 return nullptr;
65 }
66
67 PlayerPtr PlayerSystem::getPlayerByUsername(const std::string& username) const
68 {
69 for (const auto& [sid, player] : _players) {
70 if (player && player->getUsername() == username) {
71 return player;
72 }
73 }
74 return nullptr;
75 }
76} // namespace rtp::server
PlayerPtr createPlayer(uint32_t sessionId, const std::string &username)
Create a new player for the given session ID.
PlayerPtr getPlayer(uint32_t sessionId) const
Get a player by their session ID.
PlayerSystem(ServerNetwork &network, ecs::Registry &registry)
Constructor for PlayerSystem.
void update(float dt) override
Update system logic for one frame.
PlayerPtr getPlayerByUsername(const std::string &username) const
Get a player by their username.
std::map< uint32_t, PlayerPtr > _players
Map of session ID to Player instances.
void updatePlayerUsername(uint32_t sessionId, const std::string &username)
Update the username of a player.
uint32_t removePlayer(uint32_t sessionId)
Remove a player by their session ID.
Implementation ASIO du serveur réseau (TCP + UDP)
void warning(LogFmt< std::type_identity_t< Args >... > fmt, Args &&...args) noexcept
Log a warning message.
void info(LogFmt< std::type_identity_t< Args >... > fmt, Args &&...args) noexcept
Log an informational message.
File : GameManager.hpp License: MIT Author : Elias Josué HAJJAR LLAUQUEN elias-josue....
std::shared_ptr< Player > PlayerPtr
Shared pointer type for Player.
Definition Player.hpp:178