// sbar.c -- status bar code
#include "quakedef.h"
-#include "time.h"
+#include <time.h>
#include "cl_collision.h"
#include "csprogs.h"
//MED 01/04/97 added hipnotic items array
cachepic_t *hsb_items[2];
-//GAME_SOM stuff:
-cachepic_t *somsb_health;
-cachepic_t *somsb_ammo[4];
-cachepic_t *somsb_armor[3];
-
cachepic_t *zymsb_crosshair_center;
cachepic_t *zymsb_crosshair_line;
cachepic_t *zymsb_crosshair_health;
if (gamemode == GAME_DELUXEQUAKE || gamemode == GAME_BLOODOMNICIDE)
{
}
- else if (gamemode == GAME_SOM)
- {
- sb_disc = Draw_CachePic_Flags ("gfx/disc", CACHEPICFLAG_QUIET);
-
- for (i = 0;i < 10;i++)
- sb_nums[0][i] = Draw_CachePic_Flags (va(vabuf, sizeof(vabuf), "gfx/num_%i",i), CACHEPICFLAG_QUIET);
-
- somsb_health = Draw_CachePic_Flags ("gfx/hud_health", CACHEPICFLAG_QUIET);
- somsb_ammo[0] = Draw_CachePic_Flags ("gfx/sb_shells", CACHEPICFLAG_QUIET);
- somsb_ammo[1] = Draw_CachePic_Flags ("gfx/sb_nails", CACHEPICFLAG_QUIET);
- somsb_ammo[2] = Draw_CachePic_Flags ("gfx/sb_rocket", CACHEPICFLAG_QUIET);
- somsb_ammo[3] = Draw_CachePic_Flags ("gfx/sb_cells", CACHEPICFLAG_QUIET);
- somsb_armor[0] = Draw_CachePic_Flags ("gfx/sb_armor1", CACHEPICFLAG_QUIET);
- somsb_armor[1] = Draw_CachePic_Flags ("gfx/sb_armor2", CACHEPICFLAG_QUIET);
- somsb_armor[2] = Draw_CachePic_Flags ("gfx/sb_armor3", CACHEPICFLAG_QUIET);
- }
- else if (gamemode == GAME_NEXUIZ)
+ else if (IS_OLDNEXUIZ_DERIVED(gamemode))
{
for (i = 0;i < 10;i++)
sb_nums[0][i] = Draw_CachePic_Flags (va(vabuf, sizeof(vabuf), "gfx/num_%i",i), CACHEPICFLAG_QUIET);
sb_scorebar = Draw_CachePic_Flags ("gfx/scorebar", CACHEPICFLAG_QUIET);
//MED 01/04/97 added new hipnotic weapons
- if (gamemode == GAME_HIPNOTIC)
+ if (gamemode == GAME_HIPNOTIC || gamemode == GAME_QUOTH)
{
hsb_weapons[0][0] = Draw_CachePic_Flags ("gfx/inv_laser", CACHEPICFLAG_QUIET);
hsb_weapons[0][1] = Draw_CachePic_Flags ("gfx/inv_mjolnir", CACHEPICFLAG_QUIET);
static int Sbar_IsTeammatch(void)
{
// currently only nexuiz uses the team score board
- return ((gamemode == GAME_NEXUIZ)
+ return (IS_OLDNEXUIZ_DERIVED(gamemode)
&& (teamplay.integer > 0));
}
int minutes, seconds, tens, units;
int l;
- if (gamemode != GAME_NEXUIZ) {
+ if (IS_OLDNEXUIZ_DERIVED(gamemode)) {
dpsnprintf (str, sizeof(str), "Monsters:%3i /%3i", cl.stats[STAT_MONSTERS], cl.stats[STAT_TOTALMONSTERS]);
Sbar_DrawString (8, 4, str);
Sbar_DrawString (184, 4, str);
// draw level name
- if (gamemode == GAME_NEXUIZ) {
+ if (IS_OLDNEXUIZ_DERIVED(gamemode)) {
l = (int) strlen (cl.worldname);
Sbar_DrawString (232 - l*4, 12, cl.worldname);
} else {
// MED 01/04/97
// hipnotic weapons
- if (gamemode == GAME_HIPNOTIC)
+ if (gamemode == GAME_HIPNOTIC || gamemode == GAME_QUOTH)
{
int grenadeflashing=0;
for (i=0 ; i<4 ; i++)
if (cl.stats[STAT_ITEMS] & (1<<(17+i)))
{
//MED 01/04/97 changed keys
- if (gamemode != GAME_HIPNOTIC || (i>1))
+ if (!(gamemode == GAME_HIPNOTIC || gamemode == GAME_QUOTH) || (i>1))
Sbar_DrawPic (192 + i*16, -16, sb_items[i]);
}
//MED 01/04/97 added hipnotic items
// hipnotic items
- if (gamemode == GAME_HIPNOTIC)
+ if (gamemode == GAME_HIPNOTIC || gamemode == GAME_QUOTH)
{
for (i=0 ; i<2 ; i++)
if (cl.stats[STAT_ITEMS] & (1<<(24+i)))
{
default:
case 1:
- if(gamemode == GAME_NEXUIZ || gamemode == GAME_XONOTIC)
+ if(IS_NEXUIZ_DERIVED(gamemode))
*unit = "in/s";
else
*unit = "qu/s";
case 2:
*unit = "m/s";
*conversion_factor = 0.0254;
- if(gamemode != GAME_NEXUIZ && gamemode != GAME_XONOTIC) *conversion_factor *= 1.5;
+ if(!IS_NEXUIZ_DERIVED(gamemode))
+ *conversion_factor *= 1.5;
// 1qu=1.5in is for non-Nexuiz/Xonotic only - Nexuiz/Xonotic players are overly large, but 1qu=1in fixes that
break;
case 3:
*unit = "km/h";
*conversion_factor = 0.0254 * 3.6;
- if(gamemode != GAME_NEXUIZ && gamemode != GAME_XONOTIC) *conversion_factor *= 1.5;
+ if(!IS_NEXUIZ_DERIVED(gamemode))
+ *conversion_factor *= 1.5;
break;
case 4:
*unit = "mph";
*conversion_factor = 0.0254 * 3.6 * 0.6213711922;
- if(gamemode != GAME_NEXUIZ && gamemode != GAME_XONOTIC) *conversion_factor *= 1.5;
+ if(!IS_NEXUIZ_DERIVED(gamemode))
+ *conversion_factor *= 1.5;
break;
case 5:
*unit = "knots";
*conversion_factor = 0.0254 * 1.943844492; // 1 m/s = 1.943844492 knots, because 1 knot = 1.852 km/h
- if(gamemode != GAME_NEXUIZ && gamemode != GAME_XONOTIC) *conversion_factor *= 1.5;
+ if(!IS_NEXUIZ_DERIVED(gamemode))
+ *conversion_factor *= 1.5;
break;
}
}
}
if (showtex.integer)
{
+ vec3_t org;
vec3_t dest;
+ vec3_t temp;
trace_t trace;
- VectorMA(r_refdef.view.origin, 65536, r_refdef.view.forward, dest);
+ Matrix4x4_OriginFromMatrix(&r_refdef.view.matrix, org);
+ VectorSet(temp, 65536, 0, 0);
+ Matrix4x4_Transform(&r_refdef.view.matrix, temp, dest);
trace.hittexture = NULL; // to make sure
// TODO change this trace to be stopped by anything "visible" (i.e. with a drawsurface), but not stuff like weapclip
// probably needs adding a new SUPERCONTENTS type
- trace = CL_TraceLine(r_refdef.view.origin, dest, MOVE_NORMAL, NULL, SUPERCONTENTS_SOLID, true, false, NULL, true, true);
+ trace = CL_TraceLine(org, dest, MOVE_NORMAL, NULL, SUPERCONTENTS_SOLID, 0, collision_extendmovelength.value, true, false, NULL, true, true);
if(trace.hittexture)
strlcpy(texstring, trace.hittexture->name, sizeof(texstring));
else
Sbar_DrawScoreboard ();
else if (cl.intermission == 1)
{
- if(gamemode == GAME_NEXUIZ) // display full scoreboard (that is, show scores + map name)
+ if(IS_OLDNEXUIZ_DERIVED(gamemode)) // display full scoreboard (that is, show scores + map name)
{
Sbar_DrawScoreboard();
return;
else if (gamemode == GAME_DELUXEQUAKE)
{
}
- else if (gamemode == GAME_SOM)
- {
- if (sb_showscores || (cl.stats[STAT_HEALTH] <= 0 && cl_deathscoreboard.integer))
- Sbar_DrawScoreboard ();
- else if (sb_lines)
- {
- // this is the top left of the sbar area
- sbar_x = 0;
- sbar_y = vid_conheight.integer - 24*3;
-
- // armor
- if (cl.stats[STAT_ARMOR])
- {
- if (cl.stats[STAT_ITEMS] & IT_ARMOR3)
- Sbar_DrawPic(0, 0, somsb_armor[2]);
- else if (cl.stats[STAT_ITEMS] & IT_ARMOR2)
- Sbar_DrawPic(0, 0, somsb_armor[1]);
- else if (cl.stats[STAT_ITEMS] & IT_ARMOR1)
- Sbar_DrawPic(0, 0, somsb_armor[0]);
- Sbar_DrawNum(24, 0, cl.stats[STAT_ARMOR], 3, cl.stats[STAT_ARMOR] <= 25);
- }
-
- // health
- Sbar_DrawPic(0, 24, somsb_health);
- Sbar_DrawNum(24, 24, cl.stats[STAT_HEALTH], 3, cl.stats[STAT_HEALTH] <= 25);
-
- // ammo icon
- if (cl.stats[STAT_ITEMS] & IT_SHELLS)
- Sbar_DrawPic(0, 48, somsb_ammo[0]);
- else if (cl.stats[STAT_ITEMS] & IT_NAILS)
- Sbar_DrawPic(0, 48, somsb_ammo[1]);
- else if (cl.stats[STAT_ITEMS] & IT_ROCKETS)
- Sbar_DrawPic(0, 48, somsb_ammo[2]);
- else if (cl.stats[STAT_ITEMS] & IT_CELLS)
- Sbar_DrawPic(0, 48, somsb_ammo[3]);
- Sbar_DrawNum(24, 48, cl.stats[STAT_AMMO], 3, false);
- if (cl.stats[STAT_SHELLS])
- Sbar_DrawNum(24 + 3*24, 48, cl.stats[STAT_SHELLS], 1, true);
- }
- }
- else if (gamemode == GAME_NEXUIZ)
+ else if (IS_OLDNEXUIZ_DERIVED(gamemode))
{
if (sb_showscores || (cl.stats[STAT_HEALTH] <= 0 && cl_deathscoreboard.integer))
{
// keys (hipnotic only)
//MED 01/04/97 moved keys here so they would not be overwritten
- if (gamemode == GAME_HIPNOTIC)
+ if (gamemode == GAME_HIPNOTIC || gamemode == GAME_QUOTH)
{
if (cl.stats[STAT_ITEMS] & IT_KEY1)
Sbar_DrawPic (209, 3, sb_items[0]);
xmin = (int) (vid_conwidth.integer - (16 + 25) * 8 * FONT_SBAR->maxwidth) / 2; // 16 characters until name, then we assume 25 character names (they can be longer but usually aren't)
xmax = vid_conwidth.integer - xmin;
- if(gamemode == GAME_NEXUIZ)
+ if(IS_OLDNEXUIZ_DERIVED(gamemode))
DrawQ_Pic (xmin - 8, ymin - 8, 0, xmax-xmin+1 + 2*8, ymax-ymin+1 + 2*8, 0, 0, 0, sbar_alpha_bg.value, 0);
DrawQ_Pic ((vid_conwidth.integer - sb_ranking->width)/2, 8, sb_ranking, 0, 0, 1, 1, 1, 1 * sbar_alpha_fg.value, 0);
if(cl.stats[STAT_TOTALSECRETS])
{
Sbar_DrawNum (160, 104, cl.stats[STAT_SECRETS], 3, 0);
- if (gamemode != GAME_NEXUIZ)
+ if (!IS_OLDNEXUIZ_DERIVED(gamemode))
Sbar_DrawPic (232, 104, sb_slash);
Sbar_DrawNum (240, 104, cl.stats[STAT_TOTALSECRETS], 3, 0);
}
if(cl.stats[STAT_TOTALMONSTERS])
{
Sbar_DrawNum (160, 144, cl.stats[STAT_MONSTERS], 3, 0);
- if (gamemode != GAME_NEXUIZ)
+ if (!IS_OLDNEXUIZ_DERIVED(gamemode))
Sbar_DrawPic (232, 144, sb_slash);
Sbar_DrawNum (240, 144, cl.stats[STAT_TOTALMONSTERS], 3, 0);
}