diff --git a/code/ui/ui_preferences.c b/code/ui/ui_preferences.c index a5b27282b..64db721b8 100644 --- a/code/ui/ui_preferences.c +++ b/code/ui/ui_preferences.c @@ -78,6 +78,7 @@ PREFERENCES MENU #define ID_SYNCEVERYFRAME 38 #define ID_FORCEMODEL 39 #define ID_GLOWMODEL 40 +#define ID_HITSOUND 41 #define ID_CONNOTIFY 50 #define ID_CHATHEIGHT 51 @@ -135,6 +136,7 @@ typedef struct { menuradiobutton_s synceveryframe; menuradiobutton_s forcemodel; menulist_s glowmodel; + menuradiobutton_s hitsound; menulist_s connotify; menulist_s chatheight; @@ -193,6 +195,7 @@ static menucommon_s *g_game_options[] = { (menucommon_s *)&s_preferences.synceveryframe, (menucommon_s *)&s_preferences.forcemodel, (menucommon_s *)&s_preferences.glowmodel, + (menucommon_s *)&s_preferences.hitsound, NULL }; @@ -278,12 +281,12 @@ static void UI_Preferences_SetMenuItems(void) { s_preferences.ingamevideo.curvalue = trap_Cvar_VariableValue("r_inGameVideo") != 0; s_preferences.synceveryframe.curvalue = trap_Cvar_VariableValue("r_finish") != 0; s_preferences.forcemodel.curvalue = (trap_Cvar_VariableValue("cg_forcemodel") != 0); - if (!Q_stricmp(UI_Cvar_VariableString("cg_glowModel"), "")) { s_preferences.glowmodel.curvalue = 0; } else { s_preferences.glowmodel.curvalue = (trap_Cvar_VariableValue("cg_glowModel") + 1); } + s_preferences.hitsound.curvalue = (trap_Cvar_VariableValue("cg_advHitSound") != 0); notify = UI_GetCvarInt("con_notifytime"); if (notify < 0) { @@ -533,6 +536,10 @@ static void UI_Preferences_Event(void *ptr, int notification) { UI_Preferences_UpdateMenuItems(); break; + case ID_HITSOUND: + trap_Cvar_SetValue("cg_advHitSound", s_preferences.hitsound.curvalue); + break; + case ID_CONNOTIFY: switch (s_preferences.connotify.curvalue) { case 0: @@ -1053,6 +1060,18 @@ static void UI_Preferences_MenuInit(void) { "Enable to force all players to be displayed with glowing player models in the desired skin color. " "Default is none. NOTE: In team gametypes, the glowing color is always set to red or blue."; + y += (BIGCHAR_HEIGHT + 2); + s_preferences.hitsound.generic.type = MTYPE_RADIOBUTTON; + s_preferences.hitsound.generic.name = "Advanced Hit Sound:"; + s_preferences.hitsound.generic.flags = QMF_SMALLFONT | QMF_HIDDEN; + s_preferences.hitsound.generic.callback = UI_Preferences_Event; + s_preferences.hitsound.generic.id = ID_HITSOUND; + s_preferences.hitsound.generic.x = XPOSITION; + s_preferences.hitsound.generic.y = y; + s_preferences.hitsound.generic.toolTip = + "Enable to play an alternate set of hit sounds indicating your opponent's shield points " + "from high to low. Default is off."; + // chat options y = YPOSITION; s_preferences.connotify.generic.type = MTYPE_SPINCONTROL; @@ -1313,6 +1332,7 @@ static void UI_Preferences_MenuInit(void) { Menu_AddItem(&s_preferences.menu, &s_preferences.synceveryframe); Menu_AddItem(&s_preferences.menu, &s_preferences.forcemodel); Menu_AddItem(&s_preferences.menu, &s_preferences.glowmodel); + Menu_AddItem(&s_preferences.menu, &s_preferences.hitsound); Menu_AddItem(&s_preferences.menu, &s_preferences.connotify); Menu_AddItem(&s_preferences.menu, &s_preferences.chatheight);