BeamMP-Server/include/Client.hpp
Lion Kortlepel 8bc35fb82e Refactor to work on Linux / Unix, fix some compiler errors.
CMakeLists was also modified to make this work, but its scuffed
and i will hold on to that for a while longer
2020-11-01 02:00:27 +01:00

76 lines
1.6 KiB
C++

///
/// Created by Anonymous275 on 5/8/2020
///
#pragma once
#ifdef __WIN32
#include <WS2tcpip.h>
#else
#include <arpa/inet.h>
#define SOCKET int
#endif
#include "Buffer.h"
#include <string>
#include <vector>
#include <chrono>
#include <set>
struct VData{
int ID = -1;
std::string Data;
};
class Client {
private:
std::set<VData*> VehicleData; //ID and Data;
std::string Name = "Unknown Client";
sockaddr_in UDPADDR;
std::string Role;
std::string DID;
SOCKET TCPSOCK;
int Status = 0;
int ID = -1;
public:
void AddNewCar(int ident,const std::string& Data);
void SetCarData(int ident,const std::string&Data);
void SetName(const std::string& name);
void SetRole(const std::string& role);
void SetDID(const std::string& did);
std::string GetCarData(int ident);
void SetUDPAddr(sockaddr_in Addr);
std::set<VData*> GetAllCars();
void SetTCPSock(SOCKET CSock);
void SetStatus(int status);
void DeleteCar(int ident);
sockaddr_in GetUDPAddr();
bool isConnected = false;
std::string GetRole();
std::string GetName();
bool isSynced = false;
std::string GetDID();
SOCKET GetTCPSock();
void SetID(int ID);
int GetOpenCarID();
int GetCarCount();
void ClearCars();
int GetStatus();
Buffer Handler;
int GetID();
};
struct ClientInterface{
std::set<Client*> Clients;
void RemoveClient(Client *c){
Clients.erase(c);
delete c;
c = nullptr;
}
void AddClient(Client *c){
Clients.insert(c);
}
int Size(){
return int(Clients.size());
}
};
extern ClientInterface* CI;