]> git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blob - qcsrc/menu/xonotic/dialog_settings_game_view.c
Use a more consistent way to handle buttons on the bottom of dialogs
[xonotic/xonotic-data.pk3dir.git] / qcsrc / menu / xonotic / dialog_settings_game_view.c
1 #ifdef INTERFACE
2 CLASS(XonoticGameViewSettingsTab) EXTENDS(XonoticTab)
3         //METHOD(XonoticGameCrosshairSettingsTab, toString, string(entity))
4         METHOD(XonoticGameViewSettingsTab, fill, void(entity))
5         METHOD(XonoticGameViewSettingsTab, showNotify, void(entity))
6         ATTRIB(XonoticGameViewSettingsTab, title, string, _("View"))
7         ATTRIB(XonoticGameViewSettingsTab, intendedWidth, float, 0.9)
8         ATTRIB(XonoticGameViewSettingsTab, rows, float, 13)
9         ATTRIB(XonoticGameViewSettingsTab, columns, float, 6.2)
10 ENDCLASS(XonoticGameViewSettingsTab)
11 entity makeXonoticGameViewSettingsTab();
12 #endif
13
14 #ifdef IMPLEMENTATION
15 void XonoticGameViewSettingsTab_showNotify(entity me)
16 {
17         loadAllCvars(me);
18 }
19 entity makeXonoticGameViewSettingsTab()
20 {
21         entity me;
22         me = spawnXonoticGameViewSettingsTab();
23         me.configureDialog(me);
24         return me;
25 }
26
27 void clippedspectatingclick(entity me, entity checkbox)
28 {
29         if(gamestatus & (GAME_CONNECTED | GAME_ISSERVER))
30                 localcmd("sendcvar cl_clippedspectating\n");
31         
32         CheckBox_Click(me, checkbox);
33 }
34
35 void XonoticGameViewSettingsTab_fill(entity me)
36 {
37         entity e;
38
39         me.TR(me);
40                 me.TD(me, 1, 3, e = makeXonoticRadioButton(1, "chase_active", "0", _("1st person perspective")));
41                 makeMulti(e, "crosshair_hittest_showimpact");
42         me.TR(me);
43                 me.TDempty(me, 0.2);
44                 me.TD(me, 1, 2.8, e = makeXonoticCheckBox(0, "cl_eventchase_death", _("Slide to third person upon death")));
45                 setDependent(e, "chase_active", -1, 0);
46         me.TR(me);
47                 me.TDempty(me, 0.2);
48                 me.TD(me, 1, 2.8, e = makeXonoticCheckBoxEx(0.05, 0, "cl_bobfall", _("Smooth the view when landing from a jump")));
49                 setDependent(e, "chase_active", -1, 0);
50         me.TR(me);
51                 me.TDempty(me, 0.2);
52                 me.TD(me, 1, 2.8, e = makeXonoticCheckBoxEx(0.05, 0, "cl_smoothviewheight", _("Smooth the view while crouching")));
53                 setDependent(e, "chase_active", -1, 0);
54         me.TR(me);
55                 me.TDempty(me, 0.2);
56                 me.TD(me, 1, 2.8, e = makeXonoticCheckBoxEx(1, 0, "v_idlescale", _("View waving while idle")));
57                 setDependent(e, "chase_active", -1, 0);
58         me.TR(me);
59                 me.TDempty(me, 0.2);
60                 me.TD(me, 1, 2.8, e = makeXonoticCheckBoxEx(0.01, 0, "cl_bob", _("View bobbing while walking around")));
61                 makeMulti(e, "cl_bob2");
62                 setDependent(e, "chase_active", -1, 0);
63         me.TR(me);
64         me.TR(me);
65                 me.TD(me, 1, 3, e = makeXonoticRadioButton(1, "chase_active", "1", _("3rd person perspective")));
66                 makeMulti(e, "crosshair_hittest_showimpact");
67         me.TR(me);
68                 me.TDempty(me, 0.2);
69                 me.TD(me, 1, 0.8, e = makeXonoticTextLabel(0, _("Back distance")));
70                 setDependent(e, "chase_active", 1, 1);
71                 me.TD(me, 1, 2, e = makeXonoticSlider(10, 100, 1, "chase_back"));
72                 setDependent(e, "chase_active", 1, 1);
73         me.TR(me);
74                 me.TDempty(me, 0.2);
75                 me.TD(me, 1, 0.8, e = makeXonoticTextLabel(0, _("Up distance")));
76                 setDependent(e, "chase_active", 1, 1);
77                 me.TD(me, 1, 2, e = makeXonoticSlider(10, 50, 1, "chase_up"));
78                 setDependent(e, "chase_active", 1, 1);
79         me.TR(me);
80         me.TR(me);
81                 me.TD(me, 1, 3, e = makeXonoticCheckBox(1, "cl_clippedspectating", _("Allow passing through walls while spectating")));
82                         e.onClick = clippedspectatingclick;
83                         e.onClickEntity = e;
84                 // todo: onclick, do sendcvar if connected
85         
86         me.gotoRC(me, 0, 3.2); me.setFirstColumn(me, me.currentColumn);
87                 me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Field of view:")));
88                 me.TD(me, 1, 2, e = makeXonoticSlider(60, 130, 5, "fov"));
89         me.TR(me);
90         me.TR(me);
91                 //me.TDempty(me, 0.2);
92                 me.TD(me, 1, 1, e = makeXonoticTextLabel(0, ZCTX(_("ZOOM^Zoom factor:"))));
93                 me.TD(me, 1, 2, e = makeXonoticSlider(2, 16, 0.5, "cl_zoomfactor"));
94         me.TR(me);
95                 //me.TDempty(me, 0.2);
96                 me.TD(me, 1, 1, e = makeXonoticTextLabel(0, ZCTX(_("ZOOM^Zoom speed:"))));
97                 me.TD(me, 1, 2, e = makeXonoticTextSlider("cl_zoomspeed"));
98                         e.addValue(e, "1", "1"); // Samual: for() loop doesn't work here, even though it would make sense.
99                         e.addValue(e, "2", "2");
100                         e.addValue(e, "3", "3");
101                         e.addValue(e, "4", "4");
102                         e.addValue(e, "5", "5");
103                         e.addValue(e, "6", "6");
104                         e.addValue(e, "7", "7");
105                         e.addValue(e, "8", "8");
106                         e.addValue(e, ZCTX(_("ZOOM^Instant")), "-1");
107                         e.configureXonoticTextSliderValues(e);
108         me.TR(me);
109                 //me.TDempty(me, 0.2);
110                 me.TD(me, 1, 1, e = makeXonoticTextLabel(0, ZCTX(_("ZOOM^Zoom sensitivity:"))));
111                 me.TD(me, 1, 2, e = makeXonoticSlider(0, 1, 0.1, "cl_zoomsensitivity"));
112         me.TR(me);
113         me.TR(me);
114                 me.TD(me, 1, 1, e = makeXonoticCheckBox(0, "cl_velocityzoom_enabled", _("Velocity zoom")));
115                 me.TD(me, 1, 2, e = makeXonoticCheckBoxEx(3, 1, "cl_velocityzoom_type", _("Forward movement only")));
116                         setDependent(e, "cl_velocityzoom_enabled", 1, 1);
117         me.TR(me);
118                 me.TDempty(me, 0.2);
119                 me.TD(me, 1, 0.8, e = makeXonoticTextLabel(0, ZCTX(_("VZOOM^Factor"))));
120                         setDependentAND(e, "cl_velocityzoom_enabled", 1, 1, "cl_velocityzoom_type", 1, 3);
121                 me.TD(me, 1, 2, e = makeXonoticSlider(-1, 1, 0.1, "cl_velocityzoom_factor"));
122                         setDependentAND(e, "cl_velocityzoom_enabled", 1, 1, "cl_velocityzoom_type", 1, 3);
123         me.TR(me);
124         me.TR(me);
125                 //me.TDempty(me, 0.2);
126                 me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "cl_reticle", _("Display reticle 2D overlay while zooming")));
127         me.TR(me);
128                 //me.TDempty(me, 0.2);
129                 me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "cl_unpress_zoom_on_death", _("Release zoom when you die or respawn")));
130                         makeMulti(e, "cl_unpress_zoom_on_spawn");
131         me.TR(me);
132                 //me.TDempty(me, 0.2);
133                 me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "cl_unpress_zoom_on_weapon_switch", _("Release zoom when you switch weapons")));
134 }
135 #endif