mi = '-16 -16 -16';
ma = '16 16 16';
break;
+ case WEP_SEEKER: // projectile has a size!
+ mi = '-2 -2 -2';
+ ma = '2 2 2';
+ break;
case WEP_ELECTRO: // projectile has a size!
mi = '0 0 -3';
ma = '0 0 -3';
void CSQC_common_hud(void);
-void CSQC_kh_hud(void);
-void CSQC_ctf_hud(void);
void PostInit(void);
void CSQC_Demo_Camera();
float HUD_WouldDrawScoreboard ();
float view_set;
float camera_mode;
+float reticle_type;
string NextFrameCommand;
void CSQC_SPIDER_HUD();
void CSQC_RAPTOR_HUD();
+vector freeze_pmove_org, freeze_input_angles;
+
void CSQC_UpdateView(float w, float h)
{
entity e;
float f, i, j;
vector v, vo;
+ vector reticle_pos, reticle_size;
+
WaypointSprite_Load();
if(spectatee_status)
vo = '0 0 1' * getstati(STAT_VIEWHEIGHT);
warpzone_fixview_origin = pmove_org + vo;
- warpzone_fixview_angles = input_angles;
+ warpzone_fixview_cl_viewangles = input_angles;
+ warpzone_fixview_angles = view_angles;
WarpZone_FixView();
pmove_org = warpzone_fixview_origin - vo;
- input_angles = warpzone_fixview_angles;
+ input_angles = warpzone_fixview_cl_viewangles;
+ view_angles = warpzone_fixview_angles;
+
+ if(cvar("cl_lockview") || autocvar__hud_configure)
+ {
+ pmove_org = freeze_pmove_org;
+ input_angles = view_angles = freeze_input_angles;
+ R_SetView(VF_ORIGIN, pmove_org + vo);
+ R_SetView(VF_ANGLES, view_angles);
+ //R_SetView(VF_CL_VIEWANGLES, input_angles);
+ }
+ freeze_pmove_org = pmove_org;
+ freeze_input_angles = input_angles;
// Render the Scene
if(!intermission || !view_set)
view_set = 1;
}
- hudconf_active = cvar("_hud_configure");
- if(hudconf_active)
- R_SetView(VF_ANGLES, self.angles); // TODO: this should freeze the view as it is, not change it to '0 0 0' or whatever it currently does...
-
vid_width = w;
vid_height = h;
}
#endif
+ TargetMusic_Advance();
Fog_Force();
drawframetime = max(0.000001, time - drawtime);
if(intermission && !isdemo() && !(calledhooks & HOOK_END))
if(calledhooks & HOOK_START)
{
- localcmd("\ncl_hook_gameend;");
+ localcmd("\ncl_hook_gameend\n");
calledhooks |= HOOK_END;
}
}
}
- hud_alpha_fg = cvar_or("hud_alpha_fg", 1) * (1 - cvar("_menu_alpha"));
- hud_currentammo = cvar("hud_showcurrentammo");
- hud_hudselector = cvar("hud_hudselector");
hud_accuracy_hud = cvar_or("hud_accuracy_hud", 1);
ColorTranslateMode = cvar("cl_stripcolorcodes");
activeweapon = getstati(STAT_SWITCHWEAPON);
if(last_weapon != activeweapon) {
weapontime = time;
last_weapon = activeweapon;
+
+ entity e;
+ e = get_weaponinfo(activeweapon);
+ if(e.netname != "")
+ localcmd(strcat("\ncl_hook_activeweapon ", e.netname), "\n");
+ else
+ localcmd("\ncl_hook_activeweapon none\n");
}
// ALWAYS Clear Current Scene First
// next R_RenderScene call
drawstring('0 0 0', "", '1 1 0', '1 1 1', 0, 0);
+ // Draw the aiming reticle for weapons that use it
+ // reticle_type is changed to the item we are zooming / aiming with, to decide which reticle to use
+ // It must be a persisted float for fading out to work properly (you let go of the zoom button for
+ // the view to go back to normal, so reticle_type would become 0 as we fade out)
+ if(spectatee_status || getstati(STAT_HEALTH) <= 0)
+ reticle_type = 0; // prevent reticle from showing during the respawn zoom effect or for spectators
+ else if(button_zoom)
+ reticle_type = 1; // normal zoom
+ else if(activeweapon == WEP_NEX && button_attack2)
+ reticle_type = 2; // nex zoom
+
+ if(cvar("cl_reticle_stretch"))
+ {
+ reticle_size_x = vid_conwidth;
+ reticle_size_y = vid_conheight;
+ reticle_pos_x = 0;
+ reticle_pos_y = 0;
+ }
+ else
+ {
+ reticle_size_x = max(vid_conwidth, vid_conheight);
+ reticle_size_y = max(vid_conwidth, vid_conheight);
+ reticle_pos_x = (vid_conwidth - reticle_size_x) / 2;
+ reticle_pos_y = (vid_conheight - reticle_size_y) / 2;
+ }
+
+ if(cvar("cl_reticle_item_normal"))
+ {
+ precache_pic("gfx/reticle_normal");
+ if(reticle_type == 1 && current_zoomfraction)
+ drawpic(reticle_pos, "gfx/reticle_normal", reticle_size, '1 1 1', current_zoomfraction * cvar("cl_reticle_item_normal"), DRAWFLAG_NORMAL);
+ }
+ if(cvar("cl_reticle_item_nex"))
+ {
+ precache_pic("gfx/reticle_nex");
+ if(reticle_type == 2 && current_zoomfraction)
+ drawpic(reticle_pos, "gfx/reticle_nex", reticle_size, '1 1 1', current_zoomfraction * cvar("cl_reticle_item_nex"), DRAWFLAG_NORMAL);
+ }
+
// Draw the mouse cursor
// NOTE: drawpic must happen after R_RenderScene for some reason
//drawpic(getmousepos(), "gfx/cursor.tga", '11 14 0', '1 1 1', 1, 0);
CSQC_common_hud();
// crosshair goes VERY LAST
- if(!scoreboard_active && !ons_showmap && !camera_active && !hudconf_active) {
+ if(!scoreboard_active && !camera_active) {
// TrueAim check
float shottype;
float bullets, ring_scale;
bullets = 0;
#define CROSSHAIR_DRAW_RING(i,j,sz,wcross_name,wcross_alpha) \
- drawpic(wcross_origin - ('0.5 0 0' * (sz * wcross_size_x * ring_scale + i * wcross_blur) + '0 0.5 0' * (sz * wcross_size_y * ring_scale + j * wcross_blur)), strcat("gfx/hud/rifle_ring_", ftos(bullets)), sz * wcross_size * ring_scale, wcross_color, wcross_alpha, DRAWFLAG_NORMAL)
+ drawpic(wcross_origin - ('0.5 0 0' * (sz * wcross_size_x * ring_scale + i * wcross_blur) + '0 0.5 0' * (sz * wcross_size_y * ring_scale + j * wcross_blur)), strcat("gfx/hud/", cvar_string("hud_skin"), "/rifle_ring_", ftos(bullets)), sz * wcross_size * ring_scale, wcross_color, wcross_alpha, DRAWFLAG_NORMAL)
#define CROSSHAIR_DO_BLUR(M,sz,wcross_name,wcross_alpha) \
do \
cvar_set("vid_conheight", h0);
}
- if(hudconf_active)
+ if(autocvar__hud_configure)
HUD_Panel_Mouse();
// be safe against triggerbots until everyone has the fixed engine
// this call is meant to overwrite the trace globals by something
}
*/
- if (sb_showscores)
+ if (scoreboard_showscores)
{
HUD_DrawScoreboard();
HUD_DrawCenterPrint();
#define raptor_g2 "gfx/vehicles/raptor_bombs.tga"
#define raptor_s "gfx/vehicles/shiled.tga"
-#define spider_a1 "gfx/hud/sb_rocket.tga"
-#define spider_a2 "gfx/sb_bullets.tga"
-
void CSQC_RAPTOR_HUD()
{
float rockets, reload, heat, hp, shield, energy;
drawpic(hudloc, raptor_g2, picsize, '1 1 1' * reload + '1 0 0' * (1 - reload), 1, DRAWFLAG_NORMAL);
- if (sb_showscores)
+ if (scoreboard_showscores)
{
HUD_DrawScoreboard();
HUD_DrawCenterPrint();
- if (sb_showscores)
+ if (scoreboard_showscores)
{
HUD_DrawScoreboard();
HUD_DrawCenterPrint();
switch(hud)
{
case HUD_NORMAL:
- // is this needed?
- //HUD_UpdatePlayerTeams();
- if (intermission == 2) // map voting screen
- {
- if(sb_showaccuracy && spectatee_status != -1) {
- HUD_DrawAccuracyStats();
- }
- else if(sb_showscores) {
- HUD_DrawScoreboard();
- }
- else
- HUD_FinaleOverlay();
+ // hud first
+ HUD_Main();
+ // scoreboard/accuracy
+ if (intermission == 2 && !scoreboard_showaccuracy && !scoreboard_showscores) // map voting screen
+ {
+ HUD_FinaleOverlay();
HUD_Reset();
}
- else if (sb_showscores || sb_showaccuracy || sb_showscores_force || getstati(STAT_HEALTH) <= 0 || intermission == 1)
- {
- if(sb_showaccuracy && spectatee_status != -1)
- HUD_DrawAccuracyStats();
- else
- HUD_DrawScoreboard();
+ else if(scoreboard_showaccuracy && spectatee_status != -1)
+ HUD_DrawAccuracyStats();
+ else
+ HUD_DrawScoreboard();
+ if (scoreboard_showscores || scoreboard_showaccuracy || scoreboard_showscores_force || getstati(STAT_HEALTH) <= 0 || intermission == 1)
HUD_Reset();
- }
- HUD_Main();
+
break;
case HUD_SPIDERBOT: