void gets2c() // get updates from the server { ENetEvent event; if(!clienthost) return; if(connpeer && totalmillis/3000 > connmillis/3000) { conoutf("attempting to connect..."); connmillis = totalmillis; ++connattempts; if(connattempts > 3) { conoutf("\f3could not connect to server"); abortconnect(); return; } } while(clienthost && enet_host_service(clienthost, &event, 0)>0) switch(event.type) { case ENET_EVENT_TYPE_CONNECT: disconnect(false, false); localdisconnect(false); curpeer = connpeer; connpeer = NULL; conoutf("connected to server"); throttle(); if(rate) setrate(rate); game::gameconnect(true); break; case ENET_EVENT_TYPE_RECEIVE: if(discmillis) conoutf("attempting to disconnect..."); else localservertoclient(event.channelID, event.packet); enet_packet_destroy(event.packet); break; case ENET_EVENT_TYPE_DISCONNECT: extern const char *disc_reasons[10]; /* because gcc 4.2 is retarded */ if(event.data>=DISC_NUM) event.data = DISC_NONE; if(event.peer==connpeer) { conoutf("\f3could not connect to server"); abortconnect(); } else { if(!discmillis || event.data) conoutf("\f3server network error, disconnecting (%s) ...", disc_reasons[event.data]); disconnect(); } return; default: break; } }
void trydisconnect() { if(connpeer) abortconnect(); else if(curpeer || connectedlocally) { if(verbose) conoutft(CON_MESG, "\faattempting to disconnect..."); disconnect(0, !discmillis); } else conoutft(CON_MESG, "\frnot connected"); }
void quit() // normal exit { extern void writeinitcfg(); writeinitcfg(); writeservercfg(); abortconnect(); disconnect(); localdisconnect(); writecfg(); cleanup(); exit(EXIT_SUCCESS); }
void quit() // normal exit { extern void writeinitcfg(); extern void writeservercfg(); inbetweenframes = false; writeinitcfg(); writeservercfg(); writecfg(); abortconnect(); disconnect(1); cleanup(); exit(EXIT_SUCCESS); }
/// normal game quit /// @see fatal /// @see cleanup void quit() { delete metapp; // CefShutdown(); writeinitcfg(); writeservercfg(); writehistory(); abortconnect(); disconnect(); localdisconnect(); writecfg(); cleanup(); exit(EXIT_SUCCESS); }
void trydisconnect() { if(connpeer) { conoutf("aborting connection attempt"); abortconnect(); } else if(curpeer) { conoutf("attempting to disconnect..."); disconnect(!discmillis); } else conoutf("not connected"); }
void trydisconnect(bool local) { if(connpeer) { conoutf("aborting connection attempt"); abortconnect(); } else if(curpeer) { conoutf("attempting to disconnect..."); disconnect(!discmillis); } else if(local && haslocalclients()) localdisconnect(); else conoutf("not connected"); }
void quit() // normal exit { extern void writeinitcfg(); writeinitcfg(); abortconnect(); disconnect(); localdisconnect(); tools::writecfg(); cleanup(); varsys::flush(); exit(EXIT_SUCCESS); }
void connectserv(const char *servername, int serverport, const char *serverpassword) { if(connpeer) { conoutf("aborting connection attempt"); abortconnect(); } if(serverport <= 0) serverport = server::serverport(); ENetAddress address; address.port = serverport; if(servername) { if(strcmp(servername, connectname)) setsvar("connectname", servername); if(serverport != connectport) setvar("connectport", serverport); conoutf("attempting to connect to %s:%d", servername, serverport); if(!resolverwait(servername, &address)) { conoutf("\f3could not resolve server %s", servername); return; } } else { setsvar("connectname", ""); setvar("connectport", 0); conoutf("attempting to connect over LAN"); address.host = ENET_HOST_BROADCAST; } if(!clienthost) { clienthost = enet_host_create(NULL, 2, server::numchannels(), rate*1024, rate*1024); if(!clienthost) { conoutf("\f3could not connect to server"); return; } clienthost->duplicatePeers = 0; } connpeer = enet_host_connect(clienthost, &address, server::numchannels(), 0); enet_host_flush(clienthost); connmillis = totalmillis; connattempts = 0; }
void connectserv(const char *name, int port, const char *password) { abortconnect(); if(!port) port = ENG_SERVER_PORT; ENetAddress address; address.port = port; setsvar("serveraddress", ""); setvar("serverconport", 0); if(name && *name) { addserver(name, port); conoutft(CON_MESG, "\faattempting to connect to %s:[%d]", name, port); if(!resolverwait(name, &address)) { conoutft(CON_MESG, "\frcould not resolve host %s", name); connectfail(); return; } setsvar("serveraddress", name); setvar("serverconport", port); } else { conoutft(CON_MESG, "\faattempting to connect to a local server"); address.host = ENET_HOST_BROADCAST; } if(!clienthost) clienthost = enet_host_create(NULL, 2, server::numchannels(), rate, rate); if(clienthost) { connpeer = enet_host_connect(clienthost, &address, server::numchannels(), 0); enet_host_flush(clienthost); connmillis = totalmillis; connattempts = 0; client::connectattempt(name ? name : "", port, password ? password : "", address); conoutft(CON_MESG, "\fgconnecting to %s:[%d]", name != NULL ? name : "local server", port); } else { conoutft(CON_MESG, "\frfailed creating client socket"); connectfail(); } }
void connectserv(const char *servername, int serverport, const char *serverpassword) { if(connpeer) { conoutf("aborting connection attempt"); abortconnect(); } if(serverport <= 0) serverport = server::serverport(); ENetAddress address; address.port = serverport; if(servername) { if(strcmp(servername, GETSV(connectname))) SETVF(connectname, servername); if(serverport != GETIV(connectport)) SETVF(connectport, serverport); addserver(servername, serverport, serverpassword && serverpassword[0] ? serverpassword : NULL); // INTENSITY: Remove? conoutf("attempting to connect to %s:%d", servername, serverport); if(!resolverwait(servername, &address)) { conoutf("\f3could not resolve server %s", servername); return; } } else { SETVF(connectname, ""); SETVF(connectport, 0); conoutf("attempting to connect over LAN"); address.host = ENET_HOST_BROADCAST; } if(!clienthost) clienthost = enet_host_create(NULL, 2, server::numchannels(), GETIV(rate), GETIV(rate)); if(clienthost) { connpeer = enet_host_connect(clienthost, &address, server::numchannels(), 0); enet_host_flush(clienthost); connmillis = totalmillis; connattempts = 0; game::connectattempt(servername ? servername : "", serverpassword ? serverpassword : "", address); } else conoutf("\f3could not connect to server"); }
void connectfail() { abortconnect(false); localconnect(false); }
void gets2c() // get updates from the server { ENetEvent event; if(!clienthost) return; if(connpeer && totalmillis/3000 > connmillis/3000) { conoutf("attempting to connect..."); connmillis = totalmillis; ++connattempts; if(connattempts > 3) { conoutf("\f3could not connect to server"); abortconnect(); return; } } while(clienthost && enet_host_service(clienthost, &event, 0)>0) switch(event.type) { case ENET_EVENT_TYPE_CONNECT: disconnect(false, false); localdisconnect(false); curpeer = connpeer; connpeer = NULL; conoutf("connected to server"); throttle(); if(GETIV(rate)) setrate(GETIV(rate)); game::gameconnect(true); break; case ENET_EVENT_TYPE_RECEIVE: #if CLIENT // INTENSITY if(discmillis) conoutf("attempting to disconnect..."); else localservertoclient(event.channelID, event.packet); enet_packet_destroy(event.packet); #else // SERVER assert(0); #endif break; case ENET_EVENT_TYPE_DISCONNECT: // LogicSystem::init(); // INTENSITY: Not sure about this...? extern const char *disc_reasons[]; if(event.data>=DISC_NUM) event.data = DISC_NONE; if(event.peer==connpeer) { conoutf("\f3could not connect to server"); abortconnect(); } else { if(!discmillis || event.data) conoutf("\f3server network error, disconnecting (%s) ...", disc_reasons[event.data]); disconnect(); } return; default: break; } }