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