/* ================= ArenaServers_MenuInit ================= */ static void ArenaServers_MenuInit( void ) { int i; int y; static char statusbuffer[MAX_STATUSLENGTH]; // zero set all our globals memset( &g_arenaservers, 0 ,sizeof(arenaservers_t) ); ArenaServers_Cache(); g_arenaservers.menu.fullscreen = true; g_arenaservers.menu.wrapAround = true; g_arenaservers.menu.draw = ArenaServers_MenuDraw; g_arenaservers.menu.key = ArenaServers_MenuKey; g_arenaservers.banner.generic.type = MTYPE_BTEXT; g_arenaservers.banner.generic.flags = QMF_CENTER_JUSTIFY; g_arenaservers.banner.generic.x = 320; g_arenaservers.banner.generic.y = 16; g_arenaservers.banner.string = "ARENA SERVERS"; g_arenaservers.banner.style = UI_CENTER; g_arenaservers.banner.color = color_white; y = 80; g_arenaservers.master.generic.type = MTYPE_SPINCONTROL; g_arenaservers.master.generic.name = "Servers:"; g_arenaservers.master.generic.flags = QMF_PULSEIFFOCUS|QMF_SMALLFONT; g_arenaservers.master.generic.callback = ArenaServers_Event; g_arenaservers.master.generic.id = ID_MASTER; g_arenaservers.master.generic.x = 320; g_arenaservers.master.generic.y = y; g_arenaservers.master.itemnames = master_items; y += SMALLCHAR_HEIGHT; g_arenaservers.gametype.generic.type = MTYPE_SPINCONTROL; g_arenaservers.gametype.generic.name = "Game Type:"; g_arenaservers.gametype.generic.flags = QMF_PULSEIFFOCUS|QMF_SMALLFONT; g_arenaservers.gametype.generic.callback = ArenaServers_Event; g_arenaservers.gametype.generic.id = ID_GAMETYPE; g_arenaservers.gametype.generic.x = 320; g_arenaservers.gametype.generic.y = y; g_arenaservers.gametype.itemnames = servertype_items; y += SMALLCHAR_HEIGHT; g_arenaservers.sortkey.generic.type = MTYPE_SPINCONTROL; g_arenaservers.sortkey.generic.name = "Sort By:"; g_arenaservers.sortkey.generic.flags = QMF_PULSEIFFOCUS|QMF_SMALLFONT; g_arenaservers.sortkey.generic.callback = ArenaServers_Event; g_arenaservers.sortkey.generic.id = ID_SORTKEY; g_arenaservers.sortkey.generic.x = 320; g_arenaservers.sortkey.generic.y = y; g_arenaservers.sortkey.itemnames = sortkey_items; y += SMALLCHAR_HEIGHT; g_arenaservers.showfull.generic.type = MTYPE_RADIOBUTTON; g_arenaservers.showfull.generic.name = "Show Full:"; g_arenaservers.showfull.generic.flags = QMF_PULSEIFFOCUS|QMF_SMALLFONT; g_arenaservers.showfull.generic.callback = ArenaServers_Event; g_arenaservers.showfull.generic.id = ID_SHOW_FULL; g_arenaservers.showfull.generic.x = 320; g_arenaservers.showfull.generic.y = y; y += SMALLCHAR_HEIGHT; g_arenaservers.showempty.generic.type = MTYPE_RADIOBUTTON; g_arenaservers.showempty.generic.name = "Show Empty:"; g_arenaservers.showempty.generic.flags = QMF_PULSEIFFOCUS|QMF_SMALLFONT; g_arenaservers.showempty.generic.callback = ArenaServers_Event; g_arenaservers.showempty.generic.id = ID_SHOW_EMPTY; g_arenaservers.showempty.generic.x = 320; g_arenaservers.showempty.generic.y = y; y += 3 * SMALLCHAR_HEIGHT; g_arenaservers.list.generic.type = MTYPE_SCROLLLIST; g_arenaservers.list.generic.flags = QMF_HIGHLIGHT_IF_FOCUS; g_arenaservers.list.generic.id = ID_LIST; g_arenaservers.list.generic.callback = ArenaServers_Event; g_arenaservers.list.generic.x = 72; g_arenaservers.list.generic.y = y; g_arenaservers.list.width = MAX_LISTBOXWIDTH; g_arenaservers.list.height = 11; g_arenaservers.list.itemnames = (const char **)g_arenaservers.items; for( i = 0; i < MAX_LISTBOXITEMS; i++ ) { g_arenaservers.items[i] = g_arenaservers.table[i].buff; } g_arenaservers.mappic.generic.type = MTYPE_BITMAP; g_arenaservers.mappic.generic.flags = QMF_LEFT_JUSTIFY|QMF_INACTIVE; g_arenaservers.mappic.generic.x = 72; g_arenaservers.mappic.generic.y = 80; g_arenaservers.mappic.width = 128; g_arenaservers.mappic.height = 96; g_arenaservers.mappic.errorpic = ART_UNKNOWNMAP; g_arenaservers.arrows.generic.type = MTYPE_BITMAP; g_arenaservers.arrows.generic.name = ART_ARROWS0; g_arenaservers.arrows.generic.flags = QMF_LEFT_JUSTIFY|QMF_INACTIVE; g_arenaservers.arrows.generic.callback = ArenaServers_Event; g_arenaservers.arrows.generic.x = 512+48; g_arenaservers.arrows.generic.y = 240-64+16; g_arenaservers.arrows.width = 64; g_arenaservers.arrows.height = 128; g_arenaservers.up.generic.type = MTYPE_BITMAP; g_arenaservers.up.generic.flags = QMF_LEFT_JUSTIFY|QMF_PULSEIFFOCUS|QMF_MOUSEONLY; g_arenaservers.up.generic.callback = ArenaServers_Event; g_arenaservers.up.generic.id = ID_SCROLL_UP; g_arenaservers.up.generic.x = 512+48; g_arenaservers.up.generic.y = 240-64+16; g_arenaservers.up.width = 64; g_arenaservers.up.height = 64; g_arenaservers.up.focuspic = ART_ARROWS_UP; g_arenaservers.down.generic.type = MTYPE_BITMAP; g_arenaservers.down.generic.flags = QMF_LEFT_JUSTIFY|QMF_PULSEIFFOCUS|QMF_MOUSEONLY; g_arenaservers.down.generic.callback = ArenaServers_Event; g_arenaservers.down.generic.id = ID_SCROLL_DOWN; g_arenaservers.down.generic.x = 512+48; g_arenaservers.down.generic.y = 240+16; g_arenaservers.down.width = 64; g_arenaservers.down.height = 64; g_arenaservers.down.focuspic = ART_ARROWS_DOWN; y = 376; g_arenaservers.status.generic.type = MTYPE_TEXT; g_arenaservers.status.generic.x = 320; g_arenaservers.status.generic.y = y; g_arenaservers.status.string = statusbuffer; g_arenaservers.status.style = UI_CENTER|UI_SMALLFONT; g_arenaservers.status.color = menu_text_color; y += SMALLCHAR_HEIGHT; g_arenaservers.statusbar.generic.type = MTYPE_TEXT; g_arenaservers.statusbar.generic.x = 320; g_arenaservers.statusbar.generic.y = y; g_arenaservers.statusbar.string = ""; g_arenaservers.statusbar.style = UI_CENTER|UI_SMALLFONT; g_arenaservers.statusbar.color = text_color_normal; g_arenaservers.remove.generic.type = MTYPE_BITMAP; g_arenaservers.remove.generic.name = ART_REMOVE0; g_arenaservers.remove.generic.flags = QMF_LEFT_JUSTIFY|QMF_PULSEIFFOCUS; g_arenaservers.remove.generic.callback = ArenaServers_Event; g_arenaservers.remove.generic.id = ID_REMOVE; g_arenaservers.remove.generic.x = 450; g_arenaservers.remove.generic.y = 86; g_arenaservers.remove.width = 96; g_arenaservers.remove.height = 48; g_arenaservers.remove.focuspic = ART_REMOVE1; g_arenaservers.back.generic.type = MTYPE_BITMAP; g_arenaservers.back.generic.name = ART_BACK0; g_arenaservers.back.generic.flags = QMF_LEFT_JUSTIFY|QMF_PULSEIFFOCUS; g_arenaservers.back.generic.callback = ArenaServers_Event; g_arenaservers.back.generic.id = ID_BACK; g_arenaservers.back.generic.x = 0; g_arenaservers.back.generic.y = 480-64; g_arenaservers.back.width = 128; g_arenaservers.back.height = 64; g_arenaservers.back.focuspic = ART_BACK1; g_arenaservers.specify.generic.type = MTYPE_BITMAP; g_arenaservers.specify.generic.name = ART_SPECIFY0; g_arenaservers.specify.generic.flags = QMF_LEFT_JUSTIFY|QMF_PULSEIFFOCUS; g_arenaservers.specify.generic.callback = ArenaServers_Event; g_arenaservers.specify.generic.id = ID_SPECIFY; g_arenaservers.specify.generic.x = 128; g_arenaservers.specify.generic.y = 480-64; g_arenaservers.specify.width = 128; g_arenaservers.specify.height = 64; g_arenaservers.specify.focuspic = ART_SPECIFY1; g_arenaservers.refresh.generic.type = MTYPE_BITMAP; g_arenaservers.refresh.generic.name = ART_REFRESH0; g_arenaservers.refresh.generic.flags = QMF_LEFT_JUSTIFY|QMF_PULSEIFFOCUS; g_arenaservers.refresh.generic.callback = ArenaServers_Event; g_arenaservers.refresh.generic.id = ID_REFRESH; g_arenaservers.refresh.generic.x = 256; g_arenaservers.refresh.generic.y = 480-64; g_arenaservers.refresh.width = 128; g_arenaservers.refresh.height = 64; g_arenaservers.refresh.focuspic = ART_REFRESH1; g_arenaservers.create.generic.type = MTYPE_BITMAP; g_arenaservers.create.generic.name = ART_CREATE0; g_arenaservers.create.generic.flags = QMF_LEFT_JUSTIFY|QMF_PULSEIFFOCUS; g_arenaservers.create.generic.callback = ArenaServers_Event; g_arenaservers.create.generic.id = ID_CREATE; g_arenaservers.create.generic.x = 384; g_arenaservers.create.generic.y = 480-64; g_arenaservers.create.width = 128; g_arenaservers.create.height = 64; g_arenaservers.create.focuspic = ART_CREATE1; g_arenaservers.go.generic.type = MTYPE_BITMAP; g_arenaservers.go.generic.name = ART_CONNECT0; g_arenaservers.go.generic.flags = QMF_RIGHT_JUSTIFY|QMF_PULSEIFFOCUS; g_arenaservers.go.generic.callback = ArenaServers_Event; g_arenaservers.go.generic.id = ID_CONNECT; g_arenaservers.go.generic.x = 640; g_arenaservers.go.generic.y = 480-64; g_arenaservers.go.width = 128; g_arenaservers.go.height = 64; g_arenaservers.go.focuspic = ART_CONNECT1; g_arenaservers.punkbuster.generic.type = MTYPE_SPINCONTROL; g_arenaservers.punkbuster.generic.name = "Punkbuster:"; g_arenaservers.punkbuster.generic.flags = QMF_PULSEIFFOCUS|QMF_SMALLFONT; g_arenaservers.punkbuster.generic.callback = ArenaServers_Event; g_arenaservers.punkbuster.generic.id = ID_PUNKBUSTER; g_arenaservers.punkbuster.generic.x = 480+32; g_arenaservers.punkbuster.generic.y = 144; g_arenaservers.punkbuster.itemnames = punkbuster_items; g_arenaservers.pblogo.generic.type = MTYPE_BITMAP; g_arenaservers.pblogo.generic.name = ART_PUNKBUSTER; g_arenaservers.pblogo.generic.flags = QMF_LEFT_JUSTIFY|QMF_INACTIVE; g_arenaservers.pblogo.generic.x = 526; g_arenaservers.pblogo.generic.y = 176; g_arenaservers.pblogo.width = 32; g_arenaservers.pblogo.height = 16; g_arenaservers.pblogo.errorpic = ART_UNKNOWNMAP; Menu_AddItem( &g_arenaservers.menu, (void*) &g_arenaservers.banner ); Menu_AddItem( &g_arenaservers.menu, (void*) &g_arenaservers.master ); Menu_AddItem( &g_arenaservers.menu, (void*) &g_arenaservers.gametype ); Menu_AddItem( &g_arenaservers.menu, (void*) &g_arenaservers.sortkey ); Menu_AddItem( &g_arenaservers.menu, (void*) &g_arenaservers.showfull); Menu_AddItem( &g_arenaservers.menu, (void*) &g_arenaservers.showempty ); Menu_AddItem( &g_arenaservers.menu, (void*) &g_arenaservers.mappic ); Menu_AddItem( &g_arenaservers.menu, (void*) &g_arenaservers.status ); Menu_AddItem( &g_arenaservers.menu, (void*) &g_arenaservers.statusbar ); Menu_AddItem( &g_arenaservers.menu, (void*) &g_arenaservers.arrows ); Menu_AddItem( &g_arenaservers.menu, (void*) &g_arenaservers.up ); Menu_AddItem( &g_arenaservers.menu, (void*) &g_arenaservers.down ); Menu_AddItem( &g_arenaservers.menu, (void*) &g_arenaservers.list ); Menu_AddItem( &g_arenaservers.menu, (void*) &g_arenaservers.remove ); Menu_AddItem( &g_arenaservers.menu, (void*) &g_arenaservers.back ); Menu_AddItem( &g_arenaservers.menu, (void*) &g_arenaservers.specify ); Menu_AddItem( &g_arenaservers.menu, (void*) &g_arenaservers.refresh ); Menu_AddItem( &g_arenaservers.menu, (void*) &g_arenaservers.create ); Menu_AddItem( &g_arenaservers.menu, (void*) &g_arenaservers.go ); Menu_AddItem( &g_arenaservers.menu, (void*) &g_arenaservers.punkbuster ); Menu_AddItem( &g_arenaservers.menu, (void*) &g_arenaservers.pblogo ); ArenaServers_LoadFavorites(); g_arenaservers.master.curvalue = g_servertype = Com_Clamp( 0, 6, ui_browserMaster.integer ); g_gametype = Com_Clamp( 0, 4, ui_browserGameType.integer ); g_arenaservers.gametype.curvalue = g_gametype; g_sortkey = Com_Clamp( 0, 4, ui_browserSortKey.integer ); g_arenaservers.sortkey.curvalue = g_sortkey; g_fullservers = Com_Clamp( 0, 1, ui_browserShowFull.integer ); g_arenaservers.showfull.curvalue = g_fullservers; g_emptyservers = Com_Clamp( 0, 1, ui_browserShowEmpty.integer ); g_arenaservers.showempty.curvalue = g_emptyservers; g_arenaservers.punkbuster.curvalue = Com_Clamp( 0, 1, cvarSystem->VariableValue( "cl_punkbuster" ) ); // force to initial state and refresh g_arenaservers.master.curvalue = g_servertype = ArenaServers_SetType(g_servertype); cvarSystem->Register(NULL, "debug_protocol", "", 0 ); }
/* ================= ArenaServers_Event ================= */ static void ArenaServers_Event( void* ptr, int event ) { int id; id = ((menucommon_s*)ptr)->id; if( event != QM_ACTIVATED && id != ID_LIST ) { return; } switch( id ) { case ID_MASTER: g_arenaservers.master.curvalue = ArenaServers_SetType(g_arenaservers.master.curvalue); cvarSystem->SetValue( "ui_browserMaster", g_arenaservers.master.curvalue); break; case ID_GAMETYPE: cvarSystem->SetValue( "ui_browserGameType", g_arenaservers.gametype.curvalue ); g_gametype = g_arenaservers.gametype.curvalue; ArenaServers_UpdateMenu(); break; case ID_SORTKEY: cvarSystem->SetValue( "ui_browserSortKey", g_arenaservers.sortkey.curvalue ); ArenaServers_Sort( g_arenaservers.sortkey.curvalue ); ArenaServers_UpdateMenu(); break; case ID_SHOW_FULL: cvarSystem->SetValue( "ui_browserShowFull", g_arenaservers.showfull.curvalue ); g_fullservers = g_arenaservers.showfull.curvalue; ArenaServers_UpdateMenu(); break; case ID_SHOW_EMPTY: cvarSystem->SetValue( "ui_browserShowEmpty", g_arenaservers.showempty.curvalue ); g_emptyservers = g_arenaservers.showempty.curvalue; ArenaServers_UpdateMenu(); break; case ID_LIST: if( event == QM_GOTFOCUS ) { ArenaServers_UpdatePicture(); } break; case ID_SCROLL_UP: ScrollList_Key( &g_arenaservers.list, K_UPARROW ); break; case ID_SCROLL_DOWN: ScrollList_Key( &g_arenaservers.list, K_DOWNARROW ); break; case ID_BACK: ArenaServers_StopRefresh(); ArenaServers_SaveChanges(); UI_PopMenu(); break; case ID_REFRESH: ArenaServers_StartRefresh(); break; case ID_SPECIFY: UI_SpecifyServerMenu(); break; case ID_CREATE: UI_StartServerMenu( true ); break; case ID_CONNECT: ArenaServers_Go(); break; case ID_REMOVE: ArenaServers_Remove(); ArenaServers_UpdateMenu(); break; case ID_PUNKBUSTER: if (g_arenaservers.punkbuster.curvalue) { UI_ConfirmMenu_Style( "Enable Punkbuster?", UI_CENTER|UI_INVERSE|UI_SMALLFONT, 0, Punkbuster_ConfirmEnable ); } else { UI_ConfirmMenu_Style( "Disable Punkbuster?", UI_CENTER|UI_INVERSE|UI_SMALLFONT, 0, Punkbuster_ConfirmDisable ); } break; } }
/* ================= ArenaServers_Event ================= */ static void ArenaServers_Event( void* ptr, int event ) { char info[MAX_STRING_CHARS]; int id; id = ((menucommon_s*)ptr)->id; if( event != QM_ACTIVATED && id != ID_LIST ) { return; } switch( id ) { case ID_MASTER: trap_Cvar_SetValue( "ui_browserMaster", g_arenaservers.master.curvalue ); ArenaServers_SetType( g_arenaservers.master.curvalue ); break; case ID_GAMETYPE: trap_Cvar_SetValue( "ui_browserGameType", g_arenaservers.gametype.curvalue ); g_gametype = g_arenaservers.gametype.curvalue; serverStatus.newDisplayList = qtrue; break; case ID_SORTKEY: trap_Cvar_SetValue( "ui_browserSortKey", g_arenaservers.sortkey.curvalue ); g_sortkey = g_arenaservers.sortkey.curvalue; serverStatus.newDisplayList = qtrue; break; case ID_SHOW_FULL: trap_Cvar_SetValue( "ui_browserShowFull", g_arenaservers.showfull.curvalue ); g_fullservers = g_arenaservers.showfull.curvalue; serverStatus.newDisplayList = qtrue; break; case ID_SHOW_EMPTY: trap_Cvar_SetValue( "ui_browserShowEmpty", g_arenaservers.showempty.curvalue ); g_emptyservers = g_arenaservers.showempty.curvalue; serverStatus.newDisplayList = qtrue; break; case ID_SHOW_AWONLY: trap_Cvar_SetValue( "ui_browserShowAwOnly", g_arenaservers.showawonly.curvalue ); // g_emptyservers = g_arenaservers.showawonly.curvalue; serverStatus.newDisplayList = qtrue; break; case ID_LIST: if( event == QM_GOTFOCUS ) { ArenaServers_UpdatePicture(); } break; case ID_SCROLL_UP: ScrollList_Key( &g_arenaservers.list, K_UPARROW ); break; case ID_SCROLL_DOWN: ScrollList_Key( &g_arenaservers.list, K_DOWNARROW ); break; case ID_BACK: ArenaServers_StopRefresh(); UI_PopMenu(); break; case ID_REFRESH: ArenaServers_StartRefresh( qtrue ); break; case ID_SPECIFY: UI_SpecifyServerMenu(); break; case ID_CONNECT: ArenaServers_Go(); break; case ID_INFO: trap_LAN_GetServerInfo(g_arenaservers.master.curvalue, serverStatus.displayServers[g_arenaservers.list.curvalue], info, MAX_STRING_CHARS); if ( serverStatus.numDisplayServers > 0 && strlen(Info_ValueForKey(info, "addr")) > 0 ) { UI_ServerInfoMenu( Info_ValueForKey(info, "addr") ); } break; case ID_FAVORITE: ArenaServers_AddRemoveFavorite(); break; } }
/* ================= ArenaServers_MenuInit ================= */ static void ArenaServers_MenuInit( void ) { int i; int type; int y; static char statusbuffer[MAX_STATUSLENGTH]; static char leaguebuffer[MAX_LEAGUELENGTH]; // zero set all our globals memset( &g_arenaservers, 0 ,sizeof(arenaservers_t) ); ArenaServers_Cache(); g_arenaservers.menu.fullscreen = qtrue; g_arenaservers.menu.wrapAround = qtrue; g_arenaservers.menu.showlogo = LOGO_AFTERWARDS; g_arenaservers.menu.draw = ArenaServers_MenuDraw; g_arenaservers.menu.key = ArenaServers_MenuKey; g_arenaservers.banner.generic.type = MTYPE_BTEXT; g_arenaservers.banner.generic.flags = QMF_CENTER_JUSTIFY; g_arenaservers.banner.generic.x = 320; g_arenaservers.banner.generic.y = 16; g_arenaservers.banner.string = "JOIN GAME"; g_arenaservers.banner.style = UI_CENTER; g_arenaservers.banner.color = color_white; g_arenaservers.grlogo.generic.type = MTYPE_BITMAP; g_arenaservers.grlogo.generic.name = GLOBALRANKINGS_LOGO; g_arenaservers.grlogo.generic.flags = QMF_INACTIVE|QMF_HIDDEN; g_arenaservers.grlogo.generic.x = 530; g_arenaservers.grlogo.generic.y = 40; g_arenaservers.grlogo.width = 32; g_arenaservers.grlogo.height = 64; g_arenaservers.league.generic.type = MTYPE_TEXT; g_arenaservers.league.generic.flags = QMF_HIDDEN; g_arenaservers.league.generic.x = g_arenaservers.grlogo.generic.x + (g_arenaservers.grlogo.width / 2); g_arenaservers.league.generic.y = g_arenaservers.grlogo.generic.y + g_arenaservers.grlogo.height + 2; g_arenaservers.league.string = leaguebuffer; g_arenaservers.league.style = UI_CENTER|UI_SMALLFONT; g_arenaservers.league.color = menu_text_color; g_arenaservers.practice.generic.type = MTYPE_TEXT; g_arenaservers.practice.generic.flags = QMF_HIDDEN; g_arenaservers.practice.generic.x = g_arenaservers.grlogo.generic.x + (g_arenaservers.grlogo.width / 2); g_arenaservers.practice.generic.y = g_arenaservers.grlogo.generic.y + 6; g_arenaservers.practice.string = "practice"; g_arenaservers.practice.style = UI_CENTER|UI_SMALLFONT; g_arenaservers.practice.color = menu_text_color; y = 80; g_arenaservers.master.generic.type = MTYPE_SPINCONTROL; g_arenaservers.master.generic.name = "Servers:"; g_arenaservers.master.generic.flags = QMF_PULSEIFFOCUS|QMF_SMALLFONT; g_arenaservers.master.generic.callback = ArenaServers_Event; g_arenaservers.master.generic.id = ID_MASTER; g_arenaservers.master.generic.x = 320; g_arenaservers.master.generic.y = y; g_arenaservers.master.itemnames = master_items; y += SMALLCHAR_HEIGHT; g_arenaservers.gametype.generic.type = MTYPE_SPINCONTROL; g_arenaservers.gametype.generic.name = "Game Type:"; g_arenaservers.gametype.generic.flags = QMF_PULSEIFFOCUS|QMF_SMALLFONT; g_arenaservers.gametype.generic.callback = ArenaServers_Event; g_arenaservers.gametype.generic.id = ID_GAMETYPE; g_arenaservers.gametype.generic.x = 320; g_arenaservers.gametype.generic.y = y; g_arenaservers.gametype.itemnames = servertype_items; y += SMALLCHAR_HEIGHT; g_arenaservers.sortkey.generic.type = MTYPE_SPINCONTROL; g_arenaservers.sortkey.generic.name = "Sort By:"; g_arenaservers.sortkey.generic.flags = QMF_PULSEIFFOCUS|QMF_SMALLFONT; g_arenaservers.sortkey.generic.callback = ArenaServers_Event; g_arenaservers.sortkey.generic.id = ID_SORTKEY; g_arenaservers.sortkey.generic.x = 320; g_arenaservers.sortkey.generic.y = y; g_arenaservers.sortkey.itemnames = sortkey_items; y += SMALLCHAR_HEIGHT; g_arenaservers.showfull.generic.type = MTYPE_RADIOBUTTON; g_arenaservers.showfull.generic.name = "Show Full:"; g_arenaservers.showfull.generic.flags = QMF_PULSEIFFOCUS|QMF_SMALLFONT; g_arenaservers.showfull.generic.callback = ArenaServers_Event; g_arenaservers.showfull.generic.id = ID_SHOW_FULL; g_arenaservers.showfull.generic.x = 320; g_arenaservers.showfull.generic.y = y; y += SMALLCHAR_HEIGHT; g_arenaservers.showempty.generic.type = MTYPE_RADIOBUTTON; g_arenaservers.showempty.generic.name = "Show Empty:"; g_arenaservers.showempty.generic.flags = QMF_PULSEIFFOCUS|QMF_SMALLFONT; g_arenaservers.showempty.generic.callback = ArenaServers_Event; g_arenaservers.showempty.generic.id = ID_SHOW_EMPTY; g_arenaservers.showempty.generic.x = 320; g_arenaservers.showempty.generic.y = y; y += SMALLCHAR_HEIGHT; g_arenaservers.showawonly.generic.type = MTYPE_RADIOBUTTON; g_arenaservers.showawonly.generic.name = "AW Only:"; g_arenaservers.showawonly.generic.flags = QMF_PULSEIFFOCUS|QMF_SMALLFONT; g_arenaservers.showawonly.generic.callback = ArenaServers_Event; g_arenaservers.showawonly.generic.id = ID_SHOW_AWONLY; g_arenaservers.showawonly.generic.x = 320; g_arenaservers.showawonly.generic.y = y; y += 2 * SMALLCHAR_HEIGHT; g_arenaservers.list.generic.type = MTYPE_SCROLLLIST; g_arenaservers.list.generic.flags = QMF_HIGHLIGHT_IF_FOCUS; g_arenaservers.list.generic.id = ID_LIST; g_arenaservers.list.generic.callback = ArenaServers_Event; g_arenaservers.list.generic.x = 32; g_arenaservers.list.generic.y = y; g_arenaservers.list.width = MAX_LISTBOXWIDTH; g_arenaservers.list.height = 11; g_arenaservers.list.itemnames = (const char **)g_arenaservers.items; for( i = 0; i < MAX_LISTBOXITEMS; i++ ) { g_arenaservers.items[i] = g_arenaservers.table[i].buff; } g_arenaservers.mappic.generic.type = MTYPE_BITMAP; g_arenaservers.mappic.generic.flags = QMF_LEFT_JUSTIFY|QMF_INACTIVE; g_arenaservers.mappic.generic.x = 72; g_arenaservers.mappic.generic.y = 80; g_arenaservers.mappic.width = 128; g_arenaservers.mappic.height = 96; g_arenaservers.mappic.errorpic = ART_UNKNOWNMAP; g_arenaservers.arrows.generic.type = MTYPE_BITMAP; g_arenaservers.arrows.generic.name = ART_ARROWS0; g_arenaservers.arrows.generic.flags = QMF_LEFT_JUSTIFY|QMF_INACTIVE; g_arenaservers.arrows.generic.callback = ArenaServers_Event; g_arenaservers.arrows.generic.x = 512+48; g_arenaservers.arrows.generic.y = 240-16; g_arenaservers.arrows.width = 64; g_arenaservers.arrows.height = 128; g_arenaservers.up.generic.type = MTYPE_BITMAP; g_arenaservers.up.generic.flags = QMF_LEFT_JUSTIFY|QMF_PULSEIFFOCUS|QMF_MOUSEONLY; g_arenaservers.up.generic.callback = ArenaServers_Event; g_arenaservers.up.generic.id = ID_SCROLL_UP; g_arenaservers.up.generic.x = 512+48; g_arenaservers.up.generic.y = 240-16; g_arenaservers.up.width = 64; g_arenaservers.up.height = 64; g_arenaservers.up.focuspic = ART_ARROWS_UP; g_arenaservers.down.generic.type = MTYPE_BITMAP; g_arenaservers.down.generic.flags = QMF_LEFT_JUSTIFY|QMF_PULSEIFFOCUS|QMF_MOUSEONLY; g_arenaservers.down.generic.callback = ArenaServers_Event; g_arenaservers.down.generic.id = ID_SCROLL_DOWN; g_arenaservers.down.generic.x = 512+48; g_arenaservers.down.generic.y = 240+48; g_arenaservers.down.width = 64; g_arenaservers.down.height = 64; g_arenaservers.down.focuspic = ART_ARROWS_DOWN; y = 376; g_arenaservers.status.generic.type = MTYPE_TEXT; g_arenaservers.status.generic.x = 320; g_arenaservers.status.generic.y = y; g_arenaservers.status.string = statusbuffer; g_arenaservers.status.style = UI_CENTER|UI_SMALLFONT; g_arenaservers.status.color = menu_text_color; y += SMALLCHAR_HEIGHT; g_arenaservers.statusbar.generic.type = MTYPE_TEXT; g_arenaservers.statusbar.generic.x = 320; g_arenaservers.statusbar.generic.y = y; g_arenaservers.statusbar.string = ""; g_arenaservers.statusbar.style = UI_CENTER|UI_SMALLFONT; g_arenaservers.statusbar.color = text_color_normal; g_arenaservers.info.generic.type = MTYPE_BITMAP; g_arenaservers.info.generic.name = ART_INFO0; g_arenaservers.info.generic.flags = QMF_LEFT_JUSTIFY|QMF_PULSEIFFOCUS; g_arenaservers.info.generic.callback = ArenaServers_Event; g_arenaservers.info.generic.id = ID_INFO; g_arenaservers.info.generic.x = 450; g_arenaservers.info.generic.y = 80; g_arenaservers.info.width = 96; g_arenaservers.info.height = 48; g_arenaservers.info.focuspic = ART_INFO1; g_arenaservers.favorite.generic.type = MTYPE_BITMAP; g_arenaservers.favorite.generic.name = ART_REMOVE0; g_arenaservers.favorite.generic.flags = QMF_LEFT_JUSTIFY|QMF_PULSEIFFOCUS; g_arenaservers.favorite.generic.callback = ArenaServers_Event; g_arenaservers.favorite.generic.id = ID_FAVORITE; g_arenaservers.favorite.generic.x = 450; g_arenaservers.favorite.generic.y = 130; g_arenaservers.favorite.width = 96; g_arenaservers.favorite.height = 48; g_arenaservers.favorite.focuspic = ART_REMOVE1; g_arenaservers.back.generic.type = MTYPE_BITMAP; g_arenaservers.back.generic.name = ART_BACK0; g_arenaservers.back.generic.flags = QMF_LEFT_JUSTIFY|QMF_PULSEIFFOCUS; g_arenaservers.back.generic.callback = ArenaServers_Event; g_arenaservers.back.generic.id = ID_BACK; g_arenaservers.back.generic.x = 0; g_arenaservers.back.generic.y = 480-64; g_arenaservers.back.width = 128; g_arenaservers.back.height = 64; g_arenaservers.back.focuspic = ART_BACK1; g_arenaservers.specify.generic.type = MTYPE_BITMAP; g_arenaservers.specify.generic.name = ART_SPECIFY0; g_arenaservers.specify.generic.flags = QMF_LEFT_JUSTIFY|QMF_PULSEIFFOCUS; g_arenaservers.specify.generic.callback = ArenaServers_Event; g_arenaservers.specify.generic.id = ID_SPECIFY; g_arenaservers.specify.generic.x = 170; g_arenaservers.specify.generic.y = 480-64; g_arenaservers.specify.width = 128; g_arenaservers.specify.height = 64; g_arenaservers.specify.focuspic = ART_SPECIFY1; g_arenaservers.refresh.generic.type = MTYPE_BITMAP; g_arenaservers.refresh.generic.name = ART_REFRESH0; g_arenaservers.refresh.generic.flags = QMF_LEFT_JUSTIFY|QMF_PULSEIFFOCUS; g_arenaservers.refresh.generic.callback = ArenaServers_Event; g_arenaservers.refresh.generic.id = ID_REFRESH; g_arenaservers.refresh.generic.x = 340; g_arenaservers.refresh.generic.y = 480-64; g_arenaservers.refresh.width = 128; g_arenaservers.refresh.height = 64; g_arenaservers.refresh.focuspic = ART_REFRESH1; g_arenaservers.go.generic.type = MTYPE_BITMAP; g_arenaservers.go.generic.name = ART_CONNECT0; g_arenaservers.go.generic.flags = QMF_RIGHT_JUSTIFY|QMF_PULSEIFFOCUS; g_arenaservers.go.generic.callback = ArenaServers_Event; g_arenaservers.go.generic.id = ID_CONNECT; g_arenaservers.go.generic.x = 640; g_arenaservers.go.generic.y = 480-64; g_arenaservers.go.width = 128; g_arenaservers.go.height = 64; g_arenaservers.go.focuspic = ART_CONNECT1; Menu_AddItem( &g_arenaservers.menu, (void*) &g_arenaservers.banner ); Menu_AddItem( &g_arenaservers.menu, (void*) &g_arenaservers.grlogo ); Menu_AddItem( &g_arenaservers.menu, (void*) &g_arenaservers.league ); Menu_AddItem( &g_arenaservers.menu, (void*) &g_arenaservers.practice ); Menu_AddItem( &g_arenaservers.menu, (void*) &g_arenaservers.master ); Menu_AddItem( &g_arenaservers.menu, (void*) &g_arenaservers.gametype ); Menu_AddItem( &g_arenaservers.menu, (void*) &g_arenaservers.sortkey ); Menu_AddItem( &g_arenaservers.menu, (void*) &g_arenaservers.showfull); Menu_AddItem( &g_arenaservers.menu, (void*) &g_arenaservers.showempty ); Menu_AddItem( &g_arenaservers.menu, (void*) &g_arenaservers.showawonly ); Menu_AddItem( &g_arenaservers.menu, (void*) &g_arenaservers.mappic ); Menu_AddItem( &g_arenaservers.menu, (void*) &g_arenaservers.list ); Menu_AddItem( &g_arenaservers.menu, (void*) &g_arenaservers.status ); Menu_AddItem( &g_arenaservers.menu, (void*) &g_arenaservers.statusbar ); Menu_AddItem( &g_arenaservers.menu, (void*) &g_arenaservers.arrows ); Menu_AddItem( &g_arenaservers.menu, (void*) &g_arenaservers.up ); Menu_AddItem( &g_arenaservers.menu, (void*) &g_arenaservers.down ); Menu_AddItem( &g_arenaservers.menu, (void*) &g_arenaservers.info ); Menu_AddItem( &g_arenaservers.menu, (void*) &g_arenaservers.favorite ); Menu_AddItem( &g_arenaservers.menu, (void*) &g_arenaservers.back ); Menu_AddItem( &g_arenaservers.menu, (void*) &g_arenaservers.specify ); Menu_AddItem( &g_arenaservers.menu, (void*) &g_arenaservers.refresh ); Menu_AddItem( &g_arenaservers.menu, (void*) &g_arenaservers.go ); // ArenaServers_LoadFavorites(); g_servertype = Com_Clamp( 0, 3, ui_browserMaster.integer ); g_arenaservers.master.curvalue = g_servertype; g_gametype = Com_Clamp( 0, 4, ui_browserGameType.integer ); g_arenaservers.gametype.curvalue = g_gametype; g_sortkey = Com_Clamp( 0, 4, ui_browserSortKey.integer ); g_arenaservers.sortkey.curvalue = g_sortkey; g_fullservers = Com_Clamp( 0, 1, ui_browserShowFull.integer ); g_arenaservers.showfull.curvalue = g_fullservers; g_emptyservers = Com_Clamp( 0, 1, ui_browserShowEmpty.integer ); g_arenaservers.showempty.curvalue = g_emptyservers; g_arenaservers.showawonly.curvalue = Com_Clamp( 0, 1, ui_browserShowAwOnly.integer ); // force to initial state and refresh memset( &serverStatus, 0, sizeof( serverStatus ) ); type = g_servertype; g_servertype = -1; ArenaServers_SetType( type ); trap_Cvar_Register(NULL, "debug_protocol", "", 0 ); }
/* ================= ArenaServers_Event ================= */ static void ArenaServers_Event( void* ptr, int event ) { int id; char buff[256]; id = ((menucommon_s*)ptr)->id; if( event != QM_ACTIVATED && id != ID_LIST ) { return; } switch( id ) { case ID_MASTER: g_arenaservers.master.curvalue = ArenaServers_SetType(g_arenaservers.master.curvalue); trap_Cvar_SetValue( "ui_browserMaster", g_arenaservers.master.curvalue); break; case ID_GAMETYPE: trap_Cvar_SetValue( "ui_browserGameType", g_arenaservers.gametype.curvalue ); g_gametype = g_arenaservers.gametype.curvalue; ArenaServers_UpdateMenu(); break; case ID_SORTKEY: trap_Cvar_SetValue( "ui_browserSortKey", g_arenaservers.sortkey.curvalue ); ArenaServers_Sort( g_arenaservers.sortkey.curvalue ); ArenaServers_UpdateMenu(); break; case ID_SHOW_FULL: trap_Cvar_SetValue( "ui_browserShowFull", g_arenaservers.showfull.curvalue ); g_fullservers = g_arenaservers.showfull.curvalue; ArenaServers_UpdateMenu(); break; case ID_SHOW_EMPTY: trap_Cvar_SetValue( "ui_browserShowEmpty", g_arenaservers.showempty.curvalue ); g_emptyservers = g_arenaservers.showempty.curvalue; ArenaServers_UpdateMenu(); break; case ID_LIST: break; case ID_SCROLL_UP: ScrollList_Key( &g_arenaservers.list, K_UPARROW ); break; case ID_SCROLL_DOWN: ScrollList_Key( &g_arenaservers.list, K_DOWNARROW ); break; case ID_CONNECT: ArenaServers_Go(); break; case ID_CREATE: UI_StartServerMenu(); break; case ID_REFRESH: ArenaServers_StartRefresh(); break; case ID_BACK: ArenaServers_StopRefresh(); ArenaServers_SaveChanges(); UI_PopMenu(); break; case ID_REMOVE: ArenaServers_Remove(); ArenaServers_UpdateMenu(); break; } }
/* ================= ArenaServers_Event ================= */ static void ArenaServers_Event( void* ptr, int event ) { int id; id = ((menucommon_s*)ptr)->id; if( event != QM_ACTIVATED && id != ID_LIST ) { return; } switch( id ) { case ID_MASTER: g_arenaservers.master.curvalue = ArenaServers_SetType(g_arenaservers.master.curvalue); trap_Cvar_SetValue( "ui_browserMaster", g_arenaservers.master.curvalue); break; case ID_GAMETYPE: trap_Cvar_SetValue( "ui_browserGameType", g_arenaservers.gametype.curvalue ); g_gametype = g_arenaservers.gametype.curvalue; ArenaServers_UpdateMenu(); break; case ID_SORTKEY: trap_Cvar_SetValue( "ui_browserSortKey", g_arenaservers.sortkey.curvalue ); ArenaServers_Sort( g_arenaservers.sortkey.curvalue ); ArenaServers_UpdateMenu(); break; case ID_SHOW_FULL: trap_Cvar_SetValue( "ui_browserShowFull", g_arenaservers.showfull.curvalue ); g_fullservers = g_arenaservers.showfull.curvalue; ArenaServers_UpdateMenu(); break; case ID_SHOW_EMPTY: trap_Cvar_SetValue( "ui_browserShowEmpty", g_arenaservers.showempty.curvalue ); g_emptyservers = g_arenaservers.showempty.curvalue; ArenaServers_UpdateMenu(); break; case ID_ONLY_HUMANS: trap_Cvar_SetValue( "ui_browserOnlyHumans", g_arenaservers.onlyhumans.curvalue ); g_onlyhumans = g_arenaservers.onlyhumans.curvalue; ArenaServers_UpdateMenu(); break; case ID_HIDE_PRIVATE: //trap_Cvar_SetValue( "ui_browserHidePrivate", g_arenaservers.hideprivate.curvalue ); g_hideprivate = g_arenaservers.hideprivate.curvalue; ArenaServers_UpdateMenu(); break; case ID_LIST: if( event == QM_GOTFOCUS ) { ArenaServers_UpdatePicture(); } break; case ID_SCROLL_UP: ScrollList_Key( &g_arenaservers.list, K_UPARROW ); break; case ID_SCROLL_DOWN: ScrollList_Key( &g_arenaservers.list, K_DOWNARROW ); break; case ID_BACK: ArenaServers_StopRefresh(); ArenaServers_SaveChanges(); UI_PopMenu(); break; case ID_REFRESH: ArenaServers_StartRefresh(); break; case ID_SPECIFY: UI_SpecifyServerMenu(); break; case ID_CREATE: UI_StartServerMenu( qtrue ); break; case ID_CONNECT: ArenaServers_Go(); break; case ID_REMOVE: ArenaServers_Remove(); ArenaServers_UpdateMenu(); break; } }