]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/common/minigames/cl_minigames_hud.qc
Fix map timer not being displayed if scoreboard is enabled during map vote; don't...
[xonotic/xonotic-data.pk3dir.git] / qcsrc / common / minigames / cl_minigames_hud.qc
index 56cae3c228867df92a9ee7d39fd9c5957cf68826..8cfe69c0bb7acf20681e9c797a514e5c84b2aa3e 100644 (file)
@@ -1,5 +1,6 @@
 #include "cl_minigames_hud.qh"
 
+#include <client/autocvars.qh>
 #include <common/ent_cs.qh>
 
 #include "minigames.qh"
@@ -25,17 +26,24 @@ bool HUD_mouse_over(entity somepanel)
 // Draws the minigame game board
 void HUD_MinigameBoard ()
 {
-       entity hud_minigame = world;
+       if (!HUD_MinigameMenu_IsOpened())
+               return;
+
+       entity hud_minigame = NULL;
 
        if(!autocvar__hud_configure)
+       {
+               if (!active_minigame)
+                       return;
                hud_minigame = active_minigame.descriptor;
+       }
        else
                hud_minigame = minigame_get_descriptor("nmm");
 
        if ( !hud_minigame )
                return;
 
-       HUD_Panel_UpdateCvars();
+       HUD_Panel_LoadCvars();
 
 
        vector pos, mySize;
@@ -51,17 +59,24 @@ void HUD_MinigameBoard ()
 // Draws the minigame status panel
 void HUD_MinigameStatus ()
 {
-       entity hud_minigame = world;
+       if (!HUD_MinigameMenu_IsOpened())
+               return;
+
+       entity hud_minigame = NULL;
 
        if(!autocvar__hud_configure)
+       {
+               if (!active_minigame)
+                       return;
                hud_minigame = active_minigame.descriptor;
+       }
        else
                hud_minigame = minigame_get_descriptor("nmm");
 
        if ( !hud_minigame )
                return;
 
-       HUD_Panel_UpdateCvars();
+       HUD_Panel_LoadCvars();
 
 
        vector pos, mySize;
@@ -74,6 +89,7 @@ void HUD_MinigameStatus ()
                mySize -= '2 2 0' * panel_bg_padding;
        }
 
+       HUD_Scale_Disable();
        hud_minigame.minigame_hud_status(pos,mySize);
 }
 
@@ -140,9 +156,9 @@ void HUD_MinigameMenu_EraseEntry ( entity e )
                HUD_MinigameMenu_last_entry = e.list_prev;
 
        if ( HUD_MinigameMenu_activeitem == e )
-               HUD_MinigameMenu_activeitem = world;
+               HUD_MinigameMenu_activeitem = NULL;
 
-       remove(e);
+       delete(e);
 }
 
 // Minigame menu options: create entry
@@ -185,14 +201,14 @@ bool HUD_MinigameMenu_Click_ExpandCollapse(entity this)
        {
                if ( HUD_MinigameMenu_activeitem &&
                                HUD_MinigameMenu_activeitem.owner == this )
-                       HUD_MinigameMenu_activeitem = world;
+                       HUD_MinigameMenu_activeitem = NULL;
                this.flags &= ~2;
-               for ( e = this.list_next; e != world && e.owner == this; e = this.list_next )
+               for ( e = this.list_next; e != NULL && e.owner == this; e = this.list_next )
                {
                        if ( e.flags & 2 )
                                HUD_MinigameMenu_Click(e);
                        this.list_next = e.list_next;
-                       remove(e);
+                       delete(e);
                }
                if ( this.list_next )
                        this.list_next.list_prev = this;
@@ -201,7 +217,7 @@ bool HUD_MinigameMenu_Click_ExpandCollapse(entity this)
        }
        else
        {
-               for ( e = HUD_MinigameMenu_entries; e != world; e = e.list_next )
+               for ( e = HUD_MinigameMenu_entries; e != NULL; e = e.list_next )
                {
                        if ( e.flags & 2 && e.origin_x == this.origin_x)
                                HUD_MinigameMenu_Click(e);
@@ -243,7 +259,7 @@ void HUD_MinigameMenu_ClickJoin(entity this, entity actor, entity trigger)
 {
        if ( HUD_MinigameMenu_Click_ExpandCollapse(this) )
        {
-               entity e = world;
+               entity e = NULL;
                entity curr;
                entity prev = this;
                while( (e = find(e,classname,"minigame")) )
@@ -264,7 +280,7 @@ void HUD_MinigameMenu_ClickJoin(entity this, entity actor, entity trigger)
 /*// Temporary placeholder for un-implemented Click actions
 void HUD_MinigameMenu_ClickNoop()
 {
-       dprint("Placeholder for ",self.message,"\n");
+       dprint("Placeholder for ",this.message,"\n");
 }*/
 
 // Click action for Quit
@@ -286,15 +302,15 @@ void HUD_MinigameMenu_ClickInvite(entity this, entity actor, entity trigger)
        if ( HUD_MinigameMenu_Click_ExpandCollapse(this) )
        {
                entity e;
-               entity prev = self;
+               entity prev = this;
                for(int i = 0; i < maxclients; ++i)
                {
                        if ( player_localnum != i && playerslots[i] && entcs_GetName(i) != "" &&
-                               !findfloat(world,minigame_playerslot,i+1) && playerslots[i].ping )
+                               !findfloat(NULL,minigame_playerslot,i+1) && playerslots[i].ping )
                        {
                                e = HUD_MinigameMenu_SpawnSubEntry(
                                        strzone(entcs_GetName(i)), HUD_MinigameMenu_ClickInvite_Entry,
-                                       self );
+                                       this );
                                e.flags |= 1;
                                e.netname = strzone(ftos(i+1));
                                e.origin_x *= 2;
@@ -347,17 +363,14 @@ void HUD_MinigameMenu_Close(entity this, entity actor, entity trigger)
        if ( HUD_MinigameMenu_IsOpened() )
        {
                entity e, p;
-               for ( e = HUD_MinigameMenu_entries; e != world; e = p )
+               for ( e = HUD_MinigameMenu_entries; e != NULL; e = p )
                {
                        p = e.list_next;
-                       remove(e);
+                       delete(e);
                }
-               HUD_MinigameMenu_entries = world;
-               HUD_MinigameMenu_last_entry = world;
-               HUD_MinigameMenu_activeitem = world;
-               if(autocvar_hud_cursormode)
-               if ( !autocvar__hud_configure )
-                       setcursormode(0);
+               HUD_MinigameMenu_entries = NULL;
+               HUD_MinigameMenu_last_entry = NULL;
+               HUD_MinigameMenu_activeitem = NULL;
        }
 }
 
@@ -367,7 +380,7 @@ void HUD_MinigameMenu_CurrentButton()
        entity e;
        if ( active_minigame )
        {
-               for ( e = HUD_MinigameMenu_last_entry; e != world; e = e.list_prev )
+               for ( e = HUD_MinigameMenu_last_entry; e != NULL; e = e.list_prev )
                        if ( e.classname == "hud_minigamemenu_exit" )
                        {
                                HUD_MinigameMenu_EraseEntry(e);
@@ -383,7 +396,7 @@ void HUD_MinigameMenu_CurrentButton()
        else
        {
                entity p;
-               for ( e = HUD_MinigameMenu_last_entry; e != world; e = p.list_prev )
+               for ( e = HUD_MinigameMenu_last_entry; e != NULL; e = p.list_prev )
                {
                        p = e;
                        if ( e.classname == "hud_minigamemenu_current" )
@@ -395,7 +408,7 @@ void HUD_MinigameMenu_CurrentButton()
                                break;
                        }
                }
-               for ( e = HUD_MinigameMenu_last_entry; e != world; e = e.list_prev )
+               for ( e = HUD_MinigameMenu_last_entry; e != NULL; e = e.list_prev )
                        if ( e.classname == "hud_minigamemenu_exit" )
                                return;
                entity exit = HUD_MinigameMenu_SpawnEntry(
@@ -408,7 +421,7 @@ void HUD_MinigameMenu_CurrentButton()
 // Open the minigame menu panel
 void HUD_MinigameMenu_Open()
 {
-       if ( !HUD_MinigameMenu_IsOpened() )
+       if ( !mv_active && !HUD_MinigameMenu_IsOpened() )
        {
                HUD_MinigameMenu_InsertEntry( HUD_MinigameMenu_SpawnEntry(
                        _("Create"), '0 0 0', hud_fontsize*1.5,'0.7 0.84 1', HUD_MinigameMenu_ClickCreate),
@@ -417,18 +430,16 @@ void HUD_MinigameMenu_Open()
                        _("Join"),'0 0 0',hud_fontsize*1.5,'0.7 0.84 1', HUD_MinigameMenu_ClickJoin),
                        HUD_MinigameMenu_last_entry );
                HUD_MinigameMenu_CurrentButton();
-               HUD_MinigameMenu_activeitem = world;
-               if(autocvar_hud_cursormode)
-                       setcursormode(1);
+               HUD_MinigameMenu_activeitem = NULL;
        }
 }
 
 // Handles mouse input on to minigame menu panel
 void HUD_MinigameMenu_MouseInput()
 {
-       panel = HUD_PANEL(MINIGAME_MENU);
+       panel = HUD_PANEL(MINIGAMEMENU);
 
-       HUD_Panel_UpdateCvars();
+       HUD_Panel_LoadCvars();
 
        if(panel_bg_padding)
        {
@@ -440,9 +451,9 @@ void HUD_MinigameMenu_MouseInput()
 
        panel_pos_y += hud_fontsize_y*2;
 
-       HUD_MinigameMenu_activeitem = world;
+       HUD_MinigameMenu_activeitem = NULL;
        vector sz;
-       for ( e = HUD_MinigameMenu_entries; e != world; e = e.list_next )
+       for ( e = HUD_MinigameMenu_entries; e != NULL; e = e.list_next )
        {
                sz = eX*panel_size_x + eY*e.size_y;
                if ( e.model )
@@ -471,12 +482,20 @@ void HUD_MinigameMenu_DrawColoredEntry(vector pos, string s, vector fontsize)
 // Minigame menu panel UI
 void HUD_MinigameMenu ()
 {
+       if (mv_active)
+       {
+               if (HUD_MinigameMenu_IsOpened())
+                       HUD_MinigameMenu_Close(NULL, NULL, NULL);
+               return;
+       }
+
        if ( !HUD_MinigameMenu_IsOpened() )
                return;
 
-       HUD_Panel_UpdateCvars();
+       HUD_Panel_LoadCvars();
 
-       HUD_Panel_DrawBg(1);
+       HUD_Scale_Disable();
+       HUD_Panel_DrawBg();
 
        if(panel_bg_padding)
        {
@@ -491,7 +510,7 @@ void HUD_MinigameMenu ()
        vector offset;
        float itemh;
        vector imgsz = '22 22 0'; // NOTE: if changed, edit where HUD_MinigameMenu_activeitem is selected
-       for ( entity e = HUD_MinigameMenu_entries; e != world; e = e.list_next )
+       for ( entity e = HUD_MinigameMenu_entries; e != NULL; e = e.list_next )
        {
                color = e.colormod;
 
@@ -533,17 +552,24 @@ void HUD_MinigameMenu ()
 
 void HUD_MinigameHelp()
 {
+       if (!HUD_MinigameMenu_IsOpened())
+               return;
+
        string help_message;
 
        if(!autocvar__hud_configure)
+       {
+               if (!active_minigame)
+                       return;
                help_message = active_minigame.message;
+       }
        else
                help_message = "Minigame message";
 
        if ( !help_message )
                return;
 
-       HUD_Panel_UpdateCvars();
+       HUD_Panel_LoadCvars();
 
 
        vector pos, mySize;
@@ -573,7 +599,7 @@ float HUD_Minigame_InputEvent(float bInputType, float nPrimary, float nSecondary
        {
                mousepos_x = nPrimary;
                mousepos_y = nSecondary;
-               if ( minigame_isactive() && HUD_mouse_over(HUD_PANEL(MINIGAME_BOARD)) )
+               if ( active_minigame && HUD_mouse_over(HUD_PANEL(MINIGAMEBOARD)) )
                        active_minigame.minigame_event(active_minigame,"mouse_moved",mousepos);
                return true;
 
@@ -596,22 +622,22 @@ float HUD_Minigame_InputEvent(float bInputType, float nPrimary, float nSecondary
                }
 
                // allow some binds
-               string con_keys;
-               con_keys = findkeysforcommand("toggleconsole", 0);
+               string con_keys = findkeysforcommand("toggleconsole", 0);
                int keys = tokenize(con_keys); // findkeysforcommand returns data for this
-               for (int i = 0; i < keys; ++i)
+               int i;
+               for (i = 0; i < keys; ++i)
                {
                        if(nPrimary == stof(argv(i)))
                                return false;
                }
 
-               if ( minigame_isactive() && ( bInputType == 0 || bInputType == 1 ) )
+               if ( active_minigame && ( bInputType == 0 || bInputType == 1 ) )
                {
                        string device = "";
                        string action = bInputType == 0 ? "pressed" : "released";
                        if ( nPrimary >= K_MOUSE1 && nPrimary <= K_MOUSE16 )
                        {
-                               if ( HUD_mouse_over(HUD_PANEL(MINIGAME_BOARD)) )
+                               if ( HUD_mouse_over(HUD_PANEL(MINIGAMEBOARD)) )
                                        device = "mouse";
                        }
                        else
@@ -627,7 +653,7 @@ float HUD_Minigame_InputEvent(float bInputType, float nPrimary, float nSecondary
                if ( bInputType == 0 )
                {
                        if ( nPrimary == K_MOUSE1 && HUD_MinigameMenu_activeitem &&
-                               HUD_mouse_over(HUD_PANEL(MINIGAME_MENU)) )
+                               HUD_mouse_over(HUD_PANEL(MINIGAMEMENU)) )
                        {
                                HUD_MinigameMenu_Click(HUD_MinigameMenu_activeitem);
                                return true;
@@ -680,21 +706,6 @@ void HUD_Minigame_Mouse()
        if( !HUD_MinigameMenu_IsOpened() || autocvar__hud_configure || mv_active )
                return;
 
-       if(!autocvar_hud_cursormode)
-       {
-               mousepos = mousepos + getmousepos() * autocvar_menu_mouse_speed;
-
-               mousepos_x = bound(0, mousepos_x, vid_conwidth);
-               mousepos_y = bound(0, mousepos_y, vid_conheight);
-       }
-
-       if ( HUD_MinigameMenu_IsOpened() && HUD_mouse_over(HUD_PANEL(MINIGAME_MENU)) )
+       if ( HUD_MinigameMenu_IsOpened() && HUD_mouse_over(HUD_PANEL(MINIGAMEMENU)) )
                HUD_MinigameMenu_MouseInput();
-
-       draw_cursor_normal(mousepos, '1 1 1', panel_fg_alpha);
-}
-
-bool HUD_Minigame_Showpanels()
-{
-       return (HUD_MinigameMenu_IsOpened() && minigame_isactive());
 }