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