diff options
| author | Magnus Auvinen <magnus.auvinen@gmail.com> | 2008-10-17 21:16:23 +0000 |
|---|---|---|
| committer | Magnus Auvinen <magnus.auvinen@gmail.com> | 2008-10-17 21:16:23 +0000 |
| commit | a91fecae920e1b6d9ca3dbdbf6251c11bd751d7c (patch) | |
| tree | b65cc2df8ee5ad78fb819c0f985497528c5521db /src/engine/client/ec_client.c | |
| parent | eb47aa385bb02d977c9ee759c2b7987951c16953 (diff) | |
| download | zcatch-a91fecae920e1b6d9ca3dbdbf6251c11bd751d7c.tar.gz zcatch-a91fecae920e1b6d9ca3dbdbf6251c11bd751d7c.zip | |
fixed fetching of server info and corrected some spelling errors
Diffstat (limited to 'src/engine/client/ec_client.c')
| -rw-r--r-- | src/engine/client/ec_client.c | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/src/engine/client/ec_client.c b/src/engine/client/ec_client.c index 3a9390fc..e6d26e37 100644 --- a/src/engine/client/ec_client.c +++ b/src/engine/client/ec_client.c @@ -87,6 +87,7 @@ static int mapdownload_totalsize = -1; /* */ static SERVER_INFO current_server_info = {0}; +static int64 current_server_info_requesttime = -1; /* >= 0 should request, == -1 got info */ /* current time */ static int current_tick = 0; @@ -510,6 +511,7 @@ void client_connect(const char *server_address_str) dbg_msg("client", "connecting to '%s'", server_address_str); mem_zero(¤t_server_info, sizeof(current_server_info)); + current_server_info_requesttime = 0; str_copy(buf, server_address_str, sizeof(buf)); for(k = 0; buf[k]; k++) @@ -573,6 +575,12 @@ void client_disconnect() client_disconnect_with_reason(0); } + +void client_serverinfo(SERVER_INFO *serverinfo) +{ + mem_copy(serverinfo, ¤t_server_info, sizeof(current_server_info)); +} + static int client_load_data() { debug_font = gfx_load_texture("debug_font.png", IMG_AUTO, TEXLOAD_NORESAMPLE); @@ -838,6 +846,13 @@ static void client_process_packet(NETCHUNK *packet) { /* sort players */ qsort(info.players, info.num_players, sizeof(*info.players), player_score_comp); + + if(net_addr_comp(&server_address, &packet->address) == 0) + { + mem_copy(¤t_server_info, &info, sizeof(current_server_info)); + current_server_info_requesttime = -1; + } + if(packet_type == 2) client_serverbrowse_set(&packet->address, BROWSESET_TOKEN, token, &info); else @@ -1402,6 +1417,15 @@ static void client_update() if(current_predtick > current_tick && current_predtick < current_tick+50) modc_predict(); } + + /* fetch server info if we don't have it */ + if(client_state() >= CLIENTSTATE_LOADING && + current_server_info_requesttime >= 0 && + time_get() > current_server_info_requesttime) + { + client_serverbrowse_request(&server_address); + current_server_info_requesttime = time_get()+time_freq()*2; + } } /* STRESS TEST: join the server again */ |