#include base classes
[xonotic/xonotic-data.pk3dir.git] / qcsrc / menu / xonotic / dialog_settings_game_hud.qc
1 #ifndef DIALOG_SETTINGS_GAME_HUD_H
2 #define DIALOG_SETTINGS_GAME_HUD_H
3 #include "tab.qc"
4 CLASS(XonoticGameHUDSettingsTab, XonoticTab)
5         //METHOD(XonoticGameHUDSettingsTab, toString, string(entity))
6         METHOD(XonoticGameHUDSettingsTab, fill, void(entity))
7         METHOD(XonoticGameHUDSettingsTab, showNotify, void(entity))
8         ATTRIB(XonoticGameHUDSettingsTab, title, string, _("HUD"))
9         ATTRIB(XonoticGameHUDSettingsTab, intendedWidth, float, 0.9)
10         ATTRIB(XonoticGameHUDSettingsTab, rows, float, 13)
11         ATTRIB(XonoticGameHUDSettingsTab, columns, float, 6.2)
12 ENDCLASS(XonoticGameHUDSettingsTab)
13 entity makeXonoticGameHUDSettingsTab();
14 void HUDSetup_Start(entity me, entity btn);
15 #endif
16
17 #ifdef IMPLEMENTATION
18 void HUDSetup_Check_Gamestatus(entity me, entity btn)
19 {
20         if(!(gamestatus & (GAME_CONNECTED | GAME_ISSERVER))) // we're not in a match, ask the player if they want to start one anyway
21         {
22                 DialogOpenButton_Click(me, main.hudconfirmDialog);
23         }
24         else // already in a match, lets just cut to the point and open up the hud editor directly
25         {
26                 HUDSetup_Start(me, btn);
27         }
28 }
29 void XonoticGameHUDSettingsTab_showNotify(entity me)
30 {
31         loadAllCvars(me);
32 }
33 entity makeXonoticGameHUDSettingsTab()
34 {
35         entity me;
36         me = NEW(XonoticGameHUDSettingsTab);
37         me.configureDialog(me);
38         return me;
39 }
40
41 void XonoticGameHUDSettingsTab_fill(entity me)
42 {
43         entity e;
44
45         // todo:
46         // threshold: hud_damage_pain_threshold_lower_health
47         // scoreboard_alpha*
48
49         //me.gotoRC(me, 0, 3.2); me.setFirstColumn(me, me.currentColumn);
50         me.TR(me);
51                 me.TD(me, 1, 3, e = makeXonoticHeaderLabel(_("Scoreboard")));
52         //me.TR(me);
53         //      me.TD(me, 1, 0.8, e = makeXonoticTextLabel(0, _("Alpha:")));
54         //      me.TD(me, 1, 2, e = makeXonoticSlider(0, 1, 0.05, "scoreboard_alpha_bg"));
55         me.TR(me);
56                 me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Fading speed:")));
57                 me.TD(me, 1, 2, e = makeXonoticScoreboardFadeTimeSlider());
58         me.TR(me);
59                 me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Side padding:")));
60                 me.TD(me, 1, 2, e = makeXonoticSlider(0.05, 0.3, 0.01, "scoreboard_offset_left"));
61                         makeMulti(e, "scoreboard_offset_right");
62
63         me.TR(me);
64         //me.TR(me);
65                 me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "scoreboard_respawntime_decimals", _("Show decimals in respawn countdown")));
66         me.TR(me);
67                 me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "scoreboard_accuracy", _("Show accuracy underneath scoreboard")));
68
69         me.TR(me);
70         me.TR(me);
71                 me.TD(me, 1, 3, e = makeXonoticHeaderLabel(_("Waypoints")));
72         me.TR(me);
73                 me.TD(me, 1, 3, e = makeXonoticCheckBox(1, "cl_hidewaypoints", _("Display waypoint markers for objectives on the map")));
74         me.TR(me);
75                 me.TDempty(me, 0.2);
76                 me.TD(me, 1, 0.8, e = makeXonoticTextLabel(0, _("Alpha:")));
77                         setDependent(e, "cl_hidewaypoints", 0, 0);
78                 me.TD(me, 1, 2, e = makeXonoticSlider(0.1, 1, 0.05, "g_waypointsprite_alpha"));
79                         setDependent(e, "cl_hidewaypoints", 0, 0);
80         me.TR(me);
81                 me.TDempty(me, 0.2);
82                 me.TD(me, 1, 0.8, e = makeXonoticTextLabel(0, _("Fontsize:")));
83                         setDependent(e, "cl_hidewaypoints", 0, 0);
84                 me.TD(me, 1, 2, e = makeXonoticSlider(5, 16, 1, "g_waypointsprite_fontsize"));
85                         setDependent(e, "cl_hidewaypoints", 0, 0);
86         me.TR(me);
87                 me.TDempty(me, 0.2);
88                 me.TD(me, 1, 0.8, e = makeXonoticTextLabel(0, _("Edge offset:")));
89                         setDependent(e, "cl_hidewaypoints", 0, 0);
90                 me.TD(me, 1, 2, e = makeXonoticSlider(0, 0.3, 0.01, "g_waypointsprite_edgeoffset_bottom"));
91                         makeMulti(e, "g_waypointsprite_edgeoffset_top g_waypointsprite_edgeoffset_left g_waypointsprite_edgeoffset_right");
92                         setDependent(e, "cl_hidewaypoints", 0, 0);
93
94         me.TR(me);
95         //me.TR(me);
96                 me.TDempty(me, 0.2);
97                 me.TD(me, 1, 2.8, e = makeXonoticCheckBoxEx(0.25, 1, "g_waypointsprite_crosshairfadealpha", _("Fade when near the crosshair")));
98                         setDependent(e, "cl_hidewaypoints", 0, 0);
99
100         #if 0
101         me.TR(me);
102                 me.TD(me, 1, 3, e = makeXonoticHeaderLabel(_("Damage")));
103         me.TR(me);
104                 me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Overlay:")));
105                 me.TD(me, 1, 2, e = makeXonoticSlider(0, 1, 0.05, "hud_damage"));
106         me.TR(me);
107                 me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Factor:")));
108                         setDependent(e, "hud_damage", 0.001, 100);
109                 me.TD(me, 1, 2, e = makeXonoticSlider(0.025, 0.1, 0.025, "hud_damage_factor"));
110                         setDependent(e, "hud_damage", 0.001, 100);
111         me.TR(me);
112                 me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Fade rate:")));
113                         setDependent(e, "hud_damage", 0.001, 100);
114                 me.TD(me, 1, 2, e = makeXonoticSlider(0.25, 1, 0.05, "hud_damage_fade_rate"));
115                         setDependent(e, "hud_damage", 0.001, 100);
116         me.TR(me);
117         #endif
118
119         me.gotoRC(me, 0, 3.2); me.setFirstColumn(me, me.currentColumn);
120                 me.TD(me, 1, 3, e = makeXonoticHeaderLabel(_("Player Names")));
121         me.TR(me);
122                 me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "hud_shownames", _("Show names above players")));
123
124         me.TR(me);
125                 me.TDempty(me, 0.2);
126                 me.TD(me, 1, 0.8, e = makeXonoticTextLabel(0, _("Alpha:")));
127                         setDependent(e, "hud_shownames", 1, 1);
128                 me.TD(me, 1, 2, e = makeXonoticSlider(0.1, 1, 0.05, "hud_shownames_alpha"));
129                         setDependent(e, "hud_shownames", 1, 1);
130         me.TR(me);
131                 me.TDempty(me, 0.2);
132                 me.TD(me, 1, 0.8, e = makeXonoticTextLabel(0, _("Fontsize:")));
133                         setDependent(e, "hud_shownames", 1, 1);
134                 me.TD(me, 1, 2, e = makeXonoticSlider(5, 16, 1, "hud_shownames_fontsize"));
135                         setDependent(e, "hud_shownames", 1, 1);
136         me.TR(me);
137                 me.TDempty(me, 0.2);
138                 me.TD(me, 1, 0.8, e = makeXonoticTextLabel(0, _("Max distance:")));
139                         setDependent(e, "hud_shownames", 1, 1);
140                 me.TD(me, 1, 2, e = makeXonoticSlider(2000, 10000, 500, "hud_shownames_maxdistance"));
141                         setDependent(e, "hud_shownames", 1, 1);
142         me.TR(me);
143                 me.TDempty(me, 0.2);
144                 me.TD(me, 1, 0.8, e = makeXonoticTextLabel(0, _("Decolorize:")));
145                         setDependent(e, "hud_shownames", 1, 1);
146                 me.TD(me, 1, 2, e = makeXonoticTextSlider("hud_shownames_decolorize"));
147                         e.addValue(e, _("Never"), "0");
148                         e.addValue(e, _("Teamplay"), "1");
149                         e.addValue(e, _("Always"), "2");
150                         e.configureXonoticTextSliderValues(e);
151                         setDependent(e, "hud_shownames", 1, 1);
152
153         me.TR(me);
154         //me.TR(me);
155                 me.TDempty(me, 0.2);
156                 me.TD(me, 1, 2.8, e = makeXonoticCheckBoxEx(25, 0, "hud_shownames_crosshairdistance", _("Only when near crosshair")));
157                         setDependent(e, "hud_shownames", 1, 1);
158         me.TR(me);
159                 me.TDempty(me, 0.2);
160                 me.TD(me, 1, 2.8, e = makeXonoticCheckBox(0, "hud_shownames_status", _("Display health and armor")));
161                         setDependent(e, "hud_shownames", 1, 1);
162
163         me.TR(me);
164         me.TR(me);
165                 me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Damage overlay:")));
166                 me.TD(me, 1, 2, e = makeXonoticSlider(0, 1, 0.05, "hud_damage"));
167         me.TR(me);
168         me.TR(me);
169                 me.TDempty(me, 0.5);
170                 me.TD(me, 1, 2, e = makeXonoticButton(_("Enter HUD editor"), '0 0 0'));
171                         e.onClick = HUDSetup_Check_Gamestatus;
172                         e.onClickEntity = me;
173                 // TODO: show hud config name with text here
174 }
175 #endif