summaryrefslogtreecommitdiff
path: root/src/engine/client.cpp
diff options
context:
space:
mode:
authorxolatile2025-08-04 22:53:42 +0200
committerxolatile2025-08-04 22:53:42 +0200
commitd309df4ce4d8ad0ed995a8e1c4267412a7782021 (patch)
tree999ca8d785ecc1681e5eb7538ce2e6a18d244fa5 /src/engine/client.cpp
parent29d613d9cb65a0faa7e3f80e75bea0b6d910cb9a (diff)
downloadxolatile-badassbug-d309df4ce4d8ad0ed995a8e1c4267412a7782021.tar.xz
xolatile-badassbug-d309df4ce4d8ad0ed995a8e1c4267412a7782021.tar.zst
Bunch of small changes...
Diffstat (limited to 'src/engine/client.cpp')
-rw-r--r--src/engine/client.cpp354
1 files changed, 177 insertions, 177 deletions
diff --git a/src/engine/client.cpp b/src/engine/client.cpp
index 3cfef8e..bd46b24 100644
--- a/src/engine/client.cpp
+++ b/src/engine/client.cpp
@@ -8,9 +8,9 @@ int connmillis = 0, connattempts = 0, discmillis = 0;
bool multiplayer(bool msg)
{
- bool val = curpeer || hasnonlocalclients();
- if(val && msg) conoutf(CON_ERROR, "operation not available in multiplayer");
- return val;
+ bool val = curpeer || hasnonlocalclients();
+ if(val && msg) conoutf(CON_ERROR, "operation not available in multiplayer");
+ return val;
}
void setrate(int rate)
@@ -24,160 +24,160 @@ VARF(rate, 0, 0, 1024, setrate(rate));
void throttle();
VARF(throttle_interval, 0, 5, 30, throttle());
-VARF(throttle_accel, 0, 2, 32, throttle());
-VARF(throttle_decel, 0, 2, 32, throttle());
+VARF(throttle_accel, 0, 2, 32, throttle());
+VARF(throttle_decel, 0, 2, 32, throttle());
void throttle()
{
- if(!curpeer) return;
- ASSERT(ENET_PEER_PACKET_THROTTLE_SCALE==32);
- enet_peer_throttle_configure(curpeer, throttle_interval*1000, throttle_accel, throttle_decel);
+ if(!curpeer) return;
+ ASSERT(ENET_PEER_PACKET_THROTTLE_SCALE==32);
+ enet_peer_throttle_configure(curpeer, throttle_interval*1000, throttle_accel, throttle_decel);
}
bool isconnected(bool attempt, bool local)
{
- return curpeer || (attempt && connpeer) || (local && haslocalclients());
+ return curpeer || (attempt && connpeer) || (local && haslocalclients());
}
ICOMMAND(isconnected, "bb", (int *attempt, int *local), intret(isconnected(*attempt > 0, *local != 0) ? 1 : 0));
const ENetAddress *connectedpeer()
{
- return curpeer ? &curpeer->address : NULL;
+ return curpeer ? &curpeer->address : NULL;
}
ICOMMAND(connectedip, "", (),
{
- const ENetAddress *address = connectedpeer();
- string hostname;
- result(address && enet_address_get_host_ip(address, hostname, sizeof(hostname)) >= 0 ? hostname : "");
+ const ENetAddress *address = connectedpeer();
+ string hostname;
+ result(address && enet_address_get_host_ip(address, hostname, sizeof(hostname)) >= 0 ? hostname : "");
});
ICOMMAND(connectedport, "", (),
{
- const ENetAddress *address = connectedpeer();
- intret(address ? address->port : -1);
+ const ENetAddress *address = connectedpeer();
+ intret(address ? address->port : -1);
});
void abortconnect()
{
- if(!connpeer) return;
- game::connectfail();
- if(connpeer->state!=ENET_PEER_STATE_DISCONNECTED) enet_peer_reset(connpeer);
- connpeer = NULL;
- if(curpeer) return;
- enet_host_destroy(clienthost);
- clienthost = NULL;
+ if(!connpeer) return;
+ game::connectfail();
+ if(connpeer->state!=ENET_PEER_STATE_DISCONNECTED) enet_peer_reset(connpeer);
+ connpeer = NULL;
+ if(curpeer) return;
+ enet_host_destroy(clienthost);
+ clienthost = NULL;
}
SVARP(connectname, "");
VARP(connectport, 0, 0, 0xFFFF);
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);
- addserver(servername, serverport, serverpassword && serverpassword[0] ? serverpassword : NULL);
- conoutf("attempting to connect to %s:%d", servername, serverport);
- if(!resolverwait(servername, &address))
- {
- conoutf(CON_ERROR, "\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(CON_ERROR, "\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;
-
- game::connectattempt(servername ? servername : "", serverpassword ? serverpassword : "", address);
+{
+ 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);
+ addserver(servername, serverport, serverpassword && serverpassword[0] ? serverpassword : NULL);
+ conoutf("attempting to connect to %s:%d", servername, serverport);
+ if(!resolverwait(servername, &address))
+ {
+ conoutf(CON_ERROR, "\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(CON_ERROR, "\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;
+
+ game::connectattempt(servername ? servername : "", serverpassword ? serverpassword : "", address);
}
void reconnect(const char *serverpassword)
{
- if(!connectname[0] || connectport <= 0)
- {
- conoutf(CON_ERROR, "no previous connection");
- return;
- }
+ if(!connectname[0] || connectport <= 0)
+ {
+ conoutf(CON_ERROR, "no previous connection");
+ return;
+ }
- connectserv(connectname, connectport, serverpassword);
+ connectserv(connectname, connectport, serverpassword);
}
void disconnect(bool async, bool cleanup)
{
- if(curpeer)
- {
- if(!discmillis)
- {
- enet_peer_disconnect(curpeer, DISC_NONE);
- enet_host_flush(clienthost);
- discmillis = totalmillis;
- }
- if(curpeer->state!=ENET_PEER_STATE_DISCONNECTED)
- {
- if(async) return;
- enet_peer_reset(curpeer);
- }
- curpeer = NULL;
- discmillis = 0;
- conoutf("disconnected");
- game::gamedisconnect(cleanup);
- mainmenu = 1;
- }
- if(!connpeer && clienthost)
- {
- enet_host_destroy(clienthost);
- clienthost = NULL;
- }
+ if(curpeer)
+ {
+ if(!discmillis)
+ {
+ enet_peer_disconnect(curpeer, DISC_NONE);
+ enet_host_flush(clienthost);
+ discmillis = totalmillis;
+ }
+ if(curpeer->state!=ENET_PEER_STATE_DISCONNECTED)
+ {
+ if(async) return;
+ enet_peer_reset(curpeer);
+ }
+ curpeer = NULL;
+ discmillis = 0;
+ conoutf("disconnected");
+ game::gamedisconnect(cleanup);
+ mainmenu = 1;
+ }
+ if(!connpeer && clienthost)
+ {
+ enet_host_destroy(clienthost);
+ clienthost = NULL;
+ }
}
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(CON_WARN, "not connected");
+ if(connpeer)
+ {
+ conoutf("aborting connection attempt");
+ abortconnect();
+ }
+ else if(curpeer)
+ {
+ conoutf("attempting to disconnect...");
+ disconnect(!discmillis);
+ }
+ else if(local && haslocalclients()) localdisconnect();
+ else conoutf(CON_WARN, "not connected");
}
ICOMMAND(connect, "sis", (char *name, int *port, char *pw), connectserv(name, *port, pw));
@@ -189,86 +189,86 @@ ICOMMAND(localdisconnect, "", (), { if(haslocalclients()) localdisconnect(); });
void sendclientpacket(ENetPacket *packet, int chan)
{
- if(curpeer) enet_peer_send(curpeer, chan, packet);
- else localclienttoserver(chan, packet);
+ if(curpeer) enet_peer_send(curpeer, chan, packet);
+ else localclienttoserver(chan, packet);
}
void flushclient()
{
- if(clienthost) enet_host_flush(clienthost);
+ if(clienthost) enet_host_flush(clienthost);
}
void neterr(const char *s, bool disc)
{
- conoutf(CON_ERROR, "\f3illegal network message (%s)", s);
- if(disc) disconnect();
+ conoutf(CON_ERROR, "\f3illegal network message (%s)", s);
+ if(disc) disconnect();
}
void localservertoclient(int chan, ENetPacket *packet) // processes any updates from the server
{
- packetbuf p(packet);
- game::parsepacketclient(chan, p);
+ packetbuf p(packet);
+ game::parsepacketclient(chan, p);
}
void clientkeepalive() { if(clienthost) enet_host_service(clienthost, NULL, 0); }
-void gets2c() // get updates from the server
+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(CON_ERROR, "\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:
- if(event.data>=DISC_NUM) event.data = DISC_NONE;
- if(event.peer==connpeer)
- {
- conoutf(CON_ERROR, "\f3could not connect to server");
- abortconnect();
- }
- else
- {
- if(!discmillis || event.data)
- {
- const char *msg = disconnectreason(event.data);
- if(msg) conoutf(CON_ERROR, "\f3server network error, disconnecting (%s) ...", msg);
- else conoutf(CON_ERROR, "\f3server network error, disconnecting...");
- }
- disconnect();
- }
- return;
-
- default:
- break;
- }
+ ENetEvent event;
+ if(!clienthost) return;
+ if(connpeer && totalmillis/3000 > connmillis/3000)
+ {
+ conoutf("attempting to connect...");
+ connmillis = totalmillis;
+ ++connattempts;
+ if(connattempts > 3)
+ {
+ conoutf(CON_ERROR, "\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:
+ if(event.data>=DISC_NUM) event.data = DISC_NONE;
+ if(event.peer==connpeer)
+ {
+ conoutf(CON_ERROR, "\f3could not connect to server");
+ abortconnect();
+ }
+ else
+ {
+ if(!discmillis || event.data)
+ {
+ const char *msg = disconnectreason(event.data);
+ if(msg) conoutf(CON_ERROR, "\f3server network error, disconnecting (%s) ...", msg);
+ else conoutf(CON_ERROR, "\f3server network error, disconnecting...");
+ }
+ disconnect();
+ }
+ return;
+
+ default:
+ break;
+ }
}