X-Git-Url: https://git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fcommon%2Fminigames%2Fcl_minigames_hud.qc;h=5cc1defd16d1d5388b1304ab4bfeadda44b19990;hb=5d43c54fb54232bcfd81f24876d2f1a82308c909;hp=12d2f06d18caecf4bbf6f07d8f803e5ef5073544;hpb=7785114f6fb42a3a52c39413bf6e725607d338b2;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/common/minigames/cl_minigames_hud.qc b/qcsrc/common/minigames/cl_minigames_hud.qc index 12d2f06d1..5cc1defd1 100644 --- a/qcsrc/common/minigames/cl_minigames_hud.qc +++ b/qcsrc/common/minigames/cl_minigames_hud.qc @@ -1,13 +1,33 @@ #include "cl_minigames_hud.qh" +#include +#include +#include +#include #include - -#include "minigames.qh" +#include .vector colormod; -#include -#include +void HUD_MinigameBoard_Export(int fh) +{ + // allow saving cvars that aesthetically change the panel into hud skin files +} + +void HUD_MinigameStatus_Export(int fh) +{ + // allow saving cvars that aesthetically change the panel into hud skin files +} + +void HUD_MinigameHelp_Export(int fh) +{ + // allow saving cvars that aesthetically change the panel into hud skin files +} + +void HUD_MinigameMenu_Export(int fh) +{ + // allow saving cvars that aesthetically change the panel into hud skin files +} // whether the mouse is over the given panel bool HUD_mouse_over(entity somepanel) @@ -25,10 +45,17 @@ bool HUD_mouse_over(entity somepanel) // Draws the minigame game board void HUD_MinigameBoard () { + 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"); @@ -51,10 +78,17 @@ void HUD_MinigameBoard () // Draws the minigame status panel void HUD_MinigameStatus () { + 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"); @@ -147,9 +181,8 @@ void HUD_MinigameMenu_EraseEntry ( entity e ) } // Minigame menu options: create entry -entity HUD_MinigameMenu_SpawnEntry(string s, vector offset, vector fontsize, vector color,void(entity, entity, entity) click) +entity HUD_MinigameMenu_SpawnEntry(entity entry, string s, vector offset, vector fontsize, vector color,void(entity, entity, entity) click) { - entity entry = spawn(); entry.message = s; entry.origin = offset; entry.size = fontsize; @@ -165,7 +198,7 @@ entity HUD_MinigameMenu_SpawnSubEntry(string s, void(entity, entity, entity) cli { vector item_fontsize = hud_fontsize*1.25; vector item_offset = '1 0 0' * item_fontsize_x; - entity item = HUD_MinigameMenu_SpawnEntry( + entity item = HUD_MinigameMenu_SpawnEntry(new(hud_minigamemenu_subentry), s,item_offset,item_fontsize,'0.8 0.8 0.8', click ); item.owner = parent; return item; @@ -204,7 +237,7 @@ bool HUD_MinigameMenu_Click_ExpandCollapse(entity this) { for ( e = HUD_MinigameMenu_entries; e != NULL; e = e.list_next ) { - if ( e.flags & 2 && e.origin_x == this.origin_x) + if ( (e.flags & 2) && e.origin_x == this.origin_x) HUD_MinigameMenu_Click(e); } @@ -356,9 +389,6 @@ void HUD_MinigameMenu_Close(entity this, entity actor, entity trigger) HUD_MinigameMenu_entries = NULL; HUD_MinigameMenu_last_entry = NULL; HUD_MinigameMenu_activeitem = NULL; - if(autocvar_hud_cursormode) - if ( !autocvar__hud_configure ) - setcursormode(0); } } @@ -374,9 +404,8 @@ void HUD_MinigameMenu_CurrentButton() HUD_MinigameMenu_EraseEntry(e); break; } - entity currb = HUD_MinigameMenu_SpawnEntry( + entity currb = HUD_MinigameMenu_SpawnEntry(new(hud_minigamemenu_current), _("Current Game"), '0 0 0', hud_fontsize*1.5,'0.7 0.84 1', HUD_MinigameMenu_ClickCurrentGame ); - currb.classname = "hud_minigamemenu_current"; currb.model = strzone(minigame_texture(strcat(active_minigame.descriptor.netname,"/icon"))); HUD_MinigameMenu_InsertEntry(currb,HUD_MinigameMenu_last_entry); HUD_MinigameMenu_Click(currb); @@ -399,9 +428,8 @@ void HUD_MinigameMenu_CurrentButton() for ( e = HUD_MinigameMenu_last_entry; e != NULL; e = e.list_prev ) if ( e.classname == "hud_minigamemenu_exit" ) return; - entity exit = HUD_MinigameMenu_SpawnEntry( + entity exit = HUD_MinigameMenu_SpawnEntry(new(hud_minigamemenu_exit), _("Exit Menu"),'0 0 0',hud_fontsize*1.5,'0.7 0.84 1', HUD_MinigameMenu_Close); - exit.classname = "hud_minigamemenu_exit"; HUD_MinigameMenu_InsertEntry ( exit, HUD_MinigameMenu_last_entry ); } } @@ -409,25 +437,23 @@ 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( + HUD_MinigameMenu_InsertEntry( HUD_MinigameMenu_SpawnEntry(new(hud_minigamemenu_entry), _("Create"), '0 0 0', hud_fontsize*1.5,'0.7 0.84 1', HUD_MinigameMenu_ClickCreate), HUD_MinigameMenu_last_entry ); - HUD_MinigameMenu_InsertEntry ( HUD_MinigameMenu_SpawnEntry( + HUD_MinigameMenu_InsertEntry ( HUD_MinigameMenu_SpawnEntry(new(hud_minigamemenu_entry), _("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 = NULL; - if(autocvar_hud_cursormode) - setcursormode(1); } } // Handles mouse input on to minigame menu panel void HUD_MinigameMenu_MouseInput() { - panel = HUD_PANEL(MINIGAME_MENU); + panel = HUD_PANEL(MINIGAMEMENU); HUD_Panel_LoadCvars(); @@ -472,6 +498,13 @@ 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; @@ -535,12 +568,19 @@ 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"; + help_message = _("Minigame message"); if ( !help_message ) return; @@ -575,7 +615,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; @@ -607,13 +647,13 @@ float HUD_Minigame_InputEvent(float bInputType, float nPrimary, float nSecondary 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 @@ -629,7 +669,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; @@ -682,21 +722,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()); }