X-Git-Url: https://git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fmenu%2Fxonotic%2Ftextslider.qc;h=d40d88301a0fcf10a4914cde1616b77bcd22e727;hb=985f8850e3b43520a439ebffe01b3f1bc4a72f10;hp=8864654040e97242cd5ecab4aef2a576ef7cc785;hpb=86c9dc7c3696c329496b06375c1e79fb407401ce;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/menu/xonotic/textslider.qc b/qcsrc/menu/xonotic/textslider.qc index 886465404..d40d88301 100644 --- a/qcsrc/menu/xonotic/textslider.qc +++ b/qcsrc/menu/xonotic/textslider.qc @@ -1,49 +1,22 @@ -#ifndef TEXTSLIDER_H -#define TEXTSLIDER_H -#include "../item/textslider.qc" -CLASS(XonoticTextSlider, TextSlider) - METHOD(XonoticTextSlider, configureXonoticTextSlider, void(entity, string)); - METHOD(XonoticTextSlider, setValue, void(entity, float)); - METHOD(XonoticTextSlider, configureXonoticTextSliderValues, void(entity)); - ATTRIB(XonoticTextSlider, fontSize, float, SKINFONTSIZE_NORMAL) - ATTRIB(XonoticTextSlider, valueSpace, float, SKINWIDTH_SLIDERTEXT) - ATTRIB(XonoticTextSlider, image, string, SKINGFX_SLIDER) - ATTRIB(XonoticTextSlider, tolerance, vector, SKINTOLERANCE_SLIDER) - ATTRIB(XonoticTextSlider, align, float, 0.5) - ATTRIB(XonoticTextSlider, color, vector, SKINCOLOR_SLIDER_N) - ATTRIB(XonoticTextSlider, colorC, vector, SKINCOLOR_SLIDER_C) - ATTRIB(XonoticTextSlider, colorF, vector, SKINCOLOR_SLIDER_F) - ATTRIB(XonoticTextSlider, colorD, vector, SKINCOLOR_SLIDER_D) - ATTRIB(XonoticTextSlider, color2, vector, SKINCOLOR_SLIDER_S) +#include "textslider.qh" - ATTRIB(XonoticTextSlider, cvarName, string, string_null) - METHOD(XonoticTextSlider, loadCvars, void(entity)); - METHOD(XonoticTextSlider, saveCvars, void(entity)); - ATTRIB(XonoticTextSlider, sendCvars, float, 0) - - ATTRIB(XonoticTextSlider, alpha, float, SKINALPHA_TEXT) - ATTRIB(XonoticTextSlider, disabledAlpha, float, SKINALPHA_DISABLED) -ENDCLASS(XonoticTextSlider) -entity makeXonoticTextSlider(string); // note: you still need to call addValue and configureXonoticTextSliderValues! -#endif - -#ifdef IMPLEMENTATION -entity makeXonoticTextSlider(string theCvar) +entity makeXonoticTextSlider_T(string theCvar, string theTooltip) { entity me; me = NEW(XonoticTextSlider); - me.configureXonoticTextSlider(me, theCvar); + me.configureXonoticTextSlider(me, theCvar, theTooltip); return me; } -void XonoticTextSlider_configureXonoticTextSlider(entity me, string theCvar) +entity makeXonoticTextSlider(string theCvar) +{ + return makeXonoticTextSlider_T(theCvar, string_null); +} +void XonoticTextSlider_configureXonoticTextSlider(entity me, string theCvar, string theTooltip) { me.configureSliderVisuals(me, me.fontSize, me.align, me.valueSpace, me.image); - if(theCvar) - { - me.cvarName = theCvar; - me.tooltip = getZonedTooltipForIdentifier(theCvar); - // don't load it yet - } + me.controlledCvar = (theCvar) ? theCvar : string_null; + // me.loadCvars(me); // don't load it yet + setZonedTooltip(me, theTooltip, theCvar); } void XonoticTextSlider_setValue(entity me, float val) { @@ -53,17 +26,25 @@ void XonoticTextSlider_setValue(entity me, float val) me.saveCvars(me); } } +void XonoticTextSlider_setValue_noAnim(entity me, float val) +{ + if(val != me.value) + { + SUPER(XonoticTextSlider).setValue_noAnim(me, val); + me.saveCvars(me); + } +} void XonoticTextSlider_loadCvars(entity me) { - if (!me.cvarName) + if (!me.controlledCvar) return; - float n = tokenize_console(me.cvarName); + float n = tokenize_console(me.controlledCvar); string s = cvar_string(argv(0)); float i; for(i = 1; i < n; ++i) s = strcat(s, " ", cvar_string(argv(i))); - me.setValueFromIdentifier(me, s); + me.setValueFromIdentifier_noAnim(me, s); if(me.value < 0 && n > 1) { // if it failed: check if all cvars have the same value @@ -72,17 +53,17 @@ void XonoticTextSlider_loadCvars(entity me) if(cvar_string(argv(i)) != cvar_string(argv(i-1))) break; if(i >= n) - me.setValueFromIdentifier(me, cvar_string(argv(0))); + me.setValueFromIdentifier_noAnim(me, cvar_string(argv(0))); } } void XonoticTextSlider_saveCvars(entity me) { - if (!me.cvarName) + if (!me.controlledCvar) return; if(me.value >= 0 && me.value < me.nValues) { - float n = tokenize_console(me.cvarName); + float n = tokenize_console(me.controlledCvar); if(n == 1) { // this is a special case to allow spaces in the identifiers @@ -92,7 +73,7 @@ void XonoticTextSlider_saveCvars(entity me) else { float i; - float m = tokenize_console(strcat(me.cvarName, " ", me.getIdentifier(me))); + float m = tokenize_console(strcat(me.controlledCvar, " ", me.getIdentifier(me))); if(m == n + 1) { for(i = 0; i < n; ++i) @@ -110,7 +91,7 @@ void XonoticTextSlider_saveCvars(entity me) } } else - error("XonoticTextSlider: invalid identifier ", me.getIdentifier(me), " does not match cvar list ", me.cvarName); + error("XonoticTextSlider: invalid identifier ", me.getIdentifier(me), " does not match cvar list ", me.controlledCvar); } } } @@ -119,4 +100,3 @@ void XonoticTextSlider_configureXonoticTextSliderValues(entity me) me.configureTextSliderValues(me, string_null); me.loadCvars(me); } -#endif