CS2-Kit
C++23 library for CS2 Metamod:Source plugin development
Loading...
Searching...
No Matches
PlayerManager.cpp
Go to the documentation of this file.
1#include <CS2Kit/Players/PlayerManager.hpp>
2#include <CS2Kit/Utils/StringUtils.hpp>
3
4namespace CS2Kit::Players
5{
6
7using namespace CS2Kit::Utils;
8
9Player* PlayerManager::AddPlayer(int slot, int64_t steamId, const std::string& name, const std::string& ipAddress)
10{
11 _playersBySlot.erase(slot);
12
13 auto player = std::make_unique<Player>(slot, steamId, name, ipAddress);
14 Player* playerPtr = player.get();
15
16 _playersBySlot[slot] = std::move(player);
17 _playersBySteamId[steamId] = playerPtr;
18
19 return playerPtr;
20}
21
22void PlayerManager::RemovePlayer(int slot)
23{
24 auto it = _playersBySlot.find(slot);
25 if (it != _playersBySlot.end())
26 {
27 _playersBySteamId.erase(it->second->GetSteamID());
28 _playersBySlot.erase(it);
29 }
30}
31
32Player* PlayerManager::GetPlayerBySlot(int slot)
33{
34 auto it = _playersBySlot.find(slot);
35 if (it != _playersBySlot.end())
36 {
37 return it->second.get();
38 }
39
40 return nullptr;
41}
42
43Player* PlayerManager::GetPlayerBySteamId(int64_t steamId)
44{
45 auto it = _playersBySteamId.find(steamId);
46 if (it != _playersBySteamId.end())
47 {
48 return it->second;
49 }
50
51 return nullptr;
52}
53
54std::vector<Player*> PlayerManager::FindPlayersByName(const std::string& name)
55{
56 std::vector<Player*> results;
57
58 for (const auto& [slot, player] : _playersBySlot)
59 {
60 if (StringUtils::ContainsIgnoreCase(player->GetName(), name))
61 {
62 results.push_back(player.get());
63 }
64 }
65
66 return results;
67}
68
69std::vector<Player*> PlayerManager::GetAllPlayers()
70{
71 std::vector<Player*> players;
72 players.reserve(_playersBySlot.size());
73
74 for (const auto& [slot, player] : _playersBySlot)
75 {
76 players.push_back(player.get());
77 }
78
79 return players;
80}
81
82size_t PlayerManager::GetPlayerCount() const
83{
84 return _playersBySlot.size();
85}
86
87void PlayerManager::Clear()
88{
89 _playersBySlot.clear();
90 _playersBySteamId.clear();
91}
92
93} // namespace CS2Kit::Players