Program Listing for File API.hpp¶
↰ Return to documentation for file (gui/API/API.hpp)
#pragma once
#include <array>
#include <mutex>
#include "API/Incantation/Incantation.hpp"
#include "API/TileMap/Tilemap.hpp"
#include "API/Trantor/Trantor.hpp"
#include <sys/poll.h>
class API {
private:
std::array<int, 2> _pipeFdNetwork;
std::array<int, 2> _pipeFdEvents;
std::array<struct pollfd, 1> _pollOutFd;
std::array<struct pollfd, 1> _pollEventOutFd;
std::mutex _commandListLocker;
Tilemap _tilemap;
std::mutex _tilemapLocker;
std::vector<std::string> _allTeamName;
std::mutex _allTeamNameLocker;
std::map<std::string, std::vector<Trantor>> _teams;
std::mutex _teamsLocker;
std::vector<Incantation> _incantationList;
std::mutex _incantationListLocker;
std::map<int, std::pair<int, int>> _eggList;
std::mutex _eggListLocker;
short _timeUnit = 0;
std::mutex _timeUnitLocker;
bool _isGameRunning = false;
std::mutex _isGameRunningLocker;
std::string _winner;
std::mutex _winnerLocker;
std::vector<std::string> _serverMessage;
std::mutex _serverMessageLocker;
public:
API();
~API() = default;
void WriteMessage(const std::string &msg);
[[nodiscard]] int GetInFd() const
{
return _pipeFdNetwork[0];
}
[[nodiscard]] int GetEventsInFd() const
{
return _pipeFdEvents[0];
}
[[nodiscard]] std::map<std::string, std::vector<Trantor>> GetTeams()
{
std::lock_guard<std::mutex> lock(_teamsLocker);
return _teams;
}
Tilemap GetTilemap();
std::map<int, std::pair<int, int>> GetEggList()
{
std::lock_guard<std::mutex> lock(_eggListLocker);
return _eggList;
}
std::vector<std::string> GetTeamsName();
void AddEgg(int id, int x, int y);
void DeleteEgg(int id);
void ClearCommand();
// FROM GIU
void AskMapSize();
void AskAllTileContent();
void AskTileContent(int x, int y);
void AskAllTeamName();
void AskAllPlayerPos();
void AskPlayerPos(int id);
void AskAllPlayerLevel();
void AskPlayerLevel(int id);
void AskAllPlayerInventory();
void AskPlayerInventory(int id);
// FROM SERVER
void ParseManageCommand(std::string &command);
void AddPlayer(
int id,
int x,
int y,
int orientation,
int level,
std::string teamsName);
void HandleMSZ(std::stringstream &ss);
void HandleBCT(std::stringstream &ss);
static void HandleMCT();
void HandleTNA(std::stringstream &ss);
void HandlePNW(std::stringstream &ss);
void HandlePPO(std::stringstream &ss);
void HandlePLV(std::stringstream &ss);
void HandlePIN(std::stringstream &ss);
void HandlePEX(std::stringstream &ss);
void HandlePBC(std::stringstream &ss);
void HandlePIC(std::stringstream &ss);
void HandlePIE(std::stringstream &ss);
void HandlePFK(std::stringstream &ss);
void HandlePDR(std::stringstream &ss);
void HandlePGT(std::stringstream &ss);
void HandlePDI(std::stringstream &ss);
void HandleENW(std::stringstream &ss);
void HandleEBO(std::stringstream &ss);
void HandleEDI(std::stringstream &ss);
void HandleSGT(std::stringstream &ss);
void HandleSST(std::stringstream &ss);
void HandleSEG(std::stringstream &ss);
void HandleSMG(std::stringstream &ss);
static void HandleSUC();
static void HandleSBP();
};