#include "radar.qh"
-#include <client/autocvars.qh>
-#include <client/defs.qh>
-#include <client/miscfunctions.qh>
-#include <common/ent_cs.qh>
+#include <client/draw.qh>
#include <client/mapvoting.qh>
-#include <client/resources.qh>
#include <client/teamradar.qh>
+#include <common/ent_cs.qh>
#include <common/mutators/mutator/waypoints/all.qh>
+#include <common/resources/cl_resources.qh>
// Radar (#6)
float HUD_Radar_InputEvent(int bInputType, float nPrimary, float nSecondary)
{
TC(int, bInputType);
- if(!hud_panel_radar_maximized || !hud_panel_radar_mouse ||
- autocvar__hud_configure || mv_active)
+ if(!hud_panel_radar_maximized || !hud_panel_radar_mouse || autocvar__hud_configure || mv_active)
return false;
if(bInputType == 3)
return true;
}
+ if (bInputType == 2)
+ return false;
+
+ // at this point bInputType can only be 0 or 1 (key pressed or released)
+ bool key_pressed = (bInputType == 0);
+
if(nPrimary == K_MOUSE1)
{
- if(bInputType == 0) // key pressed
+ if(key_pressed)
mouseClicked |= S_MOUSE1;
- else if(bInputType == 1) // key released
+ else
mouseClicked -= (mouseClicked & S_MOUSE1);
}
else if(nPrimary == K_MOUSE2)
{
- if(bInputType == 0) // key pressed
+ if(key_pressed)
mouseClicked |= S_MOUSE2;
- else if(bInputType == 1) // key released
+ else
mouseClicked -= (mouseClicked & S_MOUSE2);
}
- else if ( nPrimary == K_ESCAPE && bInputType == 0 )
+ else if (nPrimary == K_ESCAPE && key_pressed)
{
HUD_Radar_Hide_Maximized();
}
if ( STAT(HEALTH) <= 0 )
{
// Show scoreboard
- if ( bInputType < 2 )
+ con_keys = findkeysforcommand("+showscores", 0);
+ keys = tokenize(con_keys);
+ for (i = 0; i < keys; ++i)
{
- con_keys = findkeysforcommand("+showscores", 0);
- keys = tokenize(con_keys);
- for (i = 0; i < keys; ++i)
+ if ( nPrimary == stof(argv(i)) )
{
- if ( nPrimary == stof(argv(i)) )
- {
- hud_panel_radar_temp_hidden = bInputType == 0;
- return false;
- }
+ hud_panel_radar_temp_hidden = key_pressed;
+ return false;
}
}
}
- else if ( bInputType == 0 )
+ else if (key_pressed)
HUD_Radar_Hide_Maximized();
return false;
}
}
+float HUD_Radar_GetZoomFactor(int zoommode)
+{
+ switch(zoommode)
+ {
+ case 1: return 1 - current_zoomfraction;
+ case 2: return 0;
+ case 3: return 1;
+ }
+ return current_zoomfraction;
+}
+
+float HUD_Radar_GetAngle(int rotation)
+{
+ if (rotation)
+ return 90 * rotation;
+ return view_angles.y - 90;
+}
+
void HUD_Radar()
{
if (!autocvar__hud_configure)
HUD_Panel_LoadCvars();
- float f = 0;
+ float zoom_factor = 0;
if (hud_panel_radar_maximized && !autocvar__hud_configure)
{
radar_panel_modified = true;
strcpy(panel.current_panel_bg, panel_bg);
- switch(hud_panel_radar_maximized_zoommode)
- {
- default:
- case 0:
- f = current_zoomfraction;
- break;
- case 1:
- f = 1 - current_zoomfraction;
- break;
- case 2:
- f = 0;
- break;
- case 3:
- f = 1;
- break;
- }
-
- switch(hud_panel_radar_maximized_rotation)
- {
- case 0:
- teamradar_angle = view_angles.y - 90;
- break;
- default:
- teamradar_angle = 90 * hud_panel_radar_maximized_rotation;
- break;
- }
+ zoom_factor = HUD_Radar_GetZoomFactor(hud_panel_radar_maximized_zoommode);
+ teamradar_angle = HUD_Radar_GetAngle(hud_panel_radar_maximized_rotation);
}
+
if (!hud_panel_radar_maximized && !autocvar__hud_configure)
{
- switch(hud_panel_radar_zoommode)
- {
- default:
- case 0:
- f = current_zoomfraction;
- break;
- case 1:
- f = 1 - current_zoomfraction;
- break;
- case 2:
- f = 0;
- break;
- case 3:
- f = 1;
- break;
- }
-
- switch(hud_panel_radar_rotation)
- {
- case 0:
- teamradar_angle = view_angles.y - 90;
- break;
- default:
- teamradar_angle = 90 * hud_panel_radar_rotation;
- break;
- }
+ zoom_factor = HUD_Radar_GetZoomFactor(hud_panel_radar_zoommode);
+ teamradar_angle = HUD_Radar_GetAngle(hud_panel_radar_rotation);
}
vector pos, mySize;
if(bigsize > normalsize)
normalsize = bigsize;
- teamradar_size =
- f * bigsize
- + (1 - f) * normalsize;
- teamradar_origin3d_in_texcoord = teamradar_3dcoord_to_texcoord(
- f * mi_center
- + (1 - f) * view_origin);
-
- drawsetcliparea(
- pos.x,
- pos.y,
- mySize.x,
- mySize.y
- );
+ teamradar_size = zoom_factor * bigsize + (1 - zoom_factor) * normalsize;
+ teamradar_origin3d_in_texcoord = teamradar_3dcoord_to_texcoord(zoom_factor * mi_center + (1 - zoom_factor) * view_origin);
+
+ drawsetcliparea(pos.x, pos.y, mySize.x, mySize.y);
draw_teamradar_background(hud_panel_radar_foreground_alpha);