mirror of
https://git.do.srb2.org/KartKrew/Kart-Public.git
synced 2024-12-25 20:01:04 +00:00
Fix up more stuff
Now in a mergable state
This commit is contained in:
parent
1f61397545
commit
a187656a8f
15 changed files with 98 additions and 148 deletions
|
@ -436,6 +436,8 @@ static void D_Display(void)
|
|||
objectsdrawn = 0;
|
||||
}
|
||||
|
||||
viewssnum = i;
|
||||
|
||||
#ifdef HWRENDER
|
||||
if (rendermode != render_soft)
|
||||
HWR_RenderPlayerView(i, &players[displayplayers[i]]);
|
||||
|
|
|
@ -21,7 +21,6 @@
|
|||
// Max computers in a game
|
||||
#define MAXNETNODES (MAXPLAYERS+4)
|
||||
#define BROADCASTADDR MAXNETNODES
|
||||
#define MAXSPLITSCREENPLAYERS 4 // Max number of players on a single computer
|
||||
#define NETSPLITSCREEN // Kart's splitscreen netgame feature
|
||||
|
||||
#define STATLENGTH (TICRATE*2)
|
||||
|
|
|
@ -77,7 +77,10 @@ extern boolean addedtogame; // true after the server has added you
|
|||
extern boolean multiplayer;
|
||||
|
||||
extern INT16 gametype;
|
||||
|
||||
#define MAXSPLITSCREENPLAYERS 4 // Max number of players on a single computer
|
||||
extern UINT8 splitscreen;
|
||||
|
||||
extern boolean circuitmap; // Does this level have 'circuit mode'?
|
||||
extern boolean fromlevelselect;
|
||||
extern boolean forceresetplayers, deferencoremode;
|
||||
|
|
|
@ -7397,7 +7397,7 @@ void G_DoPlayDemo(char *defdemoname)
|
|||
// Load players that were in-game when the map started
|
||||
p = READUINT8(demo_p);
|
||||
|
||||
for (i = 1; i < MAXSPLITSCREENPLAYERS; i++);
|
||||
for (i = 1; i < MAXSPLITSCREENPLAYERS; i++)
|
||||
displayplayers[i] = INT32_MAX;
|
||||
|
||||
while (p != 0xFF)
|
||||
|
|
|
@ -296,7 +296,7 @@ static void HW3S_FillSourceParameters
|
|||
data->max_distance = MAX_DISTANCE;
|
||||
data->min_distance = MIN_DISTANCE;
|
||||
|
||||
if (origin && origin != players[displayplayer].mo)
|
||||
if (origin && origin != players[displayplayers[0]].mo)
|
||||
{
|
||||
data->head_relative = false;
|
||||
|
||||
|
@ -356,10 +356,10 @@ INT32 HW3S_I_StartSound(const void *origin_p, source3D_data_t *source_parm, chan
|
|||
source3D_data_t source3d_data;
|
||||
INT32 s_num = 0;
|
||||
source_t *source = NULL;
|
||||
mobj_t *listenmobj = players[displayplayer].mo;
|
||||
mobj_t *listenmobj = players[displayplayers[0]].mo; // TODO: Kart 4P does not support sounds properly here
|
||||
mobj_t *listenmobj2 = NULL;
|
||||
|
||||
if (splitscreen) listenmobj2 = players[secondarydisplayplayer].mo;
|
||||
if (splitscreen) listenmobj2 = players[displayplayers[1]].mo;
|
||||
|
||||
if (sound_disabled)
|
||||
return -1;
|
||||
|
@ -876,12 +876,12 @@ static void HW3S_Update3DSource(source_t *src)
|
|||
|
||||
void HW3S_UpdateSources(void)
|
||||
{
|
||||
mobj_t *listener = players[displayplayer].mo;
|
||||
mobj_t *listener = players[displayplayers[0]].mo;
|
||||
mobj_t *listener2 = NULL;
|
||||
source_t *src;
|
||||
INT32 audible, snum, volume, sep, pitch;
|
||||
|
||||
if (splitscreen) listener2 = players[secondarydisplayplayer].mo;
|
||||
if (splitscreen) listener2 = players[displayplayers[1]].mo;
|
||||
|
||||
HW3S_UpdateListener2(listener2);
|
||||
HW3S_UpdateListener(listener);
|
||||
|
|
|
@ -63,7 +63,7 @@ struct hwdriver_s hwdriver;
|
|||
// ==========================================================================
|
||||
|
||||
|
||||
static void HWR_AddSprites(sector_t *sec, UINT8 ssplayer);
|
||||
static void HWR_AddSprites(sector_t *sec);
|
||||
static void HWR_ProjectSprite(mobj_t *thing);
|
||||
#ifdef HWPRECIP
|
||||
static void HWR_ProjectPrecipitationSprite(precipmobj_t *thing);
|
||||
|
@ -3389,7 +3389,7 @@ static void HWR_AddPolyObjectPlanes(void)
|
|||
// : Draw one or more line segments.
|
||||
// Notes : Sets gr_cursectorlight to the light of the parent sector, to modulate wall textures
|
||||
// -----------------+
|
||||
static void HWR_Subsector(size_t num, UINT8 ssplayer)
|
||||
static void HWR_Subsector(size_t num)
|
||||
{
|
||||
INT16 count;
|
||||
seg_t *line;
|
||||
|
@ -3754,7 +3754,7 @@ static void HWR_Subsector(size_t num, UINT8 ssplayer)
|
|||
{
|
||||
// draw sprites first, coz they are clipped to the solidsegs of
|
||||
// subsectors more 'in front'
|
||||
HWR_AddSprites(gr_frontsector, ssplayer);
|
||||
HWR_AddSprites(gr_frontsector);
|
||||
|
||||
//Hurdler: at this point validcount must be the same, but is not because
|
||||
// gr_frontsector doesn't point anymore to sub->sector due to
|
||||
|
@ -3806,7 +3806,7 @@ static boolean HWR_CheckHackBBox(fixed_t *bb)
|
|||
// BP: big hack for a test in lighning ref : 1249753487AB
|
||||
fixed_t *hwbbox;
|
||||
|
||||
static void HWR_RenderBSPNode(INT32 bspnum, UINT8 ssplayer)
|
||||
static void HWR_RenderBSPNode(INT32 bspnum)
|
||||
{
|
||||
/*//GZDoom code
|
||||
if(bspnum == -1)
|
||||
|
@ -3846,12 +3846,12 @@ static void HWR_RenderBSPNode(INT32 bspnum, UINT8 ssplayer)
|
|||
if (bspnum == -1)
|
||||
{
|
||||
//*(gr_drawsubsector_p++) = 0;
|
||||
HWR_Subsector(0, ssplayer);
|
||||
HWR_Subsector(0);
|
||||
}
|
||||
else
|
||||
{
|
||||
//*(gr_drawsubsector_p++) = bspnum&(~NF_SUBSECTOR);
|
||||
HWR_Subsector(bspnum&(~NF_SUBSECTOR), ssplayer);
|
||||
HWR_Subsector(bspnum&(~NF_SUBSECTOR));
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
@ -3863,14 +3863,14 @@ static void HWR_RenderBSPNode(INT32 bspnum, UINT8 ssplayer)
|
|||
hwbbox = bsp->bbox[side];
|
||||
|
||||
// Recursively divide front space.
|
||||
HWR_RenderBSPNode(bsp->children[side], ssplayer);
|
||||
HWR_RenderBSPNode(bsp->children[side]);
|
||||
|
||||
// Possibly divide back space.
|
||||
if (HWR_CheckBBox(bsp->bbox[side^1]))
|
||||
{
|
||||
// BP: big hack for a test in lighning ref : 1249753487AB
|
||||
hwbbox = bsp->bbox[side^1];
|
||||
HWR_RenderBSPNode(bsp->children[side^1], ssplayer);
|
||||
HWR_RenderBSPNode(bsp->children[side^1]);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -4097,14 +4097,14 @@ static void HWR_DrawSpriteShadow(gr_vissprite_t *spr, GLPatch_t *gpatch, float t
|
|||
angle_t shadowdir;
|
||||
|
||||
// Set direction
|
||||
if (splitscreen && stplyr == &players[secondarydisplayplayer])
|
||||
shadowdir = localangle2 + FixedAngle(cv_cam2_rotate.value);
|
||||
else if (splitscreen > 1 && stplyr == &players[thirddisplayplayer])
|
||||
shadowdir = localangle3 + FixedAngle(cv_cam3_rotate.value);
|
||||
else if (splitscreen > 2 && stplyr == &players[fourthdisplayplayer])
|
||||
shadowdir = localangle4 + FixedAngle(cv_cam4_rotate.value);
|
||||
if (splitscreen && stplyr == &players[displayplayers[1]])
|
||||
shadowdir = localangle[1] + FixedAngle(cv_cam2_rotate.value);
|
||||
else if (splitscreen > 1 && stplyr == &players[displayplayers[2]])
|
||||
shadowdir = localangle[2] + FixedAngle(cv_cam3_rotate.value);
|
||||
else if (splitscreen > 2 && stplyr == &players[displayplayers[3]])
|
||||
shadowdir = localangle[3] + FixedAngle(cv_cam4_rotate.value);
|
||||
else
|
||||
shadowdir = localangle + FixedAngle(cv_cam_rotate.value);
|
||||
shadowdir = localangle[0] + FixedAngle(cv_cam_rotate.value);
|
||||
|
||||
// Find floorheight
|
||||
floorheight = HWR_OpaqueFloorAtPos(
|
||||
|
@ -5283,7 +5283,7 @@ static void HWR_DrawSprites(void)
|
|||
// During BSP traversal, this adds sprites by sector.
|
||||
// --------------------------------------------------------------------------
|
||||
static UINT8 sectorlight;
|
||||
static void HWR_AddSprites(sector_t *sec, UINT8 ssplayer)
|
||||
static void HWR_AddSprites(sector_t *sec)
|
||||
{
|
||||
mobj_t *thing;
|
||||
#ifdef HWPRECIP
|
||||
|
@ -5316,19 +5316,19 @@ static void HWR_AddSprites(sector_t *sec, UINT8 ssplayer)
|
|||
if (splitscreen)
|
||||
{
|
||||
if (thing->eflags & MFE_DRAWONLYFORP1)
|
||||
if (ssplayer != 1)
|
||||
if (viewssnum != 0)
|
||||
continue;
|
||||
|
||||
if (thing->eflags & MFE_DRAWONLYFORP2)
|
||||
if (ssplayer != 2)
|
||||
if (viewssnum != 1)
|
||||
continue;
|
||||
|
||||
if (thing->eflags & MFE_DRAWONLYFORP3 && splitscreen > 1)
|
||||
if (ssplayer != 3)
|
||||
if (viewssnum != 2)
|
||||
continue;
|
||||
|
||||
if (thing->eflags & MFE_DRAWONLYFORP4 && splitscreen > 2)
|
||||
if (ssplayer != 4)
|
||||
if (viewssnum != 3)
|
||||
continue;
|
||||
}
|
||||
|
||||
|
@ -5351,19 +5351,19 @@ static void HWR_AddSprites(sector_t *sec, UINT8 ssplayer)
|
|||
if (splitscreen)
|
||||
{
|
||||
if (thing->eflags & MFE_DRAWONLYFORP1)
|
||||
if (ssplayer != 1)
|
||||
if (viewssnum != 0)
|
||||
continue;
|
||||
|
||||
if (thing->eflags & MFE_DRAWONLYFORP2)
|
||||
if (ssplayer != 2)
|
||||
if (viewssnum != 1)
|
||||
continue;
|
||||
|
||||
if (thing->eflags & MFE_DRAWONLYFORP3 && splitscreen > 1)
|
||||
if (ssplayer != 3)
|
||||
if (viewssnum != 2)
|
||||
continue;
|
||||
|
||||
if (thing->eflags & MFE_DRAWONLYFORP4 && splitscreen > 2)
|
||||
if (ssplayer != 4)
|
||||
if (viewssnum != 3)
|
||||
continue;
|
||||
}
|
||||
|
||||
|
@ -5906,33 +5906,8 @@ void HWR_RenderSkyboxView(INT32 viewnumber, player_t *player)
|
|||
{
|
||||
const float fpov = FIXED_TO_FLOAT(cv_fov.value+player->fovadd);
|
||||
postimg_t *type;
|
||||
UINT8 ssplayer = 0;
|
||||
|
||||
if (splitscreen)
|
||||
{
|
||||
if (player == &players[secondarydisplayplayer])
|
||||
{
|
||||
type = &postimgtype2;
|
||||
ssplayer = 2;
|
||||
}
|
||||
else if (splitscreen > 1 && player == &players[thirddisplayplayer])
|
||||
{
|
||||
type = &postimgtype3;
|
||||
ssplayer = 3;
|
||||
}
|
||||
else if (splitscreen > 2 && player == &players[fourthdisplayplayer])
|
||||
{
|
||||
type = &postimgtype4;
|
||||
ssplayer = 4;
|
||||
}
|
||||
else
|
||||
{
|
||||
type = &postimgtype;
|
||||
ssplayer = 1;
|
||||
}
|
||||
}
|
||||
else
|
||||
type = &postimgtype;
|
||||
type = &postimgtype[viewnumber];
|
||||
|
||||
{
|
||||
// do we really need to save player (is it not the same)?
|
||||
|
@ -6056,36 +6031,36 @@ if (0)
|
|||
|
||||
validcount++;
|
||||
|
||||
HWR_RenderBSPNode((INT32)numnodes-1, ssplayer);
|
||||
HWR_RenderBSPNode((INT32)numnodes-1);
|
||||
|
||||
#ifndef NEWCLIP
|
||||
// Make a viewangle int so we can render things based on mouselook
|
||||
if (player == &players[consoleplayer])
|
||||
viewangle = localaiming;
|
||||
else if (splitscreen && player == &players[secondarydisplayplayer])
|
||||
viewangle = localaiming2;
|
||||
else if (splitscreen > 1 && player == &players[thirddisplayplayer])
|
||||
viewangle = localaiming3;
|
||||
else if (splitscreen > 2 && player == &players[fourthdisplayplayer])
|
||||
viewangle = localaiming4;
|
||||
viewangle = localaiming[0];
|
||||
else if (splitscreen && player == &players[displayplayers[1]])
|
||||
viewangle = localaiming[1];
|
||||
else if (splitscreen > 1 && player == &players[displayplayers[2]])
|
||||
viewangle = localaiming[2];
|
||||
else if (splitscreen > 2 && player == &players[displayplayers[3]])
|
||||
viewangle = localaiming[3];
|
||||
|
||||
// Handle stuff when you are looking farther up or down.
|
||||
if ((aimingangle || cv_fov.value+player->fovadd > 90*FRACUNIT))
|
||||
{
|
||||
dup_viewangle += ANGLE_90;
|
||||
HWR_ClearClipSegs();
|
||||
HWR_RenderBSPNode((INT32)numnodes-1, ssplayer); //left
|
||||
HWR_RenderBSPNode((INT32)numnodes-1); //left
|
||||
|
||||
dup_viewangle += ANGLE_90;
|
||||
if (((INT32)aimingangle > ANGLE_45 || (INT32)aimingangle<-ANGLE_45))
|
||||
{
|
||||
HWR_ClearClipSegs();
|
||||
HWR_RenderBSPNode((INT32)numnodes-1, ssplayer); //back
|
||||
HWR_RenderBSPNode((INT32)numnodes-1); //back
|
||||
}
|
||||
|
||||
dup_viewangle += ANGLE_90;
|
||||
HWR_ClearClipSegs();
|
||||
HWR_RenderBSPNode((INT32)numnodes-1, ssplayer); //right
|
||||
HWR_RenderBSPNode((INT32)numnodes-1); //right
|
||||
|
||||
dup_viewangle += ANGLE_90;
|
||||
}
|
||||
|
@ -6149,38 +6124,13 @@ if (0)
|
|||
void HWR_RenderPlayerView(INT32 viewnumber, player_t *player)
|
||||
{
|
||||
const float fpov = FIXED_TO_FLOAT(cv_fov.value+player->fovadd);
|
||||
postimg_t *type;
|
||||
UINT8 ssplayer = 0;
|
||||
postimg_t *type = &postimgtype[viewnumber];
|
||||
|
||||
const boolean skybox = (skyboxmo[0] && cv_skybox.value); // True if there's a skybox object and skyboxes are on
|
||||
|
||||
FRGBAFloat ClearColor;
|
||||
|
||||
if (splitscreen)
|
||||
{
|
||||
if (player == &players[secondarydisplayplayer])
|
||||
{
|
||||
type = &postimgtype2;
|
||||
ssplayer = 2;
|
||||
}
|
||||
else if (splitscreen > 1 && player == &players[thirddisplayplayer])
|
||||
{
|
||||
type = &postimgtype3;
|
||||
ssplayer = 3;
|
||||
}
|
||||
else if (splitscreen > 2 && player == &players[fourthdisplayplayer])
|
||||
{
|
||||
type = &postimgtype4;
|
||||
ssplayer = 4;
|
||||
}
|
||||
else
|
||||
{
|
||||
type = &postimgtype;
|
||||
ssplayer = 1;
|
||||
}
|
||||
}
|
||||
else
|
||||
type = &postimgtype;
|
||||
type = &postimgtype[viewnumber];
|
||||
|
||||
ClearColor.red = 0.0f;
|
||||
ClearColor.green = 0.0f;
|
||||
|
@ -6315,36 +6265,36 @@ if (0)
|
|||
|
||||
validcount++;
|
||||
|
||||
HWR_RenderBSPNode((INT32)numnodes-1, ssplayer);
|
||||
HWR_RenderBSPNode((INT32)numnodes-1);
|
||||
|
||||
#ifndef NEWCLIP
|
||||
// Make a viewangle int so we can render things based on mouselook
|
||||
if (player == &players[consoleplayer])
|
||||
viewangle = localaiming;
|
||||
else if (splitscreen && player == &players[secondarydisplayplayer])
|
||||
viewangle = localaiming2;
|
||||
else if (splitscreen > 1 && player == &players[thirddisplayplayer])
|
||||
viewangle = localaiming3;
|
||||
else if (splitscreen > 2 && player == &players[fourthdisplayplayer])
|
||||
viewangle = localaiming4;
|
||||
viewangle = localaiming[0];
|
||||
else if (splitscreen && player == &players[displayplayers[1]])
|
||||
viewangle = localaiming[1];
|
||||
else if (splitscreen > 1 && player == &players[displayplayers[2]])
|
||||
viewangle = localaiming[2];
|
||||
else if (splitscreen > 2 && player == &players[displayplayers[3]])
|
||||
viewangle = localaiming[3];
|
||||
|
||||
// Handle stuff when you are looking farther up or down.
|
||||
if ((aimingangle || cv_fov.value+player->fovadd > 90*FRACUNIT))
|
||||
{
|
||||
dup_viewangle += ANGLE_90;
|
||||
HWR_ClearClipSegs();
|
||||
HWR_RenderBSPNode((INT32)numnodes-1, ssplayer); //left
|
||||
HWR_RenderBSPNode((INT32)numnodes-1); //left
|
||||
|
||||
dup_viewangle += ANGLE_90;
|
||||
if (((INT32)aimingangle > ANGLE_45 || (INT32)aimingangle<-ANGLE_45))
|
||||
{
|
||||
HWR_ClearClipSegs();
|
||||
HWR_RenderBSPNode((INT32)numnodes-1, ssplayer); //back
|
||||
HWR_RenderBSPNode((INT32)numnodes-1); //back
|
||||
}
|
||||
|
||||
dup_viewangle += ANGLE_90;
|
||||
HWR_ClearClipSegs();
|
||||
HWR_RenderBSPNode((INT32)numnodes-1, ssplayer); //right
|
||||
HWR_RenderBSPNode((INT32)numnodes-1); //right
|
||||
|
||||
dup_viewangle += ANGLE_90;
|
||||
}
|
||||
|
@ -6807,16 +6757,17 @@ INT32 HWR_GetTextureUsed(void)
|
|||
|
||||
void HWR_DoPostProcessor(player_t *player)
|
||||
{
|
||||
postimg_t *type;
|
||||
postimg_t *type = &postimgtype[0];
|
||||
UINT8 i;
|
||||
|
||||
if (splitscreen > 2 && player == &players[fourthdisplayplayer])
|
||||
type = &postimgtype4;
|
||||
else if (splitscreen > 1 && player == &players[thirddisplayplayer])
|
||||
type = &postimgtype3;
|
||||
else if (splitscreen && player == &players[secondarydisplayplayer])
|
||||
type = &postimgtype2;
|
||||
else
|
||||
type = &postimgtype;
|
||||
for (i = splitscreen; i > 0; i--)
|
||||
{
|
||||
if (player == &players[displayplayers[i]])
|
||||
{
|
||||
type = &postimgtype[i];
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// Armageddon Blast Flash!
|
||||
// Could this even be considered postprocessor?
|
||||
|
|
|
@ -8224,7 +8224,7 @@ static void K_drawBattleFullscreen(void)
|
|||
// check to see if there's anyone else at all
|
||||
for (i = 0; i < MAXPLAYERS; i++)
|
||||
{
|
||||
if (i == displayplayer)
|
||||
if (i == displayplayers[0])
|
||||
continue;
|
||||
if (playeringame[i] && !stplyr->spectator)
|
||||
return;
|
||||
|
|
|
@ -22,6 +22,7 @@
|
|||
#include "p_tick.h"
|
||||
#include "r_defs.h"
|
||||
#include "p_maputl.h"
|
||||
#include "doomstat.h" // MAXSPLITSCREENPLAYERS
|
||||
|
||||
#define FLOATSPEED (FRACUNIT*4)
|
||||
|
||||
|
@ -137,6 +138,7 @@ boolean P_PlayerInPain(player_t *player);
|
|||
void P_DoPlayerPain(player_t *player, mobj_t *source, mobj_t *inflictor);
|
||||
void P_ResetPlayer(player_t *player);
|
||||
boolean P_IsLocalPlayer(player_t *player);
|
||||
boolean P_IsDisplayPlayer(player_t *player);
|
||||
boolean P_SpectatorJoinGame(player_t *player);
|
||||
|
||||
boolean P_IsObjectInGoop(mobj_t *mo);
|
||||
|
|
|
@ -1135,6 +1135,8 @@ static void P_PlayerFlip(mobj_t *mo)
|
|||
}
|
||||
else if (mo->player->pflags & PF_FLIPCAM)
|
||||
{
|
||||
UINT8 i;
|
||||
|
||||
mo->player->aiming = InvAngle(mo->player->aiming);
|
||||
|
||||
for (i = 0; i <= splitscreen; i++)
|
||||
|
|
|
@ -2381,6 +2381,8 @@ static void P_ProcessLineSpecial(line_t *line, mobj_t *mo, sector_t *callsec)
|
|||
|
||||
if (mo->player)
|
||||
{
|
||||
UINT8 i;
|
||||
|
||||
if (bot) // This might put poor Tails in a wall if he's too far behind! D: But okay, whatever! >:3
|
||||
P_TeleportMove(bot, bot->x + x, bot->y + y, bot->z + z);
|
||||
|
||||
|
|
10
src/p_user.c
10
src/p_user.c
|
@ -7944,13 +7944,13 @@ boolean P_MoveChaseCamera(player_t *player, camera_t *thiscam, boolean resetcall
|
|||
else
|
||||
focusangle = mo->angle;
|
||||
|
||||
if (thiscam == &camera)
|
||||
if (thiscam == &camera[0])
|
||||
camrotate = cv_cam_rotate.value;
|
||||
else if (thiscam == &camera2)
|
||||
else if (thiscam == &camera[1])
|
||||
camrotate = cv_cam2_rotate.value;
|
||||
else if (thiscam == &camera3)
|
||||
else if (thiscam == &camera[2])
|
||||
camrotate = cv_cam3_rotate.value;
|
||||
else if (thiscam == &camera4)
|
||||
else if (thiscam == &camera[3])
|
||||
camrotate = cv_cam4_rotate.value;
|
||||
else
|
||||
camrotate = 0;
|
||||
|
@ -8542,7 +8542,7 @@ boolean P_SpectatorJoinGame(player_t *player)
|
|||
static void P_CalcPostImg(player_t *player)
|
||||
{
|
||||
sector_t *sector = player->mo->subsector->sector;
|
||||
postimg_t *type;
|
||||
postimg_t *type = postimg_none;
|
||||
INT32 *param;
|
||||
fixed_t pviewheight;
|
||||
UINT8 i;
|
||||
|
|
20
src/r_main.c
20
src/r_main.c
|
@ -30,6 +30,7 @@
|
|||
#include "p_spec.h" // skyboxmo
|
||||
#include "z_zone.h"
|
||||
#include "m_random.h" // quake camera shake
|
||||
#include "doomstat.h" // MAXSPLITSCREENPLAYERS
|
||||
|
||||
#ifdef HWRENDER
|
||||
#include "hardware/hw_main.h"
|
||||
|
@ -65,7 +66,7 @@ size_t loopcount;
|
|||
|
||||
fixed_t viewx, viewy, viewz;
|
||||
angle_t viewangle, aimingangle;
|
||||
UINT8 viewnumber;
|
||||
UINT8 viewssnum;
|
||||
fixed_t viewcos, viewsin;
|
||||
boolean viewsky, skyVisible;
|
||||
boolean skyVisiblePerPlayer[MAXSPLITSCREENPLAYERS]; // saved values of skyVisible for each splitscreen player
|
||||
|
@ -1151,6 +1152,7 @@ void R_SetupFrame(player_t *player, boolean skybox)
|
|||
}
|
||||
else if (splitscreen)
|
||||
{
|
||||
UINT8 i;
|
||||
for (i = 1; i <= splitscreen; i++)
|
||||
{
|
||||
if (player == &players[displayplayers[i]])
|
||||
|
@ -1323,20 +1325,6 @@ void R_RenderPlayerView(player_t *player)
|
|||
const boolean skybox = (skyboxmo[0] && cv_skybox.value);
|
||||
UINT8 i;
|
||||
|
||||
viewnumber = 0; // default
|
||||
|
||||
if (splitscreen)
|
||||
{
|
||||
for (i = 1; i <= splitscreen; i++)
|
||||
{
|
||||
if (player == &players[i])
|
||||
{
|
||||
viewnumber = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// if this is display player 1
|
||||
if (cv_homremoval.value && player == &players[displayplayers[0]])
|
||||
{
|
||||
|
@ -1367,7 +1355,7 @@ void R_RenderPlayerView(player_t *player)
|
|||
// load previous saved value of skyVisible for the player
|
||||
for (i = 0; i <= splitscreen; i++)
|
||||
{
|
||||
if (player == &players[displayplayers[i]]
|
||||
if (player == &players[displayplayers[i]])
|
||||
{
|
||||
skyVisible = skyVisiblePerPlayer[i];
|
||||
break;
|
||||
|
|
|
@ -17,6 +17,7 @@
|
|||
// Need data structure definitions.
|
||||
#include "d_player.h"
|
||||
#include "r_data.h"
|
||||
#include "doomstat.h" // MAXSPLITSCREENPLAYERS
|
||||
|
||||
#ifdef __GNUG__
|
||||
#pragma interface
|
||||
|
@ -88,7 +89,7 @@ extern side_t *sides;
|
|||
//
|
||||
extern fixed_t viewx, viewy, viewz;
|
||||
extern angle_t viewangle, aimingangle;
|
||||
extern UINT8 viewnumber; // splitscreen view number
|
||||
extern UINT8 viewssnum; // splitscreen view number
|
||||
extern boolean viewsky, skyVisible;
|
||||
extern boolean skyVisiblePerPlayer[MAXSPLITSCREENPLAYERS]; // saved values of skyVisible of each splitscreen player
|
||||
extern sector_t *viewsector;
|
||||
|
|
|
@ -1748,19 +1748,19 @@ void R_AddSprites(sector_t *sec, INT32 lightlevel)
|
|||
if (splitscreen)
|
||||
{
|
||||
if (thing->eflags & MFE_DRAWONLYFORP1)
|
||||
if (viewnumber != 0)
|
||||
if (viewssnum != 0)
|
||||
continue;
|
||||
|
||||
if (thing->eflags & MFE_DRAWONLYFORP2)
|
||||
if (viewnumber != 1)
|
||||
if (viewssnum != 1)
|
||||
continue;
|
||||
|
||||
if (thing->eflags & MFE_DRAWONLYFORP3 && splitscreen > 1)
|
||||
if (viewnumber != 2)
|
||||
if (viewssnum != 2)
|
||||
continue;
|
||||
|
||||
if (thing->eflags & MFE_DRAWONLYFORP4 && splitscreen > 2)
|
||||
if (viewnumber != 3)
|
||||
if (viewssnum != 3)
|
||||
continue;
|
||||
}
|
||||
|
||||
|
@ -1783,19 +1783,19 @@ void R_AddSprites(sector_t *sec, INT32 lightlevel)
|
|||
if (splitscreen)
|
||||
{
|
||||
if (thing->eflags & MFE_DRAWONLYFORP1)
|
||||
if (viewnumber != 0)
|
||||
if (viewssnum != 0)
|
||||
continue;
|
||||
|
||||
if (thing->eflags & MFE_DRAWONLYFORP2)
|
||||
if (viewnumber != 1)
|
||||
if (viewssnum != 1)
|
||||
continue;
|
||||
|
||||
if (thing->eflags & MFE_DRAWONLYFORP3 && splitscreen > 1)
|
||||
if (viewnumber != 2)
|
||||
if (viewssnum != 2)
|
||||
continue;
|
||||
|
||||
if (thing->eflags & MFE_DRAWONLYFORP4 && splitscreen > 2)
|
||||
if (viewnumber != 3)
|
||||
if (viewssnum != 3)
|
||||
continue;
|
||||
}
|
||||
|
||||
|
|
|
@ -935,8 +935,8 @@ void S_UpdateSounds(void)
|
|||
if (dedicated || sound_disabled)
|
||||
return;
|
||||
|
||||
if (players[displayplayer].awayviewtics)
|
||||
listenmobj = players[displayplayer].awayviewmobj;
|
||||
if (players[displayplayers[0]].awayviewtics)
|
||||
listenmobj = players[displayplayers[0]].awayviewmobj;
|
||||
|
||||
if (splitscreen)
|
||||
{
|
||||
|
|
Loading…
Reference in a new issue