#include "ui_local.h"
Include dependency graph for ui_servers2.c:

Go to the source code of this file.
Data Structures | |
| struct | arenaservers_t |
| struct | pinglist_t |
| struct | servernode_s |
| struct | table_t |
Defines | |
| #define | ART_ARROWS0 "menu/art/arrows_vert_0" |
| #define | ART_ARROWS_DOWN "menu/art/arrows_vert_bot" |
| #define | ART_ARROWS_UP "menu/art/arrows_vert_top" |
| #define | ART_BACK0 "menu/art/back_0" |
| #define | ART_BACK1 "menu/art/back_1" |
| #define | ART_CONNECT0 "menu/art/fight_0" |
| #define | ART_CONNECT1 "menu/art/fight_1" |
| #define | ART_CREATE0 "menu/art/create_0" |
| #define | ART_CREATE1 "menu/art/create_1" |
| #define | ART_PUNKBUSTER "menu/art/pblogo" |
| #define | ART_REFRESH0 "menu/art/refresh_0" |
| #define | ART_REFRESH1 "menu/art/refresh_1" |
| #define | ART_REMOVE0 "menu/art/delete_0" |
| #define | ART_REMOVE1 "menu/art/delete_1" |
| #define | ART_SPECIFY0 "menu/art/specify_0" |
| #define | ART_SPECIFY1 "menu/art/specify_1" |
| #define | ART_UNKNOWNMAP "menu/art/unknownmap" |
| #define | AS_FAVORITES 3 |
| #define | AS_GLOBAL 2 |
| #define | AS_LOCAL 0 |
| #define | AS_MPLAYER 1 |
| #define | GAMES_ALL 0 |
| #define | GAMES_CTF 4 |
| #define | GAMES_FFA 1 |
| #define | GAMES_TEAMPLAY 2 |
| #define | GAMES_TOURNEY 3 |
| #define | GR_LETTERS 31 |
| #define | GR_LOGO 30 |
| #define | ID_BACK 18 |
| #define | ID_CONNECT 22 |
| #define | ID_CREATE 21 |
| #define | ID_GAMETYPE 11 |
| #define | ID_LIST 15 |
| #define | ID_MASTER 10 |
| #define | ID_PUNKBUSTER 24 |
| #define | ID_REFRESH 19 |
| #define | ID_REMOVE 23 |
| #define | ID_SCROLL_DOWN 17 |
| #define | ID_SCROLL_UP 16 |
| #define | ID_SHOW_EMPTY 14 |
| #define | ID_SHOW_FULL 13 |
| #define | ID_SORTKEY 12 |
| #define | ID_SPECIFY 20 |
| #define | MAX_ADDRESSLENGTH 64 |
| #define | MAX_GLOBALSERVERS 128 |
| #define | MAX_HOSTNAMELENGTH 22 |
| #define | MAX_LEAGUELENGTH 28 |
| #define | MAX_LISTBOXITEMS 128 |
| #define | MAX_LISTBOXWIDTH 68 |
| #define | MAX_LOCALSERVERS 128 |
| #define | MAX_MAPNAMELENGTH 16 |
| #define | MAX_PINGREQUESTS 32 |
| #define | MAX_STATUSLENGTH 64 |
| #define | SORT_CLIENTS 2 |
| #define | SORT_GAME 3 |
| #define | SORT_HOST 0 |
| #define | SORT_MAP 1 |
| #define | SORT_PING 4 |
Typedefs | |
| typedef servernode_s | servernode_t |
Functions | |
| void | ArenaServers_Cache (void) |
| int QDECL | ArenaServers_Compare (const void *arg1, const void *arg2) |
| void | ArenaServers_DoRefresh (void) |
| void | ArenaServers_Event (void *ptr, int event) |
| void | ArenaServers_Go (void) |
| void | ArenaServers_Insert (char *adrstr, char *info, int pingtime) |
| void | ArenaServers_InsertFavorites (void) |
| void | ArenaServers_LoadFavorites (void) |
| int | ArenaServers_MaxPing (void) |
| void | ArenaServers_MenuDraw (void) |
| void | ArenaServers_MenuInit (void) |
| sfxHandle_t | ArenaServers_MenuKey (int key) |
| void | ArenaServers_Remove (void) |
| void | ArenaServers_SaveChanges (void) |
| void | ArenaServers_SetType (int type) |
| void | ArenaServers_Sort (int type) |
| void | ArenaServers_StartRefresh (void) |
| void | ArenaServers_StopRefresh (void) |
| void | ArenaServers_UpdateMenu (void) |
| void | ArenaServers_UpdatePicture (void) |
| void | Punkbuster_ConfirmDisable (qboolean result) |
| void | Punkbuster_ConfirmEnable (qboolean result) |
| void | UI_ArenaServersMenu (void) |
Variables | |
| arenaservers_t | g_arenaservers |
| int | g_emptyservers |
| servernode_t | g_favoriteserverlist [MAX_FAVORITESERVERS] |
| int | g_fullservers |
| int | g_gametype |
| servernode_t | g_globalserverlist [MAX_GLOBALSERVERS] |
| servernode_t | g_localserverlist [MAX_LOCALSERVERS] |
| servernode_t | g_mplayerserverlist [MAX_GLOBALSERVERS] |
| int | g_numfavoriteservers |
| int | g_numglobalservers |
| int | g_numlocalservers |
| int | g_nummplayerservers |
| int | g_servertype |
| int | g_sortkey |
| char * | gamenames [] |
| const char * | master_items [] |
| char * | netnames [] |
| const char * | punkbuster_items [] |
| const char * | punkbuster_msg [] |
| char | quake3worldMessage [] = "Visit www.quake3world.com - News, Community, Events, Files" |
| const char * | servertype_items [] |
| const char * | sortkey_items [] |
|
|
Definition at line 56 of file ui_servers2.c. Referenced by ArenaServers_Cache(). |
|
|
Definition at line 58 of file ui_servers2.c. Referenced by ArenaServers_Cache(). |
|
|
Definition at line 57 of file ui_servers2.c. Referenced by ArenaServers_Cache(). |
|
|
Definition at line 46 of file ui_servers2.c. |
|
|
Definition at line 47 of file ui_servers2.c. |
|
|
Definition at line 54 of file ui_servers2.c. Referenced by ArenaServers_Cache(). |
|
|
Definition at line 55 of file ui_servers2.c. Referenced by ArenaServers_Cache(). |
|
|
Definition at line 48 of file ui_servers2.c. Referenced by ArenaServers_Cache(). |
|
|
Definition at line 49 of file ui_servers2.c. Referenced by ArenaServers_Cache(). |
|
|
Definition at line 62 of file ui_servers2.c. Referenced by ArenaServers_Cache(). |
|
|
Definition at line 52 of file ui_servers2.c. Referenced by ArenaServers_Cache(). |
|
|
Definition at line 53 of file ui_servers2.c. Referenced by ArenaServers_Cache(). |
|
|
Definition at line 60 of file ui_servers2.c. |
|
|
Definition at line 61 of file ui_servers2.c. |
|
|
Definition at line 50 of file ui_servers2.c. Referenced by ArenaServers_Cache(). |
|
|
Definition at line 51 of file ui_servers2.c. Referenced by ArenaServers_Cache(). |
|
|
Definition at line 59 of file ui_servers2.c. Referenced by ArenaServers_Cache(). |
|
|
Definition at line 86 of file ui_servers2.c. |
|
|
Definition at line 85 of file ui_servers2.c. |
|
|
Definition at line 83 of file ui_servers2.c. |
|
|
Definition at line 84 of file ui_servers2.c. |
|
|
Definition at line 94 of file ui_servers2.c. Referenced by ArenaServers_StartRefresh(), and ArenaServers_UpdateMenu(). |
|
|
Definition at line 98 of file ui_servers2.c. Referenced by ArenaServers_StartRefresh(), and ArenaServers_UpdateMenu(). |
|
|
Definition at line 95 of file ui_servers2.c. Referenced by ArenaServers_StartRefresh(), and ArenaServers_UpdateMenu(). |
|
|
Definition at line 96 of file ui_servers2.c. Referenced by ArenaServers_StartRefresh(), and ArenaServers_UpdateMenu(). |
|
|
Definition at line 97 of file ui_servers2.c. Referenced by ArenaServers_StartRefresh(), and ArenaServers_UpdateMenu(). |
|
|
Definition at line 81 of file ui_servers2.c. |
|
|
Definition at line 80 of file ui_servers2.c. |
|
|
Definition at line 72 of file ui_servers2.c. |
|
|
Definition at line 76 of file ui_servers2.c. Referenced by ArenaServers_Event(). |
|
|
Definition at line 75 of file ui_servers2.c. |
|
|
Definition at line 65 of file ui_servers2.c. Referenced by ArenaServers_Event(). |
|
|
Definition at line 69 of file ui_servers2.c. |
|
|
Definition at line 64 of file ui_servers2.c. Referenced by ArenaServers_Event(). |
|
|
Definition at line 78 of file ui_servers2.c. Referenced by ArenaServers_Event(). |
|
|
Definition at line 73 of file ui_servers2.c. Referenced by ArenaServers_Event(). |
|
|
Definition at line 77 of file ui_servers2.c. Referenced by ArenaServers_Event(). |
|
|
Definition at line 71 of file ui_servers2.c. Referenced by ArenaServers_Event(). |
|
|
Definition at line 70 of file ui_servers2.c. Referenced by ArenaServers_Event(). |
|
|
Definition at line 68 of file ui_servers2.c. Referenced by ArenaServers_Event(). |
|
|
Definition at line 67 of file ui_servers2.c. Referenced by ArenaServers_Event(). |
|
|
Definition at line 66 of file ui_servers2.c. Referenced by ArenaServers_Event(). |
|
|
Definition at line 74 of file ui_servers2.c. Referenced by ArenaServers_Event(). |
|
|
Definition at line 37 of file ui_servers2.c. Referenced by ArenaServers_DoRefresh(), ArenaServers_Insert(), ArenaServers_LoadFavorites(), and ArenaServers_Remove(). |
|
|
Definition at line 35 of file ui_servers2.c. |
|
|
Definition at line 38 of file ui_servers2.c. Referenced by ArenaServers_Insert(). |
|
|
Definition at line 43 of file ui_servers2.c. |
|
|
Definition at line 40 of file ui_servers2.c. |
|
|
Definition at line 44 of file ui_servers2.c. Referenced by ArenaServers_UpdateMenu(). |
|
|
Definition at line 41 of file ui_servers2.c. |
|
|
Definition at line 39 of file ui_servers2.c. Referenced by ArenaServers_Insert(). |
|
|
Definition at line 36 of file ui_servers2.c. |
|
|
Definition at line 42 of file ui_servers2.c. Referenced by ArenaServers_UpdateMenu(). |
|
|
Definition at line 90 of file ui_servers2.c. Referenced by ArenaServers_Compare(), LAN_CompareServers(), and UI_FeederItemText(). |
|
|
Definition at line 91 of file ui_servers2.c. Referenced by ArenaServers_Compare(), LAN_CompareServers(), and UI_FeederItemText(). |
|
|
Definition at line 88 of file ui_servers2.c. Referenced by ArenaServers_Compare(), LAN_CompareServers(), and UI_FeederItemText(). |
|
|
Definition at line 89 of file ui_servers2.c. Referenced by ArenaServers_Compare(), LAN_CompareServers(), and UI_FeederItemText(). |
|
|
Definition at line 92 of file ui_servers2.c. Referenced by ArenaServers_Compare(), LAN_CompareServers(), and UI_FeederItemText(). |
|
|
Here is the call graph for this function:

|
||||||||||||
|
Definition at line 274 of file ui_servers2.c. References f1(), f2(), servernode_s::gametype, servernode_s::hostname, servernode_s::mapname, servernode_s::maxclients, servernode_s::numclients, servernode_s::pingtime, Q_stricmp(), QDECL, servernode_t, SORT_CLIENTS, SORT_GAME, SORT_HOST, SORT_MAP, and SORT_PING. Referenced by ArenaServers_Sort(), ArenaServers_StopRefresh(), and ArenaServers_UpdateMenu(). 00274 {
00275 float f1;
00276 float f2;
00277 servernode_t* t1;
00278 servernode_t* t2;
00279
00280 t1 = (servernode_t *)arg1;
00281 t2 = (servernode_t *)arg2;
00282
00283 switch( g_sortkey ) {
00284 case SORT_HOST:
00285 return Q_stricmp( t1->hostname, t2->hostname );
00286
00287 case SORT_MAP:
00288 return Q_stricmp( t1->mapname, t2->mapname );
00289
00290 case SORT_CLIENTS:
00291 f1 = t1->maxclients - t1->numclients;
00292 if( f1 < 0 ) {
00293 f1 = 0;
00294 }
00295
00296 f2 = t2->maxclients - t2->numclients;
00297 if( f2 < 0 ) {
00298 f2 = 0;
00299 }
00300
00301 if( f1 < f2 ) {
00302 return 1;
00303 }
00304 if( f1 == f2 ) {
00305 return 0;
00306 }
00307 return -1;
00308
00309 case SORT_GAME:
00310 if( t1->gametype < t2->gametype ) {
00311 return -1;
00312 }
00313 if( t1->gametype == t2->gametype ) {
00314 return 0;
00315 }
00316 return 1;
00317
00318 case SORT_PING:
00319 if( t1->pingtime < t2->pingtime ) {
00320 return -1;
00321 }
00322 if( t1->pingtime > t2->pingtime ) {
00323 return 1;
00324 }
00325 return Q_stricmp( t1->hostname, t2->hostname );
00326 }
00327
00328 return 0;
00329 }
|
Here is the call graph for this function:

|
|
Definition at line 834 of file ui_servers2.c. References pinglist_t::adrstr, ArenaServers_Insert(), ArenaServers_MaxPing(), ArenaServers_StopRefresh(), ArenaServers_UpdateMenu(), arenaservers_t::currentping, EXEC_NOW, arenaservers_t::favoriteaddresses, g_arenaservers, g_servertype, i, j, MAX_ADDRESSLENGTH, MAX_INFO_STRING, MAX_PINGREQUESTS, arenaservers_t::nextpingtime, arenaservers_t::numfavoriteaddresses, arenaservers_t::numqueriedservers, arenaservers_t::pinglist, Q_stricmp(), uiStatic_t::realtime, arenaservers_t::refreshtime, pinglist_t::start, strcpy(), time(), trap_Cmd_ExecuteText(), trap_LAN_ClearPing(), trap_LAN_GetPing(), trap_LAN_GetPingInfo(), trap_LAN_GetPingQueueCount(), trap_LAN_GetServerAddressString(), trap_LAN_GetServerCount(), uis, and va(). Referenced by ArenaServers_MenuDraw(). 00835 {
00836 int i;
00837 int j;
00838 int time;
00839 int maxPing;
00840 char adrstr[MAX_ADDRESSLENGTH];
00841 char info[MAX_INFO_STRING];
00842
00843 if (uis.realtime < g_arenaservers.refreshtime)
00844 {
00845 if (g_servertype != AS_FAVORITES) {
00846 if (g_servertype == AS_LOCAL) {
00847 if (!trap_LAN_GetServerCount(g_servertype)) {
00848 return;
00849 }
00850 }
00851 if (trap_LAN_GetServerCount(g_servertype) < 0) {
00852 // still waiting for response
00853 return;
00854 }
00855 }
00856 }
00857
00858 if (uis.realtime < g_arenaservers.nextpingtime)
00859 {
00860 // wait for time trigger
00861 return;
00862 }
00863
00864 // trigger at 10Hz intervals
00865 g_arenaservers.nextpingtime = uis.realtime + 10;
00866
00867 // process ping results
00868 maxPing = ArenaServers_MaxPing();
00869 for (i=0; i<MAX_PINGREQUESTS; i++)
00870 {
00871 trap_LAN_GetPing( i, adrstr, MAX_ADDRESSLENGTH, &time );
00872 if (!adrstr[0])
00873 {
00874 // ignore empty or pending pings
00875 continue;
00876 }
00877
00878 // find ping result in our local list
00879 for (j=0; j<MAX_PINGREQUESTS; j++)
00880 if (!Q_stricmp( adrstr, g_arenaservers.pinglist[j].adrstr ))
00881 break;
00882
00883 if (j < MAX_PINGREQUESTS)
00884 {
00885 // found it
00886 if (!time)
00887 {
00888 time = uis.realtime - g_arenaservers.pinglist[j].start;
00889 if (time < maxPing)
00890 {
00891 // still waiting
00892 continue;
00893 }
00894 }
00895
00896 if (time > maxPing)
00897 {
00898 // stale it out
00899 info[0] = '\0';
00900 time = maxPing;
00901 }
00902 else
00903 {
00904 trap_LAN_GetPingInfo( i, info, MAX_INFO_STRING );
00905 }
00906
00907 // insert ping results
00908 ArenaServers_Insert( adrstr, info, time );
00909
00910 // clear this query from internal list
00911 g_arenaservers.pinglist[j].adrstr[0] = '\0';
00912 }
00913
00914 // clear this query from external list
00915 trap_LAN_ClearPing( i );
00916 }
00917
00918 // get results of servers query
00919 // counts can increase as servers respond
00920 if (g_servertype == AS_FAVORITES) {
00921 g_arenaservers.numqueriedservers = g_arenaservers.numfavoriteaddresses;
00922 } else {
00923 g_arenaservers.numqueriedservers = trap_LAN_GetServerCount(g_servertype);
00924 }
00925
00926 // if (g_arenaservers.numqueriedservers > g_arenaservers.maxservers)
00927 // g_arenaservers.numqueriedservers = g_arenaservers.maxservers;
00928
00929 // send ping requests in reasonable bursts
00930 // iterate ping through all found servers
00931 for (i=0; i<MAX_PINGREQUESTS && g_arenaservers.currentping < g_arenaservers.numqueriedservers; i++)
00932 {
00933 if (trap_LAN_GetPingQueueCount() >= MAX_PINGREQUESTS)
00934 {
00935 // ping queue is full
00936 break;
00937 }
00938
00939 // find empty slot
00940 for (j=0; j<MAX_PINGREQUESTS; j++)
00941 if (!g_arenaservers.pinglist[j].adrstr[0])
00942 break;
00943
00944 if (j >= MAX_PINGREQUESTS)
00945 // no empty slots available yet - wait for timeout
00946 break;
00947
00948 // get an address to ping
00949
00950 if (g_servertype == AS_FAVORITES) {
00951 strcpy( adrstr, g_arenaservers.favoriteaddresses[g_arenaservers.currentping] );
00952 } else {
00953 trap_LAN_GetServerAddressString(g_servertype, g_arenaservers.currentping, adrstr, MAX_ADDRESSLENGTH );
00954 }
00955
00956 strcpy( g_arenaservers.pinglist[j].adrstr, adrstr );
00957 g_arenaservers.pinglist[j].start = uis.realtime;
00958
00959 trap_Cmd_ExecuteText( EXEC_NOW, va( "ping %s\n", adrstr ) );
00960
00961 // advance to next server
00962 g_arenaservers.currentping++;
00963 }
00964
00965 if (!trap_LAN_GetPingQueueCount())
00966 {
00967 // all pings completed
00968 ArenaServers_StopRefresh();
00969 return;
00970 }
00971
00972 // update the user interface with ping status
00973 ArenaServers_UpdateMenu();
00974 }
|
Here is the call graph for this function:

|
||||||||||||
Here is the call graph for this function:

|
|
Definition at line 337 of file ui_servers2.c. References servernode_s::adrstr, menulist_s::curvalue, EXEC_APPEND, g_arenaservers, arenaservers_t::list, table_t::servernode, servernode_t, arenaservers_t::table, trap_Cmd_ExecuteText(), and va(). Referenced by ArenaServers_Event(). 00337 {
00338 servernode_t* servernode;
00339
00340 servernode = g_arenaservers.table[g_arenaservers.list.curvalue].servernode;
00341 if( servernode ) {
00342 trap_Cmd_ExecuteText( EXEC_APPEND, va( "connect %s\n", servernode->adrstr ) );
00343 }
00344 }
|
Here is the call graph for this function:

|
||||||||||||||||