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;
HUD_Panel_Draw(HUD_PANEL(QUICKMENU));
HUD_Panel_Draw(HUD_PANEL(SCOREBOARD));
+ HUD_Cursor();
+
if (intermission == 2)
HUD_Reset();
bool HUD_Radar_Clickable();
void HUD_Radar_Mouse();
+bool HUD_WouldShowCursor();
REGISTRY(hud_panels, BITS(6))
#define hud_panels_from(i) _hud_panels_from(i, NULL)
hud_configure_menu_open = 2;
localcmd("menu_showhudoptions ", highlightedPanel.panel_name, "\n");
}
-float mouse_over_panel;
void HUD_Panel_Mouse()
{
if(autocvar__menu_alpha == 1)
return;
- if (!autocvar_hud_cursormode)
- update_mousepos();
-
if(mouseClicked)
{
if(prevMouseClicked == 0)
if (mouse_over_panel && !tab_panel)
drawfill(panel_pos - '1 1 0' * panel_bg_border, panel_size + '2 2 0' * panel_bg_border, '1 1 1', .1, DRAWFLAG_NORMAL);
}
- // draw cursor after performing move/resize to have the panel pos/size updated before mouse_over_panel
- float cursor_alpha = 1 - autocvar__menu_alpha;
-
- if(!mouse_over_panel)
- draw_cursor_normal(mousepos, '1 1 1', cursor_alpha);
- else if(mouse_over_panel == 1)
- draw_cursor(mousepos, '0.5 0.5 0', "/cursor_move", '1 1 1', cursor_alpha);
- else if(mouse_over_panel == 2)
- draw_cursor(mousepos, '0.5 0.5 0', "/cursor_resize", '1 1 1', cursor_alpha);
- else
- draw_cursor(mousepos, '0.5 0.5 0', "/cursor_resize2", '1 1 1', cursor_alpha);
-
- prevMouseClicked = mouseClicked;
}
void HUD_Configure_DrawGrid()
{
if(!hud_configure_prev)
{
- if(autocvar_hud_cursormode)
- setcursormode(1);
hudShiftState = 0;
for(i = hud_panels_COUNT - 1; i >= 0; --i)
hud_panels_from(panel_order[i]).update_time = time;
{
if(hud_configure_menu_open)
hud_configure_menu_open = 0;
- if(autocvar_hud_cursormode)
- setcursormode(0);
hud_dynamic_shake_factor = -1;
}
}
QuickMenu_Page_Load("", 0);
hud_panel_quickmenu = 1;
- if(autocvar_hud_cursormode)
- setcursormode(1);
hudShiftState = 0;
QuickMenu_TimeOut = ((autocvar_hud_panel_quickmenu_time > 0) ? time + autocvar_hud_panel_quickmenu_time : 0);
mouseClicked = 0;
prevMouseClicked = 0;
QuickMenu_Buffer_Close();
-
- if(autocvar_hud_cursormode)
- if(!mv_active)
- setcursormode(0);
}
// It assumes submenu open tag is already detected
return;
}
- if (!autocvar_hud_cursormode)
- update_mousepos();
-
panel = HUD_PANEL(QUICKMENU);
HUD_Panel_LoadCvars();
QuickMenu_Page_ActiveEntry((entry_num < QUICKMENU_MAXLINES - 1) ? entry_num + 1 : 0);
}
}
-
- draw_cursor_normal(mousepos, '1 1 1', 0.8);
-
- prevMouseClicked = mouseClicked;
}
void HUD_Quickmenu_DrawEntry(vector pos, string desc, string option, vector fontsize)
{
if (clickable)
{
- if(autocvar_hud_cursormode)
- setcursormode(1);
hud_panel_radar_mouse = 1;
// we must unset the player's buttons, as they aren't released elsewhere
{
hud_panel_radar_mouse = 0;
mouseClicked = 0;
- if(autocvar_hud_cursormode)
- if(!mv_active)
- setcursormode(0);
}
}
void HUD_Radar_Hide_Maximized()
return;
}
- if (!autocvar_hud_cursormode)
- update_mousepos();
-
panel = HUD_PANEL(RADAR);
HUD_Panel_LoadCvars();
HUD_Radar_Hide_Maximized();
return;
}
-
-
- draw_cursor_normal(mousepos, '1 1 1', 0.8);
}
void HUD_Radar()
float CSQC_InputEvent(int bInputType, float nPrimary, float nSecondary)
{
TC(int, bInputType);
- if (HUD_Panel_InputEvent(bInputType, nPrimary, nSecondary))
- return true;
+ bool override = false;
+ override |= HUD_Panel_InputEvent(bInputType, nPrimary, nSecondary);
- if (QuickMenu_InputEvent(bInputType, nPrimary, nSecondary))
- return true;
+ override |= QuickMenu_InputEvent(bInputType, nPrimary, nSecondary);
- if (HUD_Radar_InputEvent(bInputType, nPrimary, nSecondary))
- return true;
+ override |= HUD_Radar_InputEvent(bInputType, nPrimary, nSecondary);
- if (MapVote_InputEvent(bInputType, nPrimary, nSecondary))
- return true;
+ override |= MapVote_InputEvent(bInputType, nPrimary, nSecondary);
+
+ override |= HUD_Minigame_InputEvent(bInputType, nPrimary, nSecondary);
- if (HUD_Minigame_InputEvent(bInputType, nPrimary, nSecondary))
+ if(override)
return true;
return false;
return mv_mouse_selection;
}
+vector prev_mousepos;
void MapVote_Draw()
{
string map;
if (!autocvar_hud_cursormode)
{
vector mpos = mousepos;
- update_mousepos();
- if (mpos.x != mousepos.x || mpos.y != mousepos.y)
+ if (mpos.x != prev_mousepos.x || mpos.y != prev_mousepos.y)
mv_selection_keyboard = 0;
}
pos.x = (xmax+xmin)*0.5;
MapVote_DrawAbstain(pos, dist.x, xmax - xmin, tmp, i);
}
-
- draw_cursor_normal(mousepos, '1 1 1', panel_fg_alpha);
}
void Cmd_MapVote_MapDownload(int argc)
void MapVote_Init()
{
mv_active = 1;
- if(autocvar_hud_cursormode) setcursormode(1);
- else mousepos = '0.5 0 0' * vid_conwidth + '0 0.5 0' * vid_conheight;
+ if(!autocvar_hud_cursormode) mousepos = '0.5 0 0' * vid_conwidth + '0 0.5 0' * vid_conheight;
mv_selection = -1;
mv_selection_keyboard = 0;
//draw_cursor(viewloc_mousepos, '0.5 0.5 0', "/cursor_move", '1 1 1', cursor_alpha);
}
+float mouse_over_panel;
+void HUD_Draw_Mouse()
+{
+ float cursor_alpha = 1 - autocvar__menu_alpha;
+ if(!mouse_over_panel)
+ draw_cursor_normal(mousepos, '1 1 1', cursor_alpha);
+ else if(mouse_over_panel == 1)
+ draw_cursor(mousepos, '0.5 0.5 0', "/cursor_move", '1 1 1', cursor_alpha);
+ else if(mouse_over_panel == 2)
+ draw_cursor(mousepos, '0.5 0.5 0', "/cursor_resize", '1 1 1', cursor_alpha);
+ else
+ draw_cursor(mousepos, '0.5 0.5 0', "/cursor_resize2", '1 1 1', cursor_alpha);
+}
+
+void HUD_Mouse(entity player)
+{
+ if(autocvar__menu_alpha == 1)
+ return;
+
+ if(!HUD_WouldShowCursor())
+ {
+ if(player.viewloc && (player.viewloc.spawnflags & VIEWLOC_FREEAIM))
+ ViewLocation_Mouse(); // NOTE: doesn't use cursormode
+ return;
+ }
+
+ if(!autocvar_hud_cursormode)
+ update_mousepos();
+
+ if(autocvar__hud_configure)
+ HUD_Panel_Mouse();
+ if(HUD_MinigameMenu_IsOpened() || active_minigame)
+ HUD_Minigame_Mouse();
+ if(QuickMenu_IsOpened())
+ QuickMenu_Mouse();
+ if(HUD_Radar_Clickable())
+ HUD_Radar_Mouse();
+
+ prevMouseClicked = mouseClicked;
+
+ HUD_Draw_Mouse();
+}
+
bool ov_enabled;
float oldr_nearclip;
float oldr_farclip_base;
cvar_set("vid_conheight", h0);
}
- if(autocvar__hud_configure)
- HUD_Panel_Mouse();
- else if (HUD_MinigameMenu_IsOpened() || active_minigame)
- HUD_Minigame_Mouse();
- else if(QuickMenu_IsOpened())
- QuickMenu_Mouse();
- else if(local_player.viewloc && (local_player.viewloc.spawnflags & VIEWLOC_FREEAIM))
- ViewLocation_Mouse(); // NOTE: doesn't use cursormode
- else
- HUD_Radar_Mouse();
+ HUD_Mouse(local_player);
cl_notice_run();
unpause_update();
HUD_MinigameMenu_entries = NULL;
HUD_MinigameMenu_last_entry = NULL;
HUD_MinigameMenu_activeitem = NULL;
- if(autocvar_hud_cursormode)
- if ( !autocvar__hud_configure )
- setcursormode(0);
}
}
HUD_MinigameMenu_last_entry );
HUD_MinigameMenu_CurrentButton();
HUD_MinigameMenu_activeitem = NULL;
- if(autocvar_hud_cursormode)
- setcursormode(1);
}
}
if( !HUD_MinigameMenu_IsOpened() || autocvar__hud_configure || mv_active )
return;
- if (!autocvar_hud_cursormode)
- update_mousepos();
-
if ( HUD_MinigameMenu_IsOpened() && HUD_mouse_over(HUD_PANEL(MINIGAMEMENU)) )
HUD_MinigameMenu_MouseInput();
-
- draw_cursor_normal(mousepos, '1 1 1', panel_fg_alpha);
}