mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2025-10-30 08:01:28 +00:00
Sliding HUD
- Split HUD stuff into k_hud.c/h - V_SPLITSCREEN replaces the old function that sets V_SPLITSCREEN/V_HORZSCREEN flags system, and instead automatically moves it based on player number - V_SLIDEIN makes HUD items slide in after the intro animation.
This commit is contained in:
parent
90f44c979d
commit
3d53adaa2b
13 changed files with 3802 additions and 3835 deletions
|
|
@ -170,6 +170,7 @@ set(SRB2_CORE_GAME_SOURCES
|
||||||
k_botsearch.c
|
k_botsearch.c
|
||||||
k_respawn.c
|
k_respawn.c
|
||||||
k_grandprix.c
|
k_grandprix.c
|
||||||
|
k_hud.c
|
||||||
|
|
||||||
p_local.h
|
p_local.h
|
||||||
p_maputl.h
|
p_maputl.h
|
||||||
|
|
@ -192,6 +193,7 @@ set(SRB2_CORE_GAME_SOURCES
|
||||||
k_bot.h
|
k_bot.h
|
||||||
k_respawn.h
|
k_respawn.h
|
||||||
k_grandprix.h
|
k_grandprix.h
|
||||||
|
k_hud.h
|
||||||
)
|
)
|
||||||
|
|
||||||
if(NOT (CMAKE_CXX_COMPILER_ID MATCHES "Clang"))
|
if(NOT (CMAKE_CXX_COMPILER_ID MATCHES "Clang"))
|
||||||
|
|
|
||||||
|
|
@ -564,10 +564,11 @@ OBJS:=$(i_main_o) \
|
||||||
$(OBJDIR)/k_waypoint.o\
|
$(OBJDIR)/k_waypoint.o\
|
||||||
$(OBJDIR)/k_pathfind.o\
|
$(OBJDIR)/k_pathfind.o\
|
||||||
$(OBJDIR)/k_bheap.o \
|
$(OBJDIR)/k_bheap.o \
|
||||||
$(OBJDIR)/k_bot.o \
|
$(OBJDIR)/k_bot.o \
|
||||||
$(OBJDIR)/k_botitem.o \
|
$(OBJDIR)/k_botitem.o\
|
||||||
$(OBJDIR)/k_botsearch.o \
|
$(OBJDIR)/k_botsearch.o\
|
||||||
$(OBJDIR)/k_grandprix.o\
|
$(OBJDIR)/k_grandprix.o\
|
||||||
|
$(OBJDIR)/k_hud.o \
|
||||||
$(i_cdmus_o) \
|
$(i_cdmus_o) \
|
||||||
$(i_net_o) \
|
$(i_net_o) \
|
||||||
$(i_system_o) \
|
$(i_system_o) \
|
||||||
|
|
|
||||||
|
|
@ -9385,7 +9385,7 @@ struct {
|
||||||
{"V_WRAPY",V_WRAPY},
|
{"V_WRAPY",V_WRAPY},
|
||||||
{"V_NOSCALESTART",V_NOSCALESTART},
|
{"V_NOSCALESTART",V_NOSCALESTART},
|
||||||
{"V_SPLITSCREEN",V_SPLITSCREEN},
|
{"V_SPLITSCREEN",V_SPLITSCREEN},
|
||||||
{"V_HORZSCREEN",V_HORZSCREEN},
|
{"V_SLIDEIN",V_SLIDEIN},
|
||||||
|
|
||||||
{"V_PARAMMASK",V_PARAMMASK},
|
{"V_PARAMMASK",V_PARAMMASK},
|
||||||
{"V_SCALEPATCHMASK",V_SCALEPATCHMASK},
|
{"V_SCALEPATCHMASK",V_SCALEPATCHMASK},
|
||||||
|
|
|
||||||
|
|
@ -29,6 +29,7 @@
|
||||||
#include "../z_zone.h"
|
#include "../z_zone.h"
|
||||||
#include "../v_video.h"
|
#include "../v_video.h"
|
||||||
#include "../st_stuff.h"
|
#include "../st_stuff.h"
|
||||||
|
#include "../k_hud.h"
|
||||||
|
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
#include "../i_video.h" // for rendermode != render_glide
|
#include "../i_video.h" // for rendermode != render_glide
|
||||||
|
|
@ -194,12 +195,6 @@ void HWR_DrawFixedPatch(GLPatch_t *gpatch, fixed_t x, fixed_t y, fixed_t pscale,
|
||||||
cy -= offsety;
|
cy -= offsety;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (option & V_SPLITSCREEN)
|
|
||||||
cy += FIXED_TO_FLOAT((BASEVIDHEIGHT/2)<<FRACBITS);
|
|
||||||
|
|
||||||
if (option & V_HORZSCREEN)
|
|
||||||
cx += FIXED_TO_FLOAT((BASEVIDWIDTH/2)<<FRACBITS);
|
|
||||||
|
|
||||||
if (!(option & V_NOSCALESTART))
|
if (!(option & V_NOSCALESTART))
|
||||||
{
|
{
|
||||||
cx = cx * dupx;
|
cx = cx * dupx;
|
||||||
|
|
@ -207,35 +202,12 @@ void HWR_DrawFixedPatch(GLPatch_t *gpatch, fixed_t x, fixed_t y, fixed_t pscale,
|
||||||
|
|
||||||
if (!(option & V_SCALEPATCHMASK))
|
if (!(option & V_SCALEPATCHMASK))
|
||||||
{
|
{
|
||||||
// if it's meant to cover the whole screen, black out the rest
|
INT32 intx, inty;
|
||||||
// cx and cy are possibly *slightly* off from float maths
|
intx = (INT32)cx;
|
||||||
// This is done before here compared to software because we directly alter cx and cy to centre
|
inty = (INT32)cy;
|
||||||
if (cx >= -0.1f && cx <= 0.1f && SHORT(gpatch->width) == BASEVIDWIDTH && cy >= -0.1f && cy <= 0.1f && SHORT(gpatch->height) == BASEVIDHEIGHT)
|
K_AdjustXYWithSnap(&intx, &inty, option, dupx, dupy);
|
||||||
{
|
cx = (float)intx;
|
||||||
// Need to temporarily cache the real patch to get the colour of the top left pixel
|
cy = (float)inty;
|
||||||
patch_t *realpatch = W_CacheLumpNumPwad(gpatch->wadnum, gpatch->lumpnum, PU_STATIC);
|
|
||||||
const column_t *column = (const column_t *)((const UINT8 *)(realpatch) + LONG((realpatch)->columnofs[0]));
|
|
||||||
const UINT8 *source = (const UINT8 *)(column) + 3;
|
|
||||||
HWR_DrawFill(0, 0, BASEVIDWIDTH, BASEVIDHEIGHT, (column->topdelta == 0xff ? 31 : source[0]));
|
|
||||||
Z_Free(realpatch);
|
|
||||||
}
|
|
||||||
// centre screen
|
|
||||||
if (fabsf((float)vid.width - (float)BASEVIDWIDTH * dupx) > 1.0E-36f)
|
|
||||||
{
|
|
||||||
if (option & V_SNAPTORIGHT)
|
|
||||||
cx += ((float)vid.width - ((float)BASEVIDWIDTH * dupx));
|
|
||||||
else if (!(option & V_SNAPTOLEFT))
|
|
||||||
cx += ((float)vid.width - ((float)BASEVIDWIDTH * dupx))/2;
|
|
||||||
}
|
|
||||||
if (fabsf((float)vid.height - (float)BASEVIDHEIGHT * dupy) > 1.0E-36f)
|
|
||||||
{
|
|
||||||
if ((option & (V_SPLITSCREEN|V_SNAPTOBOTTOM)) == (V_SPLITSCREEN|V_SNAPTOBOTTOM))
|
|
||||||
cy += ((float)vid.height/2 - ((float)BASEVIDHEIGHT/2 * dupy));
|
|
||||||
else if (option & V_SNAPTOBOTTOM)
|
|
||||||
cy += ((float)vid.height - ((float)BASEVIDHEIGHT * dupy));
|
|
||||||
else if (!(option & V_SNAPTOTOP))
|
|
||||||
cy += ((float)vid.height - ((float)BASEVIDHEIGHT * dupy))/2;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -377,7 +349,7 @@ void HWR_DrawCroppedPatch(GLPatch_t *gpatch, fixed_t x, fixed_t y, fixed_t pscal
|
||||||
}
|
}
|
||||||
if (fabsf((float)vid.height - (float)BASEVIDHEIGHT * dupy) > 1.0E-36f)
|
if (fabsf((float)vid.height - (float)BASEVIDHEIGHT * dupy) > 1.0E-36f)
|
||||||
{
|
{
|
||||||
if ((option & (V_SPLITSCREEN|V_SNAPTOBOTTOM)) == (V_SPLITSCREEN|V_SNAPTOBOTTOM))
|
if ((option & V_SNAPTOBOTTOM) == V_SNAPTOBOTTOM)
|
||||||
cy += ((float)vid.height/2 - ((float)BASEVIDHEIGHT/2 * dupy));
|
cy += ((float)vid.height/2 - ((float)BASEVIDHEIGHT/2 * dupy));
|
||||||
else if (option & V_SNAPTOBOTTOM)
|
else if (option & V_SNAPTOBOTTOM)
|
||||||
cy += ((float)vid.height - ((float)BASEVIDHEIGHT * dupy));
|
cy += ((float)vid.height - ((float)BASEVIDHEIGHT * dupy));
|
||||||
|
|
@ -872,6 +844,7 @@ void HWR_DrawConsoleFill(INT32 x, INT32 y, INT32 w, INT32 h, UINT32 color, INT32
|
||||||
if (!(options & V_NOSCALESTART))
|
if (!(options & V_NOSCALESTART))
|
||||||
{
|
{
|
||||||
float dupx = (float)vid.dupx, dupy = (float)vid.dupy;
|
float dupx = (float)vid.dupx, dupy = (float)vid.dupy;
|
||||||
|
INT32 intx, inty;
|
||||||
|
|
||||||
if (x == 0 && y == 0 && w == BASEVIDWIDTH && h == BASEVIDHEIGHT)
|
if (x == 0 && y == 0 && w == BASEVIDWIDTH && h == BASEVIDHEIGHT)
|
||||||
{
|
{
|
||||||
|
|
@ -890,26 +863,11 @@ void HWR_DrawConsoleFill(INT32 x, INT32 y, INT32 w, INT32 h, UINT32 color, INT32
|
||||||
fw *= dupx;
|
fw *= dupx;
|
||||||
fh *= dupy;
|
fh *= dupy;
|
||||||
|
|
||||||
if (fabsf((float)vid.width - ((float)BASEVIDWIDTH * dupx)) > 1.0E-36f)
|
intx = (INT32)fx;
|
||||||
{
|
inty = (INT32)fy;
|
||||||
if (options & V_SNAPTORIGHT)
|
K_AdjustXYWithSnap(&intx, &inty, options, dupx, dupy);
|
||||||
fx += ((float)vid.width - ((float)BASEVIDWIDTH * dupx));
|
fx = (float)intx;
|
||||||
else if (!(options & V_SNAPTOLEFT))
|
fy = (float)inty;
|
||||||
fx += ((float)vid.width - ((float)BASEVIDWIDTH * dupx)) / 2;
|
|
||||||
}
|
|
||||||
if (fabsf((float)vid.height - ((float)BASEVIDHEIGHT * dupy)) > 1.0E-36f)
|
|
||||||
{
|
|
||||||
// same thing here
|
|
||||||
if (options & V_SNAPTOBOTTOM)
|
|
||||||
fy += ((float)vid.height - ((float)BASEVIDHEIGHT * dupy));
|
|
||||||
else if (!(options & V_SNAPTOTOP))
|
|
||||||
fy += ((float)vid.height - ((float)BASEVIDHEIGHT * dupy)) / 2;
|
|
||||||
}
|
|
||||||
if (options & V_SPLITSCREEN)
|
|
||||||
fy += ((float)BASEVIDHEIGHT * dupy)/2;
|
|
||||||
if (options & V_HORZSCREEN)
|
|
||||||
fx += ((float)BASEVIDWIDTH * dupx)/2;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (fx >= vid.width || fy >= vid.height)
|
if (fx >= vid.width || fy >= vid.height)
|
||||||
|
|
@ -980,6 +938,7 @@ void HWR_DrawFill(INT32 x, INT32 y, INT32 w, INT32 h, INT32 color)
|
||||||
if (!(color & V_NOSCALESTART))
|
if (!(color & V_NOSCALESTART))
|
||||||
{
|
{
|
||||||
float dupx = (float)vid.dupx, dupy = (float)vid.dupy;
|
float dupx = (float)vid.dupx, dupy = (float)vid.dupy;
|
||||||
|
INT32 intx, inty;
|
||||||
|
|
||||||
if (x == 0 && y == 0 && w == BASEVIDWIDTH && h == BASEVIDHEIGHT)
|
if (x == 0 && y == 0 && w == BASEVIDWIDTH && h == BASEVIDHEIGHT)
|
||||||
{
|
{
|
||||||
|
|
@ -998,26 +957,11 @@ void HWR_DrawFill(INT32 x, INT32 y, INT32 w, INT32 h, INT32 color)
|
||||||
fw *= dupx;
|
fw *= dupx;
|
||||||
fh *= dupy;
|
fh *= dupy;
|
||||||
|
|
||||||
if (fabsf((float)vid.width - (float)BASEVIDWIDTH * dupx) > 1.0E-36f)
|
intx = (INT32)fx;
|
||||||
{
|
inty = (INT32)fy;
|
||||||
if (color & V_SNAPTORIGHT)
|
K_AdjustXYWithSnap(&intx, &inty, color, dupx, dupy);
|
||||||
fx += ((float)vid.width - ((float)BASEVIDWIDTH * dupx));
|
fx = (float)intx;
|
||||||
else if (!(color & V_SNAPTOLEFT))
|
fy = (float)inty;
|
||||||
fx += ((float)vid.width - ((float)BASEVIDWIDTH * dupx)) / 2;
|
|
||||||
}
|
|
||||||
if (fabsf((float)vid.height - (float)BASEVIDHEIGHT * dupy) > 1.0E-36f)
|
|
||||||
{
|
|
||||||
// same thing here
|
|
||||||
if (color & V_SNAPTOBOTTOM)
|
|
||||||
fy += ((float)vid.height - ((float)BASEVIDHEIGHT * dupy));
|
|
||||||
else if (!(color & V_SNAPTOTOP))
|
|
||||||
fy += ((float)vid.height - ((float)BASEVIDHEIGHT * dupy)) / 2;
|
|
||||||
}
|
|
||||||
if (color & V_SPLITSCREEN)
|
|
||||||
fy += ((float)BASEVIDHEIGHT * dupy)/2;
|
|
||||||
if (color & V_HORZSCREEN)
|
|
||||||
fx += ((float)BASEVIDWIDTH * dupx)/2;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (fx >= vid.width || fy >= vid.height)
|
if (fx >= vid.width || fy >= vid.height)
|
||||||
|
|
|
||||||
3720
src/k_hud.c
Normal file
3720
src/k_hud.c
Normal file
File diff suppressed because it is too large
Load diff
28
src/k_hud.h
Normal file
28
src/k_hud.h
Normal file
|
|
@ -0,0 +1,28 @@
|
||||||
|
// SONIC ROBO BLAST 2 KART
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
// Copyright (C) 2018-2020 by Kart Krew
|
||||||
|
//
|
||||||
|
// This program is free software distributed under the
|
||||||
|
// terms of the GNU General Public License, version 2.
|
||||||
|
// See the 'LICENSE' file for more details.
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
/// \file k_hud.h
|
||||||
|
/// \brief HUD drawing functions exclusive to Kart
|
||||||
|
|
||||||
|
#include "doomtype.h"
|
||||||
|
#include "doomstat.h"
|
||||||
|
|
||||||
|
#ifndef __K_HUD__
|
||||||
|
#define __K_HUD__
|
||||||
|
|
||||||
|
#define RINGANIM_NUMFRAMES 10
|
||||||
|
#define RINGANIM_DELAYMAX 5
|
||||||
|
|
||||||
|
void K_AdjustXYWithSnap(INT32 *x, INT32 *y, UINT32 options, INT32 dupx, INT32 dupy);
|
||||||
|
const char *K_GetItemPatch(UINT8 item, boolean tiny);
|
||||||
|
void K_LoadKartHUDGraphics(void);
|
||||||
|
void K_drawKartHUD(void);
|
||||||
|
void K_drawKartFreePlay(UINT32 flashtime);
|
||||||
|
void K_drawKartTimestamp(tic_t drawtime, INT32 TX, INT32 TY, INT16 emblemmap, UINT8 mode);
|
||||||
|
|
||||||
|
#endif
|
||||||
3656
src/k_kart.c
3656
src/k_kart.c
File diff suppressed because it is too large
Load diff
|
|
@ -23,6 +23,8 @@ fixed_t K_GetKartGameSpeedScalar(SINT8 value);
|
||||||
|
|
||||||
extern consvar_t *KartItemCVars[NUMKARTRESULTS-1];
|
extern consvar_t *KartItemCVars[NUMKARTRESULTS-1];
|
||||||
|
|
||||||
|
UINT8 K_FindUseodds(player_t *player, fixed_t mashed, UINT32 pdis, UINT8 bestbumper, boolean spbrush);
|
||||||
|
INT32 K_KartGetItemOdds(UINT8 pos, SINT8 item, fixed_t mashed, boolean spbrush, boolean bot, boolean rival);
|
||||||
INT32 K_GetShieldFromItem(INT32 item);
|
INT32 K_GetShieldFromItem(INT32 item);
|
||||||
fixed_t K_GetMobjWeight(mobj_t *mobj, mobj_t *against);
|
fixed_t K_GetMobjWeight(mobj_t *mobj, mobj_t *against);
|
||||||
void K_KartBouncing(mobj_t *mobj1, mobj_t *mobj2, boolean bounce, boolean solid);
|
void K_KartBouncing(mobj_t *mobj1, mobj_t *mobj2, boolean bounce, boolean solid);
|
||||||
|
|
@ -85,12 +87,5 @@ void K_PlayPainSound(mobj_t *source);
|
||||||
void K_PlayHitEmSound(mobj_t *source);
|
void K_PlayHitEmSound(mobj_t *source);
|
||||||
void K_PlayPowerGloatSound(mobj_t *source);
|
void K_PlayPowerGloatSound(mobj_t *source);
|
||||||
|
|
||||||
const char *K_GetItemPatch(UINT8 item, boolean tiny);
|
|
||||||
INT32 K_calcSplitFlags(INT32 snapflags);
|
|
||||||
void K_LoadKartHUDGraphics(void);
|
|
||||||
void K_drawKartHUD(void);
|
|
||||||
void K_drawKartFreePlay(UINT32 flashtime);
|
|
||||||
void K_drawKartTimestamp(tic_t drawtime, INT32 TX, INT32 TY, INT16 emblemmap, UINT8 mode);
|
|
||||||
|
|
||||||
// =========================================================================
|
// =========================================================================
|
||||||
#endif // __K_KART__
|
#endif // __K_KART__
|
||||||
|
|
|
||||||
|
|
@ -28,6 +28,7 @@
|
||||||
#include "k_kart.h" // SRB2Kart
|
#include "k_kart.h" // SRB2Kart
|
||||||
#include "k_battle.h"
|
#include "k_battle.h"
|
||||||
#include "k_color.h"
|
#include "k_color.h"
|
||||||
|
#include "k_hud.h"
|
||||||
#include "d_netcmd.h" // IsPlayerAdmin
|
#include "d_netcmd.h" // IsPlayerAdmin
|
||||||
|
|
||||||
#include "lua_script.h"
|
#include "lua_script.h"
|
||||||
|
|
|
||||||
|
|
@ -56,7 +56,8 @@
|
||||||
#include "byteptr.h"
|
#include "byteptr.h"
|
||||||
#include "st_stuff.h"
|
#include "st_stuff.h"
|
||||||
#include "i_sound.h"
|
#include "i_sound.h"
|
||||||
#include "k_kart.h" // SRB2kart
|
#include "k_hud.h" // SRB2kart
|
||||||
|
#include "k_kart.h" // KartItemCVars
|
||||||
#include "k_pwrlv.h"
|
#include "k_pwrlv.h"
|
||||||
#include "d_player.h" // KITEM_ constants
|
#include "d_player.h" // KITEM_ constants
|
||||||
#include "k_color.h"
|
#include "k_color.h"
|
||||||
|
|
|
||||||
|
|
@ -28,7 +28,7 @@
|
||||||
#include "m_menu.h"
|
#include "m_menu.h"
|
||||||
#include "m_cheat.h"
|
#include "m_cheat.h"
|
||||||
#include "p_setup.h" // NiGHTS grading
|
#include "p_setup.h" // NiGHTS grading
|
||||||
#include "k_kart.h" // SRB2kart
|
#include "k_hud.h" // SRB2kart
|
||||||
|
|
||||||
//random index
|
//random index
|
||||||
#include "m_random.h"
|
#include "m_random.h"
|
||||||
|
|
@ -699,7 +699,7 @@ static inline void ST_drawRings(void) // SRB2kart - unused.
|
||||||
/*
|
/*
|
||||||
static void ST_drawLives(void) // SRB2kart - unused.
|
static void ST_drawLives(void) // SRB2kart - unused.
|
||||||
{
|
{
|
||||||
const INT32 v_splitflag = (splitscreen && stplyr == &players[displayplayers[0]] ? V_SPLITSCREEN : 0);
|
const INT32 v_splitflag = V_SPLITSCREEN;
|
||||||
|
|
||||||
if (!stplyr->skincolor)
|
if (!stplyr->skincolor)
|
||||||
return; // Just joined a server, skin isn't loaded yet!
|
return; // Just joined a server, skin isn't loaded yet!
|
||||||
|
|
@ -1920,11 +1920,11 @@ static void ST_overlayDrawer(void)
|
||||||
|
|
||||||
INT32 y = (stplyr == &players[displayplayers[0]]) ? 4 : BASEVIDHEIGHT/2-12;
|
INT32 y = (stplyr == &players[displayplayers[0]]) ? 4 : BASEVIDHEIGHT/2-12;
|
||||||
sprintf(name, "VIEWPOINT: %s", player_names[stplyr-players]);
|
sprintf(name, "VIEWPOINT: %s", player_names[stplyr-players]);
|
||||||
V_DrawRightAlignedThinString(BASEVIDWIDTH-40, y, V_HUDTRANSHALF|V_ALLOWLOWERCASE|K_calcSplitFlags(V_SNAPTOTOP|V_SNAPTOBOTTOM|V_SNAPTORIGHT), name);
|
V_DrawRightAlignedThinString(BASEVIDWIDTH-40, y, V_HUDTRANSHALF|V_ALLOWLOWERCASE|V_SNAPTOTOP|V_SNAPTOBOTTOM|V_SNAPTORIGHT|V_SPLITSCREEN, name);
|
||||||
}
|
}
|
||||||
else if (r_splitscreen)
|
else if (r_splitscreen)
|
||||||
{
|
{
|
||||||
V_DrawCenteredThinString((vid.width/vid.dupx)/4, BASEVIDHEIGHT/2 - 12, V_HUDTRANSHALF|V_ALLOWLOWERCASE|K_calcSplitFlags(V_SNAPTOBOTTOM|V_SNAPTOLEFT), player_names[stplyr-players]);
|
V_DrawCenteredThinString((vid.width/vid.dupx)/4, BASEVIDHEIGHT/2 - 12, V_HUDTRANSHALF|V_ALLOWLOWERCASE|V_SNAPTOBOTTOM|V_SNAPTOLEFT|V_SPLITSCREEN, player_names[stplyr-players]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -2000,16 +2000,15 @@ static void ST_overlayDrawer(void)
|
||||||
// SRB2kart: changed positions & text
|
// SRB2kart: changed positions & text
|
||||||
if (r_splitscreen)
|
if (r_splitscreen)
|
||||||
{
|
{
|
||||||
INT32 splitflags = K_calcSplitFlags(0);
|
V_DrawThinString(2, (BASEVIDHEIGHT/2)-20, V_YELLOWMAP|V_HUDTRANSHALF|V_SPLITSCREEN, M_GetText("- SPECTATING -"));
|
||||||
V_DrawThinString(2, (BASEVIDHEIGHT/2)-20, V_YELLOWMAP|V_HUDTRANSHALF|splitflags, M_GetText("- SPECTATING -"));
|
V_DrawThinString(2, (BASEVIDHEIGHT/2)-10, V_HUDTRANSHALF|V_SPLITSCREEN, itemtxt);
|
||||||
V_DrawThinString(2, (BASEVIDHEIGHT/2)-10, V_HUDTRANSHALF|splitflags, itemtxt);
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
V_DrawString(2, BASEVIDHEIGHT-40, V_HUDTRANSHALF|V_YELLOWMAP, M_GetText("- SPECTATING -"));
|
V_DrawString(2, BASEVIDHEIGHT-40, V_HUDTRANSHALF|V_SPLITSCREEN|V_YELLOWMAP, M_GetText("- SPECTATING -"));
|
||||||
V_DrawString(2, BASEVIDHEIGHT-30, V_HUDTRANSHALF, itemtxt);
|
V_DrawString(2, BASEVIDHEIGHT-30, V_HUDTRANSHALF|V_SPLITSCREEN, itemtxt);
|
||||||
V_DrawString(2, BASEVIDHEIGHT-20, V_HUDTRANSHALF, M_GetText("Accelerate - Float"));
|
V_DrawString(2, BASEVIDHEIGHT-20, V_HUDTRANSHALF|V_SPLITSCREEN, M_GetText("Accelerate - Float"));
|
||||||
V_DrawString(2, BASEVIDHEIGHT-10, V_HUDTRANSHALF, M_GetText("Brake - Sink"));
|
V_DrawString(2, BASEVIDHEIGHT-10, V_HUDTRANSHALF|V_SPLITSCREEN, M_GetText("Brake - Sink"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -26,6 +26,8 @@
|
||||||
#include "m_random.h"
|
#include "m_random.h"
|
||||||
#include "doomstat.h"
|
#include "doomstat.h"
|
||||||
|
|
||||||
|
#include "k_hud.h"
|
||||||
|
|
||||||
#ifdef HWRENDER
|
#ifdef HWRENDER
|
||||||
#include "hardware/hw_main.h"
|
#include "hardware/hw_main.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
@ -608,12 +610,6 @@ void V_DrawFixedPatch(fixed_t x, fixed_t y, fixed_t pscale, INT32 scrn, patch_t
|
||||||
y -= offsety;
|
y -= offsety;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (scrn & V_SPLITSCREEN)
|
|
||||||
y += (BASEVIDHEIGHT/2)<<FRACBITS;
|
|
||||||
|
|
||||||
if (scrn & V_HORZSCREEN)
|
|
||||||
x += (BASEVIDWIDTH/2)<<FRACBITS;
|
|
||||||
|
|
||||||
desttop = screens[scrn&V_PARAMMASK];
|
desttop = screens[scrn&V_PARAMMASK];
|
||||||
|
|
||||||
if (!desttop)
|
if (!desttop)
|
||||||
|
|
@ -637,38 +633,7 @@ void V_DrawFixedPatch(fixed_t x, fixed_t y, fixed_t pscale, INT32 scrn, patch_t
|
||||||
// Center it if necessary
|
// Center it if necessary
|
||||||
if (!(scrn & V_SCALEPATCHMASK))
|
if (!(scrn & V_SCALEPATCHMASK))
|
||||||
{
|
{
|
||||||
// if it's meant to cover the whole screen, black out the rest
|
K_AdjustXYWithSnap(&x, &y, scrn, dupx, dupy);
|
||||||
// BAD, BAD, BAD, FUCK OFF, STOP, EW, AAAAAAA
|
|
||||||
// This does NOT account for transparent pixels
|
|
||||||
/*if (x == 0 && FixedMul(SHORT(patch->width)<<FRACBITS, pscale)>>FRACBITS == BASEVIDWIDTH
|
|
||||||
&& y == 0 && FixedMul(SHORT(patch->height)<<FRACBITS, pscale)>>FRACBITS == BASEVIDHEIGHT)
|
|
||||||
{
|
|
||||||
column = (const column_t *)((const UINT8 *)(patch) + LONG(patch->columnofs[0]));
|
|
||||||
source = (const UINT8 *)(column) + 3;
|
|
||||||
V_DrawFill(0, 0, BASEVIDWIDTH, BASEVIDHEIGHT, (column->topdelta == 0xff ? 31 : source[0]));
|
|
||||||
}*/
|
|
||||||
|
|
||||||
if (vid.width != BASEVIDWIDTH * dupx)
|
|
||||||
{
|
|
||||||
// dupx adjustments pretend that screen width is BASEVIDWIDTH * dupx,
|
|
||||||
// so center this imaginary screen
|
|
||||||
if ((scrn & (V_HORZSCREEN|V_SNAPTOLEFT)) == (V_HORZSCREEN|V_SNAPTOLEFT))
|
|
||||||
x += (vid.width/2 - (BASEVIDWIDTH/2 * dupx));
|
|
||||||
else if (scrn & V_SNAPTORIGHT)
|
|
||||||
x += (vid.width - (BASEVIDWIDTH * dupx));
|
|
||||||
else if (!(scrn & V_SNAPTOLEFT))
|
|
||||||
x += (vid.width - (BASEVIDWIDTH * dupx)) / 2;
|
|
||||||
}
|
|
||||||
if (vid.height != BASEVIDHEIGHT * dupy)
|
|
||||||
{
|
|
||||||
// same thing here
|
|
||||||
if ((scrn & (V_SPLITSCREEN|V_SNAPTOTOP)) == (V_SPLITSCREEN|V_SNAPTOTOP))
|
|
||||||
y += (vid.height/2 - (BASEVIDHEIGHT/2 * dupy));
|
|
||||||
else if (scrn & V_SNAPTOBOTTOM)
|
|
||||||
y += (vid.height - (BASEVIDHEIGHT * dupy));
|
|
||||||
else if (!(scrn & V_SNAPTOTOP))
|
|
||||||
y += (vid.height - (BASEVIDHEIGHT * dupy)) / 2;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
desttop += (y*vid.width) + x;
|
desttop += (y*vid.width) + x;
|
||||||
|
|
@ -923,31 +888,12 @@ void V_DrawFill(INT32 x, INT32 y, INT32 w, INT32 h, INT32 c)
|
||||||
h *= dupy;
|
h *= dupy;
|
||||||
|
|
||||||
// Center it if necessary
|
// Center it if necessary
|
||||||
if (vid.width != BASEVIDWIDTH * dupx)
|
K_AdjustXYWithSnap(&x, &y, c, dupx, dupy);
|
||||||
{
|
|
||||||
// dupx adjustments pretend that screen width is BASEVIDWIDTH * dupx,
|
|
||||||
// so center this imaginary screen
|
|
||||||
if (c & V_SNAPTORIGHT)
|
|
||||||
x += (vid.width - (BASEVIDWIDTH * dupx));
|
|
||||||
else if (!(c & V_SNAPTOLEFT))
|
|
||||||
x += (vid.width - (BASEVIDWIDTH * dupx)) / 2;
|
|
||||||
}
|
|
||||||
if (vid.height != BASEVIDHEIGHT * dupy)
|
|
||||||
{
|
|
||||||
// same thing here
|
|
||||||
if (c & V_SNAPTOBOTTOM)
|
|
||||||
y += (vid.height - (BASEVIDHEIGHT * dupy));
|
|
||||||
else if (!(c & V_SNAPTOTOP))
|
|
||||||
y += (vid.height - (BASEVIDHEIGHT * dupy)) / 2;
|
|
||||||
}
|
|
||||||
if (c & V_SPLITSCREEN)
|
|
||||||
y += (BASEVIDHEIGHT * dupy)/2;
|
|
||||||
if (c & V_HORZSCREEN)
|
|
||||||
x += (BASEVIDWIDTH * dupx)/2;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (x >= vid.width || y >= vid.height)
|
if (x >= vid.width || y >= vid.height)
|
||||||
return; // off the screen
|
return; // off the screen
|
||||||
|
|
||||||
if (x < 0)
|
if (x < 0)
|
||||||
{
|
{
|
||||||
w += x;
|
w += x;
|
||||||
|
|
@ -1151,27 +1097,7 @@ void V_DrawDiag(INT32 x, INT32 y, INT32 wh, INT32 c)
|
||||||
wh *= dupx;
|
wh *= dupx;
|
||||||
|
|
||||||
// Center it if necessary
|
// Center it if necessary
|
||||||
if (vid.width != BASEVIDWIDTH * dupx)
|
K_AdjustXYWithSnap(&x, &y, c, dupx, dupy);
|
||||||
{
|
|
||||||
// dupx adjustments pretend that screen width is BASEVIDWIDTH * dupx,
|
|
||||||
// so center this imaginary screen
|
|
||||||
if (c & V_SNAPTORIGHT)
|
|
||||||
x += (vid.width - (BASEVIDWIDTH * dupx));
|
|
||||||
else if (!(c & V_SNAPTOLEFT))
|
|
||||||
x += (vid.width - (BASEVIDWIDTH * dupx)) / 2;
|
|
||||||
}
|
|
||||||
if (vid.height != BASEVIDHEIGHT * dupy)
|
|
||||||
{
|
|
||||||
// same thing here
|
|
||||||
if (c & V_SNAPTOBOTTOM)
|
|
||||||
y += (vid.height - (BASEVIDHEIGHT * dupy));
|
|
||||||
else if (!(c & V_SNAPTOTOP))
|
|
||||||
y += (vid.height - (BASEVIDHEIGHT * dupy)) / 2;
|
|
||||||
}
|
|
||||||
if (c & V_SPLITSCREEN)
|
|
||||||
y += (BASEVIDHEIGHT * dupy)/2;
|
|
||||||
if (c & V_HORZSCREEN)
|
|
||||||
x += (BASEVIDWIDTH * dupx)/2;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (x >= vid.width || y >= vid.height)
|
if (x >= vid.width || y >= vid.height)
|
||||||
|
|
|
||||||
|
|
@ -129,9 +129,9 @@ extern UINT8 hudtrans;
|
||||||
#define V_WRAPX 0x08000000 // Don't clamp texture on X (for HW mode)
|
#define V_WRAPX 0x08000000 // Don't clamp texture on X (for HW mode)
|
||||||
#define V_WRAPY 0x10000000 // Don't clamp texture on Y (for HW mode)
|
#define V_WRAPY 0x10000000 // Don't clamp texture on Y (for HW mode)
|
||||||
|
|
||||||
#define V_NOSCALESTART 0x20000000 // don't scale x, y, start coords
|
#define V_NOSCALESTART 0x20000000 // don't scale x, y, start coords
|
||||||
#define V_SPLITSCREEN 0x40000000
|
#define V_SPLITSCREEN 0x40000000 // Add half of screen width or height automatically depending on player number
|
||||||
#define V_HORZSCREEN 0x80000000
|
#define V_SLIDEIN 0x80000000 // Slide in from the sides on level load, depending on snap flags
|
||||||
|
|
||||||
// defines for old functions
|
// defines for old functions
|
||||||
#define V_DrawPatch(x,y,s,p) V_DrawFixedPatch((x)<<FRACBITS, (y)<<FRACBITS, FRACUNIT, s|V_NOSCALESTART|V_NOSCALEPATCH, p, NULL)
|
#define V_DrawPatch(x,y,s,p) V_DrawFixedPatch((x)<<FRACBITS, (y)<<FRACBITS, FRACUNIT, s|V_NOSCALESTART|V_NOSCALEPATCH, p, NULL)
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue