63 lines
1.4 KiB
C++

#include <deerith/core/log.h>
#include <enet/enet.h>
#include <deerith/core/log.h>
#include <thread>
#include "network_internals.h"
namespace deerith
{
ENetHost *client;
ENetPeer *client_peer;
}
void deerith::connect_to_server(const char *address, int port)
{
ENetAddress eaddress = {0};
eaddress.port = port;
int result = enet_address_set_host(&eaddress, address);
deerith_client_assert(result == 0, "connect_to_server invalid address");
client = enet_host_create(NULL, 1, 2, 0, 0);
deerith_client_assert(client, "connect_to_server failed to create host");
client_peer = enet_host_connect(client, &eaddress, 2, 0);
deerith_client_assert(client_peer, "enet_host_connect failed on connect_to_server");
}
int deerith::init_network()
{
if (enet_initialize() != 0)
{
deerith_client_error("An error occurred while initializing ENet.\n");
return 1;
}
return 0;
}
void deerith::shutdown_network()
{
enet_deinitialize();
}
bool deerith::wait_till_connected_to_server()
{
ENetEvent event;
if (enet_host_service(client, &event, 5000) > 0 &&
event.type == ENET_EVENT_TYPE_CONNECT)
{
deerith_client_info("Connected to server");
return true;
}
else
{
enet_peer_reset(client_peer);
deerith_client_error("Failed to connect to server");
return false;
}
}