X-Git-Url: http://de.git.xonotic.org/?p=xonotic%2Fxonotic-data.pk3dir.git;a=blobdiff_plain;f=qcsrc%2Fmenu%2Fitem%2Fslider.c;h=c92db27e984f84be22a86ff2ae8049d190c3d478;hp=eeac0edd844ba43d3e1e25ae197cd2188eda9bd6;hb=2c681ebf40619c0202b70e633e74ea51a41fcf51;hpb=1f5d48dd87aaf7d479958202f3960de01ac877d2 diff --git a/qcsrc/menu/item/slider.c b/qcsrc/menu/item/slider.c index eeac0edd84..c92db27e98 100644 --- a/qcsrc/menu/item/slider.c +++ b/qcsrc/menu/item/slider.c @@ -10,6 +10,7 @@ CLASS(Slider) EXTENDS(Label) METHOD(Slider, mousePress, float(entity, vector)) METHOD(Slider, mouseDrag, float(entity, vector)) METHOD(Slider, mouseRelease, float(entity, vector)) + METHOD(Slider, focusEnter, void(entity)) METHOD(Slider, valueToText, string(entity, float)) METHOD(Slider, toString, string(entity)) METHOD(Slider, setValue, void(entity, float)) @@ -44,44 +45,43 @@ ENDCLASS(Slider) #endif #ifdef IMPLEMENTATION -void setValueSlider(entity me, float val) +void Slider_setValue(entity me, float val) { if (me.animated) { - anim.stopObjAnim(anim, me); anim.removeObjAnim(anim, me); - makeHostedEasing(me, setSliderValueSlider, easingQuadInOut, 1, me.sliderValue, val); + makeHostedEasing(me, Slider_setSliderValue, easingQuadInOut, 1, me.sliderValue, val); } else { me.setSliderValue(me, val); } me.value = val; } -void setSliderValueSlider(entity me, float val) +void Slider_setSliderValue(entity me, float val) { me.sliderValue = val; } -string toStringSlider(entity me) +string Slider_toString(entity me) { - return strcat(ftos(me.value), " (", me.valueToText(me, me.value), ")"); + return sprintf("%d (%s)", me.value, me.valueToText(me, me.value)); } -void resizeNotifySlider(entity me, vector relOrigin, vector relSize, vector absOrigin, vector absSize) +void Slider_resizeNotify(entity me, vector relOrigin, vector relSize, vector absOrigin, vector absSize) { - resizeNotifyLabel(me, relOrigin, relSize, absOrigin, absSize); + SUPER(Slider).resizeNotify(me, relOrigin, relSize, absOrigin, absSize); me.controlWidth = absSize_y / absSize_x; } -string valueToTextSlider(entity me, float val) +string Slider_valueToText(entity me, float val) { if(almost_in_bounds(me.valueMin, val, me.valueMax)) return ftos_decimals(val * me.valueDisplayMultiplier, me.valueDigits); return ""; } -void configureSliderVisualsSlider(entity me, float sz, float theAlign, float theTextSpace, string gfx) +void Slider_configureSliderVisuals(entity me, float sz, float theAlign, float theTextSpace, string gfx) { - configureLabelLabel(me, string_null, sz, theAlign); + SUPER(Slider).configureLabel(me, string_null, sz, theAlign); me.textSpace = theTextSpace; me.keepspaceLeft = (theTextSpace == 0) ? 0 : (1 - theTextSpace); me.src = gfx; } -void configureSliderValuesSlider(entity me, float theValueMin, float theValue, float theValueMax, float theValueStep, float theValueKeyStep, float theValuePageStep) +void Slider_configureSliderValues(entity me, float theValueMin, float theValue, float theValueMax, float theValueStep, float theValueKeyStep, float theValuePageStep) { me.value = theValue; me.sliderValue = theValue; @@ -98,13 +98,13 @@ void configureSliderValuesSlider(entity me, float theValueMin, float theValue, f if(fabs(floor(me.valueStep * 1 + 0.5) - (me.valueStep * 1)) < 0.01) // about a whole number me.valueDigits = 0; } -float keyDownSlider(entity me, float key, float ascii, float shift) +float Slider_keyDown(entity me, float key, float ascii, float shift) { float inRange; if(me.disabled) return 0; inRange = (almost_in_bounds(me.valueMin, me.value, me.valueMax)); - if(key == K_LEFTARROW) + if(key == K_LEFTARROW || key == K_KP_LEFTARROW || key == K_MWHEELDOWN) { if(inRange) me.setValue(me, median(me.valueMin, me.value - me.valueKeyStep, me.valueMax)); @@ -112,7 +112,7 @@ float keyDownSlider(entity me, float key, float ascii, float shift) me.setValue(me, me.valueMax); return 1; } - if(key == K_RIGHTARROW) + if(key == K_RIGHTARROW || key == K_KP_RIGHTARROW || key == K_MWHEELUP) { if(inRange) me.setValue(me, median(me.valueMin, me.value + me.valueKeyStep, me.valueMax)); @@ -120,7 +120,7 @@ float keyDownSlider(entity me, float key, float ascii, float shift) me.setValue(me, me.valueMin); return 1; } - if(key == K_PGUP) + if(key == K_PGDN || key == K_KP_PGDN) { if(inRange) me.setValue(me, median(me.valueMin, me.value - me.valuePageStep, me.valueMax)); @@ -128,7 +128,7 @@ float keyDownSlider(entity me, float key, float ascii, float shift) me.setValue(me, me.valueMax); return 1; } - if(key == K_PGDN) + if(key == K_PGUP || key == K_KP_PGUP) { if(inRange) me.setValue(me, median(me.valueMin, me.value + me.valuePageStep, me.valueMax)); @@ -136,12 +136,12 @@ float keyDownSlider(entity me, float key, float ascii, float shift) me.setValue(me, me.valueMin); return 1; } - if(key == K_HOME) + if(key == K_HOME || key == K_KP_HOME) { me.setValue(me, me.valueMin); return 1; } - if(key == K_END) + if(key == K_END || key == K_KP_END) { me.setValue(me, me.valueMax); return 1; @@ -149,14 +149,14 @@ float keyDownSlider(entity me, float key, float ascii, float shift) // TODO more keys return 0; } -float mouseDragSlider(entity me, vector pos) +float Slider_mouseDrag(entity me, vector pos) { float hit; float v, animed; if(me.disabled) return 0; - anim.finishObjAnim(anim, me); + anim.removeObjAnim(anim, me); animed = me.animated; me.animated = false; @@ -182,7 +182,7 @@ float mouseDragSlider(entity me, vector pos) return 1; } -float mousePressSlider(entity me, vector pos) +float Slider_mousePress(entity me, vector pos) { float controlCenter; if(me.disabled) @@ -235,22 +235,28 @@ float mousePressSlider(entity me, vector pos) //me.mouseDrag(me, pos); } } - if(cvar("menu_sounds")) - localsound("sound/misc/menu2.wav"); return 1; } -float mouseReleaseSlider(entity me, vector pos) +float Slider_mouseRelease(entity me, vector pos) { me.pressed = 0; if(me.disabled) return 0; + if(cvar("menu_sounds")) + localsound("sound/misc/menu2.wav"); return 1; } -void showNotifySlider(entity me) +void Slider_showNotify(entity me) { me.focusable = !me.disabled; } -void drawSlider(entity me) +void Slider_focusEnter(entity me) +{ + if(cvar("menu_sounds") > 1) + localsound("sound/misc/menu1.wav"); + SUPER(Slider).focusEnter(me); +} +void Slider_draw(entity me) { float controlLeft; float save; @@ -273,7 +279,7 @@ void drawSlider(entity me) } me.setText(me, me.valueToText(me, me.value)); draw_alpha = save; - drawLabel(me); + SUPER(Slider).draw(me); me.text = string_null; // TEMPSTRING! } #endif