#include #include #include #include #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; } }