]> git.rm.cloudns.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
Add more options to the damagetext dialog
authorotta8634 <k9wolf@pm.me>
Sat, 8 Feb 2025 17:15:16 +0000 (01:15 +0800)
committerotta8634 <k9wolf@pm.me>
Fri, 14 Mar 2025 16:32:08 +0000 (00:32 +0800)
This closes #2842, and adds some other options too.
Also made ui_damagetext.q* obey the same format used for other menu dialogs.

qcsrc/common/mutators/mutator/damagetext/ui_damagetext.qc
qcsrc/common/mutators/mutator/damagetext/ui_damagetext.qh

index 1a00d15462c80b1aa2b0d0b798a82cc7e6518765..bbeecb3c0790ec87f4d4ca81da4bb5974d4b4fb4 100644 (file)
@@ -1,39 +1,84 @@
 #include "ui_damagetext.qh"
 
 #include <menu/gamesettings.qh>
-#include <menu/xonotic/tab.qh>
+#include <menu/xonotic/slider.qh>
+#include <menu/xonotic/mixedslider.qh>
 
-CLASS(XonoticDamageTextSettings, XonoticTab)
-    REGISTER_SETTINGS(damagetext, NEW(XonoticDamageTextSettings));
-    ATTRIB(XonoticDamageTextSettings, title, string, _("Damage text"));
-    ATTRIB(XonoticDamageTextSettings, intendedWidth, float, 0.9);
-    ATTRIB(XonoticDamageTextSettings, rows, float, 15.5);
-    ATTRIB(XonoticDamageTextSettings, columns, float, 5);
-    INIT(XonoticDamageTextSettings) { this.configureDialog(this); }
-    METHOD(XonoticDamageTextSettings, showNotify, void(entity this)) { loadAllCvars(this); }
-    METHOD(XonoticDamageTextSettings, fill, void(entity this))
-    {
-        entity e;
-        this.gotoRC(this, 0, 1); this.setFirstColumn(this, this.currentColumn);
-            this.TD(this, 1, 3, makeXonoticCheckBox(0, "cl_damagetext", _("Draw damage numbers")));
-        this.TR(this);
-            this.TD(this, 1, 1, e = makeXonoticTextLabel(0, _("Font size minimum:")));
-                setDependent(e, "cl_damagetext", 1, 1);
-            this.TD(this, 1, 2, e = makeXonoticSlider(0, 50, 1, "cl_damagetext_size_min"));
-                setDependent(e, "cl_damagetext", 1, 1);
-        this.TR(this);
-            this.TD(this, 1, 1, e = makeXonoticTextLabel(0, _("Font size maximum:")));
-                setDependent(e, "cl_damagetext", 1, 1);
-            this.TD(this, 1, 2, e = makeXonoticSlider(0, 50, 1, "cl_damagetext_size_max"));
-                setDependent(e, "cl_damagetext", 1, 1);
-        this.TR(this);
-            this.TD(this, 1, 1, e = makeXonoticTextLabel(0, _("Color:")));
-                setDependent(e, "cl_damagetext", 1, 1);
-            this.TD(this, 2, 2, e = makeXonoticColorpickerString("cl_damagetext_color", "cl_damagetext_color"));
-                setDependent(e, "cl_damagetext", 1, 1);
-        this.TR(this);
-        this.TR(this);
-            this.TD(this, 1, 3, e = makeXonoticCheckBox(0, "cl_damagetext_friendlyfire", _("Draw damage numbers for friendly fire")));
-                setDependent(e, "cl_damagetext", 1, 1);
-    }
-ENDCLASS(XonoticDamageTextSettings)
+void XonoticDamageTextSettings_showNotify(entity me)
+{
+       loadAllCvars(me);
+}
+entity makeXonoticDamageTextSettingsTab()
+{
+       entity me;
+       me = NEW(XonoticDamageTextSettings);
+       me.configureDialog(me);
+       return me;
+}
+
+void XonoticDamageTextSettings_fill(entity me)
+{
+       entity e;
+
+       me.gotoRC(me, 0, 1); me.setFirstColumn(me, me.currentColumn);
+               me.TD(me, 1, 3, e = makeXonoticHeaderLabel(_("Damage Text")));
+       me.TR(me);
+               me.TD(me, 1, 3, makeXonoticCheckBox(0, "cl_damagetext", _("Draw damage numbers")));
+       me.TR(me);
+               me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "cl_damagetext_friendlyfire", _("Draw damage numbers for friendly fire")));
+                       setDependent(e, "cl_damagetext", 1, 1);
+
+       me.TR(me);
+       me.TR(me);
+               me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Font size minimum:")));
+                       setDependent(e, "cl_damagetext", 1, 1);
+               me.TD(me, 1, 2, e = makeXonoticSlider(0, 50, 1, "cl_damagetext_size_min"));
+                       setDependent(e, "cl_damagetext", 1, 1);
+       me.TR(me);
+               me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Font size maximum:")));
+                       setDependent(e, "cl_damagetext", 1, 1);
+               me.TD(me, 1, 2, e = makeXonoticSlider(0, 50, 1, "cl_damagetext_size_max"));
+                       setDependent(e, "cl_damagetext", 1, 1);
+       me.TR(me);
+               me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Color:")));
+                       setDependent(e, "cl_damagetext", 1, 1);
+               me.TD(me, 2, 2, e = makeXonoticColorpickerString("cl_damagetext_color", "cl_damagetext_color"));
+                       setDependentAND(e, "cl_damagetext", 1, 1, "cl_damagetext_color_per_weapon", 0, 0);
+       me.TR(me);
+               me.TDempty(me, 0.2);
+               me.TD(me, 1, 2.8, e = makeXonoticCheckBox(0, "cl_damagetext_color_per_weapon", _("Per weapon")));
+                       setDependent(e, "cl_damagetext", 1, 1);
+
+       me.TR(me);
+       me.TR(me);
+               me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Initial alpha:")));
+                       setDependent(e, "cl_damagetext", 1, 1);
+               me.TD(me, 1, 2, e = makeXonoticSlider(0.5, 1, 0.05, "cl_damagetext_alpha_start"));
+                       setDependent(e, "cl_damagetext", 1, 1);
+       me.TR(me);
+               me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Fade time:")));
+                       setDependent(e, "cl_damagetext", 1, 1);
+               me.TD(me, 1, 2, e = makeXonoticSlider(1, 5, 0.5, "cl_damagetext_alpha_lifetime"));
+                       setDependent(e, "cl_damagetext", 1, 1);
+       me.TR(me);
+               me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Accumulate:")));
+                       setDependent(e, "cl_damagetext", 1, 1);
+       me.TR(me);
+               me.TDempty(me, 0.2);
+               me.TD(me, 1, 0.8, e = makeXonoticTextLabel(0, _("If younger than:")));
+                       setDependent(e, "cl_damagetext", 1, 1);
+               me.TD(me, 1, 2, e = makeXonoticMixedSlider("cl_damagetext_accumulate_lifetime"));
+                       e.addText(e, _("Never"), 0);
+                       e.addText(e, _("1s"), 1);
+                       e.addText(e, _("2s"), 2);
+                       e.addText(e, _("3s"), 3);
+                       e.addText(e, _("Always"), -1);
+                       e.configureXonoticMixedSliderValues(e);
+                       setDependent(e, "cl_damagetext", 1, 1);
+       me.TR(me);
+               me.TDempty(me, 0.2);
+               me.TD(me, 1, 0.8, e = makeXonoticTextLabel(0, _("Or alpha greater than:")));
+                       setDependentAND(e, "cl_damagetext", 1, 1, "cl_damagetext_accumulate_lifetime", 0.00001, 999999);
+               me.TD(me, 1, 2, e = makeXonoticSlider(0, 1, 0.05, "cl_damagetext_accumulate_alpha_rel"));
+                       setDependentAND(e, "cl_damagetext", 1, 1, "cl_damagetext_accumulate_lifetime", 0.00001, 999999);
+}
index 6f70f09beec2219624baeca92e2cd7deaa104fb4..f480ea433478c94079daa148c0efe074d85caf53 100644 (file)
@@ -1 +1,13 @@
 #pragma once
+
+#include <menu/xonotic/tab.qh>
+CLASS(XonoticDamageTextSettings, XonoticTab)
+       METHOD(XonoticDamageTextSettings, fill, void(entity this));
+       METHOD(XonoticDamageTextSettings, showNotify, void(entity this));
+       ATTRIB(XonoticDamageTextSettings, title, string, _("Damage text"));
+       ATTRIB(XonoticDamageTextSettings, intendedWidth, float, 0.9);
+       ATTRIB(XonoticDamageTextSettings, rows, float, 15.5);
+       ATTRIB(XonoticDamageTextSettings, columns, float, 5);
+ENDCLASS(XonoticDamageTextSettings)
+entity makeXonoticDamageTextSettingsTab();
+REGISTER_SETTINGS(damagetext, makeXonoticDamageTextSettingsTab());