Merge branch 'master' into ui

This commit is contained in:
apartfromtime 2022-08-13 10:08:02 +10:00
commit e87f025d13
8 changed files with 115 additions and 221 deletions

View file

@ -9,6 +9,7 @@ original clients (Vanilla Quake II) commands are still in place.
weapon classnames separated by whitespaces. A weapon in the list is weapon classnames separated by whitespaces. A weapon in the list is
skipped if it is not a valid weapon classname, you do not own it in skipped if it is not a valid weapon classname, you do not own it in
your inventory or you do not have enough ammo to use it. your inventory or you do not have enough ammo to use it.
By quickly tapping the bound key, you can navigate the list faster.
* **prefweap <weapons>**: Similar to the previous command, this will * **prefweap <weapons>**: Similar to the previous command, this will
select the first weapon available in the priority list given. Useful select the first weapon available in the priority list given. Useful

View file

@ -294,17 +294,8 @@ extern cvar_t *cl_shownet;
extern cvar_t *cl_showmiss; extern cvar_t *cl_showmiss;
extern cvar_t *cl_showclamp; extern cvar_t *cl_showclamp;
extern cvar_t *lookstrafe; extern cvar_t *lookstrafe;
extern cvar_t *sensitivity;
extern cvar_t *joy_expo;
extern cvar_t *joy_yawsensitivity;
extern cvar_t *joy_pitchsensitivity;
extern cvar_t *joy_forwardsensitivity;
extern cvar_t *joy_sidesensitivity;
extern cvar_t *joy_upsensitivity;
extern cvar_t *gyro_mode; extern cvar_t *gyro_mode;
extern cvar_t *gyro_turning_axis; extern cvar_t *gyro_turning_axis;
extern cvar_t *gyro_yawsensitivity;
extern cvar_t *gyro_pitchsensitivity;
extern cvar_t *m_pitch; extern cvar_t *m_pitch;
extern cvar_t *m_yaw; extern cvar_t *m_yaw;
extern cvar_t *m_forward; extern cvar_t *m_forward;

View file

@ -79,7 +79,7 @@ cvar_t *m_pitch;
cvar_t *m_side; cvar_t *m_side;
cvar_t *m_up; cvar_t *m_up;
cvar_t *m_yaw; cvar_t *m_yaw;
cvar_t *sensitivity; static cvar_t *sensitivity;
static cvar_t *exponential_speedup; static cvar_t *exponential_speedup;
static cvar_t *in_grab; static cvar_t *in_grab;
@ -114,12 +114,12 @@ static int last_haptic_efffect_pos = 0;
static struct hapric_effects_cache last_haptic_efffect[HAPTIC_EFFECT_LIST_SIZE]; static struct hapric_effects_cache last_haptic_efffect[HAPTIC_EFFECT_LIST_SIZE];
// Joystick sensitivity // Joystick sensitivity
cvar_t *joy_yawsensitivity; static cvar_t *joy_yawsensitivity;
cvar_t *joy_pitchsensitivity; static cvar_t *joy_pitchsensitivity;
cvar_t *joy_forwardsensitivity; static cvar_t *joy_forwardsensitivity;
cvar_t *joy_sidesensitivity; static cvar_t *joy_sidesensitivity;
cvar_t *joy_upsensitivity; static cvar_t *joy_upsensitivity;
cvar_t *joy_expo; static cvar_t *joy_expo;
// Joystick direction settings // Joystick direction settings
static cvar_t *joy_axis_leftx; static cvar_t *joy_axis_leftx;
@ -145,8 +145,8 @@ cvar_t *gyro_mode;
cvar_t *gyro_turning_axis; // yaw or roll cvar_t *gyro_turning_axis; // yaw or roll
// Gyro sensitivity // Gyro sensitivity
cvar_t *gyro_yawsensitivity; static cvar_t *gyro_yawsensitivity;
cvar_t *gyro_pitchsensitivity; static cvar_t *gyro_pitchsensitivity;
// Gyro availability // Gyro availability
qboolean gyro_hardware = false; qboolean gyro_hardware = false;

View file

@ -108,11 +108,11 @@ typedef struct
{ {
menucommon_s generic; menucommon_s generic;
float minvalue; char * cvar;
float maxvalue; float minvalue;
float curvalue; float maxvalue;
float slidestep;
float range; char * printformat;
} menuslider_s; } menuslider_s;
typedef struct typedef struct
@ -144,11 +144,12 @@ void *Menu_ItemAtCursor(menuframework_s *m);
qboolean Menu_SelectItem(menuframework_s *s); qboolean Menu_SelectItem(menuframework_s *s);
void Menu_SetStatusBar(menuframework_s *s, const char *string); void Menu_SetStatusBar(menuframework_s *s, const char *string);
void Menu_SlideItem(menuframework_s *s, int dir); void Menu_SlideItem(menuframework_s *s, int dir);
int Menu_TallySlots(menuframework_s *menu);
void Menu_DrawString(int, int, const char *); void Menu_DrawString(int, int, const char *);
void Menu_DrawStringDark(int, int, const char *); void Menu_DrawStringDark(int, int, const char *);
void Menu_DrawStringR2L(int, int, const char *); void Menu_DrawStringR2L(int, int, const char *);
void Menu_DrawStringR2LDark(int, int, const char *); void Menu_DrawStringR2LDark(int, int, const char *);
float ClampCvar(float min, float max, float value);
#endif #endif

View file

@ -86,22 +86,6 @@ typedef struct
menulayer_t m_layers[MAX_MENU_DEPTH]; menulayer_t m_layers[MAX_MENU_DEPTH];
int m_menudepth; int m_menudepth;
static float
ClampCvar(float min, float max, float value)
{
if (value < min)
{
return min;
}
if (value > max)
{
return max;
}
return value;
}
static qboolean static qboolean
M_IsGame(const char *gamename) M_IsGame(const char *gamename)
{ {
@ -1667,18 +1651,6 @@ TurningAxisFunc(void *unused)
Cvar_SetValue("gyro_turning_axis", (int)s_turning_axis_box.curvalue); Cvar_SetValue("gyro_turning_axis", (int)s_turning_axis_box.curvalue);
} }
static void
GyroYawSensitivityFunc(void *unused)
{
Cvar_SetValue("gyro_yawsensitivity", s_gyro_yawsensitivity_slider.curvalue / 10.0F);
}
static void
GyroPitchSensitivityFunc(void *unused)
{
Cvar_SetValue("gyro_pitchsensitivity", s_gyro_pitchsensitivity_slider.curvalue / 10.0F);
}
static void static void
Gyro_MenuInit(void) Gyro_MenuInit(void)
{ {
@ -1724,19 +1696,17 @@ Gyro_MenuInit(void)
s_gyro_yawsensitivity_slider.generic.x = 0; s_gyro_yawsensitivity_slider.generic.x = 0;
s_gyro_yawsensitivity_slider.generic.y = (y += 20); s_gyro_yawsensitivity_slider.generic.y = (y += 20);
s_gyro_yawsensitivity_slider.generic.name = "yaw sensitivity"; s_gyro_yawsensitivity_slider.generic.name = "yaw sensitivity";
s_gyro_yawsensitivity_slider.generic.callback = GyroYawSensitivityFunc; s_gyro_yawsensitivity_slider.cvar = "gyro_yawsensitivity";
s_gyro_yawsensitivity_slider.minvalue = 1; s_gyro_yawsensitivity_slider.minvalue = 0.1f;
s_gyro_yawsensitivity_slider.maxvalue = 80; s_gyro_yawsensitivity_slider.maxvalue = 8.0f;
s_gyro_yawsensitivity_slider.curvalue = gyro_yawsensitivity->value * 10;
s_gyro_pitchsensitivity_slider.generic.type = MTYPE_SLIDER; s_gyro_pitchsensitivity_slider.generic.type = MTYPE_SLIDER;
s_gyro_pitchsensitivity_slider.generic.x = 0; s_gyro_pitchsensitivity_slider.generic.x = 0;
s_gyro_pitchsensitivity_slider.generic.y = (y += 10); s_gyro_pitchsensitivity_slider.generic.y = (y += 10);
s_gyro_pitchsensitivity_slider.generic.name = "pitch sensitivity"; s_gyro_pitchsensitivity_slider.generic.name = "pitch sensitivity";
s_gyro_pitchsensitivity_slider.generic.callback = GyroPitchSensitivityFunc; s_gyro_pitchsensitivity_slider.cvar = "gyro_pitchsensitivity";
s_gyro_pitchsensitivity_slider.minvalue = 1; s_gyro_pitchsensitivity_slider.minvalue = 0.1f;
s_gyro_pitchsensitivity_slider.maxvalue = 80; s_gyro_pitchsensitivity_slider.maxvalue = 8.0f;
s_gyro_pitchsensitivity_slider.curvalue = gyro_pitchsensitivity->value * 10;
s_calibrating_text[0].generic.type = MTYPE_SEPARATOR; s_calibrating_text[0].generic.type = MTYPE_SEPARATOR;
s_calibrating_text[0].generic.x = 48 * scale + 30; s_calibrating_text[0].generic.x = 48 * scale + 30;
@ -1823,48 +1793,6 @@ ConfigGyroFunc(void *unused)
M_Menu_Gyro_f(); M_Menu_Gyro_f();
} }
static void
HapticMagnitudeFunc(void *unused)
{
Cvar_SetValue("joy_haptic_magnitude", s_joy_haptic_slider.curvalue / 10.0F);
}
static void
JoyExpoFunc(void *unused)
{
Cvar_SetValue("joy_expo", s_joy_expo_slider.curvalue / 10.0F);
}
static void
JoyYawSensitivityFunc(void *unused)
{
Cvar_SetValue("joy_yawsensitivity", s_joy_yawsensitivity_slider.curvalue / 10.0F);
}
static void
JoyPitchSensitivityFunc(void *unused)
{
Cvar_SetValue("joy_pitchsensitivity", s_joy_pitchsensitivity_slider.curvalue / 10.0F);
}
static void
JoyForwardSensitivityFunc(void *unused)
{
Cvar_SetValue("joy_forwardsensitivity", s_joy_forwardsensitivity_slider.curvalue / 10.0F);
}
static void
JoySideSensitivityFunc(void *unused)
{
Cvar_SetValue("joy_sidesensitivity", s_joy_sidesensitivity_slider.curvalue / 10.0F);
}
static void
JoyUpSensitivityFunc(void *unused)
{
Cvar_SetValue("joy_upsensitivity", s_joy_upsensitivity_slider.curvalue / 10.0F);
}
static void static void
Joy_MenuInit(void) Joy_MenuInit(void)
{ {
@ -1874,90 +1802,83 @@ Joy_MenuInit(void)
s_joy_menu.x = (int)(viddef.width * 0.50f); s_joy_menu.x = (int)(viddef.width * 0.50f);
s_joy_menu.nitems = 0; s_joy_menu.nitems = 0;
s_joy_yawsensitivity_slider.curvalue = joy_yawsensitivity->value * 10;
s_joy_yawsensitivity_slider.generic.type = MTYPE_SLIDER; s_joy_yawsensitivity_slider.generic.type = MTYPE_SLIDER;
s_joy_yawsensitivity_slider.generic.x = 0; s_joy_yawsensitivity_slider.generic.x = 0;
s_joy_yawsensitivity_slider.generic.y = y; s_joy_yawsensitivity_slider.generic.y = y;
y += 10; y += 10;
s_joy_yawsensitivity_slider.generic.name = "yaw sensitivity"; s_joy_yawsensitivity_slider.generic.name = "yaw sensitivity";
s_joy_yawsensitivity_slider.generic.callback = JoyYawSensitivityFunc; s_joy_yawsensitivity_slider.cvar = "joy_yawsensitivity";
s_joy_yawsensitivity_slider.minvalue = 0; s_joy_yawsensitivity_slider.minvalue = 0.0f;
s_joy_yawsensitivity_slider.maxvalue = 70; s_joy_yawsensitivity_slider.maxvalue = 7.0f;
Menu_AddItem(&s_joy_menu, (void *)&s_joy_yawsensitivity_slider); Menu_AddItem(&s_joy_menu, (void *)&s_joy_yawsensitivity_slider);
s_joy_pitchsensitivity_slider.curvalue = joy_pitchsensitivity->value * 10;
s_joy_pitchsensitivity_slider.generic.type = MTYPE_SLIDER; s_joy_pitchsensitivity_slider.generic.type = MTYPE_SLIDER;
s_joy_pitchsensitivity_slider.generic.x = 0; s_joy_pitchsensitivity_slider.generic.x = 0;
s_joy_pitchsensitivity_slider.generic.y = y; s_joy_pitchsensitivity_slider.generic.y = y;
y += 10; y += 10;
s_joy_pitchsensitivity_slider.generic.name = "pitch sensitivity"; s_joy_pitchsensitivity_slider.generic.name = "pitch sensitivity";
s_joy_pitchsensitivity_slider.generic.callback = JoyPitchSensitivityFunc; s_joy_pitchsensitivity_slider.cvar = "joy_pitchsensitivity";
s_joy_pitchsensitivity_slider.minvalue = 0; s_joy_pitchsensitivity_slider.minvalue = 0.0f;
s_joy_pitchsensitivity_slider.maxvalue = 70; s_joy_pitchsensitivity_slider.maxvalue = 7.0f;
Menu_AddItem(&s_joy_menu, (void *)&s_joy_pitchsensitivity_slider); Menu_AddItem(&s_joy_menu, (void *)&s_joy_pitchsensitivity_slider);
y += 10; y += 10;
s_joy_forwardsensitivity_slider.curvalue = joy_forwardsensitivity->value * 10;
s_joy_forwardsensitivity_slider.generic.type = MTYPE_SLIDER; s_joy_forwardsensitivity_slider.generic.type = MTYPE_SLIDER;
s_joy_forwardsensitivity_slider.generic.x = 0; s_joy_forwardsensitivity_slider.generic.x = 0;
s_joy_forwardsensitivity_slider.generic.y = y; s_joy_forwardsensitivity_slider.generic.y = y;
y += 10; y += 10;
s_joy_forwardsensitivity_slider.generic.name = "forward sensitivity"; s_joy_forwardsensitivity_slider.generic.name = "forward sensitivity";
s_joy_forwardsensitivity_slider.generic.callback = JoyForwardSensitivityFunc; s_joy_forwardsensitivity_slider.cvar = "joy_forwardsensitivity";
s_joy_forwardsensitivity_slider.minvalue = 0; s_joy_forwardsensitivity_slider.minvalue = 0.0f;
s_joy_forwardsensitivity_slider.maxvalue = 20; s_joy_forwardsensitivity_slider.maxvalue = 2.0f;
Menu_AddItem(&s_joy_menu, (void *)&s_joy_forwardsensitivity_slider); Menu_AddItem(&s_joy_menu, (void *)&s_joy_forwardsensitivity_slider);
s_joy_sidesensitivity_slider.curvalue = joy_sidesensitivity->value * 10;
s_joy_sidesensitivity_slider.generic.type = MTYPE_SLIDER; s_joy_sidesensitivity_slider.generic.type = MTYPE_SLIDER;
s_joy_sidesensitivity_slider.generic.x = 0; s_joy_sidesensitivity_slider.generic.x = 0;
s_joy_sidesensitivity_slider.generic.y = y; s_joy_sidesensitivity_slider.generic.y = y;
y += 10; y += 10;
s_joy_sidesensitivity_slider.generic.name = "side sensitivity"; s_joy_sidesensitivity_slider.generic.name = "side sensitivity";
s_joy_sidesensitivity_slider.generic.callback = JoySideSensitivityFunc; s_joy_sidesensitivity_slider.cvar = "joy_sidesensitivity";
s_joy_sidesensitivity_slider.minvalue = 0; s_joy_sidesensitivity_slider.minvalue = 0.0f;
s_joy_sidesensitivity_slider.maxvalue = 20; s_joy_sidesensitivity_slider.maxvalue = 2.0f;
Menu_AddItem(&s_joy_menu, (void *)&s_joy_sidesensitivity_slider); Menu_AddItem(&s_joy_menu, (void *)&s_joy_sidesensitivity_slider);
y += 10; y += 10;
s_joy_upsensitivity_slider.curvalue = joy_upsensitivity->value * 10;
s_joy_upsensitivity_slider.generic.type = MTYPE_SLIDER; s_joy_upsensitivity_slider.generic.type = MTYPE_SLIDER;
s_joy_upsensitivity_slider.generic.x = 0; s_joy_upsensitivity_slider.generic.x = 0;
s_joy_upsensitivity_slider.generic.y = y; s_joy_upsensitivity_slider.generic.y = y;
y += 10; y += 10;
s_joy_upsensitivity_slider.generic.name = "up sensitivity"; s_joy_upsensitivity_slider.generic.name = "up sensitivity";
s_joy_upsensitivity_slider.generic.callback = JoyUpSensitivityFunc; s_joy_upsensitivity_slider.cvar = "joy_upsensitivity";
s_joy_upsensitivity_slider.minvalue = 0; s_joy_upsensitivity_slider.minvalue = 0.0f;
s_joy_upsensitivity_slider.maxvalue = 20; s_joy_upsensitivity_slider.maxvalue = 2.0f;
Menu_AddItem(&s_joy_menu, (void *)&s_joy_upsensitivity_slider); Menu_AddItem(&s_joy_menu, (void *)&s_joy_upsensitivity_slider);
y += 10; y += 10;
s_joy_expo_slider.curvalue = joy_expo->value * 10;
s_joy_expo_slider.generic.type = MTYPE_SLIDER; s_joy_expo_slider.generic.type = MTYPE_SLIDER;
s_joy_expo_slider.generic.x = 0; s_joy_expo_slider.generic.x = 0;
s_joy_expo_slider.generic.y = y; s_joy_expo_slider.generic.y = y;
y += 10; y += 10;
s_joy_expo_slider.generic.name = "expo"; s_joy_expo_slider.generic.name = "expo";
s_joy_expo_slider.generic.callback = JoyExpoFunc; s_joy_expo_slider.cvar = "joy_expo";
s_joy_expo_slider.minvalue = 10; s_joy_expo_slider.minvalue = 1;
s_joy_expo_slider.maxvalue = 50; s_joy_expo_slider.maxvalue = 5;
Menu_AddItem(&s_joy_menu, (void *)&s_joy_expo_slider); Menu_AddItem(&s_joy_menu, (void *)&s_joy_expo_slider);
if (show_haptic) { if (show_haptic) {
y += 10; y += 10;
s_joy_haptic_slider.curvalue = Cvar_VariableValue("joy_haptic_magnitude") * 10.0F;
s_joy_haptic_slider.generic.type = MTYPE_SLIDER; s_joy_haptic_slider.generic.type = MTYPE_SLIDER;
s_joy_haptic_slider.generic.x = 0; s_joy_haptic_slider.generic.x = 0;
s_joy_haptic_slider.generic.y = y; s_joy_haptic_slider.generic.y = y;
y += 10; y += 10;
s_joy_haptic_slider.generic.name = "haptic magnitude"; s_joy_haptic_slider.generic.name = "haptic magnitude";
s_joy_haptic_slider.generic.callback = HapticMagnitudeFunc; s_joy_haptic_slider.cvar = "joy_haptic_magnitude";
s_joy_haptic_slider.minvalue = 0; s_joy_haptic_slider.minvalue = 0.0f;
s_joy_haptic_slider.maxvalue = 22; s_joy_haptic_slider.maxvalue = 2.2f;
Menu_AddItem(&s_joy_menu, (void *)&s_joy_haptic_slider); Menu_AddItem(&s_joy_menu, (void *)&s_joy_haptic_slider);
} }
@ -2066,21 +1987,12 @@ FreeLookFunc(void *unused)
Cvar_SetValue("freelook", (float)s_options_freelook_box.curvalue); Cvar_SetValue("freelook", (float)s_options_freelook_box.curvalue);
} }
static void
MouseSpeedFunc(void *unused)
{
Cvar_SetValue("sensitivity", s_options_sensitivity_slider.curvalue / 2.0F);
}
static void static void
ControlsSetMenuItemValues(void) ControlsSetMenuItemValues(void)
{ {
s_options_sfxvolume_slider.curvalue = Cvar_VariableValue("s_volume") * 10;
s_options_oggshuffle_box.curvalue = (Cvar_VariableValue("ogg_shuffle") != 0); s_options_oggshuffle_box.curvalue = (Cvar_VariableValue("ogg_shuffle") != 0);
s_options_oggvolume_slider.curvalue = Cvar_VariableValue("ogg_volume") * 10;
s_options_oggenable_box.curvalue = (Cvar_VariableValue("ogg_enable") != 0); s_options_oggenable_box.curvalue = (Cvar_VariableValue("ogg_enable") != 0);
s_options_quality_list.curvalue = (Cvar_VariableValue("s_loadas8bit") == 0); s_options_quality_list.curvalue = (Cvar_VariableValue("s_loadas8bit") == 0);
s_options_sensitivity_slider.curvalue = sensitivity->value * 2;
s_options_alwaysrun_box.curvalue = (cl_run->value != 0); s_options_alwaysrun_box.curvalue = (cl_run->value != 0);
s_options_invertmouse_box.curvalue = (m_pitch->value < 0); s_options_invertmouse_box.curvalue = (m_pitch->value < 0);
s_options_lookstrafe_box.curvalue = (lookstrafe->value != 0); s_options_lookstrafe_box.curvalue = (lookstrafe->value != 0);
@ -2110,12 +2022,6 @@ LookstrafeFunc(void *unused)
Cvar_SetValue("lookstrafe", (float)!lookstrafe->value); Cvar_SetValue("lookstrafe", (float)!lookstrafe->value);
} }
static void
UpdateVolumeFunc(void *unused)
{
Cvar_SetValue("s_volume", s_options_sfxvolume_slider.curvalue / 10);
}
static void static void
OGGShuffleFunc(void *unused) OGGShuffleFunc(void *unused)
{ {
@ -2139,12 +2045,6 @@ OGGShuffleFunc(void *unused)
} }
} }
static void
UpdateOggVolumeFunc(void *unused)
{
Cvar_SetValue("ogg_volume", s_options_oggvolume_slider.curvalue / 10);
}
static void static void
EnableOGGMusic(void *unused) EnableOGGMusic(void *unused)
{ {
@ -2266,17 +2166,17 @@ Options_MenuInit(void)
s_options_sfxvolume_slider.generic.x = 0; s_options_sfxvolume_slider.generic.x = 0;
s_options_sfxvolume_slider.generic.y = 0; s_options_sfxvolume_slider.generic.y = 0;
s_options_sfxvolume_slider.generic.name = "effects volume"; s_options_sfxvolume_slider.generic.name = "effects volume";
s_options_sfxvolume_slider.generic.callback = UpdateVolumeFunc; s_options_sfxvolume_slider.cvar = "s_volume";
s_options_sfxvolume_slider.minvalue = 0; s_options_sfxvolume_slider.minvalue = 0.0f;
s_options_sfxvolume_slider.maxvalue = 10; s_options_sfxvolume_slider.maxvalue = 1.0f;
s_options_oggvolume_slider.generic.type = MTYPE_SLIDER; s_options_oggvolume_slider.generic.type = MTYPE_SLIDER;
s_options_oggvolume_slider.generic.x = 0; s_options_oggvolume_slider.generic.x = 0;
s_options_oggvolume_slider.generic.y = 10; s_options_oggvolume_slider.generic.y = 10;
s_options_oggvolume_slider.generic.name = "OGG volume"; s_options_oggvolume_slider.generic.name = "OGG volume";
s_options_oggvolume_slider.generic.callback = UpdateOggVolumeFunc; s_options_oggvolume_slider.cvar = "ogg_volume";
s_options_oggvolume_slider.minvalue = 0; s_options_oggvolume_slider.minvalue = 0.0f;
s_options_oggvolume_slider.maxvalue = 10; s_options_oggvolume_slider.maxvalue = 1.0f;
s_options_oggenable_box.generic.type = MTYPE_SPINCONTROL; s_options_oggenable_box.generic.type = MTYPE_SPINCONTROL;
s_options_oggenable_box.generic.x = 0; s_options_oggenable_box.generic.x = 0;
@ -2303,9 +2203,10 @@ Options_MenuInit(void)
s_options_sensitivity_slider.generic.x = 0; s_options_sensitivity_slider.generic.x = 0;
s_options_sensitivity_slider.generic.y = 60; s_options_sensitivity_slider.generic.y = 60;
s_options_sensitivity_slider.generic.name = "mouse speed"; s_options_sensitivity_slider.generic.name = "mouse speed";
s_options_sensitivity_slider.generic.callback = MouseSpeedFunc; s_options_sensitivity_slider.cvar = "sensitivity";
s_options_sensitivity_slider.minvalue = 0; s_options_sensitivity_slider.minvalue = 0;
s_options_sensitivity_slider.maxvalue = 22; s_options_sensitivity_slider.maxvalue = 11;
s_options_sensitivity_slider.slidestep = 0.5f;
s_options_alwaysrun_box.generic.type = MTYPE_SPINCONTROL; s_options_alwaysrun_box.generic.type = MTYPE_SPINCONTROL;
s_options_alwaysrun_box.generic.x = 0; s_options_alwaysrun_box.generic.x = 0;

View file

@ -43,6 +43,22 @@ extern viddef_t viddef;
#define VID_WIDTH viddef.width #define VID_WIDTH viddef.width
#define VID_HEIGHT viddef.height #define VID_HEIGHT viddef.height
float
ClampCvar(float min, float max, float value)
{
if (value < min)
{
return min;
}
if (value > max)
{
return max;
}
return value;
}
/* /*
================= =================
Bitmap_Draw Bitmap_Draw
@ -643,16 +659,15 @@ Separator_Draw(menuseparator_s *s)
void void
Slider_DoSlide(menuslider_s *s, int dir) Slider_DoSlide(menuslider_s *s, int dir)
{ {
s->curvalue += dir; float value = Cvar_VariableValue(s->cvar);
float step = 0.1f;
if (s->curvalue > s->maxvalue) if (s->slidestep)
{ {
s->curvalue = s->maxvalue; step = s->slidestep;
}
else if (s->curvalue < s->minvalue)
{
s->curvalue = s->minvalue;
} }
value += dir * step;
Cvar_SetValue(s->cvar, ClampCvar(s->minvalue, s->maxvalue, value));
if (s->generic.callback) if (s->generic.callback)
{ {
@ -666,29 +681,19 @@ void
Slider_Draw(menuslider_s *s) Slider_Draw(menuslider_s *s)
{ {
int i; int i;
char buffer[5];
const char * format;
float scale = SCR_GetMenuScale(); float scale = SCR_GetMenuScale();
int x = 0; int x = s->generic.parent->x + s->generic.x;
int y = 0; int y = s->generic.parent->y + s->generic.y;
x = s->generic.parent->x + s->generic.x; float value = Cvar_VariableValue(s->cvar);
y = s->generic.parent->y + s->generic.y; float range = (ClampCvar(s->minvalue, s->maxvalue, value) - s->minvalue) /
(s->maxvalue - s->minvalue);
Menu_DrawStringR2LDark(x + (LCOLUMN_OFFSET * scale), Menu_DrawStringR2LDark(x + (LCOLUMN_OFFSET * scale),
y, s->generic.name); y, s->generic.name);
s->range = (s->curvalue - s->minvalue) /
(float)(s->maxvalue - s->minvalue);
if (s->range < 0)
{
s->range = 0;
}
if (s->range > 1)
{
s->range = 1;
}
Draw_CharScaled(x + (RCOLUMN_OFFSET * scale), Draw_CharScaled(x + (RCOLUMN_OFFSET * scale),
y * scale, 128, scale); y * scale, 128, scale);
@ -698,10 +703,22 @@ Slider_Draw(menuslider_s *s)
y * scale, 129, scale); y * scale, 129, scale);
} }
Draw_CharScaled(x + (RCOLUMN_OFFSET * scale) + (i * 8) + + 8, Draw_CharScaled(x + (RCOLUMN_OFFSET * scale) + (i * 8) + 8,
y * scale, 130, scale); y * scale, 130, scale);
Draw_CharScaled(x + ((int)((RCOLUMN_OFFSET * scale) + (SLIDER_RANGE * scale - 1) * 8 * s->range)) + 8, Draw_CharScaled(x + ((int)((RCOLUMN_OFFSET * scale) + (SLIDER_RANGE * scale - 1) * 8 * range)) + 8,
y * scale, 131, scale); y * scale, 131, scale);
if (!s->printformat)
{
format = "%.1f";
}
else
{
format = s->printformat;
}
snprintf(buffer, 5, format, value);
Menu_DrawString(x + (RCOLUMN_OFFSET * scale) + ((SLIDER_RANGE + 2) * scale * 8),
y, buffer);
} }
void void

View file

@ -37,9 +37,7 @@ static cvar_t *r_hudscale;
static cvar_t *r_consolescale; static cvar_t *r_consolescale;
static cvar_t *r_menuscale; static cvar_t *r_menuscale;
static cvar_t *crosshair_scale; static cvar_t *crosshair_scale;
static cvar_t *fov;
extern cvar_t *scr_viewsize; extern cvar_t *scr_viewsize;
extern cvar_t *vid_gamma;
extern cvar_t *vid_fullscreen; extern cvar_t *vid_fullscreen;
extern cvar_t *vid_renderer; extern cvar_t *vid_renderer;
static cvar_t *r_vsync; static cvar_t *r_vsync;
@ -159,21 +157,6 @@ GetCustomValue(menulist_s *list)
return i; return i;
} }
static void
BrightnessCallback(void *s)
{
menuslider_s *slider = (menuslider_s *)s;
float gamma = slider->curvalue / 10.0;
Cvar_SetValue("vid_gamma", gamma);
}
static void
FOVCallback(void *s) {
menuslider_s *slider = (menuslider_s *)s;
Cvar_SetValue("fov", slider->curvalue);
}
static void static void
ResetDefaults(void *unused) ResetDefaults(void *unused)
{ {
@ -426,16 +409,6 @@ VID_MenuInit(void)
crosshair_scale = Cvar_Get("crosshair_scale", "-1", CVAR_ARCHIVE); crosshair_scale = Cvar_Get("crosshair_scale", "-1", CVAR_ARCHIVE);
} }
if (!fov)
{
fov = Cvar_Get("fov", "90", CVAR_USERINFO | CVAR_ARCHIVE);
}
if (!vid_gamma)
{
vid_gamma = Cvar_Get("vid_gamma", "1.2", CVAR_ARCHIVE);
}
if (!vid_renderer) if (!vid_renderer)
{ {
vid_renderer = Cvar_Get("vid_renderer", "gl1", CVAR_ARCHIVE); vid_renderer = Cvar_Get("vid_renderer", "gl1", CVAR_ARCHIVE);
@ -501,19 +474,19 @@ VID_MenuInit(void)
s_brightness_slider.generic.name = "brightness"; s_brightness_slider.generic.name = "brightness";
s_brightness_slider.generic.x = 0; s_brightness_slider.generic.x = 0;
s_brightness_slider.generic.y = (y += 20); s_brightness_slider.generic.y = (y += 20);
s_brightness_slider.generic.callback = BrightnessCallback; s_brightness_slider.cvar = "vid_gamma";
s_brightness_slider.minvalue = 1; s_brightness_slider.minvalue = 0.1f;
s_brightness_slider.maxvalue = 20; s_brightness_slider.maxvalue = 2.0f;
s_brightness_slider.curvalue = vid_gamma->value * 10;
s_fov_slider.generic.type = MTYPE_SLIDER; s_fov_slider.generic.type = MTYPE_SLIDER;
s_fov_slider.generic.name = "field of view";
s_fov_slider.generic.x = 0; s_fov_slider.generic.x = 0;
s_fov_slider.generic.y = (y += 10); s_fov_slider.generic.y = (y += 10);
s_fov_slider.generic.name = "field of view"; s_fov_slider.cvar = "fov";
s_fov_slider.generic.callback = FOVCallback;
s_fov_slider.minvalue = 60; s_fov_slider.minvalue = 60;
s_fov_slider.maxvalue = 120; s_fov_slider.maxvalue = 120;
s_fov_slider.curvalue = fov->value; s_fov_slider.slidestep = 1;
s_fov_slider.printformat = "%.0f";
s_uiscale_list.generic.type = MTYPE_SPINCONTROL; s_uiscale_list.generic.type = MTYPE_SPINCONTROL;
s_uiscale_list.generic.name = "ui scale"; s_uiscale_list.generic.name = "ui scale";

View file

@ -1430,6 +1430,7 @@ cycle_weapon(edict_t *ent)
int i; int i;
int start; int start;
int num_weaps; int num_weaps;
const char *weapname = NULL;
if (!ent) if (!ent)
{ {
@ -1446,11 +1447,20 @@ cycle_weapon(edict_t *ent)
num_weaps = gi.argc(); num_weaps = gi.argc();
/* find where we want to start the search for the next eligible weapon */ /* find where we want to start the search for the next eligible weapon */
if (cl->pers.weapon) if (cl->newweapon)
{
weapname = cl->newweapon->classname;
}
else if (cl->pers.weapon)
{
weapname = cl->pers.weapon->classname;
}
if (weapname)
{ {
for (i = 1; i < num_weaps; i++) for (i = 1; i < num_weaps; i++)
{ {
if (Q_stricmp(cl->pers.weapon->classname, gi.argv(i)) == 0) if (Q_stricmp(weapname, gi.argv(i)) == 0)
{ {
break; break;
} }