rpgxef/code/ui/ui_controls2.c
Walter Julius Hennecke a39565b783 Integrated RPG-X2 rpgxEF edition into the rpgxEF repo
... not quite content with where the project files lie but it is ok for
now.
... compiling works fine so far (only tested mingw32 right now)
2012-08-04 12:54:37 +02:00

4216 lines
135 KiB
C

// Copyright (C) 1999-2000 Id Software, Inc.
//
/*
=======================================================================
CONTROLS MENU
=======================================================================
*/
#include "ui_local.h"
static void SetupMenu_SideButtons(menuframework_s *menu,int menuType);
static void Controls_UpdateNew( void );
static void Controls_MenuEvent (void* ptr, int event);
static void UI_ControlsMoveMenu( void );
static void UI_ControlsAttackLookMenu( void );
static void UI_ControlsMouseJoyStickMenu( void );
static void UI_ControlsDefaultMenu( void );
static void UI_ControlsOtherMenu( void );
static void UI_ControlsCommandMenu( void );
static void Controls_MenuEventVideo (void* ptr, int event);
static void UI_ControlsModelViewMenu( void ); //TiM
void UI_SetupWeaponsMenu( void );
static qhandle_t swooshTop;
static qhandle_t swooshBottom;
//static qboolean g_waitingforkey;
static qboolean g_changesmade;
static qboolean g_prompttosave;
static menucommon_s *chosenitem;
#define PIC_MONBAR2 "menu/common/monbar_2.tga"
#define PIC_MOUSE1 "menu/common/mouse1.tga"
#define PIC_MOUSE2 "menu/common/mouse2.tga"
void *holdControlPtr;
int holdControlEvent;
static menuaction_s *vid_apply_action;
float setup_menubuttons[8][2] =
{
{125,62},
{125,86},
{125,109},
{300,62},
{300,86},
{300,109},
{482,62},
{482,86},
};
int s_OffOnNone_Names[] =
{
MNT_OFF,
MNT_ON,
MNT_NONE
};
int s_Autoswitch_Names[] =
{
MNT_OFF,
MNT_SAFE,
MNT_BEST,
MNT_NONE
};
static menuframework_s s_controlsdefault_menu;
static menubitmap_s s_controls_default_yes;
static menubitmap_s s_controls_default_no;
static menubitmap_s s_controls_mainmenu;
static menubitmap_s s_controls_controls;
static menubitmap_s s_controls_video;
static menubitmap_s s_controls_sound;
static menubitmap_s s_controls_game;
static menubitmap_s s_controls_cdkey;
static menubitmap_s s_controls_player;
static menubitmap_s s_controls_fonts;
static menubitmap_s s_controls_network;
static menuframework_s s_controlsother_menu;
//static menulist_s s_lookspring_box;
static menuslider_s s_keyturnspeed_slider;
static struct
{
qhandle_t mon_bar;
} s_controlsother;
static struct
{
qhandle_t mouse1;
qhandle_t mouse2;
} s_joystick_mouse;
#define ID_MAINMENU 100
#define ID_CONTROLS 110
#define ID_VIDEO 102
#define ID_SOUND 103
#define ID_GAMEOPTIONS 104
#define ID_CDKEY 105
#define ID_PLAYER 106
#define ID_FONTS 107
#define ID_NETWORK 108
#define ID_INGAMEMENU 109
#define ID_KEYTURNPEED 45
#define ID_LOOKSPRING 44
#define ID_AUTOSWITCHWEAPONS 48
typedef enum
{
AMG_MIDLEFT,
AMG_UPPERLEFT,
AMG_LOWERLEFT,
AMG_UPPERCORNER,
AMG_LOWERCORNER,
AMG_UPPERTOP1ST,
AMG_LOWERTOP1ST,
AMG_UPPERTOP2ND,
AMG_LOWERTOP2ND,
AMG_UPPERSWOOP,
AMG_LOWERSWOOP,
AMG_TOPRIGHT,
AMG_BOTTOMRIGHT,
AMG_PLAYERBKGRND,
AMG_MAX
} attackmenu_graphics_t;
menugraphics_s attackmenu_graphics[AMG_MAX] =
{
// type timer x y width height file/text graphic, min max target inc style color
{ MG_GRAPHIC, 0.0, 158, 280, 4, 32, "menu/common/square.tga", 0, 0, 0, 0, 0, 0, 0, CT_VDKPURPLE1, NULL }, // AMG_MIDLEFT
{ MG_GRAPHIC, 0.0, 158, 180, 8, 97, "menu/common/square.tga", 0, 0, 0, 0, 0, 0, 0, CT_VDKPURPLE1, NULL }, // AMG_UPPERLEFT
{ MG_GRAPHIC, 0.0, 158, 315, 8, 100, "menu/common/square.tga", 0, 0, 0, 0, 0, 0, 0, CT_VDKPURPLE1, NULL }, // AMG_LOWERLEFT
{ MG_GRAPHIC, 0.0, 158, 164, 16, 16, "menu/common/corner_lu.tga",0, 0, 0, 0, 0, 0, 0, CT_VDKPURPLE1, NULL }, // AMG_UPPERCORNER
{ MG_GRAPHIC, 0.0, 158, 406, 32, 32, "menu/common/newswoosh.tga",0, 0, 0, 0, 0, 0, 0, CT_VDKPURPLE1, NULL }, // AMG_LOWERCORNER
{ MG_GRAPHIC, 0.0, 177, 164, 280, 8, "menu/common/square.tga", 0, 0, 0, 0, 0, 0, 0, CT_VDKPURPLE1, NULL }, // AMG_UPPERTOP1ST
{ MG_GRAPHIC, 0.0, 175, 410, 282, 18, "menu/common/square.tga", 0, 0, 0, 0, 0, 0, 0, CT_VDKPURPLE1, NULL }, // AMG_LOWERTOP1ST
{ MG_GRAPHIC, 0.0, 457, 164, 34, 8, "menu/common/square.tga", 0, 0, 0, 0, 0, 0, 0, CT_VDKPURPLE1, NULL }, // AMG_UPPERTOP2ND
{ MG_GRAPHIC, 0.0, 457, 410, 34, 18, "menu/common/square.tga", 0, 0, 0, 0, 0, 0, 0, CT_VDKPURPLE1, NULL }, // AMG_LOWERTOP2ND
{ MG_GRAPHIC, 0.0, 494, 164, 128, 128, "menu/common/swoosh_top.tga",0, 0, 0, 0, 0, 0, 0, CT_VDKPURPLE1, NULL }, // AMG_UPPERSWOOP
{ MG_GRAPHIC, 0.0, 483, 403, 128, 32, "menu/common/newswoosh_long.tga",0, 0, 0, 0, 0, 0, 0, CT_VDKPURPLE1, NULL }, // AMG_LOWERSWOOP
{ MG_GRAPHIC, 0.0, 501, 189, 110, 17, "menu/common/square.tga", 0, 0, 0, 0, 0, 0, 0, CT_VDKPURPLE1, NULL }, // AMG_TOPRIGHT
{ MG_GRAPHIC, 0.0, 501, 383, 110, 17, "menu/common/square.tga", 0, 0, 0, 0, 0, 0, 0, CT_VDKPURPLE1, NULL }, // AMG_BOTTOMRIGHT
{ MG_GRAPHIC, 0.0, 501, 206, 110, 177, "menu/common/square.tga", 0, 0, 0, 0, 0, 0, 0, CT_VDKPURPLE1, NULL }, // AMG_PLAYERBKGRND
};
static int g_section;
static menuframework_s s_weapons_menu;
static menubitmap_s s_controls_playermdl;
static menubitmap_s s_controls_weapon;
static menuaction_s s_attack_weapon0_action;
static menuaction_s s_attack_weapon1_action;
static menuaction_s s_attack_weapon2_action;
static menuaction_s s_attack_weapon3_action;
static menuaction_s s_attack_weapon4_action;
static menuaction_s s_attack_weapon5_action;
//static menuaction_s s_attack_weapon6_action;
//static menuaction_s s_attack_weapon7_action;
//static menuaction_s s_attack_weapon8_action;
//static menuaction_s s_attack_weapon9_action;
static menuaction_s s_attack_weapon_next_action;
static menuaction_s s_attack_weapon_prev_action;
static menuaction_s s_attack_waiting_action;
static menubitmap_s s_controls_default;
static menubitmap_s s_controls_look;
static menuframework_s s_controlscommand_menu;
static menuframework_s s_controlslook_menu;
static menuaction_s s_attack_attack_action;
static menuaction_s s_attack_alt_attack_action;
static menuaction_s s_attack_objectives;
static menuaction_s s_attack_use_action;
static menuaction_s s_attack_use_inv_action;
static menuaction_s s_look_lookup_action;
static menuaction_s s_look_lookdown_action;
static menuaction_s s_look_mouselook_action;
static menuaction_s s_look_centerview_action;
static menuaction_s s_zoomview_action;
static menuaction_s s_equip_action;
static menuaction_s s_drop_action; // RPG-X | Marcin | 04/12/2008
static menuframework_s s_controlsmove_menu;
static menuframework_s s_controlscommand_menu;
static menuframework_s s_controlsmouse_menu;
//atic menulist_s s_joyenable_box;
//static menuslider_s s_joythreshold_slider;
//static menulist_s s_forcefeedback_box;
static menulist_s s_joyxbutton_box;
static menulist_s s_joyybutton_box;
static menubitmap_s s_controls_movement;
static menuaction_s s_move_walkforward_action;
static menuaction_s s_move_backpedal_action;
static menuaction_s s_move_turnleft_action;
static menuaction_s s_move_turnright_action;
static menuaction_s s_move_run_action;
static menuaction_s s_move_stepleft_action;
static menuaction_s s_move_stepright_action;
static menuaction_s s_move_sidestep_action;
static menuaction_s s_move_moveup_action;
static menuaction_s s_move_movedown_action;
//RPG-X - Modelview Menu
static menuframework_s s_controlsmodelview_menu; //Modelview menu
static menubitmap_s s_controls_modelview; //Main model view button
static menubitmap_s s_thirdperson_action;
static menubitmap_s s_thirdpersoncommit_action;
static menubitmap_s s_thirdpersonrevert_action;
static menubitmap_s s_thirdpersonreset_action;
static menuaction_s s_zoomforward_action;
static menuaction_s s_zoombackward_action;
static menuaction_s s_panleft_action;
static menuaction_s s_panright_action;
static menuaction_s s_panup_action;
static menuaction_s s_pandown_action;
static menuaction_s s_rotateleft_action;
static menuaction_s s_rotateright_action;
static menuaction_s s_pitchup_action;
static menuaction_s s_pitchdown_action;
static menubitmap_s s_controls_command;
static menubitmap_s s_controls_mouse;
static menubitmap_s s_controls_other;
#define ID_CONTROLSCOMMAND 200
#define ID_CONTROLSLOOK 201
#define ID_CONTROLSMOVE 202
#define ID_CONTROLSMOUSE 203
#define ID_CONTROLSOTHER 204
#define ID_CONTROLSDEFAULT 205
//RPG-X : TiM
#define ID_CONTROLSMODELVIEW 206
#define ID_DEFAULT_YES 300
#define ID_DEFAULT_NO 301
#define C_WEAPONS 0
#define C_COMMAND 1
#define C_LOOK 2
#define C_MOVE 3
#define C_MODELVIEW 4
#define C_MOUSE 5
#define C_OTHER 6
#define C_MAX 7 //6 - TiM
// control sections
#define C_MOVEMENT 0
#define C_LOOKING 1
//#define C_WEAPONS 2
#define C_MISC 3
//#define C_MAX 4
typedef struct {
char *command;
int label;
int id;
int anim;
int defaultbind1;
// int defaultbind2;
int bind1;
int bind2;
int bind3;
int desc;
} bind_t;
typedef struct
{
char* name;
float defaultvalue;
float value;
} configcvar_t;
#define SAVE_NOOP 0
#define SAVE_YES 1
#define SAVE_NO 2
#define SAVE_CANCEL 3
#define ID_MOVEMENT 100
#define ID_LOOKING 101
#define ID_WEAPONS 102
//#define ID_MISC 103
//#define ID_DEFAULTS 104
//#define ID_BACK 105
#define ID_SAVEANDEXIT 106
#define ID_EXIT 107
// bindable actions
#define ID_SHOWSCORES 0
#define ID_USEITEM 1
#define ID_SPEED 2
#define ID_FORWARD 3
#define ID_BACKPEDAL 4
#define ID_MOVELEFT 5
#define ID_MOVERIGHT 6
#define ID_MOVEUP 7
#define ID_MOVEDOWN 8
#define ID_LEFT 9
#define ID_RIGHT 10
#define ID_STRAFE 11
#define ID_LOOKUP 12
#define ID_LOOKDOWN 13
#define ID_MOUSELOOK 14
#define ID_CENTERVIEW 15
#define ID_ZOOMVIEW 16
#define ID_WEAPON1 17
#define ID_WEAPON2 18
#define ID_WEAPON3 19
#define ID_WEAPON4 20
#define ID_WEAPON5 21
#define ID_WEAPON0 22
//#define ID_WEAPON6 22
//#define ID_WEAPON7 23
//#define ID_WEAPON8 24
//#define ID_WEAPON9 25
#define ID_ATTACK 23
#define ID_ALT_ATTACK 24
#define ID_WEAPPREV 25
#define ID_WEAPNEXT 26
#define ID_GESTURE 27
#define ID_EQUIP 28
#define ID_DROP 29 // RPG-X | Marcin | 04/12/2008
#define ID_CHAT 30
#define ID_CHAT2 31
#define ID_CHAT3 32
#define ID_CHAT4 33
//#define ID_CHAT5 34
// START MOD
//#define ID_CHAT5 900
// END MOD
#define ID_USEINVENTORY 34
#define ID_OBJECTIVES 35
#define ID_TOGGLE3DP 36
#define ID_COMMITANGLES 37
#define ID_REVERTANGLES 38
#define ID_RESETANGLES 39
#define ID_ZOOMFORWARD 40
#define ID_ZOOMBACKWARD 41
#define ID_PANLEFT 42
#define ID_PANRIGHT 43
#define ID_PANUP 44
#define ID_PANDOWN 45
#define ID_ROTATELEFT 46
#define ID_ROTATERIGHT 47
#define ID_PITCHUP 48
#define ID_PITCHDOWN 49
#define ID_USE 1
// all others
#define ID_FREELOOK 50
#define ID_INVERTMOUSE 51
#define ID_ALWAYSRUN 52
#define ID_AUTOSWITCH 53
#define ID_MOUSESPEED 54
#define ID_JOYENABLE 55
#define ID_JOYTHRESHOLD 56
#define ID_SMOOTHMOUSE 57
#define ANIM_IDLE 0
#define ANIM_RUN 1
#define ANIM_WALK 2
#define ANIM_BACK 3
#define ANIM_JUMP 4
#define ANIM_CROUCH 5
#define ANIM_STEPLEFT 6
#define ANIM_STEPRIGHT 7
#define ANIM_TURNLEFT 8
#define ANIM_TURNRIGHT 9
#define ANIM_LOOKUP 10
#define ANIM_LOOKDOWN 11
#define ANIM_WEAPON1 12
#define ANIM_WEAPON2 13
#define ANIM_WEAPON3 14
#define ANIM_WEAPON4 15
#define ANIM_WEAPON5 16
/*#define ANIM_WEAPON6 17
#define ANIM_WEAPON7 18
#define ANIM_WEAPON8 19
#define ANIM_WEAPON9 20
#define ANIM_WEAPON10 21*/
#define ANIM_ATTACK 22
#define ANIM_GESTURE 23
#define ANIM_DIE 24
#define ANIM_CHAT 25
typedef struct
{
menuframework_s menu;
menutext_s banner;
menubitmap_s framel;
menubitmap_s framer;
menubitmap_s player;
menutext_s movement;
menutext_s looking;
menutext_s weapons;
menutext_s misc;
menuaction_s walkforward;
menuaction_s backpedal;
menuaction_s stepleft;
menuaction_s stepright;
menuaction_s moveup;
menuaction_s movedown;
menuaction_s turnleft;
menuaction_s turnright;
menuaction_s sidestep;
menuaction_s run;
menuaction_s machinegun;
menuaction_s attack;
menuaction_s prevweapon;
menuaction_s nextweapon;
menuaction_s lookup;
menuaction_s lookdown;
menuaction_s mouselook;
menulist_s freelook;
menuaction_s centerview;
menuaction_s zoomview;
menuaction_s gesture;
menulist_s invertmouse;
menuslider_s sensitivity;
menulist_s smoothmouse;
menulist_s alwaysrun;
menuaction_s showscores;
menulist_s autoswitch;
menuaction_s useitem;
playerInfo_t playerinfo;
qboolean changesmade;
menuaction_s chat;
menuaction_s chat2;
menuaction_s chat3;
menuaction_s chat4;
menuaction_s chat5;
menulist_s joyenable;
menuslider_s joythreshold;
int section;
qboolean waitingforkey;
char playerModel[64];
vec3_t playerViewangles;
vec3_t playerMoveangles;
int playerLegs;
int playerTorso;
int playerWeapon;
qboolean playerChat;
menubitmap_s back;
menutext_s name;
} controls_t;
static controls_t s_controls;
//static vec4_t controls_binding_color = {1.00, 0.43, 0.00, 1.00};
static bind_t g_bindings[] =
{
{"+info", MNT_SHORTCUT_SCORES, ID_SHOWSCORES, ANIM_IDLE, K_TAB, -1, -1, -1,MNT_SHORTCUT_KEY},
{"+use", MNT_SHORTCUT_USEOBJECT, ID_USEITEM, ANIM_IDLE, K_ENTER, -1, -1, -1,MNT_SHORTCUT_KEY},
{"+speed", MNT_SHORTCUT_RUNWALK, ID_SPEED, ANIM_RUN, K_SHIFT, -1, -1, -1,MNT_SHORTCUT_KEY},
{"+forward", MNT_SHORTCUT_WALKFORWARD, ID_FORWARD, ANIM_WALK, K_UPARROW, -1, -1, -1,MNT_SHORTCUT_KEY},
{"+back", MNT_SHORTCUT_BACKPEDAL, ID_BACKPEDAL, ANIM_BACK, K_DOWNARROW, -1, -1, -1,MNT_SHORTCUT_KEY},
{"+moveleft", MNT_SHORTCUT_STEPLEFT, ID_MOVELEFT, ANIM_STEPLEFT, ',', -1, -1, -1,MNT_SHORTCUT_KEY},
{"+moveright", MNT_SHORTCUT_STEPRIGHT, ID_MOVERIGHT, ANIM_STEPRIGHT, '.', -1, -1, -1,MNT_SHORTCUT_KEY},
{"+moveup", MNT_SHORTCUT_UPJUMP, ID_MOVEUP, ANIM_JUMP, 'd', -1, -1, -1,MNT_SHORTCUT_KEY},
{"+movedown", MNT_SHORTCUT_DOWNCROUCH, ID_MOVEDOWN, ANIM_CROUCH, 'c', -1, -1, -1,MNT_SHORTCUT_KEY},
{"+left", MNT_SHORTCUT_TURNLEFT, ID_LEFT, ANIM_TURNLEFT, K_LEFTARROW, -1, -1, -1,MNT_SHORTCUT_KEY},
{"+right", MNT_SHORTCUT_TURNRIGHT, ID_RIGHT, ANIM_TURNRIGHT, K_RIGHTARROW, -1, -1, -1,MNT_SHORTCUT_KEY},
{"+strafe", MNT_SHORTCUT_SIDESTEPTURN, ID_STRAFE, ANIM_IDLE, K_ALT, -1, -1, -1,MNT_SHORTCUT_KEY},
{"+lookup", MNT_SHORTCUT_LOOKUP, ID_LOOKUP, ANIM_LOOKUP, K_PGDN, -1, -1, -1,MNT_SHORTCUT_KEY},
{"+lookdown", MNT_SHORTCUT_LOOKDOWN, ID_LOOKDOWN, ANIM_LOOKDOWN, K_DEL, -1, -1, -1,MNT_SHORTCUT_KEY},
{"laser", MNT_SHORTCUT_MOUSELOOK, ID_MOUSELOOK, ANIM_IDLE, 'r', -1, -1, -1,MNT_SHORTCUT_KEY},
// {"+mlook", MNT_SHORTCUT_MOUSELOOK, ID_MOUSELOOK, ANIM_IDLE, '/', -1, -1, -1,MNT_SHORTCUT_KEY},
{"centerview", MNT_SHORTCUT_CENTERVIEW, ID_CENTERVIEW, ANIM_IDLE, K_END, -1, -1, -1,MNT_SHORTCUT_KEY},
{"+zoom", MNT_SHORTCUT_ZOOMVIEW, ID_ZOOMVIEW, ANIM_IDLE, -1, -1, -1, -1,MNT_SHORTCUT_KEY},
{"weapon 1", MNT_SHORTCUT_WEAPON1, ID_WEAPON1, ANIM_WEAPON1, '1', -1, -1, -1,MNT_SHORTCUT_KEY},
{"weapon 2", MNT_SHORTCUT_WEAPON2, ID_WEAPON2, ANIM_WEAPON2, '2', -1, -1, -1,MNT_SHORTCUT_KEY},
{"weapon 3", MNT_SHORTCUT_WEAPON3, ID_WEAPON3, ANIM_WEAPON3, '3', -1, -1, -1,MNT_SHORTCUT_KEY},
{"weapon 4", MNT_SHORTCUT_WEAPON4, ID_WEAPON4, ANIM_WEAPON4, '4', -1, -1, -1,MNT_SHORTCUT_KEY},
{"weapon 5", MNT_SHORTCUT_WEAPON5, ID_WEAPON5, ANIM_WEAPON5, '5', -1, -1, -1,MNT_SHORTCUT_KEY},
{"weapon 0", MNT_SHORTCUT_WEAPON0, ID_WEAPON0, ANIM_WEAPON10, '0', -1, -1, -1,MNT_SHORTCUT_KEY},
/*{"weapon 6", MNT_SHORTCUT_WEAPON6, ID_WEAPON6, ANIM_WEAPON6, '6', -1, -1, -1,MNT_SHORTCUT_KEY},
{"weapon 7", MNT_SHORTCUT_WEAPON7, ID_WEAPON7, ANIM_WEAPON7, '7', -1, -1, -1,MNT_SHORTCUT_KEY},
{"weapon 8", MNT_SHORTCUT_WEAPON8, ID_WEAPON8, ANIM_WEAPON8, '8', -1, -1, -1,MNT_SHORTCUT_KEY},
{"weapon 9", MNT_SHORTCUT_WEAPON9, ID_WEAPON9, ANIM_WEAPON9, '9', -1, -1, -1,MNT_SHORTCUT_KEY},*/
{"+attack", MNT_SHORTCUT_ATTACK, ID_ATTACK, ANIM_ATTACK, K_CTRL, -1, -1, -1,MNT_SHORTCUT_KEY},
{"+altattack", MNT_SHORTCUT_ALTATTCK, ID_ALT_ATTACK, ANIM_ATTACK, K_MOUSE2, -1, -1, -1,MNT_SHORTCUT_KEY},
{"weapprev", MNT_SHORTCUT_PREVWEAPON, ID_WEAPPREV, ANIM_IDLE, '[', -1, -1, -1,MNT_SHORTCUT_KEY},
{"weapnext", MNT_SHORTCUT_NEXTWEAPON, ID_WEAPNEXT, ANIM_IDLE, ']', -1, -1, -1,MNT_SHORTCUT_KEY},
{"+button3", MNT_SHORTCUT_GESTURE, ID_GESTURE, ANIM_GESTURE, K_MOUSE3, -1, -1, -1,MNT_SHORTCUT_KEY},
{"equip", MNT_SHORTCUT_EQUIP, ID_EQUIP, ANIM_IDLE, 'p', -1, -1, -1,MNT_SHORTCUT_KEY},
// RPG-X | Marcin | 04/12/2008
{"drop", MNT_SHORTCUT_DROP, ID_DROP, ANIM_IDLE, 'g', -1, -1, -1,MNT_SHORTCUT_KEY},
{"messagemode", MNT_SHORTCUT_CHAT, ID_CHAT, ANIM_CHAT, 'y', -1, -1, -1,MNT_SHORTCUT_KEY},
{"messagemode2", MNT_SHORTCUT_CHATTEAM, ID_CHAT2, ANIM_CHAT, 't', -1, -1, -1,MNT_SHORTCUT_KEY},
{"messagemode3", MNT_SHORTCUT_CHATTARGET, ID_CHAT3, ANIM_CHAT, -1, -1, -1, -1,MNT_SHORTCUT_KEY},
{"messagemode4", MNT_SHORTCUT_CHATATTACKER, ID_CHAT4, ANIM_CHAT, -1, -1, -1, -1,MNT_SHORTCUT_KEY},
// {"messagemode5", MNT_SHORTCUT_CHATCLASS, ID_CHAT5, ANIM_CHAT, -1, -1, -1, -1,MNT_SHORTCUT_KEY},
{"+button2", MNT_SHORTCUT_USEINVENTORY, ID_USEINVENTORY,ANIM_IDLE, K_SPACE, -1, -1, -1,MNT_SHORTCUT_KEY},
{"flashlight", MNT_SHORTCUT_OBJECTIVES, ID_OBJECTIVES, ANIM_IDLE, 'q', -1, -1, -1,MNT_SHORTCUT_KEY},
{"thirdPerson", MNT_SHORTCUT_TOGGLE3RDPERSON, ID_TOGGLE3DP, ANIM_IDLE, K_KP_5, -1, -1, -1,MNT_SHORTCUT_KEY},
{"thirdPersonCommit", MNT_SHORTCUT_COMMITANGLES, ID_COMMITANGLES,ANIM_IDLE, K_KP_ENTER, -1, -1, -1,MNT_SHORTCUT_KEY},
{"thirdPersonRevert", MNT_SHORTCUT_REVERTANGLES, ID_REVERTANGLES,ANIM_IDLE, K_KP_INS, -1, -1, -1,MNT_SHORTCUT_KEY},
{"thirdPersonReset", MNT_SHORTCUT_RESETANGLES, ID_RESETANGLES, ANIM_IDLE, K_KP_DEL, -1, -1, -1,MNT_SHORTCUT_KEY},
{"+thirdPersonForward", MNT_SHORTCUT_MODELVIEW_FORWARD, ID_ZOOMFORWARD, ANIM_IDLE, K_KP_UPARROW, -1, -1, -1,MNT_SHORTCUT_KEY},
{"+thirdPersonBackward", MNT_SHORTCUT_MODELVIEW_BACKWARD,ID_ZOOMBACKWARD,ANIM_IDLE, K_KP_DOWNARROW, -1, -1, -1,MNT_SHORTCUT_KEY},
{"+thirdPersonLeft", MNT_SHORTCUT_MODELVIEW_LEFT, ID_PANLEFT, ANIM_IDLE, K_KP_STAR, -1, -1, -1,MNT_SHORTCUT_KEY},
{"+thirdPersonRight", MNT_SHORTCUT_MODELVIEW_RIGHT, ID_PANRIGHT, ANIM_IDLE, K_KP_MINUS, -1, -1, -1,MNT_SHORTCUT_KEY},
{"+thirdPersonUp", MNT_SHORTCUT_MODELVIEW_UP, ID_PANUP, ANIM_IDLE, K_KP_PGUP, -1, -1, -1,MNT_SHORTCUT_KEY},
{"+thirdPersonDown", MNT_SHORTCUT_MODELVIEW_DOWN, ID_PANDOWN, ANIM_IDLE, K_KP_DEL, -1, -1, -1,MNT_SHORTCUT_KEY},
{"+thirdPersonAngleLeft", MNT_SHORTCUT_MODELVIEW_ROTLEFT, ID_ROTATELEFT, ANIM_IDLE, K_KP_LEFTARROW, -1, -1, -1,MNT_SHORTCUT_KEY},
{"+thirdPersonAngleRight", MNT_SHORTCUT_MODELVIEW_ROTRIGHT,ID_ROTATERIGHT, ANIM_IDLE, K_KP_RIGHTARROW,-1, -1, -1,MNT_SHORTCUT_KEY},
{"+thirdPersonPitchUp", MNT_SHORTCUT_MODELVIEW_PITCHUP, ID_PITCHUP, ANIM_IDLE, K_KP_HOME, -1, -1, -1,MNT_SHORTCUT_KEY},
{"+thirdPersonPitchDown", MNT_SHORTCUT_MODELVIEW_PITCHDOWN,ID_PITCHDOWN, ANIM_IDLE, K_KP_END, -1, -1, -1,MNT_SHORTCUT_KEY},
// {"+analysis", MNT_SHORTCUT_OBJECTIVES, ID_OBJECTIVES, ANIM_IDLE, -1, -1, -1, -1,MNT_SHORTCUT_KEY},
{(char*)NULL, 0, 0, 0, -1, -1, -1, -1,0},
};
static configcvar_t g_configcvars[] =
{
{"cl_run", 0, 0},
{"m_pitch", 0, 0},
{"cg_autoswitch", 0, 0},
{"sensitivity", 0, 0},
{"in_joystick", 0, 0},
{"joy_threshold", 0, 0},
{"m_filter", 0, 0},
{"cl_freelook", 0, 0},
{"cl_anglespeedkey",0, 0},
{"joy_xbutton", 0, 0},
{"joy_ybutton", 0, 0},
{NULL, 0, 0}
};
static void* g_attack_controls[] =
{
&s_attack_weapon1_action,
&s_attack_weapon2_action,
&s_attack_weapon3_action,
&s_attack_weapon4_action,
&s_attack_weapon5_action,
&s_attack_weapon0_action,
/*&s_attack_weapon6_action,
&s_attack_weapon7_action,
&s_attack_weapon8_action,
&s_attack_weapon9_action,*/
&s_attack_weapon_next_action,
&s_attack_weapon_prev_action,
NULL,
};
static void* g_move_controls[] =
{
&s_move_walkforward_action,
&s_move_backpedal_action,
&s_move_turnleft_action,
&s_move_turnright_action,
&s_move_run_action,
&s_move_stepleft_action,
&s_move_stepright_action,
&s_move_sidestep_action,
&s_move_moveup_action,
&s_move_movedown_action,
// &s_alwaysrun_box,
NULL
};
static void* g_command_controls[] =
{
&s_controls.chat2,
&s_controls.chat,
&s_controls.chat3,
//&s_controls.chat4,
//&s_controls.chat5,
&s_controls.gesture,
&s_equip_action,
&s_drop_action, // RPG-X | Marcin | 04/12/2008
&s_thirdperson_action,
&s_thirdpersonrevert_action,
&s_thirdpersoncommit_action,
&s_thirdpersonreset_action,
NULL,
};
static void* g_attacklook_controls[] =
{
&s_attack_attack_action,
&s_attack_alt_attack_action,
&s_attack_use_action,
&s_attack_use_inv_action,
&s_attack_objectives,
&s_look_mouselook_action,
&s_look_lookup_action,
&s_look_lookdown_action,
//
&s_look_centerview_action,
&s_zoomview_action,
&s_controls.showscores,
NULL,
};
static void* g_mouse_controls[] =
{
&s_controls.freelook,
&s_controls.sensitivity,
&s_controls.invertmouse,
&s_controls.smoothmouse,
NULL,
};
static void* g_modelview_controls[] =
{
&s_zoomforward_action,
&s_zoombackward_action,
&s_panleft_action,
&s_panright_action,
&s_panup_action,
&s_pandown_action,
&s_rotateleft_action,
&s_rotateright_action,
&s_pitchup_action,
&s_pitchdown_action,
NULL,
};
static void** g_controls[] =
{
g_attack_controls,
g_command_controls,
g_attacklook_controls,
g_move_controls,
g_modelview_controls,
g_mouse_controls,
g_command_controls
};
/*static menucommon_s *g_movement_controls[] =
{
(menucommon_s *)&s_controls.alwaysrun,
(menucommon_s *)&s_controls.run,
(menucommon_s *)&s_controls.walkforward,
(menucommon_s *)&s_controls.backpedal,
(menucommon_s *)&s_controls.stepleft,
(menucommon_s *)&s_controls.stepright,
(menucommon_s *)&s_controls.moveup,
(menucommon_s *)&s_controls.movedown,
(menucommon_s *)&s_controls.turnleft,
(menucommon_s *)&s_controls.turnright,
(menucommon_s *)&s_controls.sidestep,
NULL
};*/
/*static menucommon_s *g_looking_controls[] =
{
(menucommon_s *)&s_controls.sensitivity,
(menucommon_s *)&s_controls.smoothmouse,
(menucommon_s *)&s_controls.invertmouse,
(menucommon_s *)&s_controls.lookup,
(menucommon_s *)&s_controls.lookdown,
(menucommon_s *)&s_controls.mouselook,
(menucommon_s *)&s_controls.freelook,
(menucommon_s *)&s_controls.centerview,
(menucommon_s *)&s_controls.zoomview,
(menucommon_s *)&s_controls.joyenable,
(menucommon_s *)&s_controls.joythreshold,
NULL,
};*/
/*static menucommon_s *g_misc_controls[] =
{
(menucommon_s *)&s_controls.showscores,
(menucommon_s *)&s_controls.useitem,
(menucommon_s *)&s_controls.gesture,
(menucommon_s *)&s_controls.chat,
(menucommon_s *)&s_controls.chat2,
(menucommon_s *)&s_controls.chat3,
(menucommon_s *)&s_controls.chat4,
(menucommon_s *)&s_controls.chat5,
(menucommon_s *)&s_controls.gesture,
(menucommon_s *)&s_controls.showscores,
NULL,
};*/
/*
=================
Setup_ResetDefaults_Action
=================
*/
void Setup_ResetDefaults_Action( qboolean result ) {
if( !result ) {
return;
}
trap_Cmd_ExecuteText( EXEC_APPEND, "exec default.cfg\n");
trap_Cmd_ExecuteText( EXEC_APPEND, "cvar_restart\n");
trap_Cmd_ExecuteText( EXEC_APPEND, "vid_restart\n" );
}
/*
=================
Controls_InitCvars
=================
*/
static void Controls_InitCvars( void )
{
int i;
configcvar_t* cvarptr;
cvarptr = g_configcvars;
for (i=0; ;i++,cvarptr++)
{
if (!cvarptr->name)
break;
// get current value
cvarptr->value = trap_Cvar_VariableValue( cvarptr->name );
// get default value
trap_Cvar_Reset( cvarptr->name );
cvarptr->defaultvalue = trap_Cvar_VariableValue( cvarptr->name );
// restore current value
trap_Cvar_SetValue( cvarptr->name, cvarptr->value );
}
}
/*
=================
Controls_GetCvarDefault
=================
*/
/*
static float Controls_GetCvarDefault( char* name )
{
configcvar_t* cvarptr;
int i;
cvarptr = g_configcvars;
for (i=0; ;i++,cvarptr++)
{
if (!cvarptr->name)
return (0);
if (!strcmp(cvarptr->name,name))
break;
}
return (cvarptr->defaultvalue);
}
*/
/*
=================
Controls_GetCvarValue
=================
*/
static float Controls_GetCvarValue( char* name )
{
configcvar_t* cvarptr;
int i;
cvarptr = g_configcvars;
for (i=0; ;i++,cvarptr++)
{
if (!cvarptr->name)
return (0);
if (!strcmp(cvarptr->name,name))
break;
}
return (cvarptr->value);
}
/*
=================
Controls_UpdateModel
=================
*/
static void Controls_UpdateModel( int anim )
{
VectorClear( s_controls.playerViewangles );
VectorClear( s_controls.playerMoveangles );
s_controls.playerViewangles[YAW] = uis.lastYaw; //180 + 10
s_controls.playerMoveangles[YAW] = s_controls.playerViewangles[YAW];
s_controls.playerLegs = BOTH_STAND1; //LEGS_IDLE
s_controls.playerWeapon = -1;
s_controls.playerChat = qfalse;
s_controls.playerTorso = BOTH_STAND1;
switch( anim )
{
//TiM : the anim selection code from PMove was adapted to this so it'll play the same animations
//per weapon from ingame :)
case ANIM_RUN:
s_controls.playerTorso = UI_GetAnim( ANIM_RUN, s_controls.playerWeapon, qtrue );
s_controls.playerLegs = UI_GetAnim( ANIM_RUN, s_controls.playerWeapon, qfalse ); //LEGS_RUN
break;
case ANIM_WALK:
s_controls.playerTorso = UI_GetAnim( ANIM_WALK, s_controls.playerWeapon, qtrue );
s_controls.playerLegs = UI_GetAnim( ANIM_WALK, s_controls.playerWeapon, qfalse );//LEGS_WALK
break;
case ANIM_BACK:
s_controls.playerTorso = UI_GetAnim( ANIM_BACK, s_controls.playerWeapon, qtrue );
s_controls.playerLegs = UI_GetAnim( ANIM_BACK, s_controls.playerWeapon, qfalse ); //LEGS_BACK
break;
case ANIM_JUMP:
s_controls.playerTorso = UI_GetAnim( ANIM_JUMP, s_controls.playerWeapon, qtrue );
s_controls.playerLegs = UI_GetAnim( ANIM_JUMP, s_controls.playerWeapon, qfalse ); //LEGS_JUMP
break;
case ANIM_CROUCH:
s_controls.playerTorso = UI_GetAnim( ANIM_CROUCH, s_controls.playerWeapon, qtrue );
s_controls.playerLegs = UI_GetAnim( ANIM_CROUCH, s_controls.playerWeapon, qfalse ); //LEGS_IDLECR
break;
case ANIM_TURNLEFT:
s_controls.playerViewangles[YAW] += 90;
break;
case ANIM_TURNRIGHT:
s_controls.playerViewangles[YAW] -= 90;
break;
case ANIM_STEPLEFT:
s_controls.playerTorso = UI_GetAnim( ANIM_WALK, s_controls.playerWeapon, qtrue );
s_controls.playerLegs = UI_GetAnim( ANIM_WALK, s_controls.playerWeapon, qfalse ); //LEGS_WALK
s_controls.playerMoveangles[YAW] = s_controls.playerViewangles[YAW] + 90;
break;
case ANIM_STEPRIGHT:
s_controls.playerTorso = UI_GetAnim( ANIM_WALK, s_controls.playerWeapon, qtrue );
s_controls.playerLegs = UI_GetAnim( ANIM_WALK, s_controls.playerWeapon, qfalse );
s_controls.playerMoveangles[YAW] = s_controls.playerViewangles[YAW] - 90;
break;
case ANIM_LOOKUP:
s_controls.playerViewangles[PITCH] = -45;
break;
case ANIM_LOOKDOWN:
s_controls.playerViewangles[PITCH] = 45;
break;
case ANIM_WEAPON1:
s_controls.playerWeapon = WP_2;
break;
case ANIM_WEAPON2:
s_controls.playerWeapon = WP_5;
break;
case ANIM_WEAPON3:
s_controls.playerWeapon = WP_8;
break;
case ANIM_WEAPON4:
s_controls.playerWeapon = WP_12;
break;
case ANIM_WEAPON5:
s_controls.playerWeapon = WP_15;
break;
/*case ANIM_WEAPON6:
s_controls.playerWeapon = WP_8;
break;
case ANIM_WEAPON7:
s_controls.playerWeapon = WP_7;
break;
case ANIM_WEAPON8:
s_controls.playerWeapon = WP_12;
break;
case ANIM_WEAPON9:
s_controls.playerWeapon = WP_13;
break;*/
case ANIM_WEAPON10:
s_controls.playerWeapon = WP_1;
break;
case ANIM_ATTACK:
s_controls.playerTorso = UI_GetAnim( ANIM_ATTACK, s_controls.playerWeapon, qtrue );
break;
case ANIM_GESTURE:
//s_controls.playerTorso = TORSO_GESTURE;
//FIXME: qboolean talking?
break;
case ANIM_DIE:
s_controls.playerLegs = BOTH_DEATH1;
s_controls.playerTorso = BOTH_DEATH1;
s_controls.playerWeapon = WP_0;
break;
case ANIM_CHAT:
s_controls.playerChat = qtrue;
break;
default:
break;
}
UI_PlayerInfo_SetInfo( &s_controls.playerinfo, s_controls.playerLegs, s_controls.playerTorso, s_controls.playerViewangles, s_controls.playerMoveangles, s_controls.playerWeapon, trap_Cvar_VariableValue( "height" ), trap_Cvar_VariableValue( "weight" ), s_controls.playerChat );
}
/*
=================
Controls_DrawKeyBinding
=================
*/
static void Controls_DrawKeyBinding( void *self )
{
menuaction_s* a;
int x,bindingX;
int y;
int b1;
int b2;
qboolean c;
char name[32];
char name2[32];
int color,bindingtextcolor, buttontextcolor;
int width;
a = (menuaction_s*) self;
if (a->generic.flags & QMF_HIDDEN) // It's bloody invisible
{
return;
}
x = a->generic.x;
y = a->generic.y;
c = (Menu_ItemAtCursor( a->generic.parent ) == a);
// Set up bindings
b1 = g_bindings[a->generic.id].bind1;
if (b1 == -1)
strcpy(name,"???");
else
{
trap_Key_KeynumToStringBuf( b1, name, 32 );
Q_strupr(name);
b2 = g_bindings[a->generic.id].bind2;
if (b2 != -1)
{
trap_Key_KeynumToStringBuf( b2, name2, 32 );
Q_strupr(name2);
strcat( name, va(" %s ",menu_normal_text[MNT_OR]));
strcat( name, name2 );
if (g_bindings[a->generic.id].bind3>=0)
{
strcat( name, " ...");
}
}
}
// Waiting for key input, and this isn't the chosen key so gray it out
if ((s_controls.waitingforkey) && (a != (menuaction_s*) chosenitem))
{
color = CT_MDGREY;
bindingtextcolor = CT_MDGREY;
buttontextcolor = CT_BLACK;
a->generic.flags |= QMF_INACTIVE;
}
else // Normal key colors
{
a->generic.flags &= ~QMF_INACTIVE;
bindingtextcolor = CT_WHITE;
// Keep the chosenitem lit up even when mouse isn't over it
// or if mouse is over it
if (((s_controls.waitingforkey) && (a == (menuaction_s*) chosenitem)) || (c))
{
buttontextcolor = CT_WHITE;
color = CT_LTORANGE;
}
else
{
buttontextcolor = CT_BLACK;
color = CT_DKORANGE;
}
}
if ((c) && (g_bindings[a->generic.id].desc))
{
if (menu_normal_text[g_bindings[a->generic.id].desc])
{
UI_DrawProportionalString( a->generic.parent->descX, a->generic.parent->descY, menu_normal_text[g_bindings[a->generic.id].desc], UI_LEFT|UI_TINYFONT, colorTable[CT_BLACK]);
}
}
width = a->width;
if (!width)
{
// Print button
trap_R_SetColor( colorTable[color]);
UI_DrawHandlePic( x , y, 19, MENU_BUTTON_MED_HEIGHT, uis.graphicButtonLeftEnd);
UI_DrawHandlePic( x + (SMALLCHAR_WIDTH * 11), y, -19, MENU_BUTTON_MED_HEIGHT, uis.graphicButtonLeftEnd); //right
UI_DrawHandlePic( x + 8, y, (SMALLCHAR_WIDTH * 11), MENU_BUTTON_MED_HEIGHT, uis.whiteShader);
trap_R_SetColor( NULL );
bindingX =x + (SMALLCHAR_WIDTH * 12);
}
else
{
width -= 8 + 8;
// Print button
trap_R_SetColor( colorTable[color]);
// Left end
UI_DrawHandlePic( x , y, 16, MENU_BUTTON_MED_HEIGHT, uis.graphicButtonLeftEnd);
// Right end
UI_DrawHandlePic( x + width, y, -16, MENU_BUTTON_MED_HEIGHT, uis.graphicButtonLeftEnd); //right
// Middle
UI_DrawHandlePic( x + 8, y, width, MENU_BUTTON_MED_HEIGHT, uis.whiteShader);
bindingX = x + 8 + width + 8 + 6;
trap_R_SetColor( NULL );
}
// Button text
if (g_bindings[a->generic.id].label)
{
UI_DrawProportionalString( x + a->textX, y + a->textY, menu_normal_text[g_bindings[a->generic.id].label], UI_LEFT|UI_SMALLFONT, colorTable[buttontextcolor] );
}
// Binding text
UI_DrawProportionalString( bindingX, y, name, UI_SMALLFONT, colorTable[bindingtextcolor] );
}
/*
=================
Controls_DrawPlayer
=================
*/
//BOOKMARK
static void Controls_DrawPlayer( void *self )
{
menubitmap_s *b;
char buf[MAX_QPATH];
vec3_t origin={ -22, 2, -3 };
trap_Cvar_VariableStringBuffer( "model", buf, sizeof( buf ) );
if ( strcmp( buf, s_controls.playerModel ) != 0 ) {
UI_PlayerInfo_SetModel( &s_controls.playerinfo, buf );
strcpy( s_controls.playerModel, buf );
Controls_UpdateModel( ANIM_IDLE );
}
b = (menubitmap_s*) self;
UI_DrawPlayer( b->generic.x, b->generic.y, b->width, b->height, origin, &s_controls.playerinfo, uis.realtime/2 );
}
/*
=================
Controls_GetKeyAssignment
=================
*/
static void Controls_GetKeyAssignment (char *command, int *twokeys)
{
int count;
int j;
char b[256];
twokeys[0] = twokeys[1] = twokeys[2] = -1;
count = 0;
for ( j = 0; j < 256; j++ )
{
trap_Key_GetBindingBuf( j, b, 256 );
if ( *b == 0 ) {
continue;
}
if ( !Q_stricmp( b, command ) ) {
twokeys[count] = j;
count++;
if (count == 3)
break;
}
}
}
/*
=================
Controls_ClearKeyAssignment
=================
*/
static void Controls_ClearKeyAssignment (char *command)
{
int i;
char b[256];
for ( i = 0; i < 256; i++ )
{
trap_Key_GetBindingBuf( i, b, 256 );
if ( *b == 0 )
{
continue;
}
if ( !Q_stricmp( b, command ) )
{
trap_Key_SetBinding( i, "" );
}
}
}
/*
=================
Controls_GetConfig
=================
*/
static void Controls_GetConfig( void )
{
int i;
int twokeys[3];
bind_t* bindptr;
// put the bindings into a local store
bindptr = g_bindings;
// iterate each command, get its numeric binding
for (i=0; ;i++,bindptr++)
{
if (!bindptr->label)
break;
Controls_GetKeyAssignment(bindptr->command, twokeys);
bindptr->bind1 = twokeys[0];
bindptr->bind2 = twokeys[1];
bindptr->bind3 = twokeys[2];
}
s_controls.invertmouse.curvalue = Controls_GetCvarValue( "m_pitch" ) < 0;
s_controls.smoothmouse.curvalue = UI_ClampCvar( 0, 1, Controls_GetCvarValue( "m_filter" ) );
s_controls.alwaysrun.curvalue = UI_ClampCvar( 0, 1, Controls_GetCvarValue( "cl_run" ) );
s_controls.autoswitch.curvalue = UI_ClampCvar( 0, 2, Controls_GetCvarValue( "cg_autoswitch" ) );
s_controls.sensitivity.curvalue = UI_ClampCvar( 2, 30, Controls_GetCvarValue( "sensitivity" ) );
s_controls.joyenable.curvalue = UI_ClampCvar( 0, 1, Controls_GetCvarValue( "in_joystick" ) );
s_controls.joythreshold.curvalue = UI_ClampCvar( 0.05, 0.75, Controls_GetCvarValue( "joy_threshold" ) );
s_controls.freelook.curvalue = UI_ClampCvar( 0, 1, Controls_GetCvarValue( "cl_freelook" ) );
s_keyturnspeed_slider.curvalue = UI_ClampCvar( 1, 5, Controls_GetCvarValue( "cl_anglespeedkey" ) );
s_joyxbutton_box.curvalue = UI_ClampCvar( 0, 1, Controls_GetCvarValue( "joy_xbutton" ) );
s_joyybutton_box.curvalue = UI_ClampCvar( 0, 1, Controls_GetCvarValue( "joy_ybutton" ) );
}
/*
=================
Controls_SetJoystick
=================
*/
static void Controls_SetJoystick( void )
{
trap_Cvar_SetValue( "in_joystick", s_controls.joyenable.curvalue );
trap_Cmd_ExecuteText( EXEC_APPEND, "in_restart\n" );
}
/*
=================
Controls_SetConfig
=================
*/
static void Controls_SetConfig( void )
{
int i;
bind_t* bindptr;
// unbind the command from all keys
// for (i=0; i<256; i++)
// {
// trap_Key_SetBinding( i, "" );
// }
// set the bindings from the local store
bindptr = g_bindings;
// iterate each command, get its numeric binding
for (i=0; ;i++,bindptr++)
{
if (!bindptr->label)
break;
if (bindptr->bind1 != -1)
{
trap_Key_SetBinding( bindptr->bind1, bindptr->command );
if (bindptr->bind2 != -1)
trap_Key_SetBinding( bindptr->bind2, bindptr->command );
}
}
if ( s_controls.invertmouse.curvalue )
trap_Cvar_SetValue( "m_pitch", -fabs( trap_Cvar_VariableValue( "m_pitch" ) ) );
else
trap_Cvar_SetValue( "m_pitch", fabs( trap_Cvar_VariableValue( "m_pitch" ) ) );
trap_Cvar_SetValue( "m_filter", s_controls.smoothmouse.curvalue );
trap_Cvar_SetValue( "cl_run", s_controls.alwaysrun.curvalue );
trap_Cvar_SetValue( "cg_autoswitch", s_controls.autoswitch.curvalue );
trap_Cvar_SetValue( "sensitivity", s_controls.sensitivity.curvalue );
trap_Cvar_SetValue( "joy_threshold", s_controls.joythreshold.curvalue );
trap_Cvar_SetValue( "cl_freelook", s_controls.freelook.curvalue );
trap_Cvar_SetValue( "cl_anglespeedkey", s_keyturnspeed_slider.curvalue );
trap_Cvar_SetValue( "joy_xbutton", s_joyxbutton_box.curvalue );
trap_Cvar_SetValue( "joy_ybutton", s_joyybutton_box.curvalue );
}
/*
=================
Controls_SetDefaults
=================
*/
/*
static void Controls_SetDefaults( void )
{
int i;
bind_t* bindptr;
// set the bindings from the local store
bindptr = g_bindings;
// iterate each command, set its default binding
for (i=0; ;i++,bindptr++)
{
if (!bindptr->label)
break;
bindptr->bind1 = bindptr->defaultbind1;
bindptr->bind2 = bindptr->defaultbind2;
}
s_controls.invertmouse.curvalue = Controls_GetCvarDefault( "m_pitch" ) < 0;
s_controls.smoothmouse.curvalue = Controls_GetCvarDefault( "m_filter" );
s_controls.alwaysrun.curvalue = Controls_GetCvarDefault( "cl_run" );
s_controls.autoswitch.curvalue = Controls_GetCvarDefault( "cg_autoswitch" );
s_controls.sensitivity.curvalue = Controls_GetCvarDefault( "sensitivity" );
s_controls.joyenable.curvalue = Controls_GetCvarDefault( "in_joystick" );
s_controls.joythreshold.curvalue = Controls_GetCvarDefault( "joy_threshold" );
s_controls.freelook.curvalue = Controls_GetCvarDefault( "cl_freelook" );
}
*/
/*
=================
Controls_MenuKey
=================
*/
static sfxHandle_t Controls_MenuKey( int key )
{
int id;
int i;
qboolean found;
bind_t* bindptr;
menuframework_s* current_menu;
found = qfalse;
switch (g_section)
{
default:
case C_WEAPONS:
current_menu = &s_weapons_menu;
break;
case C_COMMAND:
current_menu = &s_controlscommand_menu;
break;
case C_LOOK:
current_menu = &s_controlslook_menu;
break;
case C_MOVE:
current_menu = &s_controlsmove_menu;
break;
case C_MOUSE:
current_menu = &s_controlsmouse_menu;
break;
case C_MODELVIEW:
current_menu = &s_controlsmodelview_menu;
break;
}
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;
if ((key<1) || (key>256)) // Ignore high ascii keys
{
return (menu_null_sound);
}
switch (key)
{
case K_ESCAPE:
s_controls.waitingforkey = qfalse;
// Turn off the waiting for key message
s_attack_waiting_action.generic.flags = QMF_HIDDEN;
Controls_UpdateNew();
return (menu_out_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->bind3 == key)
{
bindptr->bind3 = -1;
}
else if (bindptr->bind2 == key)
{
bindptr->bind2 = bindptr->bind3;
bindptr->bind3 = -1;
}
else if (bindptr->bind1 == key)
{
bindptr->bind1 = bindptr->bind2;
bindptr->bind2 = bindptr->bind3;
bindptr->bind3 = -1;
}
}
}
// Turn off the waiting for key message
s_attack_waiting_action.generic.flags = QMF_HIDDEN;
// assign key to local store
// id = ((menucommon_s*)(s_controls.menu.items[s_controls.menu.cursor]))->id;
id = ((menucommon_s*)(current_menu->items[current_menu->cursor]))->id;
bindptr = g_bindings;
for (i=0; ;i++,bindptr++)
{
if (!bindptr->label)
break;
if (bindptr->id == id)
{
found = qtrue;
if (key == -1)
{
Controls_ClearKeyAssignment (bindptr->command);
bindptr->bind1 = -1;
bindptr->bind2 = -1;
bindptr->bind3 = -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
{
bindptr->bind3 = bindptr->bind2;
bindptr->bind2 = bindptr->bind1;
bindptr->bind1 = key;
}
break;
}
}
s_controls.waitingforkey = qfalse;
s_controls.changesmade = qfalse;
if (found)
{
Controls_SetConfig();
Controls_UpdateNew();
return (menu_out_sound);
}
ignorekey:
return Menu_DefaultKey( current_menu, key );
}
/*
=================
Controls_ResetDefaults_Action
=================
*/
/*
static void Controls_ResetDefaults_Action( qboolean result )
{
if( !result ) {
return;
}
s_controls.changesmade = qtrue;
Controls_SetDefaults();
Controls_UpdateNew();
}
*/
/*
=================
Controls_ActionEvent
=================
*/
static void Controls_ActionEvent( void* ptr, int event )
{
menuframework_s* menu;
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;
// Show your waiting for data
s_attack_waiting_action.generic.flags &= ~QMF_HIDDEN;
s_attack_waiting_action.generic.flags |= QMF_BLINK;
// Turn off 'apply action' so it won't flash
// s_attack_apply_action.generic.flags = QMF_GRAYED;
// Show this it the chosen item
menu = ((menucommon_s*)ptr)->parent;
chosenitem = (menucommon_s *) Menu_ItemAtCursor(((menuframework_s*)menu));
Controls_UpdateNew();
}
}
/*
=================
Controls_InitModel
=================
*/
static void Controls_InitModel( void )
{
memset( &s_controls.playerinfo, 0, sizeof(playerInfo_t) );
UI_PlayerInfo_SetModel( &s_controls.playerinfo, UI_Cvar_VariableString( "model" ) );
Controls_UpdateModel( ANIM_IDLE );
}
/*
=================
SetupMenu_TopButtons
=================
*/
void SetupMenu_TopButtons(menuframework_s *menu,int menuType,menuaction_s *s_video_apply_action)
{
vid_apply_action = s_video_apply_action;
s_controls_mainmenu.generic.type = MTYPE_BITMAP;
s_controls_mainmenu.generic.flags = QMF_HIGHLIGHT_IF_FOCUS;
s_controls_mainmenu.generic.x = 482;
s_controls_mainmenu.generic.y = 136;
s_controls_mainmenu.generic.name = BUTTON_GRAPHIC_LONGRIGHT;
if (menuType != MENU_VIDEODATA)
{
s_controls_mainmenu.generic.callback = Controls_MenuEvent;
}
else // How do you spell HACK?
{
s_controls_mainmenu.generic.callback = Controls_MenuEventVideo;
}
s_controls_mainmenu.width = MENU_BUTTON_MED_WIDTH;
s_controls_mainmenu.height = MENU_BUTTON_MED_HEIGHT;
s_controls_mainmenu.color = CT_DKPURPLE1;
s_controls_mainmenu.color2 = CT_LTPURPLE1;
s_controls_mainmenu.textX = 5;
s_controls_mainmenu.textY = 2;
if (!ingameFlag)
{
s_controls_mainmenu.textEnum = MBT_MAINMENU;
s_controls_mainmenu.generic.id = ID_MAINMENU;
}
else // In game menu
{
s_controls_mainmenu.textEnum = MBT_INGAMEMENU;
s_controls_mainmenu.generic.id = ID_INGAMEMENU;
}
s_controls_mainmenu.textcolor = CT_BLACK;
s_controls_mainmenu.textcolor2 = CT_WHITE;
s_controls_controls.generic.type = MTYPE_BITMAP;
s_controls_controls.generic.flags = QMF_HIGHLIGHT_IF_FOCUS;
s_controls_controls.generic.x = setup_menubuttons[0][0];
s_controls_controls.generic.y = setup_menubuttons[0][1];
s_controls_controls.generic.name = BUTTON_GRAPHIC_LONGRIGHT;
s_controls_controls.generic.id = ID_CONTROLS;
if (menuType != MENU_VIDEODATA)
{
s_controls_controls.generic.callback = Controls_MenuEvent;
}
else // How do you spell HACK?
{
s_controls_controls.generic.callback = Controls_MenuEventVideo;
}
s_controls_controls.width = MENU_BUTTON_MED_WIDTH;
s_controls_controls.height = MENU_BUTTON_MED_HEIGHT;
s_controls_controls.color = CT_DKPURPLE1;
s_controls_controls.color2 = CT_LTPURPLE1;
s_controls_controls.textX = 5;
s_controls_controls.textY = 2;
s_controls_controls.textEnum = MBT_CONTROLS;
s_controls_controls.textcolor = CT_BLACK;
s_controls_controls.textcolor2 = CT_WHITE;
s_controls_video.generic.type = MTYPE_BITMAP;
s_controls_video.generic.flags = QMF_HIGHLIGHT_IF_FOCUS;
s_controls_video.generic.x = setup_menubuttons[1][0];
s_controls_video.generic.y = setup_menubuttons[1][1];
s_controls_video.generic.name = BUTTON_GRAPHIC_LONGRIGHT;
s_controls_video.generic.id = ID_VIDEO;
if (menuType != MENU_VIDEODATA)
{
s_controls_video.generic.callback = Controls_MenuEvent;
}
else // How do you spell HACK?
{
s_controls_video.generic.callback = Controls_MenuEventVideo;
}
s_controls_video.width = MENU_BUTTON_MED_WIDTH;
s_controls_video.height = MENU_BUTTON_MED_HEIGHT;
s_controls_video.color = CT_DKPURPLE1;
s_controls_video.color2 = CT_LTPURPLE1;
s_controls_video.textX = 5;
s_controls_video.textY = 2;
s_controls_video.textEnum = MBT_VIDEOSETTINGS;
s_controls_video.textcolor = CT_BLACK;
s_controls_video.textcolor2 = CT_WHITE;
s_controls_sound.generic.type = MTYPE_BITMAP;
s_controls_sound.generic.flags = QMF_HIGHLIGHT_IF_FOCUS;
s_controls_sound.generic.x = setup_menubuttons[2][0];
s_controls_sound.generic.y = setup_menubuttons[2][1];
s_controls_sound.generic.name = BUTTON_GRAPHIC_LONGRIGHT;
s_controls_sound.generic.id = ID_SOUND;
if (menuType != MENU_VIDEODATA)
{
s_controls_sound.generic.callback = Controls_MenuEvent;
}
else // How do you spell HACK?
{
s_controls_sound.generic.callback = Controls_MenuEventVideo;
}
s_controls_sound.width = MENU_BUTTON_MED_WIDTH;
s_controls_sound.height = MENU_BUTTON_MED_HEIGHT;
s_controls_sound.color = CT_DKPURPLE1;
s_controls_sound.color2 = CT_LTPURPLE1;
s_controls_sound.textX = 5;
s_controls_sound.textY = 2;
s_controls_sound.textEnum = MBT_SOUNDSETTINGS;
s_controls_sound.textcolor = CT_BLACK;
s_controls_sound.textcolor2 = CT_WHITE;
s_controls_game.generic.type = MTYPE_BITMAP;
s_controls_game.generic.flags = QMF_HIGHLIGHT_IF_FOCUS;
s_controls_game.generic.x = setup_menubuttons[3][0];
s_controls_game.generic.y = setup_menubuttons[3][1];
s_controls_game.generic.name =BUTTON_GRAPHIC_LONGRIGHT;
s_controls_game.generic.id = ID_GAMEOPTIONS;
if (menuType != MENU_VIDEODATA)
{
s_controls_game.generic.callback = Controls_MenuEvent;
}
else // How do you spell HACK?
{
s_controls_game.generic.callback = Controls_MenuEventVideo;
}
s_controls_game.width = MENU_BUTTON_MED_WIDTH;
s_controls_game.height = MENU_BUTTON_MED_HEIGHT;
s_controls_game.color = CT_DKPURPLE1;
s_controls_game.color2 = CT_LTPURPLE1;
s_controls_game.textX = 5;
s_controls_game.textY = 2;
s_controls_game.textEnum = MBT_GAMEOPTIONS;
s_controls_game.textcolor = CT_BLACK;
s_controls_game.textcolor2 = CT_WHITE;
s_controls_player.generic.type = MTYPE_BITMAP;
s_controls_player.generic.flags = QMF_HIGHLIGHT_IF_FOCUS;
s_controls_player.generic.x = setup_menubuttons[4][0];
s_controls_player.generic.y = setup_menubuttons[4][1];
s_controls_player.generic.name = BUTTON_GRAPHIC_LONGRIGHT;
s_controls_player.generic.id = ID_PLAYER;
if (menuType != MENU_VIDEODATA)
{
s_controls_player.generic.callback = Controls_MenuEvent;
}
else // How do you spell HACK?
{
s_controls_player.generic.callback = Controls_MenuEventVideo;
}
s_controls_player.width = MENU_BUTTON_MED_WIDTH;
s_controls_player.height = MENU_BUTTON_MED_HEIGHT;
s_controls_player.color = CT_DKPURPLE1;
s_controls_player.color2 = CT_LTPURPLE1;
s_controls_player.textX = 5;
s_controls_player.textY = 2;
s_controls_player.textEnum = MBT_PLAYER;
s_controls_player.textcolor = CT_BLACK;
s_controls_player.textcolor2 = CT_WHITE;
s_controls_default.generic.type = MTYPE_BITMAP;
s_controls_default.generic.flags = QMF_HIGHLIGHT_IF_FOCUS;
s_controls_default.generic.x = setup_menubuttons[5][0];
s_controls_default.generic.y = setup_menubuttons[5][1];
s_controls_default.generic.name = "menu/common/bar1.tga";
s_controls_default.generic.id = ID_CONTROLSDEFAULT;
if (menuType != MENU_VIDEODATA)
{
s_controls_default.generic.callback = Controls_MenuEvent;
}
else // How do you spell HACK?
{
s_controls_default.generic.callback = Controls_MenuEventVideo;
}
s_controls_default.width = MENU_BUTTON_MED_WIDTH;
s_controls_default.height = MENU_BUTTON_MED_HEIGHT;
s_controls_default.color = CT_DKPURPLE1;
s_controls_default.color2 = CT_LTPURPLE1;
s_controls_default.textX = 5;
s_controls_default.textY = 2;
s_controls_default.textEnum = MBT_SETDEFAULT;
s_controls_default.textcolor = CT_BLACK;
s_controls_default.textcolor2 = CT_WHITE;
s_controls_cdkey.generic.type = MTYPE_BITMAP;
s_controls_cdkey.generic.flags = QMF_HIGHLIGHT_IF_FOCUS;
s_controls_cdkey.generic.x = setup_menubuttons[6][0];
s_controls_cdkey.generic.y = setup_menubuttons[6][1];
s_controls_cdkey.generic.name = BUTTON_GRAPHIC_LONGRIGHT;
s_controls_cdkey.generic.id = ID_CDKEY;
if (menuType != MENU_VIDEODATA)
{
s_controls_cdkey.generic.callback = Controls_MenuEvent;
}
else // How do you spell HACK?
{
s_controls_cdkey.generic.callback = Controls_MenuEventVideo;
}
s_controls_cdkey.width = MENU_BUTTON_MED_WIDTH;
s_controls_cdkey.height = MENU_BUTTON_MED_HEIGHT;
s_controls_cdkey.color = CT_DKPURPLE1;
s_controls_cdkey.color2 = CT_LTPURPLE1;
s_controls_cdkey.textX = 5;
s_controls_cdkey.textY = 2;
s_controls_cdkey.textEnum = MBT_CDKEY;
s_controls_cdkey.textcolor = CT_BLACK;
s_controls_cdkey.textcolor2 = CT_WHITE;
if (uis.demoversion)
{
s_controls_cdkey.generic.flags |= QMF_GRAYED;
}
/*
s_controls_network.generic.type = MTYPE_BITMAP;
s_controls_network.generic.flags = QMF_HIGHLIGHT_IF_FOCUS;
s_controls_network.generic.x = setup_menubuttons[6][0];
s_controls_network.generic.y = setup_menubuttons[6][1];
s_controls_network.generic.name = "menu/common/bar1.tga";
s_controls_network.generic.id = ID_NETWORK;
s_controls_network.generic.callback = Controls_MenuEvent;
s_controls_network.width = MENU_BUTTON_MED_WIDTH;
s_controls_network.height = MENU_BUTTON_MED_HEIGHT;
s_controls_network.color = CT_DKPURPLE1;
s_controls_network.color2 = CT_LTPURPLE1;
s_controls_network.textX = 5;
s_controls_network.textY = 2;
s_controls_network.textEnum = MBT_NETWORK;
s_controls_network.textcolor = CT_BLACK;
s_controls_network.textcolor2 = CT_WHITE;
*/
s_controls_fonts.generic.type = MTYPE_BITMAP;
s_controls_fonts.generic.flags = QMF_HIGHLIGHT_IF_FOCUS;
s_controls_fonts.generic.x = setup_menubuttons[7][0];
s_controls_fonts.generic.y = setup_menubuttons[7][1];
s_controls_fonts.generic.name = BUTTON_GRAPHIC_LONGRIGHT;
s_controls_fonts.generic.id = ID_FONTS;
if (menuType != MENU_VIDEODATA)
{
s_controls_fonts.generic.callback = Controls_MenuEvent;
}
else // How do you spell HACK?
{
s_controls_fonts.generic.callback = Controls_MenuEventVideo;
}
s_controls_fonts.width = 100;
s_controls_fonts.height = MENU_BUTTON_MED_HEIGHT;
s_controls_fonts.color = CT_DKPURPLE1;
s_controls_fonts.color2 = CT_LTPURPLE1;
s_controls_fonts.textX = 5;
s_controls_fonts.textY = 2;
s_controls_fonts.textEnum = MBT_FONTS;
s_controls_fonts.textcolor = CT_BLACK;
s_controls_fonts.textcolor2 = CT_WHITE;
if (menuType!=MENU_PLAYER)
{
Menu_AddItem( menu, ( void * )&s_controls_mainmenu);
}
Menu_AddItem( menu, ( void * )&s_controls_controls);
Menu_AddItem( menu, ( void * )&s_controls_video);
Menu_AddItem( menu, ( void * )&s_controls_sound);
Menu_AddItem( menu, ( void * )&s_controls_game);
Menu_AddItem( menu, ( void * )&s_controls_player);
Menu_AddItem( menu, ( void * )&s_controls_default);
Menu_AddItem( menu, ( void * )&s_controls_cdkey);
switch (menuType)
{
case MENU_CONTROLS :
s_controls_controls.textcolor = CT_LTGOLD1;
s_controls_controls.textcolor2 = CT_LTGOLD1;
s_controls_controls.generic.flags = QMF_GRAYED;
break;
case MENU_VIDEO :
case MENU_VIDEODATA :
s_controls_video.textcolor = CT_LTGOLD1;
s_controls_video.textcolor2 = CT_LTGOLD1;
s_controls_video.generic.flags = QMF_GRAYED;
break;
case MENU_SOUND :
s_controls_sound.textcolor = CT_LTGOLD1;
s_controls_sound.textcolor2 = CT_LTGOLD1;
s_controls_sound.generic.flags = QMF_GRAYED;
break;
case MENU_GAME :
s_controls_game.textcolor = CT_LTGOLD1;
s_controls_game.textcolor2 = CT_LTGOLD1;
s_controls_game.generic.flags = QMF_GRAYED;
break;
case MENU_DEFAULT :
s_controls_default.textcolor = CT_LTGOLD1;
s_controls_default.textcolor2 = CT_LTGOLD1;
s_controls_default.generic.flags = QMF_GRAYED;
break;
case MENU_CDKEY :
s_controls_cdkey.textcolor = CT_LTGOLD1;
s_controls_cdkey.textcolor2 = CT_LTGOLD1;
s_controls_cdkey.generic.flags = QMF_GRAYED;
break;
case MENU_PLAYER :
s_controls_player.textcolor = CT_LTGOLD1;
s_controls_player.textcolor2 = CT_LTGOLD1;
s_controls_player.generic.flags = QMF_GRAYED;
break;
case MENU_NETWORK :
s_controls_network.textcolor = CT_LTGOLD1;
s_controls_network.textcolor2 = CT_LTGOLD1;
s_controls_network.generic.flags = QMF_GRAYED;
break;
case MENU_FONTS :
s_controls_fonts.textcolor = CT_LTGOLD1;
s_controls_fonts.textcolor2 = CT_LTGOLD1;
s_controls_fonts.generic.flags = QMF_GRAYED;
break;
}
if (trap_Cvar_VariableValue("developer"))
Menu_AddItem( menu, ( void * )&s_controls_fonts);
}
/*
=================
M_WeaponsMenu_Blinkies
=================
*/
void M_WeaponsMenu_Blinkies (void)
{
int i;
for (i=0;i<AMG_MAX;++i)
{
attackmenu_graphics[i].color = CT_VDKPURPLE1;
}
// Don't flash frame unless waiting for input
if (!s_controls.waitingforkey)
{
return;
}
if (attackmenu_graphics[AMG_MIDLEFT].timer < uis.realtime)
{
attackmenu_graphics[AMG_MIDLEFT].timer = uis.realtime + 500;
++attackmenu_graphics[AMG_MIDLEFT].target;
if (attackmenu_graphics[AMG_MIDLEFT].target > 7)
{
attackmenu_graphics[AMG_MIDLEFT].target = 0;
}
}
switch (attackmenu_graphics[AMG_MIDLEFT].target)
{
case 0:
attackmenu_graphics[AMG_MIDLEFT].color = CT_LTPURPLE1;
break;
case 1:
attackmenu_graphics[AMG_UPPERLEFT].color = CT_LTPURPLE1;
attackmenu_graphics[AMG_LOWERLEFT].color = CT_LTPURPLE1;
break;
case 2:
attackmenu_graphics[AMG_UPPERCORNER].color = CT_LTPURPLE1;
attackmenu_graphics[AMG_LOWERCORNER].color = CT_LTPURPLE1;
break;
case 3:
attackmenu_graphics[AMG_UPPERTOP1ST].color = CT_LTPURPLE1;
attackmenu_graphics[AMG_LOWERTOP1ST].color = CT_LTPURPLE1;
break;
case 4:
attackmenu_graphics[AMG_UPPERTOP2ND].color = CT_LTPURPLE1;
attackmenu_graphics[AMG_LOWERTOP2ND].color = CT_LTPURPLE1;
break;
case 5:
attackmenu_graphics[AMG_UPPERSWOOP].color = CT_LTPURPLE1;
attackmenu_graphics[AMG_LOWERSWOOP].color = CT_LTPURPLE1;
break;
case 6:
attackmenu_graphics[AMG_TOPRIGHT].color = CT_LTPURPLE1;
attackmenu_graphics[AMG_BOTTOMRIGHT].color = CT_LTPURPLE1;
break;
case 7:
attackmenu_graphics[AMG_PLAYERBKGRND].color = CT_LTPURPLE1;
break;
}
}
/*
=================
M_WeaponsMenu_Graphics
=================
*/
void M_WeaponsMenu_Graphics (void)
{
UI_MenuFrame(&s_weapons_menu);
UI_DrawProportionalString( 74, 66, "56-129",UI_RIGHT|UI_TINYFONT, colorTable[CT_BLACK]);
UI_DrawProportionalString( 74, 84, "33",UI_RIGHT|UI_TINYFONT, colorTable[CT_BLACK]);
UI_DrawProportionalString( 74, 188, "9893",UI_RIGHT|UI_TINYFONT, colorTable[CT_BLACK]);
UI_DrawProportionalString( 74, 395, "12799",UI_RIGHT|UI_TINYFONT, colorTable[CT_BLACK]);
M_WeaponsMenu_Blinkies();
UI_PrintMenuGraphics(attackmenu_graphics,AMG_MAX);
UI_DrawProportionalString( 607, 174, "981235",UI_RIGHT|UI_TINYFONT, colorTable[CT_BLACK]);
UI_DrawProportionalString( 607, 406, "5672141",UI_RIGHT|UI_TINYFONT, colorTable[CT_BLACK]);
if (s_attack_waiting_action.generic.flags & QMF_HIDDEN)
{
UI_DrawProportionalString( 207, 411, menu_normal_text[MNT_BACKSPACE],UI_SMALLFONT, colorTable[CT_WHITE]);
}
}
/*
=================
Weapons_MenuDraw
=================
*/
static void Weapons_MenuDraw (void)
{
M_WeaponsMenu_Graphics();
UI_Setup_MenuButtons();
Menu_Draw( &s_weapons_menu );
}
/*
=================
WeaponsMenu_Precache
=================
*/
static void WeaponsMenu_Precache( void )
{
int i;
swooshTop = trap_R_RegisterShaderNoMip("menu/common/swoosh_top.tga");
swooshBottom= trap_R_RegisterShaderNoMip("menu/common/swoosh_bottom.tga");
// Precache all menu graphics in array
for (i=0;i<AMG_MAX;++i)
{
if (attackmenu_graphics[i].type == MG_GRAPHIC)
{
attackmenu_graphics[i].graphic = trap_R_RegisterShaderNoMip(attackmenu_graphics[i].file);
}
}
}
/*
=================
Controls_ModelEvent
=================
*/
static void Controls_ModelEvent( void* ptr, int event )
{
/*menucommon_s* menu = (menucommon_s*)ptr;
if (event == QM_LOSTFOCUS)
{
g_playerinfo.looking = qfalse;
}
else if (event == QM_GOTFOCUS)
{
g_playerinfo.looking = menu->x;
}
else*/ if ((event == QM_ACTIVATED) )
{
uis.spinView = qtrue;
uis.cursorpx = uis.cursorx;
}
}
/*
=================
Playermodel_MenuInit
=================
*/
static void Playermodel_MenuInit( void )
{
s_controls_playermdl.generic.type = MTYPE_BITMAP;
s_controls_playermdl.generic.flags = QMF_SILENT; //INACTIVE
s_controls_playermdl.generic.callback = Controls_ModelEvent;
s_controls_playermdl.generic.ownerdraw = Controls_DrawPlayer;
s_controls_playermdl.generic.x = 501; //455
s_controls_playermdl.generic.y = 189; //145
s_controls_playermdl.width = 110;//32*5.6
s_controls_playermdl.height = 211;//56*5.6
//Model spin data
uis.spinView = qfalse;
uis.lastYaw = 180 - 20;
}
/*
=================
SetupActionButtons_Init
=================
*/
static void SetupActionButtons_Init(int section)
{
int i,y;
void** controlptr;
menuframework_s *current_menu;
controlptr = g_controls[g_section];
switch (g_section)
{
default:
case C_WEAPONS:
current_menu = &s_weapons_menu;
break;
case C_COMMAND:
current_menu = &s_controlscommand_menu;
break;
case C_LOOK:
current_menu = &s_controlslook_menu;
break;
case C_MOVE:
current_menu = &s_controlsmove_menu;
break;
case C_MOUSE:
current_menu = &s_controlsmouse_menu;
break;
case C_MODELVIEW:
current_menu = &s_controlsmodelview_menu;
break;
}
y = current_menu->listY;
for (i=0; i<99; i++) // The 99 is to avoid runaway loops
{
if (!controlptr[i])
{
break;
}
((menuaction_s*)controlptr[i])->generic.x = current_menu->listX;
((menuaction_s*)controlptr[i])->generic.y = y;
((menuaction_s*)controlptr[i])->textX = 5;
((menuaction_s*)controlptr[i])->textY = 1;
((menuaction_s*)controlptr[i])->height = 18;
((menuaction_s*)controlptr[i])->width = 150;
//if ( ((menuaction_s*)controlptr[i])->generic.id == ID_EQUIP || ((menuaction_s*)controlptr[i])->generic.id == ID_WEAPON0 )
// y += 40;
//else
y += 20;
}
}
/*
=================
Weapons_MenuInit
=================
*/
static void Weapons_MenuInit( void )
{
WeaponsMenu_Precache();
attackmenu_graphics[AMG_MIDLEFT].timer = uis.realtime + 500;
s_weapons_menu.nitems = 0;
s_weapons_menu.wrapAround = qtrue;
// s_weapons_menu.opening = NULL;
// s_weapons_menu.closing = NULL;
s_weapons_menu.draw = Weapons_MenuDraw;
s_weapons_menu.key = Controls_MenuKey;
s_weapons_menu.fullscreen = qtrue;
s_weapons_menu.descX = MENU_DESC_X;
s_weapons_menu.descY = MENU_DESC_Y;
s_weapons_menu.listX = 170;
s_weapons_menu.listY = 184;
s_weapons_menu.titleX = MENU_TITLE_X;
s_weapons_menu.titleY = MENU_TITLE_Y;
s_weapons_menu.titleI = MNT_CONTROLSMENU_TITLE;
s_weapons_menu.footNoteEnum = MNT_WEAPONKEY_SETUP;
Playermodel_MenuInit();
SetupMenu_TopButtons(&s_weapons_menu,MENU_CONTROLS,NULL);
SetupMenu_SideButtons(&s_weapons_menu,MENU_CONTROLS_WEAPON);
s_controls_weapon.textcolor = CT_LTGOLD1;
s_controls_weapon.textcolor2 = CT_LTGOLD1;
s_attack_weapon0_action.generic.type = MTYPE_ACTION;
s_attack_weapon0_action.generic.flags = QMF_LEFT_JUSTIFY|QMF_HIGHLIGHT_IF_FOCUS;
s_attack_weapon0_action.generic.callback = Controls_ActionEvent;
s_attack_weapon0_action.generic.ownerdraw = Controls_DrawKeyBinding;
s_attack_weapon0_action.generic.id = ID_WEAPON0;
s_attack_weapon1_action.generic.type = MTYPE_ACTION;
s_attack_weapon1_action.generic.flags = QMF_LEFT_JUSTIFY|QMF_HIGHLIGHT_IF_FOCUS;
s_attack_weapon1_action.generic.callback = Controls_ActionEvent;
s_attack_weapon1_action.generic.ownerdraw = Controls_DrawKeyBinding;
s_attack_weapon1_action.generic.id = ID_WEAPON1;
s_attack_weapon2_action.generic.type = MTYPE_ACTION;
s_attack_weapon2_action.generic.flags = QMF_LEFT_JUSTIFY|QMF_HIGHLIGHT_IF_FOCUS;
s_attack_weapon2_action.generic.callback = Controls_ActionEvent;
s_attack_weapon2_action.generic.ownerdraw = Controls_DrawKeyBinding;
s_attack_weapon2_action.generic.id = ID_WEAPON2;
s_attack_weapon3_action.generic.type = MTYPE_ACTION;
s_attack_weapon3_action.generic.flags = QMF_LEFT_JUSTIFY|QMF_HIGHLIGHT_IF_FOCUS;
s_attack_weapon3_action.generic.callback = Controls_ActionEvent;
s_attack_weapon3_action.generic.ownerdraw = Controls_DrawKeyBinding;
s_attack_weapon3_action.generic.id = ID_WEAPON3;
s_attack_weapon3_action.generic.type = MTYPE_ACTION;
s_attack_weapon3_action.generic.flags = QMF_LEFT_JUSTIFY|QMF_HIGHLIGHT_IF_FOCUS;
s_attack_weapon3_action.generic.callback = Controls_ActionEvent;
s_attack_weapon3_action.generic.ownerdraw = Controls_DrawKeyBinding;
s_attack_weapon3_action.generic.id = ID_WEAPON3;
s_attack_weapon4_action.generic.type = MTYPE_ACTION;
s_attack_weapon4_action.generic.flags = QMF_LEFT_JUSTIFY|QMF_HIGHLIGHT_IF_FOCUS;
s_attack_weapon4_action.generic.callback = Controls_ActionEvent;
s_attack_weapon4_action.generic.ownerdraw = Controls_DrawKeyBinding;
s_attack_weapon4_action.generic.id = ID_WEAPON4;
s_attack_weapon5_action.generic.type = MTYPE_ACTION;
s_attack_weapon5_action.generic.flags = QMF_LEFT_JUSTIFY|QMF_HIGHLIGHT_IF_FOCUS;
s_attack_weapon5_action.generic.callback = Controls_ActionEvent;
s_attack_weapon5_action.generic.ownerdraw = Controls_DrawKeyBinding;
s_attack_weapon5_action.generic.id = ID_WEAPON5;
/*s_attack_weapon6_action.generic.type = MTYPE_ACTION;
s_attack_weapon6_action.generic.flags = QMF_LEFT_JUSTIFY|QMF_HIGHLIGHT_IF_FOCUS;
s_attack_weapon6_action.generic.callback = Controls_ActionEvent;
s_attack_weapon6_action.generic.ownerdraw = Controls_DrawKeyBinding;
s_attack_weapon6_action.generic.id = ID_WEAPON6;
s_attack_weapon6_action.generic.type = MTYPE_ACTION;
s_attack_weapon6_action.generic.flags = QMF_LEFT_JUSTIFY|QMF_HIGHLIGHT_IF_FOCUS;
s_attack_weapon6_action.generic.callback = Controls_ActionEvent;
s_attack_weapon6_action.generic.ownerdraw = Controls_DrawKeyBinding;
s_attack_weapon6_action.generic.id = ID_WEAPON6;
s_attack_weapon7_action.generic.type = MTYPE_ACTION;
s_attack_weapon7_action.generic.flags = QMF_LEFT_JUSTIFY|QMF_HIGHLIGHT_IF_FOCUS;
s_attack_weapon7_action.generic.callback = Controls_ActionEvent;
s_attack_weapon7_action.generic.ownerdraw = Controls_DrawKeyBinding;
s_attack_weapon7_action.generic.id = ID_WEAPON7;
s_attack_weapon8_action.generic.type = MTYPE_ACTION;
s_attack_weapon8_action.generic.flags = QMF_LEFT_JUSTIFY|QMF_HIGHLIGHT_IF_FOCUS;
s_attack_weapon8_action.generic.callback = Controls_ActionEvent;
s_attack_weapon8_action.generic.ownerdraw = Controls_DrawKeyBinding;
s_attack_weapon8_action.generic.id = ID_WEAPON8;
s_attack_weapon9_action.generic.type = MTYPE_ACTION;
s_attack_weapon9_action.generic.flags = QMF_LEFT_JUSTIFY|QMF_HIGHLIGHT_IF_FOCUS;
s_attack_weapon9_action.generic.callback = Controls_ActionEvent;
s_attack_weapon9_action.generic.ownerdraw = Controls_DrawKeyBinding;
s_attack_weapon9_action.generic.id = ID_WEAPON9;*/
s_attack_weapon_next_action.generic.type = MTYPE_ACTION;
s_attack_weapon_next_action.generic.flags = QMF_LEFT_JUSTIFY|QMF_HIGHLIGHT_IF_FOCUS;
s_attack_weapon_next_action.generic.callback = Controls_ActionEvent;
s_attack_weapon_next_action.generic.ownerdraw = Controls_DrawKeyBinding;
s_attack_weapon_next_action.generic.id = ID_WEAPNEXT;
s_attack_weapon_prev_action.generic.type = MTYPE_ACTION;
s_attack_weapon_prev_action.generic.flags = QMF_LEFT_JUSTIFY|QMF_HIGHLIGHT_IF_FOCUS;
s_attack_weapon_prev_action.generic.callback = Controls_ActionEvent;
s_attack_weapon_prev_action.generic.ownerdraw = Controls_DrawKeyBinding;
s_attack_weapon_prev_action.generic.id = ID_WEAPPREV;
s_attack_waiting_action.generic.type = MTYPE_ACTION;
s_attack_waiting_action.generic.flags = QMF_HIDDEN;
s_attack_waiting_action.generic.x = 202;
s_attack_waiting_action.generic.y = 410;
s_attack_waiting_action.textEnum = MBT_WAITFORKEY;
s_attack_waiting_action.textcolor = CT_BLACK;
s_attack_waiting_action.textcolor2 = CT_WHITE;
s_attack_waiting_action.textcolor3 = CT_LTGREY;
s_attack_waiting_action.color = CT_VDKPURPLE1;//CT_DKPURPLE1;
s_attack_waiting_action.color2 = CT_VDKPURPLE1;//CT_LTPURPLE1;
s_attack_waiting_action.color3 = CT_DKGREY;
s_attack_waiting_action.textX = 5;
s_attack_waiting_action.textY = 1;
s_attack_waiting_action.width = 255;
s_attack_waiting_action.height = 18;
g_section = C_WEAPONS;
SetupActionButtons_Init(g_section); // Set up standard values
Menu_AddItem( &s_weapons_menu, ( void * )&s_controls_playermdl);
Menu_AddItem( &s_weapons_menu, ( void * )&s_attack_weapon0_action);
Menu_AddItem( &s_weapons_menu, ( void * )&s_attack_weapon1_action);
Menu_AddItem( &s_weapons_menu, ( void * )&s_attack_weapon2_action);
Menu_AddItem( &s_weapons_menu, ( void * )&s_attack_weapon3_action);
Menu_AddItem( &s_weapons_menu, ( void * )&s_attack_weapon4_action);
Menu_AddItem( &s_weapons_menu, ( void * )&s_attack_weapon5_action);
/*Menu_AddItem( &s_weapons_menu, ( void * )&s_attack_weapon6_action);
Menu_AddItem( &s_weapons_menu, ( void * )&s_attack_weapon7_action);
Menu_AddItem( &s_weapons_menu, ( void * )&s_attack_weapon8_action);
Menu_AddItem( &s_weapons_menu, ( void * )&s_attack_weapon9_action);*/
Menu_AddItem( &s_weapons_menu, ( void * )&s_attack_weapon_next_action);
Menu_AddItem( &s_weapons_menu, ( void * )&s_attack_weapon_prev_action);
Menu_AddItem( &s_weapons_menu, ( void * )&s_attack_waiting_action);
// initialize the configurable cvars
Controls_InitCvars();
// initialize the current config
Controls_GetConfig();
// initial default section
s_controls.waitingforkey = qfalse;
g_changesmade = qfalse;
g_prompttosave = qfalse;
// update the ui
Controls_UpdateNew();
}
/*
=================
UI_SetupWeaponsMenu
=================
*/
void UI_SetupWeaponsMenu( void )
{
// if (!s_weapons_menu.initialized)
// {
Weapons_MenuInit();
// }
UI_PushMenu( &s_weapons_menu );
}
/*
===============
SetupMenu_SideButtons
===============
*/
static void SetupMenu_SideButtons(menuframework_s *menu,int menuType)
{
int x,y,inc;
y = 204;
inc = 6;
x = 30;
s_controls_weapon.generic.type = MTYPE_BITMAP;
s_controls_weapon.generic.flags = QMF_HIGHLIGHT_IF_FOCUS;
s_controls_weapon.generic.x = x;
s_controls_weapon.generic.y = y;
s_controls_weapon.generic.name = GRAPHIC_SQUARE;
s_controls_weapon.generic.id = ID_ATTACK;
s_controls_weapon.generic.callback = Controls_MenuEvent;
s_controls_weapon.width = MENU_BUTTON_MED_WIDTH - 10;
s_controls_weapon.height = MENU_BUTTON_MED_HEIGHT;
s_controls_weapon.color = CT_DKPURPLE1;
s_controls_weapon.color2 = CT_LTPURPLE1;
s_controls_weapon.textX = 5;
s_controls_weapon.textY = 1;
s_controls_weapon.textEnum = MBT_WEAPONKEYS;
s_controls_weapon.textcolor = CT_BLACK;
s_controls_weapon.textcolor2 = CT_WHITE;
y += inc+MENU_BUTTON_MED_HEIGHT;
s_controls_look.generic.type = MTYPE_BITMAP;
s_controls_look.generic.flags = QMF_HIGHLIGHT_IF_FOCUS;
s_controls_look.generic.x = x;
s_controls_look.generic.y = y;
s_controls_look.generic.name = GRAPHIC_SQUARE;
s_controls_look.generic.id = ID_CONTROLSLOOK;
s_controls_look.generic.callback = Controls_MenuEvent;
s_controls_look.width = MENU_BUTTON_MED_WIDTH - 10;
s_controls_look.height = MENU_BUTTON_MED_HEIGHT;
s_controls_look.color = CT_DKPURPLE1;
s_controls_look.color2 = CT_LTPURPLE1;
s_controls_look.textX = 5;
s_controls_look.textY = 1;
s_controls_look.textEnum = MBT_LOOKKEYS;
s_controls_look.textcolor = CT_BLACK;
s_controls_look.textcolor2 = CT_WHITE;
y += inc+MENU_BUTTON_MED_HEIGHT;
s_controls_movement.generic.type = MTYPE_BITMAP;
s_controls_movement.generic.flags = QMF_HIGHLIGHT_IF_FOCUS;
s_controls_movement.generic.x = x;
s_controls_movement.generic.y = y;
s_controls_movement.generic.name = GRAPHIC_SQUARE;
s_controls_movement.generic.id = ID_CONTROLSMOVE;
s_controls_movement.generic.callback = Controls_MenuEvent;
s_controls_movement.width = MENU_BUTTON_MED_WIDTH - 10;
s_controls_movement.height = MENU_BUTTON_MED_HEIGHT;
s_controls_movement.color = CT_DKPURPLE1;
s_controls_movement.color2 = CT_LTPURPLE1;
s_controls_movement.textX = 5;
s_controls_movement.textY = 1;
s_controls_movement.textEnum = MBT_MOVEMENTKEYS;
s_controls_movement.textcolor = CT_BLACK;
s_controls_movement.textcolor2 = CT_WHITE;
y += inc+MENU_BUTTON_MED_HEIGHT;
s_controls_command.generic.type = MTYPE_BITMAP;
s_controls_command.generic.flags = QMF_HIGHLIGHT_IF_FOCUS;
s_controls_command.generic.x = x;
s_controls_command.generic.y = y;
s_controls_command.generic.name = GRAPHIC_SQUARE;
s_controls_command.generic.id = ID_CONTROLSCOMMAND;
s_controls_command.generic.callback = Controls_MenuEvent;
s_controls_command.width = MENU_BUTTON_MED_WIDTH - 10;
s_controls_command.height = MENU_BUTTON_MED_HEIGHT;
s_controls_command.color = CT_DKPURPLE1;
s_controls_command.color2 = CT_LTPURPLE1;
s_controls_command.textX = 5;
s_controls_command.textY = 1;
s_controls_command.textEnum = MBT_COMMANDKEYS;
s_controls_command.textcolor = CT_BLACK;
s_controls_command.textcolor2 = CT_WHITE;
y += inc+MENU_BUTTON_MED_HEIGHT;
s_controls_modelview.generic.type = MTYPE_BITMAP;
s_controls_modelview.generic.flags = QMF_HIGHLIGHT_IF_FOCUS;
s_controls_modelview.generic.x = x;
s_controls_modelview.generic.y = y;
s_controls_modelview.generic.name = GRAPHIC_SQUARE;
s_controls_modelview.generic.id = ID_CONTROLSMODELVIEW;
s_controls_modelview.generic.callback = Controls_MenuEvent;
s_controls_modelview.width = MENU_BUTTON_MED_WIDTH - 10;
s_controls_modelview.height = MENU_BUTTON_MED_HEIGHT;
s_controls_modelview.color = CT_DKPURPLE1;
s_controls_modelview.color2 = CT_LTPURPLE1;
s_controls_modelview.textX = 5;
s_controls_modelview.textY = 1;
s_controls_modelview.textEnum = MBT_MODELVIEWKEYS;
s_controls_modelview.textcolor = CT_BLACK;
s_controls_modelview.textcolor2 = CT_WHITE;
y += inc+MENU_BUTTON_MED_HEIGHT;
y += inc+MENU_BUTTON_MED_HEIGHT-3;
s_controls_mouse.generic.type = MTYPE_BITMAP;
s_controls_mouse.generic.flags = QMF_HIGHLIGHT_IF_FOCUS;
s_controls_mouse.generic.x = x;
s_controls_mouse.generic.y = y;
s_controls_mouse.generic.name = GRAPHIC_SQUARE;
s_controls_mouse.generic.id = ID_CONTROLSMOUSE;
s_controls_mouse.generic.callback = Controls_MenuEvent;
s_controls_mouse.width = MENU_BUTTON_MED_WIDTH - 10;
s_controls_mouse.height = MENU_BUTTON_MED_HEIGHT;
s_controls_mouse.color = CT_DKPURPLE1;
s_controls_mouse.color2 = CT_LTPURPLE1;
s_controls_mouse.textX = 5;
s_controls_mouse.textY = 1;
s_controls_mouse.textEnum = MBT_MOUSECONFIG;
s_controls_mouse.textcolor = CT_BLACK;
s_controls_mouse.textcolor2 = CT_WHITE;
y += inc+MENU_BUTTON_MED_HEIGHT;
s_controls_other.generic.type = MTYPE_BITMAP;
s_controls_other.generic.flags = QMF_HIGHLIGHT_IF_FOCUS;
s_controls_other.generic.x = x;
s_controls_other.generic.y = y;
s_controls_other.generic.name = GRAPHIC_SQUARE;
s_controls_other.generic.id = ID_CONTROLSOTHER;
s_controls_other.generic.callback = Controls_MenuEvent;
s_controls_other.width = MENU_BUTTON_MED_WIDTH - 10;
s_controls_other.height = MENU_BUTTON_MED_HEIGHT;
s_controls_other.color = CT_DKPURPLE1;
s_controls_other.color2 = CT_LTPURPLE1;
s_controls_other.textX = 5;
s_controls_other.textY = 1;
s_controls_other.textEnum = MBT_OTHEROPTIONS;
s_controls_other.textcolor = CT_BLACK;
s_controls_other.textcolor2 = CT_WHITE;
/* y += inc+MENU_BUTTON_MED_HEIGHT;
s_controls_loadconfig.generic.type = MTYPE_BITMAP;
s_controls_loadconfig.generic.flags = QMF_HIGHLIGHT_IF_FOCUS;
s_controls_loadconfig.generic.x = x;
s_controls_loadconfig.generic.y = y;
s_controls_loadconfig.generic.name = "menu/common/square.tga";
s_controls_loadconfig.generic.id = ID_MAINMENU;
s_controls_loadconfig.generic.callback = Controls_MenuEvent;
s_controls_loadconfig.width = MENU_BUTTON_MED_WIDTH - 10;
s_controls_loadconfig.height = MENU_BUTTON_MED_HEIGHT;
s_controls_loadconfig.color = CT_DKPURPLE1;
s_controls_loadconfig.color2 = CT_LTPURPLE1;
s_controls_loadconfig.textX = 5;
s_controls_loadconfig.textY = 2;
s_controls_loadconfig.textEnum = MBT_LOADCONFIG;
s_controls_loadconfig.textcolor = CT_BLACK;
s_controls_loadconfig.textcolor2 = CT_WHITE;
y += inc+MENU_BUTTON_MED_HEIGHT;
s_controls_saveconfig.generic.type = MTYPE_BITMAP;
s_controls_saveconfig.generic.flags = QMF_HIGHLIGHT_IF_FOCUS;
s_controls_saveconfig.generic.x = x;
s_controls_saveconfig.generic.y = y;
s_controls_saveconfig.generic.name = "menu/common/square.tga";
s_controls_saveconfig.generic.id = ID_MAINMENU;
s_controls_saveconfig.generic.callback = Controls_MenuEvent;
s_controls_saveconfig.width = MENU_BUTTON_MED_WIDTH - 10;
s_controls_saveconfig.height = MENU_BUTTON_MED_HEIGHT;
s_controls_saveconfig.color = CT_DKPURPLE1;
s_controls_saveconfig.color2 = CT_LTPURPLE1;
s_controls_saveconfig.textX = 5;
s_controls_saveconfig.textY = 2;
s_controls_saveconfig.textEnum = MBT_SAVECONFIG;
s_controls_saveconfig.textcolor = CT_BLACK;
s_controls_saveconfig.textcolor2 = CT_WHITE;
*/
switch (menuType)
{
case MENU_CONTROLS_WEAPON :
s_controls_weapon.generic.flags = QMF_GRAYED;
break;
case MENU_CONTROLS_LOOK :
s_controls_look.generic.flags = QMF_GRAYED;
break;
case MENU_CONTROLS_MOVEMENT :
s_controls_movement.generic.flags = QMF_GRAYED;
break;
case MENU_CONTROLS_COMMAND :
s_controls_command.generic.flags = QMF_GRAYED;
break;
case MENU_CONTROLS_MODELVIEW:
s_controls_modelview.generic.flags = QMF_GRAYED;
break;
case MENU_CONTROLS_MOUSE :
s_controls_mouse.generic.flags = QMF_GRAYED;
break;
case MENU_CONTROLS_OTHER :
s_controls_other.generic.flags = QMF_GRAYED;
break;
}
Menu_AddItem( menu, ( void * )&s_controls_weapon);
Menu_AddItem( menu, ( void * )&s_controls_look);
Menu_AddItem( menu, ( void * )&s_controls_movement);
Menu_AddItem( menu, ( void * )&s_controls_command);
Menu_AddItem( menu, ( void * )&s_controls_modelview);
Menu_AddItem( menu, ( void * )&s_controls_mouse);
Menu_AddItem( menu, ( void * )&s_controls_other);
// Menu_AddItem( menu, ( void * )&s_controls_loadconfig);
// Menu_AddItem( menu, ( void * )&s_controls_saveconfig);
}
/*
=================
Controls_Update
=================
*/
static void Controls_UpdateNew( void )
{
int i;
int j;
void** controlptr;
menuframework_s *current_menu;
switch (g_section)
{
default:
case C_WEAPONS:
current_menu = &s_weapons_menu;
break;
case C_COMMAND:
current_menu = &s_controlscommand_menu;
break;
case C_LOOK:
current_menu = &s_controlslook_menu;
break;
case C_MOVE:
current_menu = &s_controlsmove_menu;
break;
case C_MOUSE:
current_menu = &s_controlsmouse_menu;
break;
case C_MODELVIEW:
current_menu = &s_controlsmodelview_menu;
break;
}
// enable specified controls
controlptr = g_controls[g_section];
for (i=0,j=0; ;i++,j++,controlptr++)
{
if (!controlptr[0])
{
// end of list
break;
}
((menucommon_s*)controlptr[0])->flags &= ~(QMF_GRAYED);
}
if (s_controls.waitingforkey)
{
((menucommon_s*)(current_menu->items[current_menu->cursor]))->flags &= ~QMF_HIGHLIGHT;
return;
}
}
void ControlsVideoDataAction( qboolean result )
{
if ( result ) // Yes - do it
{
Controls_MenuEvent (holdControlPtr, holdControlEvent);
}
}
/*
=================
Controls_MenuEventVideo
=================
*/
static void Controls_MenuEventVideo (void* ptr, int event)
{
if (event != QM_ACTIVATED)
return;
holdControlPtr = ptr;
holdControlEvent = event;
if (vid_apply_action->generic.flags & QMF_BLINK) // Video apply changes button is flashing
{
UI_ConfirmMenu(menu_normal_text[MNT_LOOSEVIDSETTINGS], 0, ControlsVideoDataAction);
}
else // Go ahead, act normal
{
Controls_MenuEvent (holdControlPtr, holdControlEvent);
}
}
/*
=================
Controls_MenuEvent
=================
*/
static void Controls_MenuEvent (void* ptr, int event)
{
menuframework_s* m;
if (event != QM_ACTIVATED)
return;
m = ((menucommon_s*)ptr)->parent;
switch (((menucommon_s*)ptr)->id)
{
case ID_CONTROLS:
UI_PopMenu(); // Get rid of whatever is ontop
UI_SetupWeaponsMenu(); // Move to the Controls Menu
break;
case ID_ATTACK:
UI_PopMenu(); // Get rid of whatever is ontop
UI_SetupWeaponsMenu(); // Move to the Command Menu
break;
case ID_VIDEO:
UI_PopMenu(); // Get rid of whatever is ontop
UI_VideoDataMenu(); // Move to the Video Menu
break;
case ID_SOUND:
UI_PopMenu(); // Get rid of whatever is ontop
UI_SoundMenu(); // Move to the Sound Menu
break;
case ID_GAMEOPTIONS:
UI_PopMenu(); // Get rid of whatever is ontop
UI_GameOptionsMenu(); // Move to the Game Options Menu
break;
case ID_CDKEY:
UI_PopMenu(); // Get rid of whatever is ontop
UI_CDKeyMenu(); // Move to the CD Key Menu
break;
case ID_NETWORK:
UI_PopMenu(); // Get rid of whatever is ontop
UI_NetworkOptionsMenu(); // Move to the CD Key Menu
break;
case ID_PLAYER:
// UI_PopMenu(); // Get rid of whatever is ontop
UI_PlayerSettingsMenu(PS_MENU_CONTROLS); // Move to the Player Settings Menu
break;
case ID_MAINMENU:
UI_PopMenu();
break;
case ID_INGAMEMENU:
UI_PopMenu();
break;
case ID_CONTROLSCOMMAND:
UI_PopMenu(); // Get rid of whatever is ontop
UI_ControlsCommandMenu(); // Move to the Command Menu
break;
case ID_CONTROLSMODELVIEW: //TiM - Modelview menu
UI_PopMenu(); //Uh... what the others said lol
UI_ControlsModelViewMenu(); //Yeah... Move to the Modelview menu
break; //Crazy copy and paste crazy Raven coder rofl...
case ID_CONTROLSLOOK:
UI_PopMenu(); // Get rid of whatever is ontop
UI_ControlsAttackLookMenu(); // Move to the Look Menu
break;
case ID_CONTROLSMOVE:
UI_PopMenu(); // Get rid of whatever is ontop
UI_ControlsMoveMenu(); // Move to the Move Menu
break;
case ID_CONTROLSMOUSE:
UI_PopMenu(); // Get rid of whatever is ontop
UI_ControlsMouseJoyStickMenu(); // Move to the Mouse Menu
break;
case ID_CONTROLSOTHER:
UI_PopMenu(); // Get rid of whatever is ontop
UI_ControlsOtherMenu(); // Move to the Other Menu
break;
case ID_CONTROLSDEFAULT:
UI_PopMenu(); // Get rid of whatever is ontop
UI_ControlsDefaultMenu(); // Move to the Default Menu
break;
case ID_FONTS:
UI_PopMenu(); // Get rid of whatever is ontop
UI_FontsMenu(); // Move to the Font Menu
break;
case ID_JOYENABLE:
Controls_SetJoystick();
break;
case ID_FREELOOK:
case ID_MOUSESPEED:
case ID_INVERTMOUSE:
case ID_SMOOTHMOUSE:
case ID_ALWAYSRUN:
case ID_AUTOSWITCH:
case ID_JOYTHRESHOLD:
case ID_KEYTURNPEED:
case ID_LOOKSPRING:
case ID_AUTOSWITCHWEAPONS:
Controls_SetConfig();
// if (event == QM_ACTIVATED)
// {
// s_controls.changesmade = qtrue;
// }
break;
}
}
/*
=================
M_ControlsMoveMenu_Graphics
=================
*/
void M_ControlsMoveMenu_Graphics (void)
{
UI_MenuFrame(&s_controlsmove_menu);
UI_DrawProportionalString( 74, 66, "7-2345",UI_RIGHT|UI_TINYFONT, colorTable[CT_BLACK]);
UI_DrawProportionalString( 74, 84, "803",UI_RIGHT|UI_TINYFONT, colorTable[CT_BLACK]);
UI_DrawProportionalString( 74, 188, "32811",UI_RIGHT|UI_TINYFONT, colorTable[CT_BLACK]);
UI_DrawProportionalString( 74, 395, "560-99",UI_RIGHT|UI_TINYFONT, colorTable[CT_BLACK]);
M_WeaponsMenu_Blinkies();
UI_PrintMenuGraphics(attackmenu_graphics,AMG_MAX);
UI_DrawProportionalString( 607, 174, "634579",UI_RIGHT|UI_TINYFONT, colorTable[CT_BLACK]);
UI_DrawProportionalString( 607, 406, "2815689",UI_RIGHT|UI_TINYFONT, colorTable[CT_BLACK]);
if (s_attack_waiting_action.generic.flags & QMF_HIDDEN)
{
UI_DrawProportionalString( 207, 411, menu_normal_text[MNT_BACKSPACE],UI_SMALLFONT, colorTable[CT_WHITE]);
}
}
/*
=================
ControlsMove_MenuDraw
=================
*/
static void ControlsMove_MenuDraw (void)
{
M_ControlsMoveMenu_Graphics();
UI_Setup_MenuButtons();
Menu_Draw( &s_controlsmove_menu );
}
/*
=================
ControlsMove_MenuInit
=================
*/
static void ControlsMove_MenuInit( void )
{
s_controlsmove_menu.nitems = 0;
s_controlsmove_menu.wrapAround = qtrue;
s_controlsmove_menu.draw = ControlsMove_MenuDraw;
s_controlsmove_menu.key = Controls_MenuKey;
s_controlsmove_menu.fullscreen = qtrue;
s_controlsmove_menu.descX = MENU_DESC_X;
s_controlsmove_menu.descY = MENU_DESC_Y;
s_controlsmove_menu.listX = 170;
s_controlsmove_menu.listY = 188;
s_controlsmove_menu.titleX = MENU_TITLE_X;
s_controlsmove_menu.titleY = MENU_TITLE_Y;
s_controlsmove_menu.titleI = MNT_CONTROLSMENU_TITLE;
s_controlsmove_menu.footNoteEnum = MNT_MOVEMENTKEYS_SETUP;
Playermodel_MenuInit();
SetupMenu_TopButtons(&s_controlsmove_menu,MENU_CONTROLS,NULL);
SetupMenu_SideButtons(&s_controlsmove_menu,MENU_CONTROLS_MOVEMENT);
s_controls_movement.textcolor = CT_LTGOLD1;
s_controls_movement.textcolor2 = CT_LTGOLD1;
s_move_walkforward_action.generic.type = MTYPE_ACTION;
s_move_walkforward_action.generic.flags = QMF_LEFT_JUSTIFY|QMF_HIGHLIGHT_IF_FOCUS;
s_move_walkforward_action.generic.callback = Controls_ActionEvent;
s_move_walkforward_action.generic.ownerdraw = Controls_DrawKeyBinding;
s_move_walkforward_action.generic.id = ID_FORWARD;
s_move_backpedal_action.generic.type = MTYPE_ACTION;
s_move_backpedal_action.generic.flags = QMF_LEFT_JUSTIFY|QMF_HIGHLIGHT_IF_FOCUS;
s_move_backpedal_action.generic.callback = Controls_ActionEvent;
s_move_backpedal_action.generic.ownerdraw = Controls_DrawKeyBinding;
s_move_backpedal_action.generic.id = ID_BACKPEDAL;
s_move_turnleft_action.generic.type = MTYPE_ACTION;
s_move_turnleft_action.generic.flags = QMF_LEFT_JUSTIFY|QMF_HIGHLIGHT_IF_FOCUS;
s_move_turnleft_action.generic.callback = Controls_ActionEvent;
s_move_turnleft_action.generic.ownerdraw = Controls_DrawKeyBinding;
s_move_turnleft_action.generic.id = ID_LEFT;
s_move_turnright_action.generic.type = MTYPE_ACTION;
s_move_turnright_action.generic.flags = QMF_LEFT_JUSTIFY|QMF_HIGHLIGHT_IF_FOCUS;
s_move_turnright_action.generic.callback = Controls_ActionEvent;
s_move_turnright_action.generic.ownerdraw = Controls_DrawKeyBinding;
s_move_turnright_action.generic.id = ID_RIGHT;
s_move_run_action.generic.type = MTYPE_ACTION;
s_move_run_action.generic.flags = QMF_LEFT_JUSTIFY|QMF_HIGHLIGHT_IF_FOCUS;
s_move_run_action.generic.callback = Controls_ActionEvent;
s_move_run_action.generic.ownerdraw = Controls_DrawKeyBinding;
s_move_run_action.generic.id = ID_SPEED;
s_move_stepleft_action.generic.type = MTYPE_ACTION;
s_move_stepleft_action.generic.flags = QMF_LEFT_JUSTIFY|QMF_HIGHLIGHT_IF_FOCUS;
s_move_stepleft_action.generic.callback = Controls_ActionEvent;
s_move_stepleft_action.generic.ownerdraw = Controls_DrawKeyBinding;
s_move_stepleft_action.generic.id = ID_MOVELEFT;
s_move_stepright_action.generic.type = MTYPE_ACTION;
s_move_stepright_action.generic.flags = QMF_LEFT_JUSTIFY|QMF_HIGHLIGHT_IF_FOCUS;
s_move_stepright_action.generic.callback = Controls_ActionEvent;
s_move_stepright_action.generic.ownerdraw = Controls_DrawKeyBinding;
s_move_stepright_action.generic.id = ID_MOVERIGHT;
s_move_sidestep_action.generic.type = MTYPE_ACTION;
s_move_sidestep_action.generic.flags = QMF_LEFT_JUSTIFY|QMF_HIGHLIGHT_IF_FOCUS;
s_move_sidestep_action.generic.callback = Controls_ActionEvent;
s_move_sidestep_action.generic.ownerdraw = Controls_DrawKeyBinding;
s_move_sidestep_action.generic.id = ID_STRAFE;
s_move_moveup_action.generic.type = MTYPE_ACTION;
s_move_moveup_action.generic.flags = QMF_LEFT_JUSTIFY|QMF_HIGHLIGHT_IF_FOCUS;
s_move_moveup_action.generic.callback = Controls_ActionEvent;
s_move_moveup_action.generic.ownerdraw = Controls_DrawKeyBinding;
s_move_moveup_action.generic.id = ID_MOVEUP;
s_move_movedown_action.generic.type = MTYPE_ACTION;
s_move_movedown_action.generic.flags = QMF_LEFT_JUSTIFY|QMF_HIGHLIGHT_IF_FOCUS;
s_move_movedown_action.generic.callback = Controls_ActionEvent;
s_move_movedown_action.generic.ownerdraw = Controls_DrawKeyBinding;
s_move_movedown_action.generic.id = ID_MOVEDOWN;
s_attack_waiting_action.generic.type = MTYPE_ACTION;
s_attack_waiting_action.generic.flags = QMF_HIDDEN;
s_attack_waiting_action.generic.x = 202;
s_attack_waiting_action.generic.y = 410;
s_attack_waiting_action.textEnum = MBT_WAITFORKEY;
s_attack_waiting_action.textcolor = CT_BLACK;
s_attack_waiting_action.textcolor2 = CT_WHITE;
s_attack_waiting_action.textcolor3 = CT_LTGREY;
s_attack_waiting_action.color = CT_VDKPURPLE1;//CT_DKPURPLE1;
s_attack_waiting_action.color2 = CT_VDKPURPLE1;//CT_LTPURPLE1;
s_attack_waiting_action.color3 = CT_DKGREY;
s_attack_waiting_action.textX = 5;
s_attack_waiting_action.textY = 1;
s_attack_waiting_action.width = 255;
s_attack_waiting_action.height = 18;
g_section = C_MOVE;
SetupActionButtons_Init(g_section); // Set up standard values
Menu_AddItem( &s_controlsmove_menu, ( void * )&s_controls_playermdl);
Menu_AddItem( &s_controlsmove_menu, ( void * )&s_move_walkforward_action);
Menu_AddItem( &s_controlsmove_menu, ( void * )&s_move_backpedal_action);
Menu_AddItem( &s_controlsmove_menu, ( void * )&s_move_turnleft_action);
Menu_AddItem( &s_controlsmove_menu, ( void * )&s_move_turnright_action);
Menu_AddItem( &s_controlsmove_menu, ( void * )&s_move_run_action);
Menu_AddItem( &s_controlsmove_menu, ( void * )&s_move_stepleft_action);
Menu_AddItem( &s_controlsmove_menu, ( void * )&s_move_stepright_action);
Menu_AddItem( &s_controlsmove_menu, ( void * )&s_move_sidestep_action);
Menu_AddItem( &s_controlsmove_menu, ( void * )&s_move_moveup_action);
Menu_AddItem( &s_controlsmove_menu, ( void * )&s_move_movedown_action);
Menu_AddItem( &s_controlsmove_menu, ( void * )&s_attack_waiting_action);
// initialize the configurable cvars
Controls_InitCvars();
// initialize the current config
Controls_GetConfig();
// intialize the model
// Controls_InitModel();
// initial default section
s_controls.waitingforkey = qfalse;
g_changesmade = qfalse;
// g_prompttosave = qfalse;
// update the ui
Controls_UpdateNew();
}
/*
=================
UI_ControlsMoveMenu
=================
*/
static void UI_ControlsMoveMenu( void )
{
ControlsMove_MenuInit();
UI_PushMenu( &s_controlsmove_menu );
}
/*
=================
M_ControlsLookMenu_Graphics
=================
*/
void M_ControlsLookMenu_Graphics (void)
{
UI_MenuFrame(&s_controlslook_menu);
UI_DrawProportionalString( 74, 66, "3567",UI_RIGHT|UI_TINYFONT, colorTable[CT_BLACK]);
UI_DrawProportionalString( 74, 84, "9003",UI_RIGHT|UI_TINYFONT, colorTable[CT_BLACK]);
UI_DrawProportionalString( 74, 188, "1425",UI_RIGHT|UI_TINYFONT, colorTable[CT_BLACK]);
UI_DrawProportionalString( 74, 395, "6780-1",UI_RIGHT|UI_TINYFONT, colorTable[CT_BLACK]);
M_WeaponsMenu_Blinkies();
UI_PrintMenuGraphics(attackmenu_graphics,AMG_MAX);
UI_DrawProportionalString( 607, 174, "556541",UI_RIGHT|UI_TINYFONT, colorTable[CT_BLACK]);
UI_DrawProportionalString( 607, 406, "909090",UI_RIGHT|UI_TINYFONT, colorTable[CT_BLACK]);
if (s_attack_waiting_action.generic.flags & QMF_HIDDEN)
{
UI_DrawProportionalString( 207, 411, menu_normal_text[MNT_BACKSPACE],UI_SMALLFONT, colorTable[CT_WHITE]);
}
}
/*
=================
ControlsAttackLook_MenuDraw
=================
*/
static void ControlsAttackLook_MenuDraw (void)
{
M_ControlsLookMenu_Graphics();
UI_Setup_MenuButtons();
Menu_Draw( &s_controlslook_menu );
}
/*
=================
ControlsAttackLook_MenuInit
=================
*/
static void ControlsAttackLook_MenuInit( void )
{
s_controlslook_menu.nitems = 0;
s_controlslook_menu.wrapAround = qtrue;
s_controlslook_menu.draw = ControlsAttackLook_MenuDraw;
s_controlslook_menu.key = Controls_MenuKey;
s_controlslook_menu.fullscreen = qtrue;
s_controlslook_menu.descX = MENU_DESC_X;
s_controlslook_menu.descY = MENU_DESC_Y;
s_controlslook_menu.listX = 170;
s_controlslook_menu.listY = 188;
s_controlslook_menu.titleX = MENU_TITLE_X;
s_controlslook_menu.titleY = MENU_TITLE_Y;
s_controlslook_menu.titleI = MNT_CONTROLSMENU_TITLE;
s_controlslook_menu.footNoteEnum = MNT_ATTACKLOOKKEY_SETUP;
Playermodel_MenuInit();
SetupMenu_TopButtons(&s_controlslook_menu,MENU_CONTROLS,NULL);
SetupMenu_SideButtons(&s_controlslook_menu,MENU_CONTROLS_LOOK);
s_controls_look.textcolor = CT_LTGOLD1;
s_controls_look.textcolor2 = CT_LTGOLD1;
s_attack_attack_action.generic.type = MTYPE_ACTION;
s_attack_attack_action.generic.flags = QMF_LEFT_JUSTIFY|QMF_HIGHLIGHT_IF_FOCUS;
s_attack_attack_action.generic.callback = Controls_ActionEvent;
s_attack_attack_action.generic.ownerdraw = Controls_DrawKeyBinding;
s_attack_attack_action.generic.id = ID_ATTACK;
s_attack_alt_attack_action.generic.type = MTYPE_ACTION;
s_attack_alt_attack_action.generic.flags = QMF_LEFT_JUSTIFY|QMF_HIGHLIGHT_IF_FOCUS;
s_attack_alt_attack_action.generic.callback = Controls_ActionEvent;
s_attack_alt_attack_action.generic.ownerdraw = Controls_DrawKeyBinding;
s_attack_alt_attack_action.generic.id = ID_ALT_ATTACK;
s_attack_use_action.generic.type = MTYPE_ACTION;
s_attack_use_action.generic.flags = QMF_LEFT_JUSTIFY|QMF_HIGHLIGHT_IF_FOCUS;
s_attack_use_action.generic.callback = Controls_ActionEvent;
s_attack_use_action.generic.ownerdraw = Controls_DrawKeyBinding;
s_attack_use_action.generic.id = ID_USEITEM;
s_attack_use_inv_action.generic.type = MTYPE_ACTION;
s_attack_use_inv_action.generic.flags = QMF_LEFT_JUSTIFY|QMF_HIGHLIGHT_IF_FOCUS;
s_attack_use_inv_action.generic.callback = Controls_ActionEvent;
s_attack_use_inv_action.generic.ownerdraw = Controls_DrawKeyBinding;
s_attack_use_inv_action.generic.id = ID_USEINVENTORY;
s_attack_objectives.generic.type = MTYPE_ACTION;
s_attack_objectives.generic.flags = QMF_LEFT_JUSTIFY|QMF_HIGHLIGHT_IF_FOCUS;
s_attack_objectives.generic.callback = Controls_ActionEvent;
s_attack_objectives.generic.ownerdraw = Controls_DrawKeyBinding;
s_attack_objectives.generic.id = ID_OBJECTIVES;
s_look_lookup_action.generic.type = MTYPE_ACTION;
s_look_lookup_action.generic.flags = QMF_LEFT_JUSTIFY|QMF_HIGHLIGHT_IF_FOCUS;
s_look_lookup_action.generic.callback = Controls_ActionEvent;
s_look_lookup_action.generic.ownerdraw = Controls_DrawKeyBinding;
s_look_lookup_action.generic.id = ID_LOOKUP;
s_look_lookdown_action.generic.type = MTYPE_ACTION;
s_look_lookdown_action.generic.flags = QMF_LEFT_JUSTIFY|QMF_HIGHLIGHT_IF_FOCUS;
s_look_lookdown_action.generic.callback = Controls_ActionEvent;
s_look_lookdown_action.generic.ownerdraw = Controls_DrawKeyBinding;
s_look_lookdown_action.generic.id = ID_LOOKDOWN;
s_look_mouselook_action.generic.type = MTYPE_ACTION;
s_look_mouselook_action.generic.flags = QMF_LEFT_JUSTIFY|QMF_HIGHLIGHT_IF_FOCUS;
s_look_mouselook_action.generic.callback = Controls_ActionEvent;
s_look_mouselook_action.generic.ownerdraw = Controls_DrawKeyBinding;
s_look_mouselook_action.generic.id = ID_MOUSELOOK;
s_look_centerview_action.generic.type = MTYPE_ACTION;
s_look_centerview_action.generic.flags = QMF_LEFT_JUSTIFY|QMF_HIGHLIGHT_IF_FOCUS;
s_look_centerview_action.generic.callback = Controls_ActionEvent;
s_look_centerview_action.generic.ownerdraw = Controls_DrawKeyBinding;
s_look_centerview_action.generic.id = ID_CENTERVIEW;
s_zoomview_action.generic.type = MTYPE_ACTION;
s_zoomview_action.generic.flags = QMF_LEFT_JUSTIFY|QMF_HIGHLIGHT_IF_FOCUS;
s_zoomview_action.generic.callback = Controls_ActionEvent;
s_zoomview_action.generic.ownerdraw = Controls_DrawKeyBinding;
s_zoomview_action.generic.id = ID_ZOOMVIEW;
s_controls.showscores.generic.type = MTYPE_ACTION;
s_controls.showscores.generic.flags = QMF_LEFT_JUSTIFY|QMF_HIGHLIGHT_IF_FOCUS;
s_controls.showscores.generic.callback = Controls_ActionEvent;
s_controls.showscores.generic.ownerdraw = Controls_DrawKeyBinding;
s_controls.showscores.generic.id = ID_SHOWSCORES;
s_attack_waiting_action.generic.type = MTYPE_ACTION;
s_attack_waiting_action.generic.flags = QMF_HIDDEN;
s_attack_waiting_action.generic.x = 202;
s_attack_waiting_action.generic.y = 410;
s_attack_waiting_action.textEnum = MBT_WAITFORKEY;
s_attack_waiting_action.textcolor = CT_BLACK;
s_attack_waiting_action.textcolor2 = CT_WHITE;
s_attack_waiting_action.textcolor3 = CT_LTGREY;
s_attack_waiting_action.color = CT_VDKPURPLE1;//CT_DKPURPLE1;
s_attack_waiting_action.color2 = CT_VDKPURPLE1;//CT_LTPURPLE1;
s_attack_waiting_action.color3 = CT_DKGREY;
s_attack_waiting_action.textX = 5;
s_attack_waiting_action.textY = 1;
s_attack_waiting_action.width = 255;
s_attack_waiting_action.height = 18;
g_section = C_LOOK;
SetupActionButtons_Init(g_section); // Set up standard values
Menu_AddItem( &s_controlslook_menu, ( void * )&s_controls_playermdl);
Menu_AddItem( &s_controlslook_menu, ( void * )&s_attack_attack_action);
Menu_AddItem( &s_controlslook_menu, ( void * )&s_attack_alt_attack_action);
Menu_AddItem( &s_controlslook_menu, ( void * )&s_attack_use_action);
Menu_AddItem( &s_controlslook_menu, ( void * )&s_attack_use_inv_action);
Menu_AddItem( &s_controlslook_menu, ( void * )&s_attack_objectives);
Menu_AddItem( &s_controlslook_menu, ( void * )&s_look_lookup_action);
Menu_AddItem( &s_controlslook_menu, ( void * )&s_look_lookdown_action);
Menu_AddItem( &s_controlslook_menu, ( void * )&s_look_mouselook_action);
Menu_AddItem( &s_controlslook_menu, ( void * )&s_look_centerview_action);
Menu_AddItem( &s_controlslook_menu, ( void * )&s_zoomview_action);
Menu_AddItem( &s_controlslook_menu, ( void * )&s_attack_waiting_action);
Menu_AddItem( &s_controlslook_menu, ( void * )&s_controls.showscores);
// initialize the configurable cvars
Controls_InitCvars();
// initialize the current config
Controls_GetConfig();
// intialize the model
Controls_InitModel();
// initial default section
s_controls.waitingforkey = qfalse;
g_changesmade = qfalse;
g_prompttosave = qfalse;
// update the ui
Controls_UpdateNew();
}
/*
=================
UI_ControlsAttackLookMenu
=================
*/
static void UI_ControlsAttackLookMenu( void )
{
ControlsAttackLook_MenuInit();
UI_PushMenu( &s_controlslook_menu );
}
/*
=================
M_ControlsMouseJoyStickMenu_Graphics
=================
*/
void M_ControlsMouseJoyStickMenu_Graphics (void)
{
UI_MenuFrame(&s_controlsmouse_menu);
trap_R_SetColor( colorTable[CT_LTORANGE]);
UI_DrawProportionalString( MENU_TITLE_X, 440, menu_normal_text[MNT_MOUSEJOYSTICK_SETUP],UI_RIGHT | UI_SMALLFONT, colorTable[CT_LTORANGE]);
UI_MenuBottomLineEnd_Graphics (menu_normal_text[MNT_MOUSEJOYSTICK_SETUP],CT_LTBROWN1, NULL);
trap_R_SetColor( colorTable[CT_DKBLUE2]);
UI_DrawHandlePic( 235, 166, 377, 20, uis.whiteShader); // Long thick line above mouse stuff
UI_DrawHandlePic( 185, 184, 50, 100, uis.whiteShader); // Thick column by mouse stuff
UI_DrawHandlePic( 185, 284, 427, 8, uis.whiteShader); // Long thin line below mouse stuff
UI_DrawHandlePic( 185, 166, 64, 32, s_joystick_mouse.mouse1); // Rounded corner
UI_DrawHandlePic( 185, 300, 427, 8, uis.whiteShader); // Long thin line below joystick stuff
UI_DrawHandlePic( 185, 305, 50, 100, uis.whiteShader); // Thick column by joystick stuff
UI_DrawHandlePic( 235, 406, 377, 20, uis.whiteShader); // Long thick line above joystick stuff
UI_DrawHandlePic( 185, 401, 64, 32, s_joystick_mouse.mouse2); // Rounded corner
UI_DrawProportionalString( 608, 169, menu_normal_text[MNT_MOUSE],UI_RIGHT|UI_SMALLFONT, colorTable[CT_LTGOLD1]);
UI_DrawProportionalString( 608, 409, menu_normal_text[MNT_JOYSTICK],UI_RIGHT|UI_SMALLFONT, colorTable[CT_LTGOLD1]);
UI_DrawProportionalString( 74, 66, "4568",UI_RIGHT|UI_TINYFONT, colorTable[CT_BLACK]);
UI_DrawProportionalString( 74, 84, "71-49",UI_RIGHT|UI_TINYFONT, colorTable[CT_BLACK]);
UI_DrawProportionalString( 74, 188, "67014",UI_RIGHT|UI_TINYFONT, colorTable[CT_BLACK]);
UI_DrawProportionalString( 74, 395, "356-905",UI_RIGHT|UI_TINYFONT, colorTable[CT_BLACK]);
}
/*
=================
ControlsMouseJoyStick_MenuDraw
=================
*/
static void ControlsMouseJoyStick_MenuDraw (void)
{
M_ControlsMouseJoyStickMenu_Graphics();
UI_Setup_MenuButtons();
Menu_Draw( &s_controlsmouse_menu );
}
/*
=================
ControlsMouseJoyStick_MenuKey
=================
*/
static sfxHandle_t ControlsMouseJoyStick_MenuKey( int key )
{
return Menu_DefaultKey( &s_controlsmouse_menu, key );
}
/*
=================
ControlsMouseJoyStick_GetCvars
=================
*/
void ControlsMouseJoyStick_GetCvars(void)
{
}
void UI_ControlsMouseJoyStickMenu_Cache(void)
{
trap_R_RegisterShaderNoMip(PIC_MONBAR2);
s_joystick_mouse.mouse1 = trap_R_RegisterShaderNoMip(PIC_MOUSE1);
s_joystick_mouse.mouse2 = trap_R_RegisterShaderNoMip(PIC_MOUSE2);
}
/*
=================
ControlsMouseJoyStick_MenuInit
=================
*/
static void ControlsMouseJoyStick_MenuInit( void )
{
int x,y;
UI_ControlsMouseJoyStickMenu_Cache();
s_controlsmouse_menu.nitems = 0;
s_controlsmouse_menu.wrapAround = qtrue;
s_controlsmouse_menu.draw = ControlsMouseJoyStick_MenuDraw;
s_controlsmouse_menu.key = ControlsMouseJoyStick_MenuKey;
s_controlsmouse_menu.fullscreen = qtrue;
s_controlsmouse_menu.descX = MENU_DESC_X;
s_controlsmouse_menu.descY = MENU_DESC_Y;
s_controlsmouse_menu.listX = 230;
s_controlsmouse_menu.listY = 188;
s_controlsmouse_menu.titleX = MENU_TITLE_X;
s_controlsmouse_menu.titleY = MENU_TITLE_Y;
s_controlsmouse_menu.titleI = MNT_CONTROLSMENU_TITLE;
s_controlsmouse_menu.footNoteEnum = MNT_MOUSEJOYSTICK_SETUP;
SetupMenu_TopButtons(&s_controlsmouse_menu,MENU_CONTROLS,NULL);
SetupMenu_SideButtons(&s_controlsmouse_menu,MENU_CONTROLS_MOUSE);
s_controls_mouse.textcolor = CT_LTGOLD1;
s_controls_mouse.textcolor2 = CT_LTGOLD1;
x = 250;
y = 193;
s_controls.freelook.generic.type = MTYPE_SPINCONTROL;
s_controls.freelook.generic.flags = QMF_HIGHLIGHT_IF_FOCUS;
s_controls.freelook.generic.x = x;
s_controls.freelook.generic.y = y;
s_controls.freelook.generic.id = ID_FREELOOK;
s_controls.freelook.generic.callback = Controls_MenuEvent;
s_controls.freelook.textEnum = MBT_MOUSEFREELOOK;
s_controls.freelook.textcolor = CT_BLACK;
s_controls.freelook.textcolor2 = CT_WHITE;
s_controls.freelook.color = CT_DKPURPLE1;
s_controls.freelook.color2 = CT_LTPURPLE1;
s_controls.freelook.textX = MENU_BUTTON_TEXT_X;
s_controls.freelook.textY = MENU_BUTTON_TEXT_Y;
s_controls.freelook.listnames = s_OffOnNone_Names;
y += 22;
s_controls.sensitivity.generic.type = MTYPE_SLIDER;
s_controls.sensitivity.generic.x = x + 162;
s_controls.sensitivity.generic.y = y;
s_controls.sensitivity.generic.flags = QMF_SMALLFONT;
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.color = CT_DKPURPLE1;
s_controls.sensitivity.color2 = CT_LTPURPLE1;
s_controls.sensitivity.generic.name = PIC_MONBAR2;
s_controls.sensitivity.width = 256;
s_controls.sensitivity.height = 32;
s_controls.sensitivity.focusWidth = 145;
s_controls.sensitivity.focusHeight = 18;
s_controls.sensitivity.picName = GRAPHIC_SQUARE;
s_controls.sensitivity.picX = x;
s_controls.sensitivity.picY = y;
s_controls.sensitivity.picWidth = MENU_BUTTON_MED_WIDTH + 21;
s_controls.sensitivity.picHeight = MENU_BUTTON_MED_HEIGHT;
s_controls.sensitivity.textX = MENU_BUTTON_TEXT_X;
s_controls.sensitivity.textY = MENU_BUTTON_TEXT_Y;
s_controls.sensitivity.textEnum = MBT_MOUSESPEED;
s_controls.sensitivity.textcolor = CT_BLACK;
s_controls.sensitivity.textcolor2 = CT_WHITE;
s_controls.sensitivity.thumbName = "menu/common/slider.tga";
s_controls.sensitivity.thumbHeight = 32;
s_controls.sensitivity.thumbWidth = 16;
s_controls.sensitivity.thumbGraphicWidth = 9;
s_controls.sensitivity.thumbColor = CT_DKBLUE1;
s_controls.sensitivity.thumbColor2 = CT_LTBLUE1;
y += 22;
s_controls.invertmouse.generic.type = MTYPE_SPINCONTROL;
s_controls.invertmouse.generic.flags = QMF_HIGHLIGHT_IF_FOCUS;
s_controls.invertmouse.generic.id = ID_INVERTMOUSE;
s_controls.invertmouse.generic.x = x;
s_controls.invertmouse.generic.y = y;
s_controls.invertmouse.generic.callback = Controls_MenuEvent;
s_controls.invertmouse.textEnum = MBT_MOUSEINVERT;
s_controls.invertmouse.textcolor = CT_BLACK;
s_controls.invertmouse.textcolor2 = CT_WHITE;
s_controls.invertmouse.color = CT_DKPURPLE1;
s_controls.invertmouse.color2 = CT_LTPURPLE1;
s_controls.invertmouse.textX = MENU_BUTTON_TEXT_X;
s_controls.invertmouse.textY = MENU_BUTTON_TEXT_Y;
s_controls.invertmouse.listnames = s_OffOnNone_Names;
y += 22;
s_controls.smoothmouse.generic.type = MTYPE_SPINCONTROL;
s_controls.smoothmouse.generic.flags = QMF_HIGHLIGHT_IF_FOCUS;
s_controls.smoothmouse.generic.x = x;
s_controls.smoothmouse.generic.y = y;
s_controls.smoothmouse.generic.callback = SmoothMouseCallback;
s_controls.smoothmouse.textEnum = MBT_MOUSESMOOTH;
s_controls.smoothmouse.textcolor = CT_BLACK;
s_controls.smoothmouse.textcolor2 = CT_WHITE;
s_controls.smoothmouse.color = CT_DKPURPLE1;
s_controls.smoothmouse.color2 = CT_LTPURPLE1;
s_controls.smoothmouse.textX = MENU_BUTTON_TEXT_X;
s_controls.smoothmouse.textY = MENU_BUTTON_TEXT_Y;
s_controls.smoothmouse.listnames = s_OffOnNone_Names;
y = 315;
s_controls.joyenable.generic.type = MTYPE_SPINCONTROL;
s_controls.joyenable.generic.flags = QMF_HIGHLIGHT_IF_FOCUS;
s_controls.joyenable.generic.x = x;
s_controls.joyenable.generic.y = y;
s_controls.joyenable.generic.id = ID_JOYENABLE;
s_controls.joyenable.generic.callback = Controls_MenuEvent;
s_controls.joyenable.textEnum = MBT_JOYSTICKENABLE;
s_controls.joyenable.textcolor = CT_BLACK;
s_controls.joyenable.textcolor2 = CT_WHITE;
s_controls.joyenable.color = CT_DKPURPLE1;
s_controls.joyenable.color2 = CT_LTPURPLE1;
s_controls.joyenable.textX = MENU_BUTTON_TEXT_X;
s_controls.joyenable.textY = MENU_BUTTON_TEXT_Y;
s_controls.joyenable.listnames = s_OffOnNone_Names;
y += 22;
s_controls.joythreshold.generic.type = MTYPE_SLIDER;
s_controls.joythreshold.generic.x = x + 162;
s_controls.joythreshold.generic.y = y;
s_controls.joythreshold.generic.flags = QMF_SMALLFONT;
s_controls.joythreshold.generic.id = ID_MOUSESPEED;
s_controls.joythreshold.generic.callback = Controls_MenuEvent;
s_controls.joythreshold.minvalue = .5;
s_controls.joythreshold.maxvalue = .75;
s_controls.joythreshold.color = CT_DKPURPLE1;
s_controls.joythreshold.color2 = CT_LTPURPLE1;
s_controls.joythreshold.generic.name = PIC_MONBAR2;
s_controls.joythreshold.width = 256;
s_controls.joythreshold.height = 32;
s_controls.joythreshold.focusWidth = 145;
s_controls.joythreshold.focusHeight = 18;
s_controls.joythreshold.picName = GRAPHIC_SQUARE;
s_controls.joythreshold.picX = x;
s_controls.joythreshold.picY = y;
s_controls.joythreshold.picWidth = MENU_BUTTON_MED_WIDTH + 21;
s_controls.joythreshold.picHeight = MENU_BUTTON_MED_HEIGHT;
s_controls.joythreshold.textX = MENU_BUTTON_TEXT_X;
s_controls.joythreshold.textY = MENU_BUTTON_TEXT_Y;
s_controls.joythreshold.textEnum = MBT_JOYSTICKTHRESHOLD;
s_controls.joythreshold.textcolor = CT_BLACK;
s_controls.joythreshold.textcolor2 = CT_WHITE;
s_controls.joythreshold.thumbName = "menu/common/slider.tga";
s_controls.joythreshold.thumbHeight = 32;
s_controls.joythreshold.thumbWidth = 16;
s_controls.joythreshold.thumbGraphicWidth = 9;
s_controls.joythreshold.thumbColor = CT_DKBLUE1;
s_controls.joythreshold.thumbColor2 = CT_LTBLUE1;
/*
y += 22;
s_forcefeedback_box.generic.type = MTYPE_SPINCONTROL;
s_forcefeedback_box.generic.flags = QMF_HIGHLIGHT_IF_FOCUS;
s_forcefeedback_box.generic.x = x;
s_forcefeedback_box.generic.y = y;
s_forcefeedback_box.generic.callback = Controls_MenuEvent;
s_forcefeedback_box.textEnum = MBT_FORCEFEEDBACK;
s_forcefeedback_box.textcolor = CT_BLACK;
s_forcefeedback_box.textcolor2 = CT_WHITE;
s_forcefeedback_box.color = CT_DKPURPLE1;
s_forcefeedback_box.color2 = CT_LTPURPLE1;
s_forcefeedback_box.textX = MENU_BUTTON_TEXT_X;
s_forcefeedback_box.textY = MENU_BUTTON_TEXT_Y;
s_forcefeedback_box.listnames = s_OffOnNone_Names;
*/
y += 22;
s_joyxbutton_box.generic.type = MTYPE_SPINCONTROL;
s_joyxbutton_box.generic.flags = QMF_HIGHLIGHT_IF_FOCUS;
s_joyxbutton_box.generic.x = x;
s_joyxbutton_box.generic.y = y;
s_joyxbutton_box.generic.callback = JoyXButtonCallback;
s_joyxbutton_box.textEnum = MBT_X_AXIS;
s_joyxbutton_box.textcolor = CT_BLACK;
s_joyxbutton_box.textcolor2 = CT_WHITE;
s_joyxbutton_box.color = CT_DKPURPLE1;
s_joyxbutton_box.color2 = CT_LTPURPLE1;
s_joyxbutton_box.textX = MENU_BUTTON_TEXT_X;
s_joyxbutton_box.textY = MENU_BUTTON_TEXT_Y;
s_joyxbutton_box.listnames = s_OffOnNone_Names;
y += 22;
s_joyybutton_box.generic.type = MTYPE_SPINCONTROL;
s_joyybutton_box.generic.flags = QMF_HIGHLIGHT_IF_FOCUS;
s_joyybutton_box.generic.x = x;
s_joyybutton_box.generic.y = y;
s_joyybutton_box.generic.callback = JoyYButtonCallback;
s_joyybutton_box.textEnum = MBT_Y_AXIS;
s_joyybutton_box.textcolor = CT_BLACK;
s_joyybutton_box.textcolor2 = CT_WHITE;
s_joyybutton_box.color = CT_DKPURPLE1;
s_joyybutton_box.color2 = CT_LTPURPLE1;
s_joyybutton_box.textX = MENU_BUTTON_TEXT_X;
s_joyybutton_box.textY = MENU_BUTTON_TEXT_Y;
s_joyybutton_box.listnames = s_OffOnNone_Names;
Menu_AddItem( &s_controlsmouse_menu, ( void * )&s_controls.freelook);
Menu_AddItem( &s_controlsmouse_menu, ( void * )&s_controls.sensitivity);
Menu_AddItem( &s_controlsmouse_menu, ( void * )&s_controls.invertmouse);
Menu_AddItem( &s_controlsmouse_menu, ( void * )&s_controls.smoothmouse);
Menu_AddItem( &s_controlsmouse_menu, ( void * )&s_controls.joyenable);
Menu_AddItem( &s_controlsmouse_menu, ( void * )&s_controls.joythreshold);
// Menu_AddItem( &s_controlsmouse_menu, ( void * )&s_forcefeedback_box); // Commented out until needed
Menu_AddItem( &s_controlsmouse_menu, ( void * )&s_joyxbutton_box); // Commented out until needed
Menu_AddItem( &s_controlsmouse_menu, ( void * )&s_joyybutton_box); // Commented out until needed
// initialize the configurable cvars
Controls_InitCvars();
// initialize the current config
Controls_GetConfig();
// initial default section
s_controls.waitingforkey = qfalse;
g_section = C_MOUSE;
g_changesmade = qfalse;
g_prompttosave = qfalse;
// update the ui
Controls_UpdateNew();
}
/*
=================
UI_ControlsMouseJoyStickMenu
=================
*/
static void UI_ControlsMouseJoyStickMenu( void )
{
ControlsMouseJoyStick_MenuInit();
UI_PushMenu( &s_controlsmouse_menu );
}
/*
=================
M_ControlsOtherMenu_Graphics
=================
*/
void M_ControlsDefaultMenu_Graphics (void)
{
// Draw the basic screen layout
UI_MenuFrame(&s_controlsdefault_menu);
trap_R_SetColor( colorTable[CT_LTBROWN1]);
UI_DrawHandlePic(30,203, 47, 186, uis.whiteShader); // Long left column square on bottom 3rd
trap_R_SetColor( colorTable[CT_RED]);
UI_DrawHandlePic(132,175, 425, 18, uis.whiteShader); // Top
UI_DrawHandlePic(132,193, 47, 175, uis.whiteShader); // Left side
UI_DrawHandlePic(510,193, 47, 175, uis.whiteShader); // Right side
UI_DrawHandlePic(132,365, 80, 18, uis.whiteShader); // Bottom Left
UI_DrawHandlePic(477,365, 80, 18, uis.whiteShader); // Bottom Right
UI_DrawProportionalString(345,210,menu_normal_text[MNT_DEFAULT_WARNING1],UI_BIGFONT | UI_BLINK | UI_CENTER,colorTable[CT_RED]);
UI_DrawProportionalString(345,263,menu_normal_text[MNT_DEFAULT_WARNING2],UI_SMALLFONT | UI_CENTER,colorTable[CT_RED]);
UI_DrawProportionalString(345,283,menu_normal_text[MNT_DEFAULT_WARNING3],UI_SMALLFONT | UI_CENTER,colorTable[CT_RED]);
UI_DrawProportionalString(345,321,menu_normal_text[MNT_CONTINUE_WARNING],UI_SMALLFONT | UI_CENTER,colorTable[CT_RED]);
}
/*
=================
ControlsDefault_MenuDraw
=================
*/
static void ControlsDefault_MenuDraw (void)
{
M_ControlsDefaultMenu_Graphics();
UI_Setup_MenuButtons();
Menu_Draw( &s_controlsdefault_menu );
}
/*
=================
M_Default_Event
=================
*/
void M_Default_Event (void* ptr, int event)
{
menuframework_s* m;
if (event != QM_ACTIVATED)
{
return;
}
m = ((menucommon_s*)ptr)->parent;
switch (((menucommon_s*)ptr)->id)
{
// Get default config
case ID_DEFAULT_YES:
Setup_ResetDefaults_Action(qtrue);
break;
// No, just back up
case ID_DEFAULT_NO:
UI_PopMenu();
break;
}
}
/*
=================
ControlsDefault_MenuKey
=================
*/
static sfxHandle_t ControlsDefault_MenuKey( int key )
{
return Menu_DefaultKey( &s_controlsdefault_menu, key );
}
/*
=================
ControlsOther_MenuInit
=================
*/
static void ControlsDefault_MenuInit( void )
{
s_controlsdefault_menu.nitems = 0;
s_controlsdefault_menu.wrapAround = qtrue;
s_controlsdefault_menu.draw = ControlsDefault_MenuDraw;
s_controlsdefault_menu.key = ControlsDefault_MenuKey;
s_controlsdefault_menu.fullscreen = qtrue;
s_controlsdefault_menu.descX = MENU_DESC_X;
s_controlsdefault_menu.descY = MENU_DESC_Y;
s_controlsdefault_menu.listX = 230;
s_controlsdefault_menu.listY = 188;
s_controlsdefault_menu.titleX = MENU_TITLE_X;
s_controlsdefault_menu.titleY = MENU_TITLE_Y;
s_controlsdefault_menu.titleI = MNT_CONTROLSMENU_TITLE;
s_controlsdefault_menu.footNoteEnum = MNT_DEFAULT_SETUP;
SetupMenu_TopButtons(&s_controlsdefault_menu,MENU_DEFAULT,NULL);
s_controls_other.textcolor = CT_LTGOLD1;
s_controls_other.textcolor2 = CT_LTGOLD1;
s_controls_default_yes.generic.type = MTYPE_BITMAP;
s_controls_default_yes.generic.flags = QMF_HIGHLIGHT_IF_FOCUS;
s_controls_default_yes.generic.x = 215;
s_controls_default_yes.generic.y = 365;
s_controls_default_yes.generic.name = GRAPHIC_SQUARE;
s_controls_default_yes.generic.id = ID_DEFAULT_YES;
s_controls_default_yes.generic.callback = M_Default_Event;
s_controls_default_yes.width = 103;
s_controls_default_yes.height = MENU_BUTTON_MED_HEIGHT;
s_controls_default_yes.color = CT_DKPURPLE1;
s_controls_default_yes.color2 = CT_LTPURPLE1;
s_controls_default_yes.textX = MENU_BUTTON_TEXT_X;
s_controls_default_yes.textY = MENU_BUTTON_TEXT_Y;
s_controls_default_yes.textEnum = MBT_DEFAULT_YES;
s_controls_default_yes.textcolor = CT_BLACK;
s_controls_default_yes.textcolor2 = CT_WHITE;
s_controls_default_yes.textStyle = UI_SMALLFONT;
s_controls_default_no.generic.type = MTYPE_BITMAP;
s_controls_default_no.generic.flags = QMF_HIGHLIGHT_IF_FOCUS;
s_controls_default_no.generic.x = 371;
s_controls_default_no.generic.y = 365;
s_controls_default_no.generic.name = GRAPHIC_SQUARE;
s_controls_default_no.generic.id = ID_DEFAULT_NO;
s_controls_default_no.generic.callback = M_Default_Event;
s_controls_default_no.width = 103;
s_controls_default_no.height = MENU_BUTTON_MED_HEIGHT;
s_controls_default_no.color = CT_DKPURPLE1;
s_controls_default_no.color2 = CT_LTPURPLE1;
s_controls_default_no.textX = MENU_BUTTON_TEXT_X;
s_controls_default_no.textY = MENU_BUTTON_TEXT_Y;
s_controls_default_no.textEnum = MBT_DEFAULT_NO;
s_controls_default_no.textcolor = CT_BLACK;
s_controls_default_no.textcolor2 = CT_WHITE;
s_controls_default_no.textStyle = UI_SMALLFONT;
Menu_AddItem( &s_controlsdefault_menu, ( void * )&s_controls_default_yes);
Menu_AddItem( &s_controlsdefault_menu, ( void * )&s_controls_default_no);
}
/*
=================
UI_ControlsDefaultMenu
=================
*/
static void UI_ControlsDefaultMenu( void )
{
ControlsDefault_MenuInit();
UI_PushMenu( &s_controlsdefault_menu );
}
/*
=================
M_ControlsOtherMenu_Graphics
=================
*/
void M_ControlsOtherMenu_Graphics (void)
{
// Draw the basic screen layout
UI_MenuFrame(&s_controlsother_menu);
trap_R_SetColor( colorTable[CT_DKPURPLE2]);
UI_DrawHandlePic( 210, 204, 402, 8, uis.whiteShader); // Long thin line below turn speed
UI_DrawHandlePic( 545, 212, 67, 140, uis.whiteShader); // Thick right column
UI_DrawHandlePic( 210, 344, 402, 8, uis.whiteShader); // Long thin line below autoswitch
UI_DrawHandlePic( 210, 352, 10, 83, uis.whiteShader); // Thin left column
UI_DrawProportionalString( 608, 340, "1701 - B",UI_RIGHT|UI_TINYFONT, colorTable[CT_BLACK]);
UI_DrawProportionalString( 280, 419, "500987",UI_RIGHT|UI_TINYFONT, colorTable[CT_DKGOLD1]);
UI_DrawProportionalString( 358, 419, "456732",UI_RIGHT|UI_TINYFONT, colorTable[CT_DKGOLD1]);
UI_DrawProportionalString( 436, 419, "67024",UI_RIGHT|UI_TINYFONT, colorTable[CT_DKGOLD1]);
UI_DrawProportionalString( 514, 419, "166110",UI_RIGHT|UI_TINYFONT, colorTable[CT_DKGOLD1]);
UI_DrawProportionalString( 592, 419, "575",UI_RIGHT|UI_TINYFONT, colorTable[CT_DKGOLD1]);
trap_R_SetColor( colorTable[CT_DKPURPLE3]);
UI_DrawHandlePic( 288, 364, 32, 64, s_controlsother.mon_bar); //
UI_DrawHandlePic( 366, 364, 32, 64, s_controlsother.mon_bar); //
UI_DrawHandlePic( 444, 364, 32, 64, s_controlsother.mon_bar); //
UI_DrawHandlePic( 522, 364, 32, 64, s_controlsother.mon_bar); //
UI_DrawHandlePic( 600, 364, 32, 64, s_controlsother.mon_bar); //
UI_DrawProportionalString( 74, 66, "5-0987",UI_RIGHT|UI_TINYFONT, colorTable[CT_BLACK]);
UI_DrawProportionalString( 74, 84, "16116",UI_RIGHT|UI_TINYFONT, colorTable[CT_BLACK]);
UI_DrawProportionalString( 74, 188, "28430",UI_RIGHT|UI_TINYFONT, colorTable[CT_BLACK]);
UI_DrawProportionalString( 74, 395, "6900",UI_RIGHT|UI_TINYFONT, colorTable[CT_BLACK]);
}
/*
=================
ControlsOther_MenuDraw
=================
*/
static void ControlsOther_MenuDraw (void)
{
M_ControlsOtherMenu_Graphics();
UI_Setup_MenuButtons();
Menu_Draw( &s_controlsother_menu );
}
/*
=================
ControlsOther_MenuKey
=================
*/
static sfxHandle_t ControlsOther_MenuKey( int key )
{
return Menu_DefaultKey( &s_controlsother_menu, key );
}
/*
=================
ControlsOther_Cache
=================
*/
void ControlsOther_Cache(void)
{
s_controlsother.mon_bar = trap_R_RegisterShaderNoMip("menu/common/mon_bar.tga");
}
/*
=================
ControlsOther_MenuInit
=================
*/
static void ControlsOther_MenuInit( void )
{
int x,y;
ControlsOther_Cache();
s_controlsother_menu.nitems = 0;
s_controlsother_menu.wrapAround = qtrue;
s_controlsother_menu.draw = ControlsOther_MenuDraw;
s_controlsother_menu.key = ControlsOther_MenuKey;
s_controlsother_menu.fullscreen = qtrue;
s_controlsother_menu.descX = MENU_DESC_X;
s_controlsother_menu.descY = MENU_DESC_Y;
s_controlsother_menu.listX = 230;
s_controlsother_menu.listY = 188;
s_controlsother_menu.titleX = MENU_TITLE_X;
s_controlsother_menu.titleY = MENU_TITLE_Y;
s_controlsother_menu.titleI = MNT_CONTROLSMENU_TITLE;
s_controlsother_menu.footNoteEnum = MNT_OTHEROPTIONS_SETUP;
SetupMenu_TopButtons(&s_controlsother_menu,MENU_CONTROLS,NULL);
SetupMenu_SideButtons(&s_controlsother_menu,MENU_CONTROLS_OTHER);
s_controls_other.textcolor = CT_LTGOLD1;
s_controls_other.textcolor2 = CT_LTGOLD1;
x = 210;
y = 172;
s_keyturnspeed_slider.generic.type = MTYPE_SLIDER;
s_keyturnspeed_slider.generic.x = x + 162;
s_keyturnspeed_slider.generic.y = y;
s_keyturnspeed_slider.generic.flags = QMF_SMALLFONT;
s_keyturnspeed_slider.generic.id = ID_KEYTURNPEED;
s_keyturnspeed_slider.generic.callback = Controls_MenuEvent;
s_keyturnspeed_slider.minvalue = 1;
s_keyturnspeed_slider.maxvalue = 5;
s_keyturnspeed_slider.color = CT_DKPURPLE1;
s_keyturnspeed_slider.color2 = CT_LTPURPLE1;
s_keyturnspeed_slider.generic.name = PIC_MONBAR2;
s_keyturnspeed_slider.width = 256;
s_keyturnspeed_slider.height = 32;
s_keyturnspeed_slider.focusWidth = 145;
s_keyturnspeed_slider.focusHeight = 18;
s_keyturnspeed_slider.picName = GRAPHIC_SQUARE;
s_keyturnspeed_slider.picX = x;
s_keyturnspeed_slider.picY = y;
s_keyturnspeed_slider.picWidth = MENU_BUTTON_MED_WIDTH + 21;
s_keyturnspeed_slider.picHeight = MENU_BUTTON_MED_HEIGHT;
s_keyturnspeed_slider.textX = 5;
s_keyturnspeed_slider.textY = 1;
s_keyturnspeed_slider.textEnum = MBT_KEYTURNSPEED;
s_keyturnspeed_slider.textcolor = CT_BLACK;
s_keyturnspeed_slider.textcolor2 = CT_WHITE;
s_keyturnspeed_slider.thumbName = "menu/common/slider.tga";
s_keyturnspeed_slider.thumbHeight = 32;
s_keyturnspeed_slider.thumbWidth = 16;
s_keyturnspeed_slider.thumbGraphicWidth = 9;
s_keyturnspeed_slider.thumbColor = CT_DKBLUE1;
s_keyturnspeed_slider.thumbColor2 = CT_LTBLUE1;
y =225;
s_controls.alwaysrun.generic.type = MTYPE_SPINCONTROL;
s_controls.alwaysrun.generic.flags = QMF_HIGHLIGHT_IF_FOCUS;
s_controls.alwaysrun.generic.x = x;
s_controls.alwaysrun.generic.y = y;
s_controls.alwaysrun.generic.callback = Controls_MenuEvent;
s_controls.alwaysrun.generic.id = ID_ALWAYSRUN;
s_controls.alwaysrun.textEnum = MBT_ALWAYSRUN;
s_controls.alwaysrun.textcolor = CT_BLACK;
s_controls.alwaysrun.textcolor2 = CT_WHITE;
s_controls.alwaysrun.color = CT_DKPURPLE1;
s_controls.alwaysrun.color2 = CT_LTPURPLE1;
s_controls.alwaysrun.textX = 5;
s_controls.alwaysrun.textY = 2;
s_controls.alwaysrun.listnames = s_OffOnNone_Names;
/* y +=22;
s_lookspring_box.generic.type = MTYPE_SPINCONTROL;
s_lookspring_box.generic.flags = QMF_HIGHLIGHT_IF_FOCUS;
s_lookspring_box.generic.x = x;
s_lookspring_box.generic.y = y;
s_lookspring_box.generic.callback = Controls_MenuEvent;
s_lookspring_box.generic.id = ID_LOOKSPRING;
s_lookspring_box.textEnum = MBT_LOOKSPRING;
s_lookspring_box.textcolor = CT_BLACK;
s_lookspring_box.textcolor2 = CT_WHITE;
s_lookspring_box.color = CT_DKPURPLE1;
s_lookspring_box.color2 = CT_LTPURPLE1;
s_lookspring_box.textX = 5;
s_lookspring_box.textY = 2;
s_lookspring_box.listnames = s_OffOnNone_Names;
*/
y +=22;
y +=22;
s_controls.autoswitch.generic.type = MTYPE_SPINCONTROL;
s_controls.autoswitch.generic.flags = QMF_HIGHLIGHT_IF_FOCUS;
s_controls.autoswitch.generic.x = x;
s_controls.autoswitch.generic.y = y;
s_controls.autoswitch.generic.callback = Controls_MenuEvent;
s_controls.autoswitch.generic.id = ID_AUTOSWITCHWEAPONS;
s_controls.autoswitch.textEnum = MBT_AUTOSWITCHWEAPONS;
s_controls.autoswitch.textcolor = CT_BLACK;
s_controls.autoswitch.textcolor2 = CT_WHITE;
s_controls.autoswitch.color = CT_DKPURPLE1;
s_controls.autoswitch.color2 = CT_LTPURPLE1;
s_controls.autoswitch.textX = 5;
s_controls.autoswitch.textY = 2;
s_controls.autoswitch.listnames = s_Autoswitch_Names;
Menu_AddItem( &s_controlsother_menu, ( void * )&s_controls.alwaysrun);
// Menu_AddItem( &s_controlsother_menu, ( void * )&s_lookspring_box);
Menu_AddItem( &s_controlsother_menu, ( void * )&s_keyturnspeed_slider);
Menu_AddItem( &s_controlsother_menu, ( void * )&s_controls.autoswitch);
// initialize the configurable cvars
Controls_InitCvars();
// initialize the current config
Controls_GetConfig();
// initial default section
g_section = C_OTHER;
g_changesmade = qfalse;
g_prompttosave = qfalse;
// update the ui
Controls_UpdateNew();
}
/*
=================
UI_ControlsOtherMenu
=================
*/
static void UI_ControlsOtherMenu( void )
{
ControlsOther_MenuInit();
UI_PushMenu( &s_controlsother_menu );
}
/*
=================
M_ControlsCommandMenu_Graphics
=================
*/
void M_ControlsCommandMenu_Graphics (void)
{
UI_MenuFrame(&s_controlscommand_menu);
UI_DrawProportionalString( 74, 66, "6-7",UI_RIGHT|UI_TINYFONT, colorTable[CT_BLACK]);
UI_DrawProportionalString( 74, 84, "8252",UI_RIGHT|UI_TINYFONT, colorTable[CT_BLACK]);
UI_DrawProportionalString( 74, 188, "21231",UI_RIGHT|UI_TINYFONT, colorTable[CT_BLACK]);
UI_DrawProportionalString( 74, 395, "96709",UI_RIGHT|UI_TINYFONT, colorTable[CT_BLACK]);
M_WeaponsMenu_Blinkies();
UI_PrintMenuGraphics(attackmenu_graphics,AMG_MAX);
UI_DrawProportionalString( 607, 174, "423",UI_RIGHT|UI_TINYFONT, colorTable[CT_BLACK]);
UI_DrawProportionalString( 607, 406, "2-2334",UI_RIGHT|UI_TINYFONT, colorTable[CT_BLACK]);
if (s_attack_waiting_action.generic.flags & QMF_HIDDEN)
{
UI_DrawProportionalString( 207, 411, menu_normal_text[MNT_BACKSPACE],UI_SMALLFONT, colorTable[CT_WHITE]);
}
}
/*
=================
ControlsCommand_MenuDraw
=================
*/
static void ControlsCommand_MenuDraw (void)
{
M_ControlsCommandMenu_Graphics();
UI_Setup_MenuButtons();
Menu_Draw( &s_controlscommand_menu );
}
/*
=================
ControlsCommand_MenuInit
=================
*/
static void ControlsCommand_MenuInit( void )
{
s_controlscommand_menu.nitems = 0;
s_controlscommand_menu.wrapAround = qtrue;
s_controlscommand_menu.draw = ControlsCommand_MenuDraw;
s_controlscommand_menu.key = Controls_MenuKey;
s_controlscommand_menu.fullscreen = qtrue;
s_controlscommand_menu.descX = MENU_DESC_X;
s_controlscommand_menu.descY = MENU_DESC_Y;
s_controlscommand_menu.listX = 170;
s_controlscommand_menu.listY = 188;
s_controlscommand_menu.titleX = MENU_TITLE_X;
s_controlscommand_menu.titleY = MENU_TITLE_Y;
s_controlscommand_menu.titleI = MNT_CONTROLSMENU_TITLE;
s_controlscommand_menu.footNoteEnum = MNT_COMMANDKEYS_SETUP;
Playermodel_MenuInit();
SetupMenu_TopButtons(&s_controlscommand_menu,MENU_CONTROLS,NULL);
SetupMenu_SideButtons(&s_controlscommand_menu,MENU_CONTROLS_COMMAND);
s_controls_command.textcolor = CT_LTGOLD1;
s_controls_command.textcolor2 = CT_LTGOLD1;
s_controls.chat.generic.type = MTYPE_ACTION;
s_controls.chat.generic.flags = QMF_LEFT_JUSTIFY|QMF_HIGHLIGHT_IF_FOCUS;
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_HIGHLIGHT_IF_FOCUS;
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_HIGHLIGHT_IF_FOCUS;
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_HIGHLIGHT_IF_FOCUS;
s_controls.chat4.generic.callback = Controls_ActionEvent;
s_controls.chat4.generic.ownerdraw = Controls_DrawKeyBinding;
s_controls.chat4.generic.id = ID_CHAT4;*/
/* s_controls.chat5.generic.type = MTYPE_ACTION;
s_controls.chat5.generic.flags = QMF_LEFT_JUSTIFY|QMF_HIGHLIGHT_IF_FOCUS;
s_controls.chat5.generic.callback = Controls_ActionEvent;
s_controls.chat5.generic.ownerdraw = Controls_DrawKeyBinding;
s_controls.chat5.generic.id = ID_CHAT5;*/
s_controls.gesture.generic.type = MTYPE_ACTION;
s_controls.gesture.generic.flags = QMF_LEFT_JUSTIFY|QMF_HIGHLIGHT_IF_FOCUS;
s_controls.gesture.generic.callback = Controls_ActionEvent;
s_controls.gesture.generic.ownerdraw = Controls_DrawKeyBinding;
s_controls.gesture.generic.id = ID_GESTURE;
s_equip_action.generic.type = MTYPE_ACTION;
s_equip_action.generic.flags = QMF_LEFT_JUSTIFY | QMF_HIGHLIGHT_IF_FOCUS;
s_equip_action.generic.callback = Controls_ActionEvent;
s_equip_action.generic.ownerdraw = Controls_DrawKeyBinding;
s_equip_action.generic.id = ID_EQUIP;
// RPG-X | Marcin | 04/12/2008
s_drop_action.generic.type = MTYPE_ACTION;
s_drop_action.generic.flags = QMF_LEFT_JUSTIFY | QMF_HIGHLIGHT_IF_FOCUS;
s_drop_action.generic.callback = Controls_ActionEvent;
s_drop_action.generic.ownerdraw = Controls_DrawKeyBinding;
s_drop_action.generic.id = ID_DROP;
s_thirdperson_action.generic.type = MTYPE_ACTION;
s_thirdperson_action.generic.flags = QMF_LEFT_JUSTIFY|QMF_HIGHLIGHT_IF_FOCUS;
s_thirdperson_action.generic.callback = Controls_ActionEvent;
s_thirdperson_action.generic.ownerdraw = Controls_DrawKeyBinding;
s_thirdperson_action.generic.id = ID_TOGGLE3DP;
s_thirdpersoncommit_action.generic.type = MTYPE_ACTION;
s_thirdpersoncommit_action.generic.flags = QMF_LEFT_JUSTIFY|QMF_HIGHLIGHT_IF_FOCUS;
s_thirdpersoncommit_action.generic.callback = Controls_ActionEvent;
s_thirdpersoncommit_action.generic.ownerdraw = Controls_DrawKeyBinding;
s_thirdpersoncommit_action.generic.id = ID_COMMITANGLES;
s_thirdpersonrevert_action.generic.type = MTYPE_ACTION;
s_thirdpersonrevert_action.generic.flags = QMF_LEFT_JUSTIFY|QMF_HIGHLIGHT_IF_FOCUS;
s_thirdpersonrevert_action.generic.callback = Controls_ActionEvent;
s_thirdpersonrevert_action.generic.ownerdraw = Controls_DrawKeyBinding;
s_thirdpersonrevert_action.generic.id = ID_REVERTANGLES;
s_thirdpersonreset_action.generic.type = MTYPE_ACTION;
s_thirdpersonreset_action.generic.flags = QMF_LEFT_JUSTIFY|QMF_HIGHLIGHT_IF_FOCUS;
s_thirdpersonreset_action.generic.callback = Controls_ActionEvent;
s_thirdpersonreset_action.generic.ownerdraw = Controls_DrawKeyBinding;
s_thirdpersonreset_action.generic.id = ID_RESETANGLES;
s_attack_waiting_action.generic.type = MTYPE_ACTION;
s_attack_waiting_action.generic.flags = QMF_HIDDEN;
s_attack_waiting_action.generic.x = 202;
s_attack_waiting_action.generic.y = 410;
s_attack_waiting_action.textEnum = MBT_WAITFORKEY;
s_attack_waiting_action.textcolor = CT_BLACK;
s_attack_waiting_action.textcolor2 = CT_WHITE;
s_attack_waiting_action.textcolor3 = CT_LTGREY;
s_attack_waiting_action.color = CT_VDKPURPLE1;//CT_DKPURPLE1;
s_attack_waiting_action.color2 = CT_VDKPURPLE1;//CT_LTPURPLE1;
s_attack_waiting_action.color3 = CT_DKGREY;
s_attack_waiting_action.textX = 5;
s_attack_waiting_action.textY = 1;
s_attack_waiting_action.width = 255;
s_attack_waiting_action.height = 18;
g_section = C_COMMAND;
SetupActionButtons_Init(g_section); // Set up standard values
Menu_AddItem( &s_controlscommand_menu, ( void * )&s_controls_playermdl);
Menu_AddItem( &s_controlscommand_menu, ( void * )&s_controls.chat);
Menu_AddItem( &s_controlscommand_menu, ( void * )&s_controls.chat2);
Menu_AddItem( &s_controlscommand_menu, ( void * )&s_controls.chat3);
//Menu_AddItem( &s_controlscommand_menu, ( void * )&s_controls.chat4);
//Menu_AddItem( &s_controlscommand_menu, ( void * )&s_controls.chat5);
Menu_AddItem( &s_controlscommand_menu, ( void * )&s_controls.gesture);
Menu_AddItem( &s_controlscommand_menu, ( void * )&s_attack_waiting_action);
Menu_AddItem( &s_controlscommand_menu, ( void *)&s_equip_action );
Menu_AddItem( &s_controlscommand_menu, ( void *)&s_drop_action ); // RPG-X | Marcin | 04/12/2008
Menu_AddItem( &s_controlscommand_menu, ( void * )&s_thirdperson_action );
Menu_AddItem( &s_controlscommand_menu, ( void * )&s_thirdpersoncommit_action);
Menu_AddItem( &s_controlscommand_menu, ( void * )&s_thirdpersonrevert_action);
Menu_AddItem( &s_controlscommand_menu, ( void * )&s_thirdpersonreset_action);
// initialize the configurable cvars
Controls_InitCvars();
// initialize the current config
Controls_GetConfig();
// intialize the model
Controls_InitModel();
// initial default section
s_controls.waitingforkey = qfalse;
// update the ui
Controls_UpdateNew();
}
/*
=================
UI_ControlsCommandMenu
=================
*/
static void UI_ControlsCommandMenu( void )
{
ControlsCommand_MenuInit();
UI_PushMenu( &s_controlscommand_menu );
}
/*
=================
M_ControlsModelView_Graphics
=================
*/
void M_ControlsModelView_Graphics (void)
{
UI_MenuFrame(&s_controlsmodelview_menu);
UI_DrawProportionalString( 74, 66, "2-8",UI_RIGHT|UI_TINYFONT, colorTable[CT_BLACK]);
UI_DrawProportionalString( 74, 84, "6154",UI_RIGHT|UI_TINYFONT, colorTable[CT_BLACK]);
UI_DrawProportionalString( 74, 188, "604",UI_RIGHT|UI_TINYFONT, colorTable[CT_BLACK]);
UI_DrawProportionalString( 74, 395, "3699",UI_RIGHT|UI_TINYFONT, colorTable[CT_BLACK]);
M_WeaponsMenu_Blinkies();
UI_PrintMenuGraphics(attackmenu_graphics,AMG_MAX);
UI_DrawProportionalString( 607, 174, "867",UI_RIGHT|UI_TINYFONT, colorTable[CT_BLACK]);
UI_DrawProportionalString( 607, 406, "2-2135",UI_RIGHT|UI_TINYFONT, colorTable[CT_BLACK]);
if (s_attack_waiting_action.generic.flags & QMF_HIDDEN)
{
UI_DrawProportionalString( 207, 411, menu_normal_text[MNT_BACKSPACE],UI_SMALLFONT, colorTable[CT_WHITE]);
}
}
/*
=================
ControlsModelView_MenuDraw
=================
*/
static void ControlsModelView_MenuDraw (void)
{
M_ControlsModelView_Graphics();
UI_Setup_MenuButtons();
Menu_Draw( &s_controlsmodelview_menu );
}
/*
=================
ControlsModelView_MenuInit
=================
*/
static void ControlsModelView_MenuInit( void )
{
s_controlsmodelview_menu.nitems = 0;
s_controlsmodelview_menu.wrapAround = qtrue;
s_controlsmodelview_menu.draw = ControlsModelView_MenuDraw;
s_controlsmodelview_menu.key = Controls_MenuKey;
s_controlsmodelview_menu.fullscreen = qtrue;
s_controlsmodelview_menu.descX = MENU_DESC_X;
s_controlsmodelview_menu.descY = MENU_DESC_Y;
s_controlsmodelview_menu.listX = 170;
s_controlsmodelview_menu.listY = 188;
s_controlsmodelview_menu.titleX = MENU_TITLE_X;
s_controlsmodelview_menu.titleY = MENU_TITLE_Y;
s_controlsmodelview_menu.titleI = MNT_CONTROLSMENU_TITLE;
s_controlsmodelview_menu.footNoteEnum = MNT_MODELVIEW_SETUP;
Playermodel_MenuInit();
SetupMenu_TopButtons(&s_controlsmodelview_menu,MENU_CONTROLS,NULL);
SetupMenu_SideButtons(&s_controlsmodelview_menu,MENU_CONTROLS_MODELVIEW);
s_controls_modelview.textcolor = CT_LTGOLD1;
s_controls_modelview.textcolor2 = CT_LTGOLD1;
s_zoomforward_action.generic.type = MTYPE_ACTION;
s_zoomforward_action.generic.flags = QMF_LEFT_JUSTIFY | QMF_HIGHLIGHT_IF_FOCUS;
s_zoomforward_action.generic.callback = Controls_ActionEvent;
s_zoomforward_action.generic.ownerdraw = Controls_DrawKeyBinding;
s_zoomforward_action.generic.id = ID_ZOOMFORWARD;
s_zoombackward_action.generic.type = MTYPE_ACTION;
s_zoombackward_action.generic.flags = QMF_LEFT_JUSTIFY | QMF_HIGHLIGHT_IF_FOCUS;
s_zoombackward_action.generic.callback = Controls_ActionEvent;
s_zoombackward_action.generic.ownerdraw = Controls_DrawKeyBinding;
s_zoombackward_action.generic.id = ID_ZOOMBACKWARD;
s_panleft_action.generic.type = MTYPE_ACTION;
s_panleft_action.generic.flags = QMF_LEFT_JUSTIFY | QMF_HIGHLIGHT_IF_FOCUS;
s_panleft_action.generic.callback = Controls_ActionEvent;
s_panleft_action.generic.ownerdraw = Controls_DrawKeyBinding;
s_panleft_action.generic.id = ID_PANLEFT;
s_panright_action.generic.type = MTYPE_ACTION;
s_panright_action.generic.flags = QMF_LEFT_JUSTIFY | QMF_HIGHLIGHT_IF_FOCUS;
s_panright_action.generic.callback = Controls_ActionEvent;
s_panright_action.generic.ownerdraw = Controls_DrawKeyBinding;
s_panright_action.generic.id = ID_PANRIGHT;
s_panup_action.generic.type = MTYPE_ACTION;
s_panup_action.generic.flags = QMF_LEFT_JUSTIFY | QMF_HIGHLIGHT_IF_FOCUS;
s_panup_action.generic.callback = Controls_ActionEvent;
s_panup_action.generic.ownerdraw = Controls_DrawKeyBinding;
s_panup_action.generic.id = ID_PANUP;
s_pandown_action.generic.type = MTYPE_ACTION;
s_pandown_action.generic.flags = QMF_LEFT_JUSTIFY | QMF_HIGHLIGHT_IF_FOCUS;
s_pandown_action.generic.callback = Controls_ActionEvent;
s_pandown_action.generic.ownerdraw = Controls_DrawKeyBinding;
s_pandown_action.generic.id = ID_PANDOWN;
s_rotateleft_action.generic.type = MTYPE_ACTION;
s_rotateleft_action.generic.flags = QMF_LEFT_JUSTIFY | QMF_HIGHLIGHT_IF_FOCUS;
s_rotateleft_action.generic.callback = Controls_ActionEvent;
s_rotateleft_action.generic.ownerdraw = Controls_DrawKeyBinding;
s_rotateleft_action.generic.id = ID_ROTATELEFT;
s_rotateright_action.generic.type = MTYPE_ACTION;
s_rotateright_action.generic.flags = QMF_LEFT_JUSTIFY | QMF_HIGHLIGHT_IF_FOCUS;
s_rotateright_action.generic.callback = Controls_ActionEvent;
s_rotateright_action.generic.ownerdraw = Controls_DrawKeyBinding;
s_rotateright_action.generic.id = ID_ROTATERIGHT;
s_pitchup_action.generic.type = MTYPE_ACTION;
s_pitchup_action.generic.flags = QMF_LEFT_JUSTIFY | QMF_HIGHLIGHT_IF_FOCUS;
s_pitchup_action.generic.callback = Controls_ActionEvent;
s_pitchup_action.generic.ownerdraw = Controls_DrawKeyBinding;
s_pitchup_action.generic.id = ID_PITCHUP;
s_pitchdown_action.generic.type = MTYPE_ACTION;
s_pitchdown_action.generic.flags = QMF_LEFT_JUSTIFY | QMF_HIGHLIGHT_IF_FOCUS;
s_pitchdown_action.generic.callback = Controls_ActionEvent;
s_pitchdown_action.generic.ownerdraw = Controls_DrawKeyBinding;
s_pitchdown_action.generic.id = ID_PITCHDOWN;
s_attack_waiting_action.generic.type = MTYPE_ACTION;
s_attack_waiting_action.generic.flags = QMF_HIDDEN;
s_attack_waiting_action.generic.x = 202;
s_attack_waiting_action.generic.y = 410;
s_attack_waiting_action.textEnum = MBT_WAITFORKEY;
s_attack_waiting_action.textcolor = CT_BLACK;
s_attack_waiting_action.textcolor2 = CT_WHITE;
s_attack_waiting_action.textcolor3 = CT_LTGREY;
s_attack_waiting_action.color = CT_VDKPURPLE1;//CT_DKPURPLE1;
s_attack_waiting_action.color2 = CT_VDKPURPLE1;//CT_LTPURPLE1;
s_attack_waiting_action.color3 = CT_DKGREY;
s_attack_waiting_action.textX = 5;
s_attack_waiting_action.textY = 1;
s_attack_waiting_action.width = 255;
s_attack_waiting_action.height = 18;
g_section = C_MODELVIEW;
SetupActionButtons_Init(g_section); // Set up standard values
Menu_AddItem( &s_controlsmodelview_menu, ( void* )&s_zoomforward_action );
Menu_AddItem( &s_controlsmodelview_menu, ( void* )&s_zoombackward_action );
Menu_AddItem( &s_controlsmodelview_menu, ( void* )&s_panleft_action );
Menu_AddItem( &s_controlsmodelview_menu, ( void* )&s_panright_action );
Menu_AddItem( &s_controlsmodelview_menu, ( void* )&s_panup_action );
Menu_AddItem( &s_controlsmodelview_menu, ( void* )&s_pandown_action );
Menu_AddItem( &s_controlsmodelview_menu, ( void* )&s_rotateleft_action );
Menu_AddItem( &s_controlsmodelview_menu, ( void* )&s_rotateright_action );
Menu_AddItem( &s_controlsmodelview_menu, ( void* )&s_pitchup_action );
Menu_AddItem( &s_controlsmodelview_menu, ( void* )&s_pitchdown_action );
Menu_AddItem( &s_controlsmodelview_menu, ( void* )&s_attack_waiting_action );
Menu_AddItem( &s_controlsmodelview_menu, ( void * )&s_controls_playermdl);
// initialize the configurable cvars
Controls_InitCvars();
// initialize the current config
Controls_GetConfig();
// intialize the model
Controls_InitModel();
// initial default section
s_controls.waitingforkey = qfalse;
// update the ui
Controls_UpdateNew();
}
/*
=================
UI_ControlsModelViewMenu
=================
*/
static void UI_ControlsModelViewMenu( void )
{
ControlsModelView_MenuInit();
UI_PushMenu( &s_controlsmodelview_menu );
}