]> git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/menu/item/button.c
Revise button sound
[xonotic/xonotic-data.pk3dir.git] / qcsrc / menu / item / button.c
index 527672d254f41acb6795a336f05da00d3ffb7e45..d2cb969f2568c20303562e12c310d6e554db97ae 100644 (file)
@@ -8,8 +8,8 @@ CLASS(Button) EXTENDS(Label)
        METHOD(Button, mousePress, float(entity, vector))
        METHOD(Button, mouseDrag, float(entity, vector))
        METHOD(Button, mouseRelease, float(entity, vector))
-       METHOD(Button, focusEnter, void(entity))
-       ATTRIB(Button, onClick, void(entity, entity), SUB_Null)
+       METHOD(Button, playClickSound, void(entity))
+       ATTRIB(Button, onClick, void(entity, entity), func_null)
        ATTRIB(Button, onClickEntity, entity, NULL)
        ATTRIB(Button, src, string, string_null)
        ATTRIB(Button, srcSuffix, string, string_null)
@@ -18,6 +18,7 @@ CLASS(Button) EXTENDS(Label)
        ATTRIB(Button, srcMulti, float, 1) // 0: button square left, text right; 1: button stretched, text over it
        ATTRIB(Button, buttonLeftOfText, float, 0)
        ATTRIB(Button, focusable, float, 1)
+       ATTRIB(Button, allowFocusSound, float, 1)
        ATTRIB(Button, pressed, float, 0)
        ATTRIB(Button, clickTime, float, 0)
        ATTRIB(Button, disabled, float, 0)
@@ -53,6 +54,7 @@ float Button_keyDown(entity me, float key, float ascii, float shift)
 {
        if(key == K_ENTER || key == K_SPACE || key == K_KP_ENTER)
        {
+               me.playClickSound(me);
                me.clickTime = 0.1; // delayed for effect
                return 1;
        }
@@ -74,13 +76,15 @@ float Button_mousePress(entity me, vector pos)
 }
 float Button_mouseRelease(entity me, vector pos)
 {
-       if(cvar("menu_sounds"))
-               localsound("sound/misc/menu2.wav");
        me.mouseDrag(me, pos); // verify coordinates
        if(me.pressed)
        {
-               if not(me.disabled)
-                       me.onClick(me, me.onClickEntity);
+               if (!me.disabled)
+               {
+                       me.playClickSound(me);
+                       if(me.onClick)
+                               me.onClick(me, me.onClickEntity);
+               }
                me.pressed = 0;
        }
        return 1;
@@ -89,12 +93,6 @@ void Button_showNotify(entity me)
 {
        me.focusable = !me.disabled;
 }
-void Button_focusEnter(entity me)
-{
-       if(cvar("menu_sounds") > 1)
-               localsound("sound/misc/menu1.wav");
-       SUPER(Button).focusEnter(me);
-}
 void Button_draw(entity me)
 {
        vector bOrigin, bSize;
@@ -156,14 +154,19 @@ void Button_draw(entity me)
 
        draw_alpha = save;
 
-       SUPER(Button).draw(me);
-
        if(me.clickTime > 0 && me.clickTime <= frametime)
        {
                // keyboard click timer expired? Fire the event then.
-               if not(me.disabled)
-                       me.onClick(me, me.onClickEntity);
+               if (!me.disabled)
+                       if(me.onClick)
+                               me.onClick(me, me.onClickEntity);
        }
        me.clickTime -= frametime;
+
+       SUPER(Button).draw(me);
+}
+void Button_playClickSound(entity me)
+{
+       m_play_click_sound(MENU_SOUND_EXECUTE);
 }
 #endif