Xonotic QuakeC
The free, fast arena FPS with crisp movement and a wide array of weapons
dialog_settings_input.qc
Go to the documentation of this file.
2
5#include "skinlist.qh"
7#include "../item/checkbox.qh"
8#include "keybinder.qh"
9#include "textlabel.qh"
10#include "button.qh"
11#include "slider.qh"
12#include "mixedslider.qh"
13#include "checkbox.qh"
14#include "inputbox.qh"
15
16void updateSensSlider(entity field, entity slider)
17{
18 if (slider == NULL)
19 return;
20
21 // Avoid onChange causing jittering
22 slider.onChangeEntity = NULL;
23 slider.setValue(slider, stof(field.text), autocvar_menu_animations > 0);
24 slider.onChangeEntity = field;
25}
26
27void updateSensField(entity slider, entity field)
28{
29 if (field == NULL)
30 return;
31
32 if (slider.value)
33 {
34 // Avoid onChange causing jittering
35 field.onChangeEntity = NULL;
36 field.setText(field, ftos_decimals(slider.value, slider.valueDigits));
37 field.onChangeEntity = slider;
38 }
39}
40
41void linkSensitivities(entity slider, entity field)
42{
43 slider.onChange = updateSensField;
44 slider.onChangeEntity = field;
45
46 field.onChange = updateSensSlider;
47 field.onChangeEntity = slider;
48}
49
51{
52 entity me;
54 me.configureDialog(me);
55 return me;
56}
57
59{
60 CheckBox_Click(me, checkbox);
61 localcmd("\ndefer 0.2 \"togglemenu 1\"\n");
62 //m_display();
63}
65{
66 entity e;
68
69 me.TR(me);
70 me.TD(me, 1, 3, e = makeXonoticHeaderLabel(_("Key Bindings")));
71 me.TR(me);
72 me.TD(me, me.rows - 3, 3, kb);
73 me.gotoRC(me, me.rows - 2, 0);
74 me.TD(me, 1, 1, e = makeXonoticButton(_("Change key..."), '0 0 0'));
75 e.onClick = KeyBinder_Bind_Change;
76 e.onClickEntity = kb;
77 kb.keyGrabButton = e;
78 me.TD(me, 1, 1, e = makeXonoticButton(_("Edit..."), '0 0 0'));
79 e.onClick = KeyBinder_Bind_Edit;
80 e.onClickEntity = kb;
81 kb.userbindEditButton = e;
82 kb.userbindEditDialog = main.userbindEditDialog;
83 main.userbindEditDialog.keybindBox = kb;
84 me.TD(me, 1, 1, e = makeXonoticButton(_("Clear"), '0 0 0'));
85 e.onClick = KeyBinder_Bind_Clear;
86 e.onClickEntity = kb;
87 kb.clearButton = e;
88 me.TR(me);
89 me.TD(me, 1, 3, e = makeXonoticButton(_("Reset all"), '0 0 0'));
90 e.onClick = DialogOpenButton_Click;
91 e.onClickEntity = main.bindingsResetDialog;
92
93 me.gotoRC(me, 0, 3.2); me.setFirstColumn(me, me.currentColumn);
94 me.TD(me, 1, 3, e = makeXonoticHeaderLabel(_("Mouse")));
95 me.TR(me);
96 entity sensitivitySlider;
97 me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Sensitivity:")));
98 me.TD(me, 1, 1, e = makeXonoticSlider_T(0.1, 9.9, 0.1, "sensitivity",
99 _("Mouse speed multiplier")));
100 e.setValueSpace(e, 0);
101 sensitivitySlider = e;
102 me.TD(me, 1, 1, e = makeXonoticInputBox_T(0, "sensitivity",
103 _("Mouse speed multiplier")));
104 e.saveImmediately = true;
105 e.allowedCharacters = "0.123456789";
106 linkSensitivities(sensitivitySlider, e);
107 me.TR(me);
108 me.TD(me, 1, 3, e = makeXonoticCheckBox_T(0, "m_filter", _("Smooth aiming"),
109 _("Smooths the mouse movement, but makes aiming slightly less responsive")));
110 me.TR(me);
111 me.TD(me, 1, 3, e = makeXonoticCheckBox_T(1.022, "m_pitch", _("Invert aiming"),
112 _("Invert mouse movement on the Y-axis")));
113
114 string m_accelerate_tooltip = _("In-game linear acceleration factor. \"Fully disabled\" also disables other acceleration types that can be enabled via the m_accelerate_* cvars");
115 me.TR(me);
116 me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Acceleration factor:")));
117 me.TD(me, 1, 2, e = makeXonoticMixedSlider_T("m_accelerate", m_accelerate_tooltip));
118 e.setValueSpace(e, e.valueSpace * 1.25);
119 e.addText(e, ZCTX(_("MOUSEACCEL^Fully disabled")), 0);
120 e.addText(e, ZCTX(_("MOUSEACCEL^Linear disabled")), 1);
121 e.addRange(e, 1.2, 4, 0.2);
122 e.configureXonoticMixedSliderValues(e);
123 me.TR(me);
124 me.TDempty(me, 0.2);
125 me.TD(me, 1, 0.8, e = makeXonoticTextLabel(0, _("Speed bounds:")));
126 setDependent(e, "m_accelerate", 1, 0);
127 me.TD(me, 1, 1, e = makeXonoticSlider_T(0, 10000, 500, "m_accelerate_minspeed",
128 m_accelerate_tooltip));
129 setDependent(e, "m_accelerate", 1, 0);
130 me.TD(me, 1, 1, e = makeXonoticSlider_T(5000, 20000, 1000, "m_accelerate_maxspeed",
131 m_accelerate_tooltip));
132 setDependent(e, "m_accelerate", 1, 0);
133 me.TR(me);
134 me.TDempty(me, 0.2);
135 if(cvar_type("vid_dgamouse") & CVAR_TYPEFLAG_ENGINE)
136 {
137 me.TD(me, 1, 2.8, e = makeXonoticCheckBox_T(0, "vid_dgamouse", _("Disable system mouse acceleration"),
138 _("Make use of DGA mouse input")));
139 }
140 else if(cvar_type("apple_mouse_noaccel") & CVAR_TYPEFLAG_ENGINE)
141 me.TD(me, 1, 2.8, e = makeXonoticCheckBox(0, "apple_mouse_noaccel", _("Disable system mouse acceleration")));
142 else
143 {
144 me.TD(me, 1, 2.8, e = makeXonoticCheckBox(0, string_null, _("Disable system mouse acceleration")));
145 e.disabled = 1; // the option is never available in this case, just there for show
146 }
147 me.TR(me);
148 me.TD(me, 1, 3, e = makeXonoticCheckBox_T(0, "menu_mouse_absolute", _("Use system mouse positioning"), "-"));
149 makeMulti(e, "hud_cursormode");
150 e.onClick = CheckBox_Click_Redisplay;
151 e.onClickEntity = e;
152
153 me.TR(me);
154 me.TR(me);
155 me.TD(me, 1, 3, e = makeXonoticHeaderLabel(_("Other")));
156 me.TR(me);
157 me.TD(me, 1, 3, e = makeXonoticCheckBox_T(0, "con_closeontoggleconsole", _("Pressing \"enter console\" key also closes it"),
158 _("Allow the console toggling bind to also close the console")));
159 me.TR(me);
160 me.TD(me, 1, 3, e = makeXonoticCheckBox(1, "cl_movement_track_canjump", _("Automatically repeat jumping if holding jump")));
161 e.sendCvars = true;
162 me.TR(me);
163 me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Jetpack on jump:")));
164 me.TD(me, 1, 2, e = makeXonoticMixedSlider("cl_jetpack_jump"));
165 e.addText(e, ZCTX(_("JPJUMP^Disabled")), 0);
166 e.addText(e, _("Air only"), 1);
167 e.addText(e, ZCTX(_("JPJUMP^All")), 2);
168 e.configureXonoticMixedSliderValues(e);
169 e.sendCvars = true;
170 me.TR(me);
171 if(cvar_type("joy_enable") & CVAR_TYPEFLAG_ENGINE)
172 {
173 me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "joy_enable", _("Use joystick input")));
174 setDependentNOT(e, "joy_detected", 0);
175 }
176 else if(cvar_type("joystick") & CVAR_TYPEFLAG_ENGINE)
177 {
178 me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "joystick", _("Use joystick input")));
179 setDependentNOT(e, "joy_detected", 0);
180 }
181 else
182 {
183 me.TD(me, 1, 3, e = makeXonoticCheckBox(0, string_null, _("Use joystick input")));
184 e.disabled = 1; // the option is never available in this case, just there for show
185 }
186}
float autocvar_menu_animations
Definition animation.qh:3
var entity(vector mins, vector maxs,.entity tofield) findbox_tofield_OrFallback
float CVAR_TYPEFLAG_ENGINE
void linkSensitivities(entity slider, entity field)
void CheckBox_Click_Redisplay(entity me, entity checkbox)
void updateSensSlider(entity field, entity slider)
entity makeXonoticInputSettingsTab()
void updateSensField(entity slider, entity field)
void XonoticInputSettingsTab_fill(entity me)
#define ZCTX(s)
Definition i18n.qh:68
void CheckBox_Click(entity me, entity other)
Definition checkbox.qc:7
void KeyBinder_Bind_Edit(entity btn, entity me)
Definition keybinder.qc:368
void KeyBinder_Bind_Change(entity btn, entity me)
Definition keybinder.qc:259
void KeyBinder_Bind_Clear(entity btn, entity me)
Definition keybinder.qc:389
entity makeXonoticKeyBinder()
Definition keybinder.qc:196
#define main
Definition _all.inc:202
entity makeXonoticButton(string theText, vector theColor)
Definition button.qc:10
void makeMulti(entity e, string otherCvars)
Definition util.qc:92
void setDependentNOT(entity e, string theCvarName, float theCvarValue)
Definition util.qc:192
void setDependent(entity e, string theCvarName, float theCvarMin, float theCvarMax)
Definition util.qc:180
void localcmd(string command,...)
float stof(string val,...)
void DialogOpenButton_Click(entity button, entity tab)
string string_null
Definition nil.qh:9
#define NEW(cname,...)
Definition oo.qh:117
#define NULL
Definition post.qh:14
ERASEABLE string ftos_decimals(float number, int decimals)
converts a number to a string with the indicated number of decimals
Definition string.qh:469
entity makeXonoticTextLabel(float theAlign, string theText)
Definition textlabel.qc:3
entity makeXonoticHeaderLabel(string theText)
Definition textlabel.qc:10
entity makeXonoticCheckBox_T(float isInverted, string theCvar, string theText, string theTooltip)
Definition checkbox.qc:3
entity makeXonoticCheckBox(float isInverted, string theCvar, string theText)
Definition checkbox.qc:28
entity makeXonoticInputBox_T(bool doEditColorCodes, string theCvar, string theTooltip)
Definition inputbox.qc:3
entity makeXonoticMixedSlider(string theCvar)
entity makeXonoticMixedSlider_T(string theCvar, string theTooltip)
Definition mixedslider.qc:3
entity makeXonoticSlider_T(float theValueMin, float theValueMax, float theValueStep, string theCvar, string theTooltip)
Definition slider.qc:3