]> git.rm.cloudns.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
complete refactor hack abomination
authordrjaska <drjaska83@gmail.com>
Thu, 11 May 2023 19:59:39 +0000 (22:59 +0300)
committerdrjaska <drjaska83@gmail.com>
Fri, 12 May 2023 00:13:20 +0000 (03:13 +0300)
qcsrc/menu/item/slider.qc
qcsrc/menu/item/slider.qh
qcsrc/menu/xonotic/dialog_settings_input.qc

index b98f59bbb444f663643e9860645b820ada792052..ce80fcdde364e09eb3dcf71f76ae2c908d8bbd1e 100644 (file)
@@ -18,6 +18,9 @@
                        me.setSliderValue(me, val);
                }
                me.value = val;
+
+               if(me.onChange)
+                       me.onChange(me, me.onChangeEntity);
        }
        void Slider_setValue_noAnim(entity me, float val)
        {
index b70d3880bae819100350f8aba68ff240e8367158..c5f9e292d9c3c5a70b3493989b5370c4095b1bf2 100644 (file)
@@ -47,4 +47,6 @@ CLASS(Slider, Label)
        ATTRIB(Slider, colorC, vector, '1 1 1');
        ATTRIB(Slider, colorF, vector, '1 1 1');
        ATTRIB(Slider, disabledAlpha, float, 0.3);
+       ATTRIB(Slider, onChange, void(entity, entity));
+       ATTRIB(Slider, onChangeEntity, entity);
 ENDCLASS(Slider)
index 22e164fdda39b874d23cfc3f8b054da78352427c..ac03e625bbe8cbb27243d79f7e90a9a4060d3786 100644 (file)
 #include "checkbox.qh"
 #include "inputbox.qh"
 
+void updateSensSlider(entity field, entity slider)
+{
+       XonoticSlider_setValue(slider, stof(field.text));
+}
+
+void updateSensField(entity slider, entity field)
+{
+       if (slider.value)
+               SUPER(XonoticInputBox).setText(field, ftos_mindecimals(stof((sprintf("%0.4f", slider.value)))));
+       // don't use that to avoid infinite onChange looping, just steal its content
+       //XonoticInputBox_setText(field, ftos(slider.value));
+}
+
+void linkSensitivities(entity slider, entity field)
+{
+       slider.onChange = updateSensField;
+       slider.onChangeEntity = field;
+
+       field.onChange = updateSensSlider;
+       field.onChangeEntity = slider;
+}
+
 entity makeXonoticInputSettingsTab()
 {
        entity me;
@@ -58,9 +80,17 @@ void XonoticInputSettingsTab_fill(entity me)
        me.gotoRC(me, 0, 3.2); me.setFirstColumn(me, me.currentColumn);
                me.TD(me, 1, 3, e = makeXonoticHeaderLabel(_("Mouse")));
        me.TR(me);
+               entity sensitivitySlider;
                me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Sensitivity:")));
-               me.TD(me, 1, 2, e = makeXonoticInputBox_T(0, "sensitivity",
+               me.TD(me, 1, 1.5, e = makeXonoticSlider_T(0.1, 9.9, 0.1, "sensitivity",
+                       _("Mouse speed multiplier")));
+                       sensitivitySlider = e;
+                       e.fontSize = 0;
+                       me.currentColumn -= 0.35;
+               me.TD(me, 1, 1, e = makeXonoticInputBox_T(0, "sensitivity",
                        _("Mouse speed multiplier")));
+                       e.saveImmediately = 1;
+                       linkSensitivities(sensitivitySlider, e);
        me.TR(me);
                me.TD(me, 1, 3, e = makeXonoticCheckBox_T(0, "m_filter", _("Smooth aiming"),
                        _("Smoothes the mouse movement, but makes aiming slightly less responsive")));