windoes
This commit is contained in:
@@ -127,17 +127,16 @@ int Server::Ready() {
|
||||
str.append(inet_ntop(AF_INET, &sockad.sin_addr, m_buf.ptr, m_buf.len)).append(": ").append(std::to_string(sockad.sin_port));
|
||||
|
||||
if (recv(sock, m_buf.ptr, m_buf.len, 0) > 0) {
|
||||
LoginInfo* log;
|
||||
PlayerInfo play;
|
||||
|
||||
Packet pck = getPack(&m_buf);
|
||||
if (pck.type != PACKET_TYPE::LOGINF) {
|
||||
Log("Paquet invalide.", true, false);
|
||||
if (pck.type != PACKET_TYPE::ERR)
|
||||
emptyPack(pck);
|
||||
netprot::emptyPack(pck);
|
||||
continue; // Passer au prochain appel si c'est pas un LoginInfo ou un LoginInfo invalide qui rentre.
|
||||
}
|
||||
log = (LoginInfo*)pck.ptr;
|
||||
LoginInfo* log = (LoginInfo*)pck.ptr;
|
||||
|
||||
log->sid = getUniqueId();
|
||||
log->tid = 0; // TODO: À changer si on implemente un mode en equipe.
|
||||
@@ -155,14 +154,16 @@ int Server::Ready() {
|
||||
play.tid = log->tid;
|
||||
|
||||
sendPack<GameInfo>(sock, &m_game, &m_buf.ptr, &m_buf.len);
|
||||
Connection* conn = new Connection(sock, sockad, *log, play);
|
||||
std::unique_ptr<Connection> conn = std::make_unique<Connection>(sock, sockad, *log, play);
|
||||
|
||||
for (auto& [key, player] : m_players) {
|
||||
sendPack<PlayerInfo>(player->getSock(), &play, &m_buf); // Envoyer les infos de joueur distant aux joueurs d<>j<EFBFBD> connect<63>s
|
||||
sendPack<PlayerInfo>(sock, player->getInfo(), &m_buf); // et envoyer les infos des joueurs distants au nouveau joueur.
|
||||
}
|
||||
|
||||
m_players[log->sid] = conn;
|
||||
m_players[log->sid] = std::move(conn);
|
||||
|
||||
delete log;
|
||||
|
||||
if (++nbrconn >= nbrjoueurs)
|
||||
readystart = true;
|
||||
@@ -179,12 +180,15 @@ void Server::Run() {
|
||||
|
||||
Log("Debut de la partie...", false, false);
|
||||
|
||||
for (auto& [key, conn]: m_players) { // Creation des instances de joueurs et premier sync.
|
||||
conn->player = new Player(Vector3f(8.5f, CHUNK_SIZE_Y + 1.8f, 8.5f));
|
||||
Player *player = conn->player;
|
||||
m_world = std::make_unique<World>();
|
||||
m_world->SetSeed(m_game.seed);
|
||||
m_world->BuildWorld();
|
||||
|
||||
for (auto& [key, conn] : m_players) { // Creation des instances de joueurs et premier sync.
|
||||
conn->player = std::make_unique<Player>(Vector3f(8.5f, CHUNK_SIZE_Y + 1.8f, 8.5f));
|
||||
Sync sync;
|
||||
sync.position = player->GetPosition();
|
||||
sync.hp = player->GetHP();
|
||||
sync.position = conn->player->GetPosition();
|
||||
sync.hp = conn->player->GetHP();
|
||||
sync.sid = key;
|
||||
sync.ammo = 0;
|
||||
sync.timestamp = 0;
|
||||
@@ -197,56 +201,25 @@ void Server::Run() {
|
||||
Packet pck = getPack(&m_buf);
|
||||
switch (pck.type) {
|
||||
using enum netprot::PACKET_TYPE;
|
||||
case ERR:
|
||||
std::cout << "ERROR!" << std::endl;
|
||||
break;
|
||||
case INPUT:
|
||||
std::cout << "INPUT!" << std::endl;
|
||||
break;
|
||||
case OUTPUT:
|
||||
std::cout << "OUTPUT!" << std::endl;
|
||||
break;
|
||||
case SYNC:
|
||||
std::cout << "SYNC!" << std::endl;
|
||||
break;
|
||||
case TEAMINF:
|
||||
std::cout << "TEAMINF!" << std::endl;
|
||||
break;
|
||||
case SELFINF:
|
||||
std::cout << "SELFINF!" << std::endl;
|
||||
break;
|
||||
case PLAYINF:
|
||||
std::cout << "PLAYINF!" << std::endl;
|
||||
break;
|
||||
case LOGINF:
|
||||
std::cout << "LOGINF!" << std::endl;
|
||||
break;
|
||||
case CHUNKMOD:
|
||||
std::cout << "CHUNKMOD!" << std::endl;
|
||||
break;
|
||||
case PLAYERMOD:
|
||||
std::cout << "PLAYERMOD!" << std::endl;
|
||||
break;
|
||||
case PICKUPMOD:
|
||||
std::cout << "PICKUPMOD!" << std::endl;
|
||||
break;
|
||||
case GAMEINFO:
|
||||
std::cout << "GAMEINFO!" << std::endl;
|
||||
break;
|
||||
case ENDINFO:
|
||||
std::cout << "ENDINFO!" << std::endl;
|
||||
break;
|
||||
case CHAT:
|
||||
std::cout << "CHAT!" << std::endl;
|
||||
break;
|
||||
case ERRLOG:
|
||||
std::cout << "ERRLOG!" << std::endl;
|
||||
break;
|
||||
case LAST_PACK:
|
||||
std::cout << "wtf?!" << std::endl;
|
||||
break;
|
||||
case ERR: std::puts("ERROR!"); break;
|
||||
case INPUT: std::puts("INPUT!"); break;
|
||||
case OUTPUT: std::puts("OUTPUT!"); break;
|
||||
case SYNC: std::puts("SYNC!"); break;
|
||||
case TEAMINF: std::puts("TEAMINF!"); break;
|
||||
case SELFINF: std::puts("SELFINF!"); break;
|
||||
case PLAYINF: std::puts("PLAYINF!"); break;
|
||||
case LOGINF: std::puts("LOGINF!"); break;
|
||||
case CHUNKMOD: std::puts("CHUNKMOD!"); break;
|
||||
case PLAYERMOD: std::puts("PLAYERMOD!"); break;
|
||||
case PICKUPMOD: std::puts("PICKUPMOD!"); break;
|
||||
case GAMEINFO: std::puts("GAMEINFO!"); break;
|
||||
case ENDINFO: std::puts("ENDINFO!"); break;
|
||||
case CHAT: std::puts("CHAT!"); break;
|
||||
case ERRLOG: std::puts("ERRLOG!"); break;
|
||||
case LAST_PACK: [[falltrough]];
|
||||
default: std::puts("wtf?!"); break;
|
||||
}
|
||||
emptyPack(pck);
|
||||
netprot::emptyPack(pck);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -290,7 +263,6 @@ void Server::Log(std::string str, bool is_error = false, bool is_fatal = false)
|
||||
if (m_sock_tcp)
|
||||
closesocket(m_sock_tcp);
|
||||
for (const auto& [key, player] : m_players) {
|
||||
delete player->player;
|
||||
closesocket(player->getSock());
|
||||
}
|
||||
m_players.clear();
|
||||
@@ -305,7 +277,7 @@ void Server::buildIdList(size_t size) {
|
||||
std::set<uint64_t> lst;
|
||||
|
||||
srand(time(NULL));
|
||||
do lst.insert(((uint64_t)rand() << 32 | rand())); // EIGHT SIX SEVENFIVE THREE AUGHT NIIIIIIiIIiiIiINE!
|
||||
do lst.insert(((uint64_t)rand() << 32 | rand()));
|
||||
while (lst.size() < size);
|
||||
|
||||
m_ids = std::vector<uint64_t>(lst.begin(), lst.end());
|
||||
|
Reference in New Issue
Block a user