METHOD(Slider, configureSliderValues, void(entity, float, float, float, float, float, float))
METHOD(Slider, draw, void(entity))
METHOD(Slider, keyDown, float(entity, float, float, float))
+ METHOD(Slider, keyUp, float(entity, float, float, float))
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))
METHOD(Slider, showNotify, void(entity))
ATTRIB(Slider, src, string, string_null)
ATTRIB(Slider, focusable, float, 1)
+ ATTRIB(Slider, allowFocusSound, float, 1)
ATTRIB(Slider, value, float, 0)
ATTRIB(Slider, animated, float, 1)
ATTRIB(Slider, sliderValue, float, 0)
void Slider_resizeNotify(entity me, vector relOrigin, vector relSize, vector absOrigin, vector absSize)
{
SUPER(Slider).resizeNotify(me, relOrigin, relSize, absOrigin, absSize);
- me.controlWidth = absSize_y / absSize_x;
+ me.controlWidth = absSize.y / absSize.x;
}
string Slider_valueToText(entity me, float val)
{
me.setValue(me, me.valueMax);
return 1;
}
- // TODO more keys
+ // TODO more keys (NOTE also add them to Slider_keyUp)
+ return 0;
+}
+float Slider_keyUp(entity me, float key, float ascii, float shift)
+{
+ if(me.disabled)
+ return 0;
+ switch(key)
+ {
+ case K_LEFTARROW:
+ case K_KP_LEFTARROW:
+ case K_RIGHTARROW:
+ case K_KP_RIGHTARROW:
+ case K_PGUP:
+ case K_KP_PGUP:
+ case K_PGDN:
+ case K_KP_PGDN:
+ case K_HOME:
+ case K_KP_HOME:
+ case K_END:
+ case K_KP_END:
+ m_play_click_sound(MENU_SOUND_SLIDE);
+ }
return 0;
}
float Slider_mouseDrag(entity me, vector pos)
if(me.pressed)
{
hit = 1;
- if(pos_x < 0 - me.tolerance_x) hit = 0;
- if(pos_y < 0 - me.tolerance_y) hit = 0;
- if(pos_x >= 1 - me.textSpace + me.tolerance_x) hit = 0;
- if(pos_y >= 1 + me.tolerance_y) hit = 0;
+ if(pos.x < 0 - me.tolerance.x) hit = 0;
+ if(pos.y < 0 - me.tolerance.y) hit = 0;
+ if(pos.x >= 1 - me.textSpace + me.tolerance.x) hit = 0;
+ if(pos.y >= 1 + me.tolerance.y) hit = 0;
if(hit)
{
- v = median(0, (pos_x - me.pressOffset - 0.5 * me.controlWidth) / (1 - me.textSpace - me.controlWidth), 1) * (me.valueMax - me.valueMin) + me.valueMin;
+ v = median(0, (pos.x - me.pressOffset - 0.5 * me.controlWidth) / (1 - me.textSpace - me.controlWidth), 1) * (me.valueMax - me.valueMin) + me.valueMin;
if(me.valueStep)
v = floor(0.5 + v / me.valueStep) * me.valueStep;
me.setValue(me, v);
float controlCenter;
if(me.disabled)
return 0;
- if(pos_x < 0) return 0;
- if(pos_y < 0) return 0;
- if(pos_x >= 1 - me.textSpace) return 0;
- if(pos_y >= 1) return 0;
+ if(pos.x < 0) return 0;
+ if(pos.y < 0) return 0;
+ if(pos.x >= 1 - me.textSpace) return 0;
+ if(pos.y >= 1) return 0;
controlCenter = (me.value - me.valueMin) / (me.valueMax - me.valueMin) * (1 - me.textSpace - me.controlWidth) + 0.5 * me.controlWidth;
- if(fabs(pos_x - controlCenter) <= 0.5 * me.controlWidth)
+ if(fabs(pos.x - controlCenter) <= 0.5 * me.controlWidth)
{
me.pressed = 1;
- me.pressOffset = pos_x - controlCenter;
+ me.pressOffset = pos.x - controlCenter;
me.previousValue = me.value;
//me.mouseDrag(me, pos);
}
else
{
float clickValue, pageValue, inRange;
- clickValue = median(0, (pos_x - me.pressOffset - 0.5 * me.controlWidth) / (1 - me.textSpace - me.controlWidth), 1) * (me.valueMax - me.valueMin) + me.valueMin;
+ clickValue = median(0, (pos.x - me.pressOffset - 0.5 * me.controlWidth) / (1 - me.textSpace - me.controlWidth), 1) * (me.valueMax - me.valueMin) + me.valueMin;
inRange = (almost_in_bounds(me.valueMin, me.value, me.valueMax));
- if(pos_x < controlCenter)
+ if(pos.x < controlCenter)
{
pageValue = me.value - me.valuePageStep;
if(me.valueStep)
{
controlCenter = (me.value - me.valueMin) / (me.valueMax - me.valueMin) * (1 - me.textSpace - me.controlWidth) + 0.5 * me.controlWidth;
me.pressed = 1;
- me.pressOffset = pos_x - controlCenter;
+ me.pressOffset = pos.x - controlCenter;
me.previousValue = me.value;
//me.mouseDrag(me, pos);
}
me.pressed = 0;
if(me.disabled)
return 0;
- if(cvar("menu_sounds"))
- localsound("sound/misc/menu2.wav");
+ m_play_click_sound(MENU_SOUND_SLIDE);
return 1;
}
void Slider_showNotify(entity me)
{
me.focusable = !me.disabled;
}
-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;