Main Page | Class Hierarchy | Alphabetical List | Data Structures | Directories | File List | Data Fields | Globals

ui_servers2.c File Reference

#include "ui_local.h"

Include dependency graph for ui_servers2.c:

Include dependency graph

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 []


Define Documentation

#define ART_ARROWS0   "menu/art/arrows_vert_0"
 

Definition at line 56 of file ui_servers2.c.

Referenced by ArenaServers_Cache().

#define ART_ARROWS_DOWN   "menu/art/arrows_vert_bot"
 

Definition at line 58 of file ui_servers2.c.

Referenced by ArenaServers_Cache().

#define ART_ARROWS_UP   "menu/art/arrows_vert_top"
 

Definition at line 57 of file ui_servers2.c.

Referenced by ArenaServers_Cache().

#define ART_BACK0   "menu/art/back_0"
 

Definition at line 46 of file ui_servers2.c.

#define ART_BACK1   "menu/art/back_1"
 

Definition at line 47 of file ui_servers2.c.

#define ART_CONNECT0   "menu/art/fight_0"
 

Definition at line 54 of file ui_servers2.c.

Referenced by ArenaServers_Cache().

#define ART_CONNECT1   "menu/art/fight_1"
 

Definition at line 55 of file ui_servers2.c.

Referenced by ArenaServers_Cache().

#define ART_CREATE0   "menu/art/create_0"
 

Definition at line 48 of file ui_servers2.c.

Referenced by ArenaServers_Cache().

#define ART_CREATE1   "menu/art/create_1"
 

Definition at line 49 of file ui_servers2.c.

Referenced by ArenaServers_Cache().

#define ART_PUNKBUSTER   "menu/art/pblogo"
 

Definition at line 62 of file ui_servers2.c.

Referenced by ArenaServers_Cache().

#define ART_REFRESH0   "menu/art/refresh_0"
 

Definition at line 52 of file ui_servers2.c.

Referenced by ArenaServers_Cache().

#define ART_REFRESH1   "menu/art/refresh_1"
 

Definition at line 53 of file ui_servers2.c.

Referenced by ArenaServers_Cache().

#define ART_REMOVE0   "menu/art/delete_0"
 

Definition at line 60 of file ui_servers2.c.

#define ART_REMOVE1   "menu/art/delete_1"
 

Definition at line 61 of file ui_servers2.c.

#define ART_SPECIFY0   "menu/art/specify_0"
 

Definition at line 50 of file ui_servers2.c.

Referenced by ArenaServers_Cache().

#define ART_SPECIFY1   "menu/art/specify_1"
 

Definition at line 51 of file ui_servers2.c.

Referenced by ArenaServers_Cache().

#define ART_UNKNOWNMAP   "menu/art/unknownmap"
 

Definition at line 59 of file ui_servers2.c.

Referenced by ArenaServers_Cache().

#define AS_FAVORITES   3
 

Definition at line 86 of file ui_servers2.c.

#define AS_GLOBAL   2
 

Definition at line 85 of file ui_servers2.c.

#define AS_LOCAL   0
 

Definition at line 83 of file ui_servers2.c.

#define AS_MPLAYER   1
 

Definition at line 84 of file ui_servers2.c.

#define GAMES_ALL   0
 

Definition at line 94 of file ui_servers2.c.

Referenced by ArenaServers_StartRefresh(), and ArenaServers_UpdateMenu().

#define GAMES_CTF   4
 

Definition at line 98 of file ui_servers2.c.

Referenced by ArenaServers_StartRefresh(), and ArenaServers_UpdateMenu().

#define GAMES_FFA   1
 

Definition at line 95 of file ui_servers2.c.

Referenced by ArenaServers_StartRefresh(), and ArenaServers_UpdateMenu().

#define GAMES_TEAMPLAY   2
 

Definition at line 96 of file ui_servers2.c.

Referenced by ArenaServers_StartRefresh(), and ArenaServers_UpdateMenu().

#define GAMES_TOURNEY   3
 

Definition at line 97 of file ui_servers2.c.

Referenced by ArenaServers_StartRefresh(), and ArenaServers_UpdateMenu().

#define GR_LETTERS   31
 

Definition at line 81 of file ui_servers2.c.

#define GR_LOGO   30
 

Definition at line 80 of file ui_servers2.c.

#define ID_BACK   18
 

Definition at line 72 of file ui_servers2.c.

#define ID_CONNECT   22
 

Definition at line 76 of file ui_servers2.c.

Referenced by ArenaServers_Event().

#define ID_CREATE   21
 

Definition at line 75 of file ui_servers2.c.

#define ID_GAMETYPE   11
 

Definition at line 65 of file ui_servers2.c.

Referenced by ArenaServers_Event().

#define ID_LIST   15
 

Definition at line 69 of file ui_servers2.c.

#define ID_MASTER   10
 

Definition at line 64 of file ui_servers2.c.

Referenced by ArenaServers_Event().

#define ID_PUNKBUSTER   24
 

Definition at line 78 of file ui_servers2.c.

Referenced by ArenaServers_Event().

#define ID_REFRESH   19
 

Definition at line 73 of file ui_servers2.c.

Referenced by ArenaServers_Event().

#define ID_REMOVE   23
 

Definition at line 77 of file ui_servers2.c.

Referenced by ArenaServers_Event().

#define ID_SCROLL_DOWN   17
 

Definition at line 71 of file ui_servers2.c.

Referenced by ArenaServers_Event().

#define ID_SCROLL_UP   16
 

Definition at line 70 of file ui_servers2.c.

Referenced by ArenaServers_Event().

#define ID_SHOW_EMPTY   14
 

Definition at line 68 of file ui_servers2.c.

Referenced by ArenaServers_Event().

#define ID_SHOW_FULL   13
 

Definition at line 67 of file ui_servers2.c.

Referenced by ArenaServers_Event().

#define ID_SORTKEY   12
 

Definition at line 66 of file ui_servers2.c.

Referenced by ArenaServers_Event().

#define ID_SPECIFY   20
 

Definition at line 74 of file ui_servers2.c.

Referenced by ArenaServers_Event().

#define MAX_ADDRESSLENGTH   64
 

Definition at line 37 of file ui_servers2.c.

Referenced by ArenaServers_DoRefresh(), ArenaServers_Insert(), ArenaServers_LoadFavorites(), and ArenaServers_Remove().

#define MAX_GLOBALSERVERS   128
 

Definition at line 35 of file ui_servers2.c.

#define MAX_HOSTNAMELENGTH   22
 

Definition at line 38 of file ui_servers2.c.

Referenced by ArenaServers_Insert().

#define MAX_LEAGUELENGTH   28
 

Definition at line 43 of file ui_servers2.c.

#define MAX_LISTBOXITEMS   128
 

Definition at line 40 of file ui_servers2.c.

#define MAX_LISTBOXWIDTH   68
 

Definition at line 44 of file ui_servers2.c.

Referenced by ArenaServers_UpdateMenu().

#define MAX_LOCALSERVERS   128
 

Definition at line 41 of file ui_servers2.c.

#define MAX_MAPNAMELENGTH   16
 

Definition at line 39 of file ui_servers2.c.

Referenced by ArenaServers_Insert().

#define MAX_PINGREQUESTS   32
 

Definition at line 36 of file ui_servers2.c.

#define MAX_STATUSLENGTH   64
 

Definition at line 42 of file ui_servers2.c.

Referenced by ArenaServers_UpdateMenu().

#define SORT_CLIENTS   2
 

Definition at line 90 of file ui_servers2.c.

Referenced by ArenaServers_Compare(), LAN_CompareServers(), and UI_FeederItemText().

#define SORT_GAME   3
 

Definition at line 91 of file ui_servers2.c.

Referenced by ArenaServers_Compare(), LAN_CompareServers(), and UI_FeederItemText().

#define SORT_HOST   0
 

Definition at line 88 of file ui_servers2.c.

Referenced by ArenaServers_Compare(), LAN_CompareServers(), and UI_FeederItemText().

#define SORT_MAP   1
 

Definition at line 89 of file ui_servers2.c.

Referenced by ArenaServers_Compare(), LAN_CompareServers(), and UI_FeederItemText().

#define SORT_PING   4
 

Definition at line 92 of file ui_servers2.c.

Referenced by ArenaServers_Compare(), LAN_CompareServers(), and UI_FeederItemText().


Typedef Documentation

typedef struct servernode_s servernode_t
 

Referenced by ArenaServers_Compare(), ArenaServers_Go(), ArenaServers_Insert(), ArenaServers_LoadFavorites(), ArenaServers_Remove(), ArenaServers_Sort(), ArenaServers_StopRefresh(), ArenaServers_UpdateMenu(), and ArenaServers_UpdatePicture().


Function Documentation

void ArenaServers_Cache void   ) 
 

Definition at line 1613 of file ui_servers2.c.

References ART_ARROWS0, ART_ARROWS_DOWN, ART_ARROWS_UP, ART_BACK0, ART_BACK1, ART_CONNECT0, ART_CONNECT1, ART_CREATE0, ART_CREATE1, ART_PUNKBUSTER, ART_REFRESH0, ART_REFRESH1, ART_SPECIFY0, ART_SPECIFY1, ART_UNKNOWNMAP, and trap_R_RegisterShaderNoMip().

01613                                 {
01614     trap_R_RegisterShaderNoMip( ART_BACK0 );
01615     trap_R_RegisterShaderNoMip( ART_BACK1 );
01616     trap_R_RegisterShaderNoMip( ART_CREATE0 );
01617     trap_R_RegisterShaderNoMip( ART_CREATE1 );
01618     trap_R_RegisterShaderNoMip( ART_SPECIFY0 );
01619     trap_R_RegisterShaderNoMip( ART_SPECIFY1 );
01620     trap_R_RegisterShaderNoMip( ART_REFRESH0 );
01621     trap_R_RegisterShaderNoMip( ART_REFRESH1 );
01622     trap_R_RegisterShaderNoMip( ART_CONNECT0 );
01623     trap_R_RegisterShaderNoMip( ART_CONNECT1 );
01624     trap_R_RegisterShaderNoMip( ART_ARROWS0  );
01625     trap_R_RegisterShaderNoMip( ART_ARROWS_UP );
01626     trap_R_RegisterShaderNoMip( ART_ARROWS_DOWN );
01627     trap_R_RegisterShaderNoMip( ART_UNKNOWNMAP );
01628     trap_R_RegisterShaderNoMip( ART_PUNKBUSTER );
01629 }

Here is the call graph for this function:

int QDECL ArenaServers_Compare const void *  arg1,
const void *  arg2
[static]
 

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:

void ArenaServers_DoRefresh void   )  [static]
 

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:

void ArenaServers_Event void *  ptr,
int  event
[static]
 

Definition at line 1179 of file ui_servers2.c.

References ArenaServers_Go(), ArenaServers_Remove(), ArenaServers_SaveChanges(), ArenaServers_SetType(), ArenaServers_Sort(), ArenaServers_StartRefresh(), ArenaServers_StopRefresh(), ArenaServers_UpdateMenu(), ArenaServers_UpdatePicture(), menuradiobutton_s::curvalue, menulist_s::curvalue, g_arenaservers, g_emptyservers, g_fullservers, g_gametype, arenaservers_t::gametype, ID_BACK, ID_CONNECT, ID_CREATE, ID_GAMETYPE, ID_LIST, ID_MASTER, ID_PUNKBUSTER, ID_REFRESH, ID_REMOVE, ID_SCROLL_DOWN, ID_SCROLL_UP, ID_SHOW_EMPTY, ID_SHOW_FULL, ID_SORTKEY, ID_SPECIFY, K_DOWNARROW, K_UPARROW, arenaservers_t::list, arenaservers_t::master, NULL, arenaservers_t::punkbuster, Punkbuster_ConfirmDisable(), Punkbuster_ConfirmEnable(), QM_ACTIVATED, qtrue, ScrollList_Key(), arenaservers_t::showempty, arenaservers_t::showfull, arenaservers_t::sortkey, trap_Cvar_SetValue(), UI_CENTER, UI_ConfirmMenu_Style(), UI_INVERSE, UI_PopMenu(), UI_SMALLFONT, UI_SpecifyServerMenu(), UI_StartServerMenu(), value, and voidfunc_f.

01179                                                        {
01180     int     id;
01181     int value;
01182 
01183     id = ((menucommon_s*)ptr)->id;
01184 
01185     if( event != QM_ACTIVATED && id != ID_LIST ) {
01186         return;
01187     }
01188 
01189     switch( id ) {
01190     case ID_MASTER:
01191         value = g_arenaservers.master.curvalue;
01192         if (value >= 1)
01193         {
01194             value++;
01195         }
01196         trap_Cvar_SetValue( "ui_browserMaster", value );
01197         ArenaServers_SetType( value );
01198         break;
01199 
01200     case ID_GAMETYPE:
01201         trap_Cvar_SetValue( "ui_browserGameType", g_arenaservers.gametype.curvalue );
01202         g_gametype = g_arenaservers.gametype.curvalue;
01203         ArenaServers_UpdateMenu();
01204         break;
01205 
01206     case ID_SORTKEY:
01207         trap_Cvar_SetValue( "ui_browserSortKey", g_arenaservers.sortkey.curvalue );
01208         ArenaServers_Sort( g_arenaservers.sortkey.curvalue );
01209         ArenaServers_UpdateMenu();
01210         break;
01211 
01212     case ID_SHOW_FULL:
01213         trap_Cvar_SetValue( "ui_browserShowFull", g_arenaservers.showfull.curvalue );
01214         g_fullservers = g_arenaservers.showfull.curvalue;
01215         ArenaServers_UpdateMenu();
01216         break;
01217 
01218     case ID_SHOW_EMPTY:
01219         trap_Cvar_SetValue( "ui_browserShowEmpty", g_arenaservers.showempty.curvalue );
01220         g_emptyservers = g_arenaservers.showempty.curvalue;
01221         ArenaServers_UpdateMenu();
01222         break;
01223 
01224     case ID_LIST:
01225         if( event == QM_GOTFOCUS ) {
01226             ArenaServers_UpdatePicture();
01227         }
01228         break;
01229 
01230     case ID_SCROLL_UP:
01231         ScrollList_Key( &g_arenaservers.list, K_UPARROW );
01232         break;
01233 
01234     case ID_SCROLL_DOWN:
01235         ScrollList_Key( &g_arenaservers.list, K_DOWNARROW );
01236         break;
01237 
01238     case ID_BACK:
01239         ArenaServers_StopRefresh();
01240         ArenaServers_SaveChanges();
01241         UI_PopMenu();
01242         break;
01243 
01244     case ID_REFRESH:
01245         ArenaServers_StartRefresh();
01246         break;
01247 
01248     case ID_SPECIFY:
01249         UI_SpecifyServerMenu();
01250         break;
01251 
01252     case ID_CREATE:
01253         UI_StartServerMenu( qtrue );
01254         break;
01255 
01256     case ID_CONNECT:
01257         ArenaServers_Go();
01258         break;
01259 
01260     case ID_REMOVE:
01261         ArenaServers_Remove();
01262         ArenaServers_UpdateMenu();
01263         break;
01264     
01265     case ID_PUNKBUSTER:
01266         if (g_arenaservers.punkbuster.curvalue)         
01267         {
01268             UI_ConfirmMenu_Style( "Enable Punkbuster?",  UI_CENTER|UI_INVERSE|UI_SMALLFONT, (voidfunc_f)NULL, Punkbuster_ConfirmEnable );
01269         }
01270         else
01271         {
01272             UI_ConfirmMenu_Style( "Disable Punkbuster?", UI_CENTER|UI_INVERSE|UI_SMALLFONT, (voidfunc_f)NULL, Punkbuster_ConfirmDisable );
01273         }
01274         break;
01275     }
01276 }

Here is the call graph for this function:

void ArenaServers_Go void   )  [static]
 

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:

void ArenaServers_Insert char *  adrstr,
char *  info,
int  pingtime
[static]
 

Definition at line 611 of file ui_servers2.c.

References servernode_s::adrstr, ArenaServers_MaxPing(), atoi, servernode_s::bPB, g_arenaservers, g_servertype, servernode_s::gamename, gamenames, servernode_s::gametype, servernode_s::hostname, i, Info_ValueForKey(), servernode_s::mapname, MAX_ADDRESSLENGTH, MAX_HOSTNAMELENGTH, MAX_MAPNAMELENGTH, servernode_s::maxclients, servernode_s::maxPing, arenaservers_t::maxservers, servernode_s::minPing, servernode_s::nettype, servernode_s::numclients, arenaservers_t::numservers, servernode_s::pingtime, Q_CleanStr(), Q_strncpyz(), Q_strupr(), s, arenaservers_t::serverlist, and servernode_t.

Referenced by ArenaServers_DoRefresh(), and ArenaServers_InsertFavorites().

00612 {
00613     servernode_t*   servernodeptr;
00614     char*           s;
00615     int             i;
00616 
00617 
00618     if ((pingtime >= ArenaServers_MaxPing()) && (g_servertype != AS_FAVORITES))
00619     {
00620         // slow global or local servers do not get entered
00621         return;
00622     }
00623 
00624     if (*g_arenaservers.numservers >= g_arenaservers.maxservers) {
00625         // list full;
00626         servernodeptr = g_arenaservers.serverlist+(*g_arenaservers.numservers)-1;
00627     } else {
00628         // next slot
00629         servernodeptr = g_arenaservers.