Merge branch 'master' into terencehill/string_prefixes_cleanup
[xonotic/xonotic-data.pk3dir.git] / qcsrc / menu / xonotic / dialog_settings_input.qc
1 #ifdef INTERFACE
2 CLASS(XonoticInputSettingsTab) EXTENDS(XonoticTab)
3         METHOD(XonoticInputSettingsTab, fill, void(entity))
4         ATTRIB(XonoticInputSettingsTab, title, string, _("Input"))
5         ATTRIB(XonoticInputSettingsTab, intendedWidth, float, 0.9)
6         ATTRIB(XonoticInputSettingsTab, rows, float, 15.5)
7         ATTRIB(XonoticInputSettingsTab, columns, float, 6.2) // added extra .2 for center space
8 ENDCLASS(XonoticInputSettingsTab)
9 entity makeXonoticInputSettingsTab();
10 #endif
11
12 #ifdef IMPLEMENTATION
13 entity makeXonoticInputSettingsTab()
14 {
15         entity me;
16         me = spawnXonoticInputSettingsTab();
17         me.configureDialog(me);
18         return me;
19 }
20
21 void CheckBox_Click_Redisplay(entity me, entity checkbox)
22 {
23         CheckBox_Click(me, checkbox);
24         cmd("\ndefer 0.2 \"togglemenu 1\"\n");
25         //m_display();
26 }
27 void XonoticInputSettingsTab_fill(entity me)
28 {
29         entity e;
30         entity kb = makeXonoticKeyBinder();
31
32         me.TR(me);
33                 me.TD(me, 1, 3, e = makeXonoticHeaderLabel(_("Key Bindings")));
34         me.TR(me);
35                 me.TD(me, me.rows - 3, 3, kb);
36         me.gotoRC(me, me.rows - 2, 0);
37                 me.TD(me, 1, 1, e = makeXonoticButton(_("Change key..."), '0 0 0'));
38                         e.onClick = KeyBinder_Bind_Change;
39                         e.onClickEntity = kb;
40                         kb.keyGrabButton = e;
41                 me.TD(me, 1, 1, e = makeXonoticButton(_("Edit..."), '0 0 0'));
42                         e.onClick = KeyBinder_Bind_Edit;
43                         e.onClickEntity = kb;
44                         kb.userbindEditButton = e;
45                         kb.userbindEditDialog = main.userbindEditDialog;
46                         main.userbindEditDialog.keybindBox = kb;
47                 me.TD(me, 1, 1, e = makeXonoticButton(_("Clear"), '0 0 0'));
48                         e.onClick = KeyBinder_Bind_Clear;
49                         e.onClickEntity = kb;
50                         kb.clearButton = e;
51         me.TR(me);
52                 me.TD(me, 1, 3, e = makeXonoticButton(_("Reset all"), '0 0 0'));
53                         e.onClick = KeyBinder_Bind_Reset_All;
54                         e.onClickEntity = kb;
55
56         me.gotoRC(me, 0, 3.2); me.setFirstColumn(me, me.currentColumn);
57                 me.TD(me, 1, 3, e = makeXonoticHeaderLabel(_("Mouse")));
58         me.TR(me);
59                 me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Sensitivity:")));
60                 me.TD(me, 1, 2, e = makeXonoticSlider(1, 32, 0.2, "sensitivity"));
61         me.TR(me);
62                 me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "m_filter", _("Smooth aiming")));
63         me.TR(me);
64                 me.TD(me, 1, 3, e = makeXonoticCheckBox(1.022, "m_pitch", _("Invert aiming")));
65         me.TR(me);
66                 me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "menu_mouse_absolute", _("Use system mouse positioning")));
67                         makeMulti(e, "hud_cursormode");
68                         e.onClick = CheckBox_Click_Redisplay;
69                         e.onClickEntity = e;
70         me.TR(me);
71                 me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "m_accelerate", _("Enable built in mouse acceleration")));
72         me.TR(me);
73                 if(cvar_type("vid_dgamouse") & CVAR_TYPEFLAG_ENGINE)
74                         me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "vid_dgamouse", _("Disable system mouse acceleration")));
75                 else if(cvar_type("apple_mouse_noaccel") & CVAR_TYPEFLAG_ENGINE)
76                         me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "apple_mouse_noaccel", _("Disable system mouse acceleration")));
77                 else
78                 {
79                         me.TD(me, 1, 3, e = makeXonoticCheckBox(0, string_null, _("Disable system mouse acceleration")));
80                         e.disabled = 1; // the option is never available in this case, just there for show
81                 }
82
83         me.TR(me);
84         me.TR(me);
85                 me.TD(me, 1, 3, e = makeXonoticHeaderLabel(_("Other")));
86         me.TR(me);
87                 me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "con_closeontoggleconsole", _("Pressing \"enter console\" key also closes it")));
88         me.TR(me);
89                 me.TD(me, 1, 3, e = makeXonoticCheckBox(1, "cl_movement_track_canjump", _("Automatically repeat jumping if holding jump")));
90                         e.sendCvars = true;
91         me.TR(me);
92                 me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Jetpack on jump:")));
93                 me.TD(me, 1, 2, e = makeXonoticTextSlider("cl_jetpack_jump"));
94                         e.addValue(e, ZCTX(_("JPJUMP^Disabled")), "0");
95                         e.addValue(e, _("Air only"), "1");
96                         e.addValue(e, ZCTX(_("JPJUMP^All")), "2");
97                         e.configureXonoticTextSliderValues(e);
98                         e.sendCvars = true;
99         me.TR(me);
100                 if(cvar_type("joy_enable") & CVAR_TYPEFLAG_ENGINE)
101                 {
102                         me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "joy_enable", _("Use joystick input")));
103                         setDependent(e, "joy_detected", 1, 10000000);
104                 }
105                 else if(cvar_type("joystick") & CVAR_TYPEFLAG_ENGINE)
106                 {
107                         me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "joystick", _("Use joystick input")));
108                         setDependent(e, "joy_detected", 1, 10000000);
109                 }
110                 else
111                 {
112                         me.TD(me, 1, 3, e = makeXonoticCheckBox(0, string_null, _("Use joystick input")));
113                         e.disabled = 1; // the option is never available in this case, just there for show
114                 }
115 }
116 #endif