X-Git-Url: http://de.git.xonotic.org/?p=xonotic%2Fxonotic-data.pk3dir.git;a=blobdiff_plain;f=qcsrc%2Fclient%2Fhud%2Fhud.qc;h=9b5b4699337c971a0fbf2f4117dde2e75a1aa82a;hp=f6469a58b429dbbb1c7bff6f0b1702f4f6d45273;hb=e7e4e095eaeac5b8dbc60723f239547bdee88ef5;hpb=583ff2fd202086e9cccd53071a5b88371b8d9dd1 diff --git a/qcsrc/client/hud/hud.qc b/qcsrc/client/hud/hud.qc index f6469a58b4..9b5b469933 100644 --- a/qcsrc/client/hud/hud.qc +++ b/qcsrc/client/hud/hud.qc @@ -1,5 +1,8 @@ #include "hud.qh" +#include +#include +#include #include "panel/scoreboard.qh" #include "hud_config.qh" #include "../mapvoting.qh" @@ -7,13 +10,16 @@ #include #include #include +#include #include #include #include +#include #include #include #include -#include // TODO: remove +#include +#include /* @@ -69,14 +75,14 @@ vector HUD_Get_Num_Color (float hp, float maxvalue) float HUD_GetRowCount(int item_count, vector size, float item_aspect) { - TC(int, item_count); + TC(int, item_count); float aspect = size_y / size_x; return bound(1, floor((sqrt(4 * item_aspect * aspect * item_count + aspect * aspect) + aspect + 0.5) / 2), item_count); } vector HUD_GetTableSize_BestItemAR(int item_count, vector psize, float item_aspect) { - TC(int, item_count); + TC(int, item_count); float columns, rows; float ratio, best_ratio = 0; float best_columns = 1, best_rows = 1; @@ -174,7 +180,7 @@ void HUD_Panel_LoadCvars() //basically the same code of draw_ButtonPicture and draw_VertButtonPicture for the menu void HUD_Panel_DrawProgressBar(vector theOrigin, vector theSize, string pic, float length_ratio, bool vertical, float baralign, vector theColor, float theAlpha, int drawflag) { - TC(bool, vertical); TC(int, drawflag); + TC(bool, vertical); TC(int, drawflag); if(!length_ratio || !theAlpha) return; if(length_ratio > 1) @@ -281,7 +287,7 @@ void HUD_Panel_DrawProgressBar(vector theOrigin, vector theSize, string pic, flo void HUD_Panel_DrawHighlight(vector pos, vector mySize, vector color, float theAlpha, int drawflag) { - TC(int, drawflag); + TC(int, drawflag); if(!theAlpha) return; @@ -302,7 +308,7 @@ void HUD_Panel_DrawHighlight(vector pos, vector mySize, vector color, float theA void DrawNumIcon_expanding(vector myPos, vector mySize, float theTime, string icon, bool vertical, int icon_right_align, vector color, float theAlpha, float fadelerp) { - TC(bool, vertical); TC(int, icon_right_align); + TC(bool, vertical); TC(int, icon_right_align); vector newPos = '0 0 0', newSize = '0 0 0'; vector picpos, numpos; @@ -382,7 +388,7 @@ void DrawNumIcon_expanding(vector myPos, vector mySize, float theTime, string ic void DrawNumIcon(vector myPos, vector mySize, float theTime, string icon, bool vertical, int icon_right_align, vector color, float theAlpha) { - TC(bool, vertical); TC(int, icon_right_align); + TC(bool, vertical); TC(int, icon_right_align); DrawNumIcon_expanding(myPos, mySize, theTime, icon, vertical, icon_right_align, color, theAlpha, 0); } @@ -392,8 +398,6 @@ Main HUD system ================== */ -void CSQC_BUMBLE_GUN_HUD(); - void HUD_Vehicle() { if(autocvar__hud_configure) return; @@ -482,8 +486,6 @@ bool Hud_Shake_Update() return true; } -entity CSQCModel_server2csqc(int i); -void calc_followmodel_ofs(entity view); void Hud_Dynamic_Frame() { vector ofs = '0 0 0'; @@ -559,6 +561,49 @@ void Hud_Dynamic_Frame() HUD_Scale_Disable(); } +bool cursor_activestate; + +bool HUD_WouldShowCursor() +{ + if(autocvar__hud_configure) + return true; + if(hud_panel_radar_mouse) + return true; + if(mv_active) + return true; + //entity local_player = ((csqcplayer) ? csqcplayer : CSQCModel_server2csqc(player_localentnum - 1)); // TODO: doesn't use regular cursor handling + //if(local_player.viewloc && (local_player.viewloc.spawnflags & VIEWLOC_FREEAIM)) + //return true; + if(HUD_Radar_Clickable()) + return true; + if(HUD_MinigameMenu_IsOpened() || active_minigame) + return true; + if(QuickMenu_IsOpened()) + return true; + return false; +} +void HUD_Cursor() +{ + if(HUD_WouldShowCursor()) + { + if(!cursor_activestate) + { + cursor_activestate = true; + if(autocvar_hud_cursormode) + setcursormode(1); + } + } + else + { + if(cursor_activestate) + { + cursor_activestate = false; + if(autocvar_hud_cursormode) + setcursormode(0); + } + } +} + void HUD_Main() { int i; @@ -576,12 +621,8 @@ void HUD_Main() // Drawing stuff if (hud_skin_prev != autocvar_hud_skin) { - if (hud_skin_path) - strunzone(hud_skin_path); - hud_skin_path = strzone(strcat("gfx/hud/", autocvar_hud_skin)); - if (hud_skin_prev) - strunzone(hud_skin_prev); - hud_skin_prev = strzone(autocvar_hud_skin); + strcpy(hud_skin_path, strcat("gfx/hud/", autocvar_hud_skin)); + strcpy(hud_skin_prev, autocvar_hud_skin); } // draw the dock @@ -656,9 +697,7 @@ void HUD_Main() LOG_TRACE("Automatically fixed wrong/missing panel numbers in _hud_panelorder"); cvar_set("_hud_panelorder", s); - if(hud_panelorder_prev) - strunzone(hud_panelorder_prev); - hud_panelorder_prev = strzone(s); + strcpy(hud_panelorder_prev, s); //now properly set panel_order tokenize_console(s); @@ -684,6 +723,8 @@ void HUD_Main() HUD_Panel_Draw(HUD_PANEL(QUICKMENU)); HUD_Panel_Draw(HUD_PANEL(SCOREBOARD)); + HUD_Cursor(); + if (intermission == 2) HUD_Reset();