This repository has been archived on 2024-10-22. You can view files and clone it, but cannot push or open issues or pull requests.
YimMenu/BigBaseV2/src/services/player_service.hpp
Reece Watson b525638fa2
feat(Protections): Added desync protection and notification (Closes #156) (#220)
* feat(Protections): Added desync protection and notification (#156)

* fix(Protections): Fix warning and revert Premake VS version
2022-05-20 18:17:41 -04:00

67 lines
1.3 KiB
C++

#pragma once
namespace big
{
class player_service;
class player final
{
friend player_service;
CNetGamePlayer* m_net_game_player = nullptr;
std::string m_identifier;
bool m_is_friend;
public:
player(CNetGamePlayer* net_game_player);
virtual ~player() = default;
float screen_position_x = -1.f;
float screen_position_y = -1.f;
CAutomobile* get_current_vehicle();
const char* get_name();
rage::netPlayerData* get_net_data();
CNetGamePlayer* get_net_game_player();
CPed* get_ped();
CPlayerInfo* get_player_info();
uint8_t id();
bool is_friend();
bool is_host();
bool is_valid();
protected:
bool equals(CNetGamePlayer* net_game_player);
std::string to_lowercase_identifier();
};
typedef std::map<std::string, std::unique_ptr<player>> player_list;
class player_service final
{
player* m_dummy_player{};
player* m_selected_player = nullptr;
public:
player_list m_players;
player_service();
virtual ~player_service();
void do_cleanup();
player* get_by_name(std::string name);
player* get_by_msg_id(uint32_t msg_id);
player* get_by_host_token(uint64_t token);
player* get_selected();
void player_join(CNetGamePlayer* net_game_player);
void player_leave(CNetGamePlayer* net_game_player);
void set_selected(player* plyr);
};
inline player_service* g_player_service{};
}