/* ================= Controls_ResetDefaults_Action ================= */ static void Controls_ResetDefaults_Action( qboolean result ) { if( !result ) { return; } s_controls.changesmade = qtrue; Controls_SetDefaults(); Controls_Update(); }
/* ================= Controls_ActionEvent ================= */ static void Controls_ActionEvent( void* ptr, int event ) { if (event == QM_LOSTFOCUS) { Controls_UpdateModel( ANIM_IDLE ); } else if (event == QM_GOTFOCUS) { Controls_UpdateModel( g_bindings[((menucommon_s*)ptr)->id].anim ); } else if ((event == QM_ACTIVATED) && !s_controls.waitingforkey) { s_controls.waitingforkey = 1; Controls_Update(); } }
/* ================= Controls_MenuKey ================= */ static sfxHandle_t Controls_MenuKey( int key ) { int id; int i; qboolean found; bind_t* bindptr; found = qfalse; if (!s_controls.waitingforkey) { switch (key) { case K_BACKSPACE: case K_DEL: case K_KP_DEL: key = -1; break; case K_MOUSE2: case K_ESCAPE: if (s_controls.changesmade) Controls_SetConfig(); goto ignorekey; default: goto ignorekey; } } else { if (key & K_CHAR_FLAG) goto ignorekey; switch (key) { case K_ESCAPE: s_controls.waitingforkey = qfalse; Controls_Update(); return menu_null_sound; case '`': goto ignorekey; } } s_controls.changesmade = qtrue; if (key != -1) { // remove from any other bind bindptr = g_bindings; for (i=0; ;i++,bindptr++) { if (!bindptr->label) break; if (bindptr->bind2 == key) bindptr->bind2 = -1; if (bindptr->bind1 == key) { bindptr->bind1 = bindptr->bind2; bindptr->bind2 = -1; } } } // assign key to local store id = ((menucommon_s*)(s_controls.menu.items[s_controls.menu.cursor]))->id; bindptr = g_bindings; for (i=0; ;i++,bindptr++) { if (!bindptr->label) break; if (bindptr->id == id) { found = qtrue; if (key == -1) { if( bindptr->bind1 != -1 ) { trap_Key_SetBinding( bindptr->bind1, "" ); bindptr->bind1 = -1; } if( bindptr->bind2 != -1 ) { trap_Key_SetBinding( bindptr->bind2, "" ); bindptr->bind2 = -1; } } else if (bindptr->bind1 == -1) { bindptr->bind1 = key; } else if (bindptr->bind1 != key && bindptr->bind2 == -1) { bindptr->bind2 = key; } else { trap_Key_SetBinding( bindptr->bind1, "" ); trap_Key_SetBinding( bindptr->bind2, "" ); bindptr->bind1 = key; bindptr->bind2 = -1; } break; } } s_controls.waitingforkey = qfalse; if (found) { Controls_Update(); return menu_null_sound; } ignorekey: return Menu_DefaultKey( &s_controls.menu, key ); }
/* ================= Controls_MenuInit ================= */ static void Controls_MenuInit( void ) { // zero set all our globals memset( &s_controls, 0 ,sizeof(controls_t) ); Controls_Cache(); s_controls.menu.key = Controls_MenuKey; s_controls.menu.wrapAround = qtrue; s_controls.menu.fullscreen = qtrue; s_controls.menu.noPushSelect = qtrue; s_controls.menu.bgparts = BGP_CONTROLBG|BGP_SIMPLEBG; s_controls.looking.generic.type = MTYPE_BITMAP; s_controls.looking.generic.name = LOOK0; s_controls.looking.generic.flags = QMF_LEFT_JUSTIFY|QMF_HIGHLIGHT_IF_FOCUS; s_controls.looking.generic.x = 412; s_controls.looking.generic.y = 40; s_controls.looking.generic.id = ID_LOOKING; s_controls.looking.generic.callback = Controls_MenuEvent; s_controls.looking.width = 75; s_controls.looking.height = 40; s_controls.looking.focuspic = LOOK1; s_controls.looking.focuspicinstead = qtrue; // +/-... Rumrücken für Ente s_controls.movement.generic.type = MTYPE_BITMAP; s_controls.movement.generic.name = MOVEMENT0; s_controls.movement.generic.flags = QMF_LEFT_JUSTIFY|QMF_HIGHLIGHT_IF_FOCUS; s_controls.movement.generic.x = 509-9; s_controls.movement.generic.y = 50-5; s_controls.movement.generic.id = ID_MOVEMENT; s_controls.movement.generic.callback= Controls_MenuEvent; s_controls.movement.width = 80; s_controls.movement.height = 40; s_controls.movement.focuspic = MOVEMENT1; s_controls.movement.focuspicinstead = qtrue; s_controls.weapons.generic.type = MTYPE_BITMAP; s_controls.weapons.generic.name = WEAPONS0; s_controls.weapons.generic.flags = QMF_LEFT_JUSTIFY|QMF_HIGHLIGHT_IF_FOCUS; s_controls.weapons.generic.x = 480-2; s_controls.weapons.generic.y = 105-15; s_controls.weapons.generic.id = ID_WEAPONS; s_controls.weapons.generic.callback = Controls_MenuEvent; s_controls.weapons.width = 105; s_controls.weapons.height = 40; s_controls.weapons.focuspic = WEAPONS1; s_controls.weapons.focuspicinstead = qtrue; s_controls.misc.generic.type = MTYPE_BITMAP; s_controls.misc.generic.name = MISC0; s_controls.misc.generic.flags = QMF_LEFT_JUSTIFY|QMF_HIGHLIGHT_IF_FOCUS; s_controls.misc.generic.x = 398+3; s_controls.misc.generic.y = 88-9; s_controls.misc.generic.id = ID_MISC; s_controls.misc.generic.callback = Controls_MenuEvent; s_controls.misc.width = 75; s_controls.misc.height = 40; s_controls.misc.focuspic = MISC1; s_controls.misc.focuspicinstead = qtrue; s_controls.back.generic.type = MTYPE_BITMAP; s_controls.back.generic.name = ART_BACK0; s_controls.back.generic.flags = QMF_LEFT_JUSTIFY|QMF_PULSEIFFOCUS; s_controls.back.generic.x = 549; s_controls.back.generic.y = 440; s_controls.back.generic.id = ID_BACK; s_controls.back.generic.callback = Controls_MenuEvent; s_controls.back.width = 80; s_controls.back.height = 40; s_controls.back.focuspic = ART_BACK1; s_controls.back.focuspicinstead = qtrue; s_controls.walkforward.generic.type = MTYPE_ACTION; s_controls.walkforward.generic.flags = QMF_LEFT_JUSTIFY|QMF_GRAYED|QMF_HIDDEN; s_controls.walkforward.generic.callback = Controls_ActionEvent; s_controls.walkforward.generic.ownerdraw = Controls_DrawKeyBinding; s_controls.walkforward.generic.id = ID_FORWARD; s_controls.backpedal.generic.type = MTYPE_ACTION; s_controls.backpedal.generic.flags = QMF_LEFT_JUSTIFY|QMF_GRAYED|QMF_HIDDEN; s_controls.backpedal.generic.callback = Controls_ActionEvent; s_controls.backpedal.generic.ownerdraw = Controls_DrawKeyBinding; s_controls.backpedal.generic.id = ID_BACKPEDAL; s_controls.stepleft.generic.type = MTYPE_ACTION; s_controls.stepleft.generic.flags = QMF_LEFT_JUSTIFY|QMF_GRAYED|QMF_HIDDEN; s_controls.stepleft.generic.callback = Controls_ActionEvent; s_controls.stepleft.generic.ownerdraw = Controls_DrawKeyBinding; s_controls.stepleft.generic.id = ID_MOVELEFT; s_controls.stepright.generic.type = MTYPE_ACTION; s_controls.stepright.generic.flags = QMF_LEFT_JUSTIFY|QMF_GRAYED|QMF_HIDDEN; s_controls.stepright.generic.callback = Controls_ActionEvent; s_controls.stepright.generic.ownerdraw = Controls_DrawKeyBinding; s_controls.stepright.generic.id = ID_MOVERIGHT; s_controls.moveup.generic.type = MTYPE_ACTION; s_controls.moveup.generic.flags = QMF_LEFT_JUSTIFY|QMF_GRAYED|QMF_HIDDEN; s_controls.moveup.generic.callback = Controls_ActionEvent; s_controls.moveup.generic.ownerdraw = Controls_DrawKeyBinding; s_controls.moveup.generic.id = ID_MOVEUP; s_controls.movedown.generic.type = MTYPE_ACTION; s_controls.movedown.generic.flags = QMF_LEFT_JUSTIFY|QMF_GRAYED|QMF_HIDDEN; s_controls.movedown.generic.callback = Controls_ActionEvent; s_controls.movedown.generic.ownerdraw = Controls_DrawKeyBinding; s_controls.movedown.generic.id = ID_MOVEDOWN; s_controls.run.generic.type = MTYPE_ACTION; s_controls.run.generic.flags = QMF_LEFT_JUSTIFY|QMF_GRAYED|QMF_HIDDEN; s_controls.run.generic.callback = Controls_ActionEvent; s_controls.run.generic.ownerdraw = Controls_DrawKeyBinding; s_controls.run.generic.id = ID_SPEED; s_controls.chainsaw.generic.type = MTYPE_ACTION; s_controls.chainsaw.generic.flags = QMF_LEFT_JUSTIFY|QMF_GRAYED|QMF_HIDDEN; s_controls.chainsaw.generic.callback = Controls_ActionEvent; s_controls.chainsaw.generic.ownerdraw = Controls_DrawKeyBinding; s_controls.chainsaw.generic.id = ID_WEAPON1; s_controls.machinegun.generic.type = MTYPE_ACTION; s_controls.machinegun.generic.flags = QMF_LEFT_JUSTIFY|QMF_GRAYED|QMF_HIDDEN; s_controls.machinegun.generic.callback = Controls_ActionEvent; s_controls.machinegun.generic.ownerdraw = Controls_DrawKeyBinding; s_controls.machinegun.generic.id = ID_WEAPON2; s_controls.shotgun.generic.type = MTYPE_ACTION; s_controls.shotgun.generic.flags = QMF_LEFT_JUSTIFY|QMF_GRAYED|QMF_HIDDEN; s_controls.shotgun.generic.callback = Controls_ActionEvent; s_controls.shotgun.generic.ownerdraw = Controls_DrawKeyBinding; s_controls.shotgun.generic.id = ID_WEAPON3; s_controls.grenadelauncher.generic.type = MTYPE_ACTION; s_controls.grenadelauncher.generic.flags = QMF_LEFT_JUSTIFY|QMF_GRAYED|QMF_HIDDEN; s_controls.grenadelauncher.generic.callback = Controls_ActionEvent; s_controls.grenadelauncher.generic.ownerdraw = Controls_DrawKeyBinding; s_controls.grenadelauncher.generic.id = ID_WEAPON4; s_controls.rocketlauncher.generic.type = MTYPE_ACTION; s_controls.rocketlauncher.generic.flags = QMF_LEFT_JUSTIFY|QMF_GRAYED|QMF_HIDDEN; s_controls.rocketlauncher.generic.callback = Controls_ActionEvent; s_controls.rocketlauncher.generic.ownerdraw = Controls_DrawKeyBinding; s_controls.rocketlauncher.generic.id = ID_WEAPON5; s_controls.lightning.generic.type = MTYPE_ACTION; s_controls.lightning.generic.flags = QMF_LEFT_JUSTIFY|QMF_GRAYED|QMF_HIDDEN; s_controls.lightning.generic.callback = Controls_ActionEvent; s_controls.lightning.generic.ownerdraw = Controls_DrawKeyBinding; s_controls.lightning.generic.id = ID_WEAPON6; s_controls.railgun.generic.type = MTYPE_ACTION; s_controls.railgun.generic.flags = QMF_LEFT_JUSTIFY|QMF_GRAYED|QMF_HIDDEN; s_controls.railgun.generic.callback = Controls_ActionEvent; s_controls.railgun.generic.ownerdraw = Controls_DrawKeyBinding; s_controls.railgun.generic.id = ID_WEAPON7; s_controls.plasma.generic.type = MTYPE_ACTION; s_controls.plasma.generic.flags = QMF_LEFT_JUSTIFY|QMF_GRAYED|QMF_HIDDEN; s_controls.plasma.generic.callback = Controls_ActionEvent; s_controls.plasma.generic.ownerdraw = Controls_DrawKeyBinding; s_controls.plasma.generic.id = ID_WEAPON8; s_controls.bfg.generic.type = MTYPE_ACTION; s_controls.bfg.generic.flags = QMF_LEFT_JUSTIFY|QMF_GRAYED|QMF_HIDDEN; s_controls.bfg.generic.callback = Controls_ActionEvent; s_controls.bfg.generic.ownerdraw = Controls_DrawKeyBinding; s_controls.bfg.generic.id = ID_WEAPON9; s_controls.attack.generic.type = MTYPE_ACTION; s_controls.attack.generic.flags = QMF_LEFT_JUSTIFY|QMF_GRAYED|QMF_HIDDEN; s_controls.attack.generic.callback = Controls_ActionEvent; s_controls.attack.generic.ownerdraw = Controls_DrawKeyBinding; s_controls.attack.generic.id = ID_ATTACK; s_controls.prevweapon.generic.type = MTYPE_ACTION; s_controls.prevweapon.generic.flags = QMF_LEFT_JUSTIFY|QMF_GRAYED|QMF_HIDDEN; s_controls.prevweapon.generic.callback = Controls_ActionEvent; s_controls.prevweapon.generic.ownerdraw = Controls_DrawKeyBinding; s_controls.prevweapon.generic.id = ID_WEAPPREV; s_controls.nextweapon.generic.type = MTYPE_ACTION; s_controls.nextweapon.generic.flags = QMF_LEFT_JUSTIFY|QMF_GRAYED|QMF_HIDDEN; s_controls.nextweapon.generic.callback = Controls_ActionEvent; s_controls.nextweapon.generic.ownerdraw = Controls_DrawKeyBinding; s_controls.nextweapon.generic.id = ID_WEAPNEXT; s_controls.useitem.generic.type = MTYPE_ACTION; s_controls.useitem.generic.flags = QMF_LEFT_JUSTIFY|QMF_GRAYED|QMF_HIDDEN; s_controls.useitem.generic.callback = Controls_ActionEvent; s_controls.useitem.generic.ownerdraw = Controls_DrawKeyBinding; s_controls.useitem.generic.id = ID_USEITEM; s_controls.useitem.generic.toolTip = "Press this key in game to throw killerducks / use floater / deploy bambam and place boomies (you must look at the ground to place a boomie)."; s_controls.showscores.generic.type = MTYPE_ACTION; s_controls.showscores.generic.flags = QMF_LEFT_JUSTIFY|QMF_GRAYED|QMF_HIDDEN; s_controls.showscores.generic.callback = Controls_ActionEvent; s_controls.showscores.generic.ownerdraw = Controls_DrawKeyBinding; s_controls.showscores.generic.id = ID_SHOWSCORES; s_controls.invertmouse.generic.type = MTYPE_RADIOBUTTON; s_controls.invertmouse.generic.flags = QMF_SMALLFONT; s_controls.invertmouse.generic.x = SCREEN_WIDTH/2; s_controls.invertmouse.generic.name = "invert mouse"; s_controls.invertmouse.generic.id = ID_INVERTMOUSE; s_controls.invertmouse.generic.callback = Controls_MenuEvent; s_controls.invertmouse.generic.statusbar = Controls_StatusBar; s_controls.invertmouse.generic.toolTip = "Switch on to invert the directions of your mouse (not recommended)."; s_controls.smoothmouse.generic.type = MTYPE_RADIOBUTTON; s_controls.smoothmouse.generic.flags = QMF_SMALLFONT; s_controls.smoothmouse.generic.x = SCREEN_WIDTH/2; s_controls.smoothmouse.generic.name = "smooth mouse"; s_controls.smoothmouse.generic.id = ID_SMOOTHMOUSE; s_controls.smoothmouse.generic.callback = Controls_MenuEvent; s_controls.smoothmouse.generic.statusbar = Controls_StatusBar; s_controls.smoothmouse.generic.toolTip = "Switch on to smooth out movement when using the mouse to look around."; s_controls.autoswitch.generic.type = MTYPE_RADIOBUTTON; s_controls.autoswitch.generic.flags = QMF_SMALLFONT; s_controls.autoswitch.generic.x = SCREEN_WIDTH/2; s_controls.autoswitch.generic.name = "auto switch weapons"; s_controls.autoswitch.generic.id = ID_AUTOSWITCH; s_controls.autoswitch.generic.callback = Controls_MenuEvent; s_controls.autoswitch.generic.statusbar = Controls_StatusBar; s_controls.autoswitch.generic.toolTip = "If enabled, your character will automatically switch to the weapon that you run into to pick up."; s_controls.sensitivity.generic.type = MTYPE_SLIDER; s_controls.sensitivity.generic.x = SCREEN_WIDTH/2; s_controls.sensitivity.generic.flags = QMF_SMALLFONT; s_controls.sensitivity.generic.name = "mouse speed"; s_controls.sensitivity.generic.id = ID_MOUSESPEED; s_controls.sensitivity.generic.callback = Controls_MenuEvent; s_controls.sensitivity.minvalue = 2; s_controls.sensitivity.maxvalue = 30; s_controls.sensitivity.generic.statusbar = Controls_StatusBar; s_controls.zoom.generic.type = MTYPE_ACTION; s_controls.zoom.generic.flags = QMF_LEFT_JUSTIFY|QMF_GRAYED|QMF_HIDDEN; s_controls.zoom.generic.callback = Controls_ActionEvent; s_controls.zoom.generic.ownerdraw = Controls_DrawKeyBinding; s_controls.zoom.generic.id = ID_ZOOM; s_controls.zoom.generic.toolTip = "Press this key in game to enable zoom mode for weapons that support it."; s_controls.gesture.generic.type = MTYPE_ACTION; s_controls.gesture.generic.flags = QMF_LEFT_JUSTIFY|QMF_GRAYED|QMF_HIDDEN; s_controls.gesture.generic.callback = Controls_ActionEvent; s_controls.gesture.generic.ownerdraw = Controls_DrawKeyBinding; s_controls.gesture.generic.id = ID_GESTURE; s_controls.gesture.generic.toolTip = "Press this key in game to taunt other players."; s_controls.chat.generic.type = MTYPE_ACTION; s_controls.chat.generic.flags = QMF_LEFT_JUSTIFY|QMF_GRAYED|QMF_HIDDEN; s_controls.chat.generic.callback = Controls_ActionEvent; s_controls.chat.generic.ownerdraw = Controls_DrawKeyBinding; s_controls.chat.generic.id = ID_CHAT; s_controls.chat.generic.toolTip = "Press this key in game before typing a message to text chat to all players in the game."; s_controls.chat2.generic.type = MTYPE_ACTION; s_controls.chat2.generic.flags = QMF_LEFT_JUSTIFY|QMF_GRAYED|QMF_HIDDEN; s_controls.chat2.generic.callback = Controls_ActionEvent; s_controls.chat2.generic.ownerdraw = Controls_DrawKeyBinding; s_controls.chat2.generic.id = ID_CHAT2; s_controls.chat3.generic.type = MTYPE_ACTION; s_controls.chat3.generic.flags = QMF_LEFT_JUSTIFY|QMF_GRAYED|QMF_HIDDEN; s_controls.chat3.generic.callback = Controls_ActionEvent; s_controls.chat3.generic.ownerdraw = Controls_DrawKeyBinding; // s_controls.chat3.generic.id = ID_CHAT3; s_controls.chat3.generic.id = ID_VOTEYES; s_controls.chat3.generic.toolTip = "Cast a yes vote to a vote in progress (votes appear top left of the screen)."; s_controls.chat4.generic.type = MTYPE_ACTION; s_controls.chat4.generic.flags = QMF_LEFT_JUSTIFY|QMF_GRAYED|QMF_HIDDEN; s_controls.chat4.generic.callback = Controls_ActionEvent; s_controls.chat4.generic.ownerdraw = Controls_DrawKeyBinding; // s_controls.chat4.generic.id = ID_CHAT4; s_controls.chat4.generic.id = ID_VOTENO; s_controls.chat4.generic.toolTip = "Cast a no vote to a vote in progress (votes appear top left of the screen)."; s_controls.music.generic.type = MTYPE_ACTION; s_controls.music.generic.flags = QMF_LEFT_JUSTIFY|QMF_GRAYED|QMF_HIDDEN; s_controls.music.generic.callback = Controls_ActionEvent; s_controls.music.generic.ownerdraw = Controls_DrawKeyBinding; s_controls.music.generic.id = ID_MUSIC; s_controls.nextSong.generic.type = MTYPE_ACTION; s_controls.nextSong.generic.flags = QMF_LEFT_JUSTIFY|QMF_GRAYED|QMF_HIDDEN; s_controls.nextSong.generic.callback = Controls_ActionEvent; s_controls.nextSong.generic.ownerdraw = Controls_DrawKeyBinding; s_controls.nextSong.generic.id = ID_NEXTSONG; s_controls.dropCart.generic.type = MTYPE_ACTION; s_controls.dropCart.generic.flags = QMF_LEFT_JUSTIFY|QMF_GRAYED|QMF_HIDDEN; s_controls.dropCart.generic.callback = Controls_ActionEvent; s_controls.dropCart.generic.ownerdraw = Controls_DrawKeyBinding; s_controls.dropCart.generic.id = ID_DROPCART; s_controls.thirdPerson.generic.type = MTYPE_ACTION; s_controls.thirdPerson.generic.flags = QMF_LEFT_JUSTIFY|QMF_GRAYED|QMF_HIDDEN; s_controls.thirdPerson.generic.callback = Controls_ActionEvent; s_controls.thirdPerson.generic.ownerdraw = Controls_DrawKeyBinding; s_controls.thirdPerson.generic.id = ID_3RDPERSON; s_controls.thirdPerson.generic.toolTip = "Press this key in game to switch to third person view, press again to switch back to first person view."; s_controls.pushToTalk.generic.type = MTYPE_ACTION; s_controls.pushToTalk.generic.flags = QMF_LEFT_JUSTIFY|QMF_GRAYED|QMF_HIDDEN; s_controls.pushToTalk.generic.callback = Controls_ActionEvent; s_controls.pushToTalk.generic.ownerdraw = Controls_DrawKeyBinding; s_controls.pushToTalk.generic.id = ID_PUSH2TALK; s_controls.pushToTalk.generic.toolTip = "Press and hold this key to talk to other players through your microphone. This is not required if your microphone setting is set to open."; s_controls.ServerInfo.generic.type = MTYPE_ACTION; s_controls.ServerInfo.generic.flags = QMF_LEFT_JUSTIFY|QMF_GRAYED|QMF_HIDDEN; s_controls.ServerInfo.generic.callback = Controls_ActionEvent; s_controls.ServerInfo.generic.ownerdraw = Controls_DrawKeyBinding; s_controls.ServerInfo.generic.id = ID_SERVERINFO; s_controls.ServerInfo.generic.toolTip = "Press this key in game to display server settings information."; s_controls.helpGametype.generic.type = MTYPE_ACTION; s_controls.helpGametype.generic.flags = ( QMF_LEFT_JUSTIFY | QMF_GRAYED | QMF_HIDDEN ); s_controls.helpGametype.generic.callback = Controls_ActionEvent; s_controls.helpGametype.generic.ownerdraw = Controls_DrawKeyBinding; s_controls.helpGametype.generic.id = ID_HELP_GAMETYPE; s_controls.helpGametype.generic.toolTip = "Press this key in game to see a basic description of the rules of the gametype set."; s_controls.helpItems.generic.type = MTYPE_ACTION; s_controls.helpItems.generic.flags = ( QMF_LEFT_JUSTIFY | QMF_GRAYED | QMF_HIDDEN ); s_controls.helpItems.generic.callback = Controls_ActionEvent; s_controls.helpItems.generic.ownerdraw = Controls_DrawKeyBinding; s_controls.helpItems.generic.id = ID_HELP_ITEMS; s_controls.helpItems.generic.toolTip = "Press this key in game to see information on what the weapons / powerups / items and icons are."; Menu_AddItem( &s_controls.menu, &s_controls.looking ); Menu_AddItem( &s_controls.menu, &s_controls.movement ); Menu_AddItem( &s_controls.menu, &s_controls.weapons ); Menu_AddItem( &s_controls.menu, &s_controls.misc ); Menu_AddItem( &s_controls.menu, &s_controls.sensitivity ); Menu_AddItem( &s_controls.menu, &s_controls.smoothmouse ); Menu_AddItem( &s_controls.menu, &s_controls.invertmouse ); Menu_AddItem( &s_controls.menu, &s_controls.zoom ); Menu_AddItem( &s_controls.menu, &s_controls.run ); Menu_AddItem( &s_controls.menu, &s_controls.walkforward ); Menu_AddItem( &s_controls.menu, &s_controls.backpedal ); Menu_AddItem( &s_controls.menu, &s_controls.stepleft ); Menu_AddItem( &s_controls.menu, &s_controls.stepright ); Menu_AddItem( &s_controls.menu, &s_controls.moveup ); Menu_AddItem( &s_controls.menu, &s_controls.movedown ); Menu_AddItem( &s_controls.menu, &s_controls.attack ); Menu_AddItem( &s_controls.menu, &s_controls.nextweapon ); Menu_AddItem( &s_controls.menu, &s_controls.prevweapon ); Menu_AddItem( &s_controls.menu, &s_controls.autoswitch ); Menu_AddItem( &s_controls.menu, &s_controls.chainsaw ); Menu_AddItem( &s_controls.menu, &s_controls.machinegun ); Menu_AddItem( &s_controls.menu, &s_controls.shotgun ); Menu_AddItem( &s_controls.menu, &s_controls.grenadelauncher ); Menu_AddItem( &s_controls.menu, &s_controls.rocketlauncher ); Menu_AddItem( &s_controls.menu, &s_controls.lightning ); Menu_AddItem( &s_controls.menu, &s_controls.railgun ); Menu_AddItem( &s_controls.menu, &s_controls.plasma ); Menu_AddItem( &s_controls.menu, &s_controls.bfg ); Menu_AddItem( &s_controls.menu, &s_controls.showscores ); Menu_AddItem( &s_controls.menu, &s_controls.useitem ); Menu_AddItem( &s_controls.menu, &s_controls.gesture ); Menu_AddItem( &s_controls.menu, &s_controls.chat ); Menu_AddItem( &s_controls.menu, &s_controls.chat2 ); Menu_AddItem( &s_controls.menu, &s_controls.chat3 ); Menu_AddItem( &s_controls.menu, &s_controls.chat4 ); Menu_AddItem( &s_controls.menu, &s_controls.music ); Menu_AddItem( &s_controls.menu, &s_controls.nextSong ); Menu_AddItem( &s_controls.menu, &s_controls.dropCart ); Menu_AddItem( &s_controls.menu, &s_controls.ServerInfo ); Menu_AddItem( &s_controls.menu, &s_controls.thirdPerson ); Menu_AddItem( &s_controls.menu, &s_controls.helpGametype ); Menu_AddItem( &s_controls.menu, &s_controls.helpItems ); Menu_AddItem( &s_controls.menu, &s_controls.pushToTalk ); Menu_AddItem( &s_controls.menu, &s_controls.back ); // initialize the configurable cvars Controls_InitCvars(); // initialize the current config Controls_GetConfig(); // intialize the weapons // Controls_InitWeapons (); // initial default section s_controls.section = C_LOOKING; // update the ui Controls_Update(); }
/* ================= Controls_MenuEvent ================= */ static void Controls_MenuEvent( void* ptr, int event ) { switch (((menucommon_s*)ptr)->id) { case ID_MOVEMENT: if (event == QM_ACTIVATED) { s_controls.section = C_MOVEMENT; Controls_Update(); } break; case ID_LOOKING: if (event == QM_ACTIVATED) { s_controls.section = C_LOOKING; Controls_Update(); } break; case ID_WEAPONS: if (event == QM_ACTIVATED) { s_controls.section = C_WEAPONS; Controls_Update(); } break; case ID_MISC: if (event == QM_ACTIVATED) { s_controls.section = C_MISC; Controls_Update(); } break; case ID_DEFAULTS: if (event == QM_ACTIVATED) { UI_ConfirmMenu( "SET TO DEFAULTS?", Controls_ResetDefaults_Draw, Controls_ResetDefaults_Action ); } break; case ID_BACK: if (event == QM_ACTIVATED) { if (s_controls.changesmade) Controls_SetConfig(); UI_PopMenu(); } break; case ID_SAVEANDEXIT: if (event == QM_ACTIVATED) { Controls_SetConfig(); UI_PopMenu(); } break; case ID_EXIT: if (event == QM_ACTIVATED) { UI_PopMenu(); } break; case ID_MOUSESPEED: case ID_INVERTMOUSE: case ID_SMOOTHMOUSE: case ID_AUTOSWITCH: if (event == QM_ACTIVATED) { s_controls.changesmade = qtrue; } break; } }
/* ================= Controls_MenuInit ================= */ static void Controls_MenuInit(void) { static char playername[32]; // zero set all our globals memset(&s_controls, 0 ,sizeof(controls_t)); Controls_Cache(); s_controls.menu.key = Controls_MenuKey; s_controls.menu.wrapAround = qtrue; s_controls.menu.fullscreen = qtrue; s_controls.banner.generic.type = MTYPE_BTEXT; s_controls.banner.generic.flags = QMF_CENTER_JUSTIFY; s_controls.banner.generic.x = 320; s_controls.banner.generic.y = 16; s_controls.banner.string = "CONTROLS"; s_controls.banner.color = color_white; s_controls.banner.style = UI_CENTER; s_controls.framel.generic.type = MTYPE_BITMAP; s_controls.framel.generic.name = ART_FRAMEL; s_controls.framel.generic.flags = QMF_LEFT_JUSTIFY|QMF_INACTIVE; s_controls.framel.generic.x = 0; s_controls.framel.generic.y = 78; s_controls.framel.width = 256; s_controls.framel.height = 329; s_controls.framer.generic.type = MTYPE_BITMAP; s_controls.framer.generic.name = ART_FRAMER; s_controls.framer.generic.flags = QMF_LEFT_JUSTIFY|QMF_INACTIVE; s_controls.framer.generic.x = 376; s_controls.framer.generic.y = 76; s_controls.framer.width = 256; s_controls.framer.height = 334; s_controls.looking.generic.type = MTYPE_PTEXT; s_controls.looking.generic.flags = QMF_RIGHT_JUSTIFY|QMF_PULSEIFFOCUS; s_controls.looking.generic.id = ID_LOOKING; s_controls.looking.generic.callback = Controls_MenuEvent; s_controls.looking.generic.x = 152; s_controls.looking.generic.y = 240 - 2 * PROP_HEIGHT; s_controls.looking.string = "LOOK"; s_controls.looking.style = UI_RIGHT; s_controls.looking.color = color_red; s_controls.movement.generic.type = MTYPE_PTEXT; s_controls.movement.generic.flags = QMF_RIGHT_JUSTIFY|QMF_PULSEIFFOCUS; s_controls.movement.generic.id = ID_MOVEMENT; s_controls.movement.generic.callback = Controls_MenuEvent; s_controls.movement.generic.x = 152; s_controls.movement.generic.y = 240 - PROP_HEIGHT; s_controls.movement.string = "MOVE"; s_controls.movement.style = UI_RIGHT; s_controls.movement.color = color_red; s_controls.weapons.generic.type = MTYPE_PTEXT; s_controls.weapons.generic.flags = QMF_RIGHT_JUSTIFY|QMF_PULSEIFFOCUS; s_controls.weapons.generic.id = ID_WEAPONS; s_controls.weapons.generic.callback = Controls_MenuEvent; s_controls.weapons.generic.x = 152; s_controls.weapons.generic.y = 240; s_controls.weapons.string = "SHOOT"; s_controls.weapons.style = UI_RIGHT; s_controls.weapons.color = color_red; s_controls.misc.generic.type = MTYPE_PTEXT; s_controls.misc.generic.flags = QMF_RIGHT_JUSTIFY|QMF_PULSEIFFOCUS; s_controls.misc.generic.id = ID_MISC; s_controls.misc.generic.callback = Controls_MenuEvent; s_controls.misc.generic.x = 152; s_controls.misc.generic.y = 240 + PROP_HEIGHT; s_controls.misc.string = "MISC"; s_controls.misc.style = UI_RIGHT; s_controls.misc.color = color_red; s_controls.back.generic.type = MTYPE_BITMAP; s_controls.back.generic.name = ART_BACK0; s_controls.back.generic.flags = QMF_LEFT_JUSTIFY|QMF_PULSEIFFOCUS; s_controls.back.generic.x = 0; s_controls.back.generic.y = 480-64; s_controls.back.generic.id = ID_BACK; s_controls.back.generic.callback = Controls_MenuEvent; s_controls.back.width = 128; s_controls.back.height = 64; s_controls.back.focuspic = ART_BACK1; s_controls.player.generic.type = MTYPE_BITMAP; s_controls.player.generic.flags = QMF_INACTIVE; s_controls.player.generic.ownerdraw = Controls_DrawPlayer; s_controls.player.generic.x = 400; s_controls.player.generic.y = -40; s_controls.player.width = 32*10; s_controls.player.height = 56*10; s_controls.walkforward.generic.type = MTYPE_ACTION; s_controls.walkforward.generic.flags = QMF_LEFT_JUSTIFY|QMF_PULSEIFFOCUS|QMF_GRAYED|QMF_HIDDEN; s_controls.walkforward.generic.callback = Controls_ActionEvent; s_controls.walkforward.generic.ownerdraw = Controls_DrawKeyBinding; s_controls.walkforward.generic.id = ID_FORWARD; s_controls.backpedal.generic.type = MTYPE_ACTION; s_controls.backpedal.generic.flags = QMF_LEFT_JUSTIFY|QMF_PULSEIFFOCUS|QMF_GRAYED|QMF_HIDDEN; s_controls.backpedal.generic.callback = Controls_ActionEvent; s_controls.backpedal.generic.ownerdraw = Controls_DrawKeyBinding; s_controls.backpedal.generic.id = ID_BACKPEDAL; s_controls.stepleft.generic.type = MTYPE_ACTION; s_controls.stepleft.generic.flags = QMF_LEFT_JUSTIFY|QMF_PULSEIFFOCUS|QMF_GRAYED|QMF_HIDDEN; s_controls.stepleft.generic.callback = Controls_ActionEvent; s_controls.stepleft.generic.ownerdraw = Controls_DrawKeyBinding; s_controls.stepleft.generic.id = ID_MOVELEFT; s_controls.stepright.generic.type = MTYPE_ACTION; s_controls.stepright.generic.flags = QMF_LEFT_JUSTIFY|QMF_PULSEIFFOCUS|QMF_GRAYED|QMF_HIDDEN; s_controls.stepright.generic.callback = Controls_ActionEvent; s_controls.stepright.generic.ownerdraw = Controls_DrawKeyBinding; s_controls.stepright.generic.id = ID_MOVERIGHT; s_controls.moveup.generic.type = MTYPE_ACTION; s_controls.moveup.generic.flags = QMF_LEFT_JUSTIFY|QMF_PULSEIFFOCUS|QMF_GRAYED|QMF_HIDDEN; s_controls.moveup.generic.callback = Controls_ActionEvent; s_controls.moveup.generic.ownerdraw = Controls_DrawKeyBinding; s_controls.moveup.generic.id = ID_MOVEUP; s_controls.movedown.generic.type = MTYPE_ACTION; s_controls.movedown.generic.flags = QMF_LEFT_JUSTIFY|QMF_PULSEIFFOCUS|QMF_GRAYED|QMF_HIDDEN; s_controls.movedown.generic.callback = Controls_ActionEvent; s_controls.movedown.generic.ownerdraw = Controls_DrawKeyBinding; s_controls.movedown.generic.id = ID_MOVEDOWN; s_controls.turnleft.generic.type = MTYPE_ACTION; s_controls.turnleft.generic.flags = QMF_LEFT_JUSTIFY|QMF_PULSEIFFOCUS|QMF_GRAYED|QMF_HIDDEN; s_controls.turnleft.generic.callback = Controls_ActionEvent; s_controls.turnleft.generic.ownerdraw = Controls_DrawKeyBinding; s_controls.turnleft.generic.id = ID_LEFT; s_controls.turnright.generic.type = MTYPE_ACTION; s_controls.turnright.generic.flags = QMF_LEFT_JUSTIFY|QMF_PULSEIFFOCUS|QMF_GRAYED|QMF_HIDDEN; s_controls.turnright.generic.callback = Controls_ActionEvent; s_controls.turnright.generic.ownerdraw = Controls_DrawKeyBinding; s_controls.turnright.generic.id = ID_RIGHT; s_controls.sidestep.generic.type = MTYPE_ACTION; s_controls.sidestep.generic.flags = QMF_LEFT_JUSTIFY|QMF_PULSEIFFOCUS|QMF_GRAYED|QMF_HIDDEN; s_controls.sidestep.generic.callback = Controls_ActionEvent; s_controls.sidestep.generic.ownerdraw = Controls_DrawKeyBinding; s_controls.sidestep.generic.id = ID_STRAFE; s_controls.run.generic.type = MTYPE_ACTION; s_controls.run.generic.flags = QMF_LEFT_JUSTIFY|QMF_PULSEIFFOCUS|QMF_GRAYED|QMF_HIDDEN; s_controls.run.generic.callback = Controls_ActionEvent; s_controls.run.generic.ownerdraw = Controls_DrawKeyBinding; s_controls.run.generic.id = ID_SPEED; s_controls.DropGun.generic.type = MTYPE_ACTION; s_controls.DropGun.generic.flags = QMF_LEFT_JUSTIFY|QMF_PULSEIFFOCUS|QMF_GRAYED|QMF_HIDDEN; s_controls.DropGun.generic.callback = Controls_ActionEvent; s_controls.DropGun.generic.ownerdraw = Controls_DrawKeyBinding; s_controls.DropGun.generic.id = ID_DROPGUN; s_controls.SelectGun.generic.type = MTYPE_ACTION; s_controls.SelectGun.generic.flags = QMF_LEFT_JUSTIFY|QMF_PULSEIFFOCUS|QMF_GRAYED|QMF_HIDDEN; s_controls.SelectGun.generic.callback = Controls_ActionEvent; s_controls.SelectGun.generic.ownerdraw = Controls_DrawKeyBinding; s_controls.SelectGun.generic.id = ID_SELECTGUN; s_controls.chainsaw.generic.type = MTYPE_ACTION; s_controls.chainsaw.generic.flags = QMF_LEFT_JUSTIFY|QMF_PULSEIFFOCUS|QMF_GRAYED|QMF_HIDDEN; s_controls.chainsaw.generic.callback = Controls_ActionEvent; s_controls.chainsaw.generic.ownerdraw = Controls_DrawKeyBinding; s_controls.chainsaw.generic.id = ID_WEAPON1; s_controls.machinegun.generic.type = MTYPE_ACTION; s_controls.machinegun.generic.flags = QMF_LEFT_JUSTIFY|QMF_PULSEIFFOCUS|QMF_GRAYED|QMF_HIDDEN; s_controls.machinegun.generic.callback = Controls_ActionEvent; s_controls.machinegun.generic.ownerdraw = Controls_DrawKeyBinding; s_controls.machinegun.generic.id = ID_WEAPON2; s_controls.attack.generic.type = MTYPE_ACTION; s_controls.attack.generic.flags = QMF_LEFT_JUSTIFY|QMF_PULSEIFFOCUS|QMF_GRAYED|QMF_HIDDEN; s_controls.attack.generic.callback = Controls_ActionEvent; s_controls.attack.generic.ownerdraw = Controls_DrawKeyBinding; s_controls.attack.generic.id = ID_ATTACK; s_controls.attack2.generic.type = MTYPE_ACTION; s_controls.attack2.generic.flags = QMF_LEFT_JUSTIFY|QMF_PULSEIFFOCUS|QMF_GRAYED|QMF_HIDDEN; s_controls.attack2.generic.callback = Controls_ActionEvent; s_controls.attack2.generic.ownerdraw = Controls_DrawKeyBinding; s_controls.attack2.generic.id = ID_ATTACK2; s_controls.reload.generic.type = MTYPE_ACTION; s_controls.reload.generic.flags = QMF_LEFT_JUSTIFY|QMF_PULSEIFFOCUS|QMF_GRAYED|QMF_HIDDEN; s_controls.reload.generic.callback = Controls_ActionEvent; s_controls.reload.generic.ownerdraw = Controls_DrawKeyBinding; s_controls.reload.generic.id = ID_RELOAD; s_controls.prevweapon.generic.type = MTYPE_ACTION; s_controls.prevweapon.generic.flags = QMF_LEFT_JUSTIFY|QMF_PULSEIFFOCUS|QMF_GRAYED|QMF_HIDDEN; s_controls.prevweapon.generic.callback = Controls_ActionEvent; s_controls.prevweapon.generic.ownerdraw = Controls_DrawKeyBinding; s_controls.prevweapon.generic.id = ID_WEAPPREV; s_controls.nextweapon.generic.type = MTYPE_ACTION; s_controls.nextweapon.generic.flags = QMF_LEFT_JUSTIFY|QMF_PULSEIFFOCUS|QMF_GRAYED|QMF_HIDDEN; s_controls.nextweapon.generic.callback = Controls_ActionEvent; s_controls.nextweapon.generic.ownerdraw = Controls_DrawKeyBinding; s_controls.nextweapon.generic.id = ID_WEAPNEXT; s_controls.lookup.generic.type = MTYPE_ACTION; s_controls.lookup.generic.flags = QMF_LEFT_JUSTIFY|QMF_PULSEIFFOCUS|QMF_GRAYED|QMF_HIDDEN; s_controls.lookup.generic.callback = Controls_ActionEvent; s_controls.lookup.generic.ownerdraw = Controls_DrawKeyBinding; s_controls.lookup.generic.id = ID_LOOKUP; s_controls.lookdown.generic.type = MTYPE_ACTION; s_controls.lookdown.generic.flags = QMF_LEFT_JUSTIFY|QMF_PULSEIFFOCUS|QMF_GRAYED|QMF_HIDDEN; s_controls.lookdown.generic.callback = Controls_ActionEvent; s_controls.lookdown.generic.ownerdraw = Controls_DrawKeyBinding; s_controls.lookdown.generic.id = ID_LOOKDOWN; s_controls.mouselook.generic.type = MTYPE_ACTION; s_controls.mouselook.generic.flags = QMF_LEFT_JUSTIFY|QMF_HIGHLIGHT_IF_FOCUS|QMF_GRAYED|QMF_HIDDEN; s_controls.mouselook.generic.callback = Controls_ActionEvent; s_controls.mouselook.generic.ownerdraw = Controls_DrawKeyBinding; s_controls.mouselook.generic.id = ID_MOUSELOOK; s_controls.freelook.generic.type = MTYPE_RADIOBUTTON; s_controls.freelook.generic.flags = QMF_SMALLFONT; s_controls.freelook.generic.x = SCREEN_WIDTH/2; s_controls.freelook.generic.name = "free look"; s_controls.freelook.generic.id = ID_FREELOOK; s_controls.freelook.generic.callback = Controls_MenuEvent; s_controls.freelook.generic.statusbar = Controls_StatusBar; s_controls.centerview.generic.type = MTYPE_ACTION; s_controls.centerview.generic.flags = QMF_LEFT_JUSTIFY|QMF_PULSEIFFOCUS|QMF_GRAYED|QMF_HIDDEN; s_controls.centerview.generic.callback = Controls_ActionEvent; s_controls.centerview.generic.ownerdraw = Controls_DrawKeyBinding; s_controls.centerview.generic.id = ID_CENTERVIEW; s_controls.zoomview.generic.type = MTYPE_ACTION; s_controls.zoomview.generic.flags = QMF_LEFT_JUSTIFY|QMF_PULSEIFFOCUS|QMF_GRAYED|QMF_HIDDEN; s_controls.zoomview.generic.callback = Controls_ActionEvent; s_controls.zoomview.generic.ownerdraw = Controls_DrawKeyBinding; s_controls.zoomview.generic.id = ID_ZOOMVIEW; s_controls.NightVision.generic.type = MTYPE_ACTION; s_controls.NightVision.generic.flags = QMF_LEFT_JUSTIFY|QMF_PULSEIFFOCUS|QMF_GRAYED|QMF_HIDDEN; s_controls.NightVision.generic.callback = Controls_ActionEvent; s_controls.NightVision.generic.ownerdraw = Controls_DrawKeyBinding; s_controls.NightVision.generic.id = ID_NIGHTVISION; s_controls.useitem.generic.type = MTYPE_ACTION; s_controls.useitem.generic.flags = QMF_LEFT_JUSTIFY|QMF_PULSEIFFOCUS|QMF_GRAYED|QMF_HIDDEN; s_controls.useitem.generic.callback = Controls_ActionEvent; s_controls.useitem.generic.ownerdraw = Controls_DrawKeyBinding; s_controls.useitem.generic.id = ID_USEITEM; s_controls.showscores.generic.type = MTYPE_ACTION; s_controls.showscores.generic.flags = QMF_LEFT_JUSTIFY|QMF_PULSEIFFOCUS|QMF_GRAYED|QMF_HIDDEN; s_controls.showscores.generic.callback = Controls_ActionEvent; s_controls.showscores.generic.ownerdraw = Controls_DrawKeyBinding; s_controls.showscores.generic.id = ID_SHOWSCORES; s_controls.invertmouse.generic.type = MTYPE_RADIOBUTTON; s_controls.invertmouse.generic.flags = QMF_SMALLFONT; s_controls.invertmouse.generic.x = SCREEN_WIDTH/2; s_controls.invertmouse.generic.name = "invert mouse"; s_controls.invertmouse.generic.id = ID_INVERTMOUSE; s_controls.invertmouse.generic.callback = Controls_MenuEvent; s_controls.invertmouse.generic.statusbar = Controls_StatusBar; s_controls.smoothmouse.generic.type = MTYPE_RADIOBUTTON; s_controls.smoothmouse.generic.flags = QMF_SMALLFONT; s_controls.smoothmouse.generic.x = SCREEN_WIDTH/2; s_controls.smoothmouse.generic.name = "smooth mouse"; s_controls.smoothmouse.generic.id = ID_SMOOTHMOUSE; s_controls.smoothmouse.generic.callback = Controls_MenuEvent; s_controls.smoothmouse.generic.statusbar = Controls_StatusBar; s_controls.alwaysrun.generic.type = MTYPE_RADIOBUTTON; s_controls.alwaysrun.generic.flags = QMF_SMALLFONT; s_controls.alwaysrun.generic.x = SCREEN_WIDTH/2; s_controls.alwaysrun.generic.name = "always run"; s_controls.alwaysrun.generic.id = ID_ALWAYSRUN; s_controls.alwaysrun.generic.callback = Controls_MenuEvent; s_controls.alwaysrun.generic.statusbar = Controls_StatusBar; s_controls.autoswitch.generic.type = MTYPE_RADIOBUTTON; s_controls.autoswitch.generic.flags = QMF_SMALLFONT; s_controls.autoswitch.generic.x = SCREEN_WIDTH/2; s_controls.autoswitch.generic.name = "autoswitch weapons"; s_controls.autoswitch.generic.id = ID_AUTOSWITCH; s_controls.autoswitch.generic.callback = Controls_MenuEvent; s_controls.autoswitch.generic.statusbar = Controls_StatusBar; s_controls.sensitivity.generic.type = MTYPE_SLIDER; s_controls.sensitivity.generic.x = SCREEN_WIDTH/2; s_controls.sensitivity.generic.flags = QMF_SMALLFONT; s_controls.sensitivity.generic.name = "mouse speed"; s_controls.sensitivity.generic.id = ID_MOUSESPEED; s_controls.sensitivity.generic.callback = Controls_MenuEvent; s_controls.sensitivity.minvalue = 2; s_controls.sensitivity.maxvalue = 30; s_controls.sensitivity.generic.statusbar = Controls_StatusBar; s_controls.gesture.generic.type = MTYPE_ACTION; s_controls.gesture.generic.flags = QMF_LEFT_JUSTIFY|QMF_PULSEIFFOCUS|QMF_GRAYED|QMF_HIDDEN; s_controls.gesture.generic.callback = Controls_ActionEvent; s_controls.gesture.generic.ownerdraw = Controls_DrawKeyBinding; s_controls.gesture.generic.id = ID_GESTURE; s_controls.chat.generic.type = MTYPE_ACTION; s_controls.chat.generic.flags = QMF_LEFT_JUSTIFY|QMF_PULSEIFFOCUS|QMF_GRAYED|QMF_HIDDEN; s_controls.chat.generic.callback = Controls_ActionEvent; s_controls.chat.generic.ownerdraw = Controls_DrawKeyBinding; s_controls.chat.generic.id = ID_CHAT; s_controls.chat2.generic.type = MTYPE_ACTION; s_controls.chat2.generic.flags = QMF_LEFT_JUSTIFY|QMF_PULSEIFFOCUS|QMF_GRAYED|QMF_HIDDEN; s_controls.chat2.generic.callback = Controls_ActionEvent; s_controls.chat2.generic.ownerdraw = Controls_DrawKeyBinding; s_controls.chat2.generic.id = ID_CHAT2; s_controls.chat3.generic.type = MTYPE_ACTION; s_controls.chat3.generic.flags = QMF_LEFT_JUSTIFY|QMF_PULSEIFFOCUS|QMF_GRAYED|QMF_HIDDEN; s_controls.chat3.generic.callback = Controls_ActionEvent; s_controls.chat3.generic.ownerdraw = Controls_DrawKeyBinding; s_controls.chat3.generic.id = ID_CHAT3; s_controls.chat4.generic.type = MTYPE_ACTION; s_controls.chat4.generic.flags = QMF_LEFT_JUSTIFY|QMF_PULSEIFFOCUS|QMF_GRAYED|QMF_HIDDEN; s_controls.chat4.generic.callback = Controls_ActionEvent; s_controls.chat4.generic.ownerdraw = Controls_DrawKeyBinding; s_controls.chat4.generic.id = ID_CHAT4; s_controls.joyenable.generic.type = MTYPE_RADIOBUTTON; s_controls.joyenable.generic.flags = QMF_SMALLFONT; s_controls.joyenable.generic.x = SCREEN_WIDTH/2; s_controls.joyenable.generic.name = "joystick"; s_controls.joyenable.generic.id = ID_JOYENABLE; s_controls.joyenable.generic.callback = Controls_MenuEvent; s_controls.joyenable.generic.statusbar = Controls_StatusBar; s_controls.joythreshold.generic.type = MTYPE_SLIDER; s_controls.joythreshold.generic.x = SCREEN_WIDTH/2; s_controls.joythreshold.generic.flags = QMF_SMALLFONT; s_controls.joythreshold.generic.name = "joystick threshold"; s_controls.joythreshold.generic.id = ID_JOYTHRESHOLD; s_controls.joythreshold.generic.callback = Controls_MenuEvent; s_controls.joythreshold.minvalue = 0.05f; s_controls.joythreshold.maxvalue = 0.75f; s_controls.joythreshold.generic.statusbar = Controls_StatusBar; s_controls.name.generic.type = MTYPE_PTEXT; s_controls.name.generic.flags = QMF_CENTER_JUSTIFY|QMF_INACTIVE; s_controls.name.generic.x = 320; s_controls.name.generic.y = 440; s_controls.name.string = playername; s_controls.name.style = UI_CENTER; s_controls.name.color = text_color_normal; Menu_AddItem(&s_controls.menu, &s_controls.banner); Menu_AddItem(&s_controls.menu, &s_controls.framel); Menu_AddItem(&s_controls.menu, &s_controls.framer); Menu_AddItem(&s_controls.menu, &s_controls.player); Menu_AddItem(&s_controls.menu, &s_controls.name); Menu_AddItem(&s_controls.menu, &s_controls.looking); Menu_AddItem(&s_controls.menu, &s_controls.movement); Menu_AddItem(&s_controls.menu, &s_controls.weapons); Menu_AddItem(&s_controls.menu, &s_controls.misc); Menu_AddItem(&s_controls.menu, &s_controls.sensitivity); Menu_AddItem(&s_controls.menu, &s_controls.smoothmouse); Menu_AddItem(&s_controls.menu, &s_controls.invertmouse); Menu_AddItem(&s_controls.menu, &s_controls.lookup); Menu_AddItem(&s_controls.menu, &s_controls.lookdown); Menu_AddItem(&s_controls.menu, &s_controls.mouselook); Menu_AddItem(&s_controls.menu, &s_controls.freelook); Menu_AddItem(&s_controls.menu, &s_controls.centerview); Menu_AddItem(&s_controls.menu, &s_controls.zoomview); Menu_AddItem(&s_controls.menu, &s_controls.joyenable); Menu_AddItem(&s_controls.menu, &s_controls.joythreshold); Menu_AddItem(&s_controls.menu, &s_controls.alwaysrun); Menu_AddItem(&s_controls.menu, &s_controls.run); Menu_AddItem(&s_controls.menu, &s_controls.walkforward); Menu_AddItem(&s_controls.menu, &s_controls.backpedal); Menu_AddItem(&s_controls.menu, &s_controls.stepleft); Menu_AddItem(&s_controls.menu, &s_controls.stepright); Menu_AddItem(&s_controls.menu, &s_controls.moveup); Menu_AddItem(&s_controls.menu, &s_controls.movedown); Menu_AddItem(&s_controls.menu, &s_controls.turnleft); Menu_AddItem(&s_controls.menu, &s_controls.turnright); Menu_AddItem(&s_controls.menu, &s_controls.sidestep); Menu_AddItem(&s_controls.menu, &s_controls.attack); Menu_AddItem(&s_controls.menu, &s_controls.attack2); Menu_AddItem(&s_controls.menu, &s_controls.reload); Menu_AddItem(&s_controls.menu, &s_controls.nextweapon); Menu_AddItem(&s_controls.menu, &s_controls.prevweapon); Menu_AddItem(&s_controls.menu, &s_controls.autoswitch); Menu_AddItem(&s_controls.menu, &s_controls.chainsaw); Menu_AddItem(&s_controls.menu, &s_controls.machinegun); Menu_AddItem(&s_controls.menu, &s_controls.SelectGun); Menu_AddItem(&s_controls.menu, &s_controls.DropGun); Menu_AddItem(&s_controls.menu, &s_controls.NightVision); Menu_AddItem(&s_controls.menu, &s_controls.showscores); Menu_AddItem(&s_controls.menu, &s_controls.useitem); Menu_AddItem(&s_controls.menu, &s_controls.gesture); Menu_AddItem(&s_controls.menu, &s_controls.chat); Menu_AddItem(&s_controls.menu, &s_controls.chat2); Menu_AddItem(&s_controls.menu, &s_controls.chat3); Menu_AddItem(&s_controls.menu, &s_controls.chat4); Menu_AddItem(&s_controls.menu, &s_controls.back); trap_Cvar_VariableStringBuffer("name", s_controls.name.string, 16); Q_CleanStr(s_controls.name.string); // initialize the configurable cvars Controls_InitCvars(); // initialize the current config Controls_GetConfig(); // intialize the model Controls_InitModel(); // intialize the weapons Controls_InitWeapons (); // initial default section s_controls.section = C_LOOKING; // update the ui Controls_Update(); }