mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2026-04-27 12:31:54 +00:00
Up to screen.o
Lots of renderer files I didn't need to touch at all here :)
This commit is contained in:
parent
9b9ab8a2d5
commit
dfd733eb80
16 changed files with 179 additions and 329 deletions
|
|
@ -4503,7 +4503,12 @@ retryscramble:
|
||||||
newteam = (INT16)((M_RandomByte() % 2) + 1);
|
newteam = (INT16)((M_RandomByte() % 2) + 1);
|
||||||
repick = false;
|
repick = false;
|
||||||
}
|
}
|
||||||
else if (i != 2) // Mystic's secret sauce - ABBA is better than ABAB, so team B doesn't get worse players all around
|
// (i != 2) means it does ABBABABA, instead of ABABABAB.
|
||||||
|
// Team A gets 1st, 4th, 6th, 8th.
|
||||||
|
// Team B gets 2nd, 3rd, 5th, 7th.
|
||||||
|
// So 1st on one team, 2nd/3rd on the other, then alternates afterwards.
|
||||||
|
// Sounds strange on paper, but works really well in practice!
|
||||||
|
else if (i != 2)
|
||||||
{
|
{
|
||||||
// We will only randomly pick the team for the first guy.
|
// We will only randomly pick the team for the first guy.
|
||||||
// Otherwise, just alternate back and forth, distributing players.
|
// Otherwise, just alternate back and forth, distributing players.
|
||||||
|
|
|
||||||
|
|
@ -539,7 +539,7 @@ typedef struct player_s
|
||||||
|
|
||||||
INT32 followerskin; // Kart: This player's follower "skin"
|
INT32 followerskin; // Kart: This player's follower "skin"
|
||||||
boolean followerready; // Kart: Used to know when we can have a follower or not. (This is set on the first NameAndColor follower update)
|
boolean followerready; // Kart: Used to know when we can have a follower or not. (This is set on the first NameAndColor follower update)
|
||||||
UINT8 followercolor; // Kart: Used to store the follower colour the player wishes to use
|
UINT16 followercolor; // Kart: Used to store the follower colour the player wishes to use
|
||||||
mobj_t *follower; // Kart: This is the follower object we have. (If any)
|
mobj_t *follower; // Kart: This is the follower object we have. (If any)
|
||||||
|
|
||||||
//
|
//
|
||||||
|
|
|
||||||
|
|
@ -2070,7 +2070,7 @@ void G_PlayerReborn(INT32 player, boolean betweenmaps)
|
||||||
|
|
||||||
boolean followerready;
|
boolean followerready;
|
||||||
INT32 followerskin;
|
INT32 followerskin;
|
||||||
UINT8 followercolor;
|
UINT16 followercolor;
|
||||||
mobj_t *follower; // old follower, will probably be removed by the time we're dead but you never know.
|
mobj_t *follower; // old follower, will probably be removed by the time we're dead but you never know.
|
||||||
|
|
||||||
INT32 charflags;
|
INT32 charflags;
|
||||||
|
|
|
||||||
|
|
@ -5110,14 +5110,7 @@ static void HWR_ProjectSprite(mobj_t *thing)
|
||||||
{
|
{
|
||||||
// New colormap stuff for skins Tails 06-07-2002
|
// New colormap stuff for skins Tails 06-07-2002
|
||||||
if (thing->colorized)
|
if (thing->colorized)
|
||||||
vis->colormap = R_GetTranslationColormap(TC_RAINBOW, thing->color, GTC_CACHE);
|
|
||||||
else if (thing->player && thing->player->dashmode >= DASHMODE_THRESHOLD
|
|
||||||
&& (thing->player->charflags & SF_DASHMODE)
|
|
||||||
&& ((leveltime/2) & 1))
|
|
||||||
{
|
{
|
||||||
if (thing->player->charflags & SF_MACHINE)
|
|
||||||
vis->colormap = R_GetTranslationColormap(TC_DASHMODE, 0, GTC_CACHE);
|
|
||||||
else
|
|
||||||
vis->colormap = R_GetTranslationColormap(TC_RAINBOW, thing->color, GTC_CACHE);
|
vis->colormap = R_GetTranslationColormap(TC_RAINBOW, thing->color, GTC_CACHE);
|
||||||
}
|
}
|
||||||
else if (thing->skin && thing->sprite == SPR_PLAY) // This thing is a player!
|
else if (thing->skin && thing->sprite == SPR_PLAY) // This thing is a player!
|
||||||
|
|
@ -5126,8 +5119,10 @@ static void HWR_ProjectSprite(mobj_t *thing)
|
||||||
vis->colormap = R_GetTranslationColormap((INT32)skinnum, thing->color, GTC_CACHE);
|
vis->colormap = R_GetTranslationColormap((INT32)skinnum, thing->color, GTC_CACHE);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
{
|
||||||
vis->colormap = R_GetTranslationColormap(TC_DEFAULT, vis->mobj->color ? vis->mobj->color : SKINCOLOR_GREEN, GTC_CACHE);
|
vis->colormap = R_GetTranslationColormap(TC_DEFAULT, vis->mobj->color ? vis->mobj->color : SKINCOLOR_GREEN, GTC_CACHE);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
vis->colormap = colormaps;
|
vis->colormap = colormaps;
|
||||||
|
|
|
||||||
13
src/k_kart.c
13
src/k_kart.c
|
|
@ -1058,8 +1058,7 @@ static void K_DebtStingPlayer(player_t *player, INT32 length)
|
||||||
player->kartstuff[k_spinouttimer] = length;
|
player->kartstuff[k_spinouttimer] = length;
|
||||||
player->kartstuff[k_wipeoutslow] = min(length-1, wipeoutslowtime+1);
|
player->kartstuff[k_wipeoutslow] = min(length-1, wipeoutslowtime+1);
|
||||||
|
|
||||||
if (player->mo->state != &states[S_KART_SPIN])
|
P_SetPlayerMobjState(player->mo, S_KART_SPINOUT);
|
||||||
P_SetPlayerMobjState(player->mo, S_KART_SPIN);
|
|
||||||
|
|
||||||
K_DropHnextList(player, false);
|
K_DropHnextList(player, false);
|
||||||
return;
|
return;
|
||||||
|
|
@ -2475,8 +2474,7 @@ void K_SpinPlayer(player_t *player, mobj_t *source, INT32 type, mobj_t *inflicto
|
||||||
P_PlayerRingBurst(player, 5);
|
P_PlayerRingBurst(player, 5);
|
||||||
K_PlayPainSound(player->mo);
|
K_PlayPainSound(player->mo);
|
||||||
|
|
||||||
if (player->mo->state != &states[S_KART_SPIN])
|
P_SetPlayerMobjState(player->mo, S_KART_SPINOUT);
|
||||||
P_SetPlayerMobjState(player->mo, S_KART_SPIN);
|
|
||||||
|
|
||||||
player->kartstuff[k_instashield] = 15;
|
player->kartstuff[k_instashield] = 15;
|
||||||
if (cv_kartdebughuddrop.value && !modeattacking)
|
if (cv_kartdebughuddrop.value && !modeattacking)
|
||||||
|
|
@ -2725,8 +2723,7 @@ void K_ExplodePlayer(player_t *player, mobj_t *source, mobj_t *inflictor) // A b
|
||||||
if (player->mo->eflags & MFE_UNDERWATER)
|
if (player->mo->eflags & MFE_UNDERWATER)
|
||||||
player->mo->momz = (117 * player->mo->momz) / 200;
|
player->mo->momz = (117 * player->mo->momz) / 200;
|
||||||
|
|
||||||
if (player->mo->state != &states[S_KART_SPIN])
|
P_SetPlayerMobjState(player->mo, S_KART_SPINOUT);
|
||||||
P_SetPlayerMobjState(player->mo, S_KART_SPIN);
|
|
||||||
|
|
||||||
P_PlayRinglossSound(player->mo);
|
P_PlayRinglossSound(player->mo);
|
||||||
P_PlayerRingBurst(player, 5);
|
P_PlayerRingBurst(player, 5);
|
||||||
|
|
@ -3561,7 +3558,7 @@ void K_DriftDustHandling(mobj_t *spawner)
|
||||||
|
|
||||||
if (spawner->player)
|
if (spawner->player)
|
||||||
{
|
{
|
||||||
if (spawner->player->pflags & PF_SKIDDOWN)
|
if (spawner->player->pflags & PF_WPNDOWN)
|
||||||
{
|
{
|
||||||
anglediff = abs((signed)(spawner->angle - spawner->player->frameangle));
|
anglediff = abs((signed)(spawner->angle - spawner->player->frameangle));
|
||||||
if (leveltime % 6 == 0)
|
if (leveltime % 6 == 0)
|
||||||
|
|
@ -5343,7 +5340,7 @@ void K_KartPlayerHUDUpdate(player_t *player)
|
||||||
if (player->karthud[khud_tauntvoices])
|
if (player->karthud[khud_tauntvoices])
|
||||||
player->karthud[khud_tauntvoices]--;
|
player->karthud[khud_tauntvoices]--;
|
||||||
|
|
||||||
if (!(player->pflags & PF_SKIDDOWN))
|
if (!(player->pflags & PF_WPNDOWN))
|
||||||
player->karthud[khud_fault] = 0;
|
player->karthud[khud_fault] = 0;
|
||||||
else if (player->karthud[khud_fault] > 0 && player->karthud[khud_fault] < 2*TICRATE)
|
else if (player->karthud[khud_fault] > 0 && player->karthud[khud_fault] < 2*TICRATE)
|
||||||
player->karthud[khud_fault]++;
|
player->karthud[khud_fault]++;
|
||||||
|
|
|
||||||
|
|
@ -240,7 +240,7 @@ static void P_NetArchivePlayers(void)
|
||||||
|
|
||||||
WRITEUINT8(save_p, players[i].followerskin);
|
WRITEUINT8(save_p, players[i].followerskin);
|
||||||
WRITEUINT8(save_p, players[i].followerready); // booleans are really just numbers eh??
|
WRITEUINT8(save_p, players[i].followerready); // booleans are really just numbers eh??
|
||||||
WRITEUINT8(save_p, players[i].followercolor);
|
WRITEUINT16(save_p, players[i].followercolor);
|
||||||
if (flags & FOLLOWER)
|
if (flags & FOLLOWER)
|
||||||
WRITEUINT32(save_p, players[i].follower->mobjnum);
|
WRITEUINT32(save_p, players[i].follower->mobjnum);
|
||||||
|
|
||||||
|
|
|
||||||
10
src/p_tick.c
10
src/p_tick.c
|
|
@ -328,8 +328,6 @@ static inline void P_RunThinkers(void)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// P_DoAutobalanceTeams()
|
// P_DoAutobalanceTeams()
|
||||||
//
|
//
|
||||||
|
|
@ -449,7 +447,7 @@ void P_DoTeamscrambling(void)
|
||||||
CV_SetValue(&cv_teamscramble, 0);
|
CV_SetValue(&cv_teamscramble, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void P_DoCTFStuff(void)
|
static inline void P_DoTeamStuff(void)
|
||||||
{
|
{
|
||||||
// Automatic team balance for CTF and team match
|
// Automatic team balance for CTF and team match
|
||||||
if (leveltime % (TICRATE * 5) == 0) //only check once per five seconds for the sake of CPU conservation.
|
if (leveltime % (TICRATE * 5) == 0) //only check once per five seconds for the sake of CPU conservation.
|
||||||
|
|
@ -470,8 +468,6 @@ static inline void P_DoCTFStuff(void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
*/
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// P_Ticker
|
// P_Ticker
|
||||||
//
|
//
|
||||||
|
|
@ -604,10 +600,8 @@ void P_Ticker(boolean run)
|
||||||
if (!(modeattacking && !demo.playback) || leveltime >= starttime - TICRATE*4)
|
if (!(modeattacking && !demo.playback) || leveltime >= starttime - TICRATE*4)
|
||||||
timeinmap++;
|
timeinmap++;
|
||||||
|
|
||||||
/*
|
|
||||||
if (G_GametypeHasTeams())
|
if (G_GametypeHasTeams())
|
||||||
P_DoCTFStuff();
|
P_DoTeamStuff();
|
||||||
*/
|
|
||||||
|
|
||||||
if (run)
|
if (run)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
192
src/p_user.c
192
src/p_user.c
|
|
@ -48,7 +48,6 @@
|
||||||
// SRB2kart
|
// SRB2kart
|
||||||
#include "m_cond.h" // M_UpdateUnlockablesAndExtraEmblems
|
#include "m_cond.h" // M_UpdateUnlockablesAndExtraEmblems
|
||||||
#include "k_kart.h"
|
#include "k_kart.h"
|
||||||
#include "k_color.h" // KartColor_Opposite
|
|
||||||
#include "console.h" // CON_LogMessage
|
#include "console.h" // CON_LogMessage
|
||||||
#include "k_respawn.h"
|
#include "k_respawn.h"
|
||||||
#include "k_bot.h"
|
#include "k_bot.h"
|
||||||
|
|
@ -233,6 +232,31 @@ void P_CalcHeight(player_t *player)
|
||||||
// move viewheight
|
// move viewheight
|
||||||
pviewheight = P_GetPlayerViewHeight(player); // default eye view height
|
pviewheight = P_GetPlayerViewHeight(player); // default eye view height
|
||||||
|
|
||||||
|
if (player->playerstate == PST_LIVE)
|
||||||
|
{
|
||||||
|
player->viewheight += player->deltaviewheight;
|
||||||
|
|
||||||
|
if (player->viewheight > pviewheight)
|
||||||
|
{
|
||||||
|
player->viewheight = pviewheight;
|
||||||
|
player->deltaviewheight = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (player->viewheight < pviewheight/2)
|
||||||
|
{
|
||||||
|
player->viewheight = pviewheight/2;
|
||||||
|
if (player->deltaviewheight <= 0)
|
||||||
|
player->deltaviewheight = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (player->deltaviewheight)
|
||||||
|
{
|
||||||
|
player->deltaviewheight += FixedMul(FRACUNIT/4, mo->scale);
|
||||||
|
if (!player->deltaviewheight)
|
||||||
|
player->deltaviewheight = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (player->mo->eflags & MFE_VERTICALFLIP)
|
if (player->mo->eflags & MFE_VERTICALFLIP)
|
||||||
player->viewz = mo->z + mo->height - player->viewheight - bob;
|
player->viewz = mo->z + mo->height - player->viewheight - bob;
|
||||||
else
|
else
|
||||||
|
|
@ -518,15 +542,6 @@ void P_AddPlayerScore(player_t *player, UINT32 amount)
|
||||||
player->marescore += amount;
|
player->marescore += amount;
|
||||||
else
|
else
|
||||||
player->marescore = MAXSCORE;
|
player->marescore = MAXSCORE;
|
||||||
|
|
||||||
// In team match, all awarded points are incremented to the team's running score.
|
|
||||||
if (gametype == GT_TEAMMATCH)
|
|
||||||
{
|
|
||||||
if (player->ctfteam == 1)
|
|
||||||
redscore += amount;
|
|
||||||
else if (player->ctfteam == 2)
|
|
||||||
bluescore += amount;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
|
|
@ -537,7 +552,7 @@ void P_PlayLivesJingle(player_t *player)
|
||||||
if (player && !P_IsLocalPlayer(player))
|
if (player && !P_IsLocalPlayer(player))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (use1upSound || cv_1upsound.value)
|
if (use1upSound)
|
||||||
S_StartSound(NULL, sfx_oneup);
|
S_StartSound(NULL, sfx_oneup);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
@ -625,7 +640,7 @@ boolean P_EvaluateMusicStatus(UINT16 status, const char *musname)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case JT_SUPER: // Super Sonic
|
case JT_SUPER: // Super Sonic
|
||||||
result = (players[i].powers[pw_super] && !(mapheaderinfo[gamemap-1]->levelflags & LF_NOSSMUSIC));
|
result = (players[i].powers[pw_super]);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case JT_GOVER: // Game Over
|
case JT_GOVER: // Game Over
|
||||||
|
|
@ -1416,6 +1431,8 @@ boolean P_PlayerHitFloor(player_t *player, boolean dorollstuff)
|
||||||
{
|
{
|
||||||
boolean clipmomz;
|
boolean clipmomz;
|
||||||
|
|
||||||
|
(void)dorollstuff;
|
||||||
|
|
||||||
I_Assert(player->mo != NULL);
|
I_Assert(player->mo != NULL);
|
||||||
|
|
||||||
clipmomz = !(P_CheckDeathPitCollide(player->mo));
|
clipmomz = !(P_CheckDeathPitCollide(player->mo));
|
||||||
|
|
@ -1516,8 +1533,6 @@ static void P_CheckBustableBlocks(player_t *player)
|
||||||
// or you are recording for Metal Sonic
|
// or you are recording for Metal Sonic
|
||||||
if (!((player->pflags & PF_SPINNING) && !(player->pflags & PF_JUMPED))
|
if (!((player->pflags & PF_SPINNING) && !(player->pflags & PF_JUMPED))
|
||||||
&& !(player->powers[pw_super])
|
&& !(player->powers[pw_super])
|
||||||
&& !(((player->charflags & (SF_DASHMODE|SF_MACHINE)) == (SF_DASHMODE|SF_MACHINE)) && (player->dashmode >= DASHMODE_THRESHOLD))
|
|
||||||
&& !(player->pflags & PF_DRILLING)
|
|
||||||
&& !metalrecording)
|
&& !metalrecording)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
|
@ -1873,12 +1888,10 @@ static void P_3dMovement(player_t *player)
|
||||||
fixed_t movepushforward = 0;
|
fixed_t movepushforward = 0;
|
||||||
angle_t dangle; // replaces old quadrants bits
|
angle_t dangle; // replaces old quadrants bits
|
||||||
fixed_t oldMagnitude, newMagnitude;
|
fixed_t oldMagnitude, newMagnitude;
|
||||||
#ifdef ESLOPE
|
|
||||||
vector3_t totalthrust;
|
vector3_t totalthrust;
|
||||||
|
|
||||||
totalthrust.x = totalthrust.y = 0; // I forget if this is needed
|
totalthrust.x = totalthrust.y = 0; // I forget if this is needed
|
||||||
totalthrust.z = FRACUNIT*P_MobjFlip(player->mo)/3; // A bit of extra push-back on slopes
|
totalthrust.z = FRACUNIT*P_MobjFlip(player->mo)/3; // A bit of extra push-back on slopes
|
||||||
#endif // ESLOPE
|
|
||||||
|
|
||||||
// Get the old momentum; this will be needed at the end of the function! -SH
|
// Get the old momentum; this will be needed at the end of the function! -SH
|
||||||
oldMagnitude = R_PointToDist2(player->mo->momx - player->cmomx, player->mo->momy - player->cmomy, 0, 0);
|
oldMagnitude = R_PointToDist2(player->mo->momx - player->cmomx, player->mo->momy - player->cmomy, 0, 0);
|
||||||
|
|
@ -1921,13 +1934,12 @@ static void P_3dMovement(player_t *player)
|
||||||
if (dangle > ANGLE_180) //flip to keep to one side
|
if (dangle > ANGLE_180) //flip to keep to one side
|
||||||
{
|
{
|
||||||
dangle = InvAngle(dangle);
|
dangle = InvAngle(dangle);
|
||||||
//dangleflip = true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// anything else will leave both at 0, so no need to do anything else
|
// anything else will leave both at 0, so no need to do anything else
|
||||||
|
|
||||||
//{ SRB2kart 220217 - Toaster Code for misplaced thrust
|
//{ SRB2kart 220217 - Toaster Code for misplaced thrust
|
||||||
/*
|
#if 0
|
||||||
if (!player->kartstuff[k_drift]) // Not Drifting
|
if (!player->kartstuff[k_drift]) // Not Drifting
|
||||||
{
|
{
|
||||||
angle_t difference = dangle/2;
|
angle_t difference = dangle/2;
|
||||||
|
|
@ -1941,7 +1953,7 @@ static void P_3dMovement(player_t *player)
|
||||||
|
|
||||||
P_InstaThrust(player->mo, player->mo->angle + difference, player->speed);
|
P_InstaThrust(player->mo, player->mo->angle + difference, player->speed);
|
||||||
}
|
}
|
||||||
*/
|
#endif
|
||||||
//}
|
//}
|
||||||
|
|
||||||
// Do not let the player control movement if not onground.
|
// Do not let the player control movement if not onground.
|
||||||
|
|
@ -2192,31 +2204,27 @@ void P_MovePlayer(player_t *player)
|
||||||
// Kart frames
|
// Kart frames
|
||||||
if (player->kartstuff[k_squishedtimer] > 0)
|
if (player->kartstuff[k_squishedtimer] > 0)
|
||||||
{
|
{
|
||||||
if (player->mo->state != &states[S_KART_SQUISH])
|
|
||||||
P_SetPlayerMobjState(player->mo, S_KART_SQUISH);
|
P_SetPlayerMobjState(player->mo, S_KART_SQUISH);
|
||||||
}
|
}
|
||||||
else if (player->pflags & PF_SLIDING)
|
else if (player->pflags & PF_SLIDING)
|
||||||
{
|
{
|
||||||
if (player->mo->state != &states[S_KART_SPIN])
|
P_SetPlayerMobjState(player->mo, S_KART_SPINOUT);
|
||||||
P_SetPlayerMobjState(player->mo, S_KART_SPIN);
|
|
||||||
player->frameangle -= ANGLE_22h;
|
player->frameangle -= ANGLE_22h;
|
||||||
}
|
}
|
||||||
else if (player->kartstuff[k_spinouttimer] > 0)
|
else if (player->kartstuff[k_spinouttimer] > 0)
|
||||||
{
|
{
|
||||||
INT32 speed = max(1, min(8, player->kartstuff[k_spinouttimer]/8));
|
INT32 speed = max(1, min(8, player->kartstuff[k_spinouttimer]/8));
|
||||||
|
|
||||||
if (player->mo->state != &states[S_KART_SPIN])
|
P_SetPlayerMobjState(player->mo, S_KART_SPINOUT);
|
||||||
P_SetPlayerMobjState(player->mo, S_KART_SPIN);
|
|
||||||
|
|
||||||
if (speed == 1 && abs((signed)(player->mo->angle - player->frameangle)) < ANGLE_22h)
|
if (speed == 1 && abs((signed)(player->mo->angle - player->frameangle)) < ANGLE_22h)
|
||||||
player->frameangle = player->mo->angle; // Face forward at the end of the animation
|
player->frameangle = player->mo->angle; // Face forward at the end of the animation
|
||||||
else
|
else
|
||||||
player->frameangle -= (ANGLE_11hh * speed);
|
player->frameangle -= (ANGLE_11hh * speed);
|
||||||
}
|
}
|
||||||
else if (player->powers[pw_nocontrol] && player->pflags & PF_SKIDDOWN)
|
else if (player->powers[pw_nocontrol] && player->pflags & PF_WPNDOWN)
|
||||||
{
|
{
|
||||||
if (player->mo->state != &states[S_KART_SPIN])
|
P_SetPlayerMobjState(player->mo, S_KART_SPINOUT);
|
||||||
P_SetPlayerMobjState(player->mo, S_KART_SPIN);
|
|
||||||
|
|
||||||
if (((player->powers[pw_nocontrol] + 5) % 20) < 10)
|
if (((player->powers[pw_nocontrol] + 5) % 20) < 10)
|
||||||
player->frameangle += ANGLE_11hh;
|
player->frameangle += ANGLE_11hh;
|
||||||
|
|
@ -2514,8 +2522,7 @@ static void P_DoZoomTube(player_t *player)
|
||||||
P_SetPlayerAngle(player, player->mo->angle);
|
P_SetPlayerAngle(player, player->mo->angle);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (player->mo->state != &states[S_KART_SPIN])
|
P_SetPlayerMobjState(player->mo, S_KART_SPINOUT);
|
||||||
P_SetPlayerMobjState(player->mo, S_KART_SPIN);
|
|
||||||
player->frameangle -= ANGLE_22h;
|
player->frameangle -= ANGLE_22h;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -2655,8 +2662,6 @@ static void P_ConsiderAllGone(void)
|
||||||
//
|
//
|
||||||
static void P_DeathThink(player_t *player)
|
static void P_DeathThink(player_t *player)
|
||||||
{
|
{
|
||||||
INT32 j = MAXPLAYERS;
|
|
||||||
ticcmd_t *cmd = &player->cmd;
|
|
||||||
player->deltaviewheight = 0;
|
player->deltaviewheight = 0;
|
||||||
|
|
||||||
if (player->deadtimer < INT32_MAX)
|
if (player->deadtimer < INT32_MAX)
|
||||||
|
|
@ -2726,40 +2731,38 @@ camera_t camera[MAXSPLITSCREENPLAYERS]; // Four cameras, three for splitscreen
|
||||||
|
|
||||||
static void CV_CamRotate_OnChange(void)
|
static void CV_CamRotate_OnChange(void)
|
||||||
{
|
{
|
||||||
if (cv_cam_rotate.value < 0)
|
if (cv_cam_rotate[0].value < 0)
|
||||||
CV_SetValue(&cv_cam_rotate, cv_cam_rotate.value + 360);
|
CV_SetValue(&cv_cam_rotate[0], cv_cam_rotate[0].value + 360);
|
||||||
else if (cv_cam_rotate.value > 359)
|
else if (cv_cam_rotate[0].value > 359)
|
||||||
CV_SetValue(&cv_cam_rotate, cv_cam_rotate.value % 360);
|
CV_SetValue(&cv_cam_rotate[0], cv_cam_rotate[0].value % 360);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void CV_CamRotate2_OnChange(void)
|
static void CV_CamRotate2_OnChange(void)
|
||||||
{
|
{
|
||||||
if (cv_cam2_rotate.value < 0)
|
if (cv_cam_rotate[1].value < 0)
|
||||||
CV_SetValue(&cv_cam2_rotate, cv_cam2_rotate.value + 360);
|
CV_SetValue(&cv_cam_rotate[1], cv_cam_rotate[1].value + 360);
|
||||||
else if (cv_cam2_rotate.value > 359)
|
else if (cv_cam_rotate[1].value > 359)
|
||||||
CV_SetValue(&cv_cam2_rotate, cv_cam2_rotate.value % 360);
|
CV_SetValue(&cv_cam_rotate[1], cv_cam_rotate[1].value % 360);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void CV_CamRotate3_OnChange(void)
|
static void CV_CamRotate3_OnChange(void)
|
||||||
{
|
{
|
||||||
if (cv_cam3_rotate.value < 0)
|
if (cv_cam_rotate[2].value < 0)
|
||||||
CV_SetValue(&cv_cam3_rotate, cv_cam3_rotate.value + 360);
|
CV_SetValue(&cv_cam_rotate[2], cv_cam_rotate[2].value + 360);
|
||||||
else if (cv_cam3_rotate.value > 359)
|
else if (cv_cam_rotate[2].value > 359)
|
||||||
CV_SetValue(&cv_cam3_rotate, cv_cam3_rotate.value % 360);
|
CV_SetValue(&cv_cam_rotate[2], cv_cam_rotate[2].value % 360);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void CV_CamRotate4_OnChange(void)
|
static void CV_CamRotate4_OnChange(void)
|
||||||
{
|
{
|
||||||
if (cv_cam4_rotate.value < 0)
|
if (cv_cam_rotate[3].value < 0)
|
||||||
CV_SetValue(&cv_cam4_rotate, cv_cam4_rotate.value + 360);
|
CV_SetValue(&cv_cam_rotate[3], cv_cam_rotate[3].value + 360);
|
||||||
else if (cv_cam4_rotate.value > 359)
|
else if (cv_cam_rotate[3].value > 359)
|
||||||
CV_SetValue(&cv_cam4_rotate, cv_cam4_rotate.value % 360);
|
CV_SetValue(&cv_cam_rotate[3], cv_cam_rotate[3].value % 360);
|
||||||
}
|
}
|
||||||
|
|
||||||
static CV_PossibleValue_t CV_CamSpeed[] = {{0, "MIN"}, {1*FRACUNIT, "MAX"}, {0, NULL}};
|
static CV_PossibleValue_t CV_CamSpeed[] = {{0, "MIN"}, {1*FRACUNIT, "MAX"}, {0, NULL}};
|
||||||
static CV_PossibleValue_t rotation_cons_t[] = {{1, "MIN"}, {25, "MAX"}, {0, NULL}};
|
|
||||||
static CV_PossibleValue_t CV_CamRotate[] = {{-720, "MIN"}, {720, "MAX"}, {0, NULL}};
|
static CV_PossibleValue_t CV_CamRotate[] = {{-720, "MIN"}, {720, "MAX"}, {0, NULL}};
|
||||||
static CV_PossibleValue_t multiplier_cons_t[] = {{0, "MIN"}, {3*FRACUNIT, "MAX"}, {0, NULL}};
|
|
||||||
|
|
||||||
consvar_t cv_cam_dist[MAXSPLITSCREENPLAYERS] = {
|
consvar_t cv_cam_dist[MAXSPLITSCREENPLAYERS] = {
|
||||||
{"cam_dist", "160", CV_FLOAT|CV_SAVE, NULL, NULL, 0, NULL, NULL, 0, 0, NULL},
|
{"cam_dist", "160", CV_FLOAT|CV_SAVE, NULL, NULL, 0, NULL, NULL, 0, 0, NULL},
|
||||||
|
|
@ -2791,21 +2794,14 @@ consvar_t cv_cam_speed[MAXSPLITSCREENPLAYERS] = {
|
||||||
|
|
||||||
consvar_t cv_cam_rotate[MAXSPLITSCREENPLAYERS] = {
|
consvar_t cv_cam_rotate[MAXSPLITSCREENPLAYERS] = {
|
||||||
{"cam_rotate", "0", CV_CALL|CV_NOINIT, CV_CamRotate, CV_CamRotate_OnChange, 0, NULL, NULL, 0, 0, NULL},
|
{"cam_rotate", "0", CV_CALL|CV_NOINIT, CV_CamRotate, CV_CamRotate_OnChange, 0, NULL, NULL, 0, 0, NULL},
|
||||||
{"cam2_rotate", "0", CV_CALL|CV_NOINIT, CV_CamRotate, CV_CamRotate_OnChange, 0, NULL, NULL, 0, 0, NULL},
|
{"cam2_rotate", "0", CV_CALL|CV_NOINIT, CV_CamRotate, CV_CamRotate2_OnChange, 0, NULL, NULL, 0, 0, NULL},
|
||||||
{"cam3_rotate", "0", CV_CALL|CV_NOINIT, CV_CamRotate, CV_CamRotate_OnChange, 0, NULL, NULL, 0, 0, NULL},
|
{"cam3_rotate", "0", CV_CALL|CV_NOINIT, CV_CamRotate, CV_CamRotate3_OnChange, 0, NULL, NULL, 0, 0, NULL},
|
||||||
{"cam4_rotate", "0", CV_CALL|CV_NOINIT, CV_CamRotate, CV_CamRotate_OnChange, 0, NULL, NULL, 0, 0, NULL}
|
{"cam4_rotate", "0", CV_CALL|CV_NOINIT, CV_CamRotate, CV_CamRotate4_OnChange, 0, NULL, NULL, 0, 0, NULL}
|
||||||
};
|
};
|
||||||
|
|
||||||
consvar_t cv_cam_rotspeed[MAXSPLITSCREENPLAYERS] = {
|
fixed_t t_cam_dist[MAXSPLITSCREENPLAYERS] = {-42,-42,-42,-42};
|
||||||
{"cam_rotspeed", "10", CV_SAVE, rotation_cons_t, NULL, 0, NULL, NULL, 0, 0, NULL},
|
fixed_t t_cam_height[MAXSPLITSCREENPLAYERS] = {-42,-42,-42,-42};
|
||||||
{"cam2_rotspeed", "10", CV_SAVE, rotation_cons_t, NULL, 0, NULL, NULL, 0, 0, NULL},
|
fixed_t t_cam_rotate[MAXSPLITSCREENPLAYERS] = {-42,-42,-42,-42};
|
||||||
{"cam3_rotspeed", "10", CV_SAVE, rotation_cons_t, NULL, 0, NULL, NULL, 0, 0, NULL},
|
|
||||||
{"cam4_rotspeed", "10", CV_SAVE, rotation_cons_t, NULL, 0, NULL, NULL, 0, 0, NULL}
|
|
||||||
};
|
|
||||||
|
|
||||||
fixed_t t_cam_dist[MAXSPLITSCREENPLAYERS] = -42;
|
|
||||||
fixed_t t_cam_height[MAXSPLITSCREENPLAYERS] = -42;
|
|
||||||
fixed_t t_cam_rotate[MAXSPLITSCREENPLAYERS] = -42;
|
|
||||||
|
|
||||||
// Heavily simplified version of G_BuildTicCmd that only takes the local first player's control input and converts it to readable ticcmd_t
|
// Heavily simplified version of G_BuildTicCmd that only takes the local first player's control input and converts it to readable ticcmd_t
|
||||||
// we then throw that ticcmd garbage in the camera and make it move
|
// we then throw that ticcmd garbage in the camera and make it move
|
||||||
|
|
@ -2853,7 +2849,7 @@ static ticcmd_t *P_CameraCmd(camera_t *cam)
|
||||||
|
|
||||||
mouseaiming = true;
|
mouseaiming = true;
|
||||||
invertmouse = cv_invertmouse.value;
|
invertmouse = cv_invertmouse.value;
|
||||||
lookaxis = cv_lookaxis.value;
|
lookaxis = cv_lookaxis[0].value;
|
||||||
|
|
||||||
usejoystick = true;
|
usejoystick = true;
|
||||||
turnright = PlayerInputDown(1, gc_turnright);
|
turnright = PlayerInputDown(1, gc_turnright);
|
||||||
|
|
@ -3055,11 +3051,8 @@ void P_ResetCamera(player_t *player, camera_t *thiscam)
|
||||||
thiscam->y = y;
|
thiscam->y = y;
|
||||||
thiscam->z = z;
|
thiscam->z = z;
|
||||||
|
|
||||||
if (!cv_cam_still[num].value)
|
|
||||||
{
|
|
||||||
thiscam->angle = player->mo->angle;
|
thiscam->angle = player->mo->angle;
|
||||||
thiscam->aiming = 0;
|
thiscam->aiming = 0;
|
||||||
}
|
|
||||||
thiscam->relativex = 0;
|
thiscam->relativex = 0;
|
||||||
|
|
||||||
thiscam->subsector = R_PointInSubsector(thiscam->x,thiscam->y);
|
thiscam->subsector = R_PointInSubsector(thiscam->x,thiscam->y);
|
||||||
|
|
@ -3091,9 +3084,6 @@ boolean P_MoveChaseCamera(player_t *player, camera_t *thiscam, boolean resetcall
|
||||||
|
|
||||||
democam.soundmobj = NULL; // reset this each frame, we don't want the game crashing for stupid reasons now do we
|
democam.soundmobj = NULL; // reset this each frame, we don't want the game crashing for stupid reasons now do we
|
||||||
|
|
||||||
static fixed_t camsideshift[2] = {0, 0};
|
|
||||||
fixed_t shiftx = 0, shifty = 0;
|
|
||||||
|
|
||||||
// We probably shouldn't move the camera if there is no player or player mobj somehow
|
// We probably shouldn't move the camera if there is no player or player mobj somehow
|
||||||
if (!player || !player->mo)
|
if (!player || !player->mo)
|
||||||
return true;
|
return true;
|
||||||
|
|
@ -3128,7 +3118,7 @@ boolean P_MoveChaseCamera(player_t *player, camera_t *thiscam, boolean resetcall
|
||||||
mo = player->mo;
|
mo = player->mo;
|
||||||
|
|
||||||
#ifndef NOCLIPCAM
|
#ifndef NOCLIPCAM
|
||||||
cameranoclip = ((player->pflags & (PF_NOCLIP|PF_NIGHTSMODE))
|
cameranoclip = ((player->pflags & PF_NOCLIP)
|
||||||
|| (mo->flags & (MF_NOCLIP|MF_NOCLIPHEIGHT)) // Noclipping player camera noclips too!!
|
|| (mo->flags & (MF_NOCLIP|MF_NOCLIPHEIGHT)) // Noclipping player camera noclips too!!
|
||||||
|| (leveltime < introtime)); // Kart intro cam
|
|| (leveltime < introtime)); // Kart intro cam
|
||||||
#endif
|
#endif
|
||||||
|
|
@ -3290,11 +3280,7 @@ boolean P_MoveChaseCamera(player_t *player, camera_t *thiscam, boolean resetcall
|
||||||
}
|
}
|
||||||
pitch = thiscam->pitch + (angle_t)FixedMul(pitch - thiscam->pitch, camspeed/4);
|
pitch = thiscam->pitch + (angle_t)FixedMul(pitch - thiscam->pitch, camspeed/4);
|
||||||
|
|
||||||
if (rendermode == render_opengl
|
if (rendermode == render_opengl && !cv_glshearing.value)
|
||||||
#ifdef GL_SHADERS/* just so we can't possibly forget about it */
|
|
||||||
&& !cv_grshearing.value
|
|
||||||
#endif
|
|
||||||
)
|
|
||||||
distxy = FixedMul(dist, FINECOSINE((pitch>>ANGLETOFINESHIFT) & FINEMASK));
|
distxy = FixedMul(dist, FINECOSINE((pitch>>ANGLETOFINESHIFT) & FINEMASK));
|
||||||
else
|
else
|
||||||
distxy = dist;
|
distxy = dist;
|
||||||
|
|
@ -3600,7 +3586,7 @@ boolean P_MoveChaseCamera(player_t *player, camera_t *thiscam, boolean resetcall
|
||||||
angle -= (angle - thiscam->pitch)/2;
|
angle -= (angle - thiscam->pitch)/2;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (player->playerstate != PST_DEAD && !((player->pflags & PF_NIGHTSMODE) && player->exiting))
|
if (player->playerstate != PST_DEAD)
|
||||||
angle += (focusaiming < ANGLE_180 ? focusaiming/2 : InvAngle(InvAngle(focusaiming)/2)); // overcomplicated version of '((signed)focusaiming)/2;'
|
angle += (focusaiming < ANGLE_180 ? focusaiming/2 : InvAngle(InvAngle(focusaiming)/2)); // overcomplicated version of '((signed)focusaiming)/2;'
|
||||||
|
|
||||||
if (!camstill && !timeover) // Keep the view still...
|
if (!camstill && !timeover) // Keep the view still...
|
||||||
|
|
@ -3866,7 +3852,7 @@ void P_DoTimeOver(player_t *player)
|
||||||
if (player->mo)
|
if (player->mo)
|
||||||
{
|
{
|
||||||
S_StopSound(player->mo);
|
S_StopSound(player->mo);
|
||||||
P_DamageMobj(player->mo, NULL, NULL, 10000);
|
P_DamageMobj(player->mo, NULL, NULL, 1, DMG_INSTAKILL);
|
||||||
}
|
}
|
||||||
|
|
||||||
P_EndingMusic(player);
|
P_EndingMusic(player);
|
||||||
|
|
@ -3875,6 +3861,9 @@ void P_DoTimeOver(player_t *player)
|
||||||
exitcountdown = 5*TICRATE;
|
exitcountdown = 5*TICRATE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SRB2Kart: These are useful functions, but we aren't using them yet.
|
||||||
|
#if 0
|
||||||
|
|
||||||
// Get an axis of a certain ID number
|
// Get an axis of a certain ID number
|
||||||
static mobj_t *P_GetAxis(INT32 num)
|
static mobj_t *P_GetAxis(INT32 num)
|
||||||
{
|
{
|
||||||
|
|
@ -3962,6 +3951,8 @@ static void P_ParabolicMove(mobj_t *mo, fixed_t x, fixed_t y, fixed_t z, fixed_t
|
||||||
mo->momz = FixedDiv(dh, 2*fixConst) + FixedDiv(dz, FixedDiv(dh, fixConst/2));
|
mo->momz = FixedDiv(dh, 2*fixConst) + FixedDiv(dz, FixedDiv(dh, fixConst/2));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
/* set follower state with our weird hacks
|
/* set follower state with our weird hacks
|
||||||
the reason we do this is to avoid followers ever using actions (majormods, yikes!)
|
the reason we do this is to avoid followers ever using actions (majormods, yikes!)
|
||||||
without having to touch p_mobj.c.
|
without having to touch p_mobj.c.
|
||||||
|
|
@ -4006,7 +3997,7 @@ static void P_HandleFollower(player_t *player)
|
||||||
angle_t an;
|
angle_t an;
|
||||||
fixed_t zoffs;
|
fixed_t zoffs;
|
||||||
fixed_t sx, sy, sz;
|
fixed_t sx, sy, sz;
|
||||||
UINT8 color;
|
UINT16 color;
|
||||||
|
|
||||||
fixed_t bubble; // bubble scale (0 if no bubble)
|
fixed_t bubble; // bubble scale (0 if no bubble)
|
||||||
mobj_t *bmobj; // temp bubble mobj
|
mobj_t *bmobj; // temp bubble mobj
|
||||||
|
|
@ -4060,7 +4051,7 @@ static void P_HandleFollower(player_t *player)
|
||||||
color = player->skincolor;
|
color = player->skincolor;
|
||||||
break;
|
break;
|
||||||
case MAXSKINCOLORS+1: // "Opposite"
|
case MAXSKINCOLORS+1: // "Opposite"
|
||||||
color = KartColor_Opposite[player->skincolor*2];
|
color = skincolors[player->skincolor].invcolor;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
|
||||||
|
|
@ -4179,7 +4170,7 @@ static void P_HandleFollower(player_t *player)
|
||||||
|
|
||||||
// handle follower animations. Could probably be better...
|
// handle follower animations. Could probably be better...
|
||||||
// hurt or dead
|
// hurt or dead
|
||||||
if (player->kartstuff[k_spinouttimer] || player->mo->state == &states[S_KART_SPIN] || player->mo->health <= 0)
|
if (player->kartstuff[k_spinouttimer] || player->mo->state == &states[S_KART_SPINOUT] || player->mo->health <= 0)
|
||||||
{
|
{
|
||||||
player->follower->movecount = 0; // cancel hit confirm.
|
player->follower->movecount = 0; // cancel hit confirm.
|
||||||
player->follower->angle = player->frameangle; // spin out
|
player->follower->angle = player->frameangle; // spin out
|
||||||
|
|
@ -4413,7 +4404,9 @@ void P_PlayerThink(player_t *player)
|
||||||
if (player->spectator &&
|
if (player->spectator &&
|
||||||
#endif
|
#endif
|
||||||
(gametyperules & GTR_LIVES))
|
(gametyperules & GTR_LIVES))
|
||||||
|
{
|
||||||
/*P_ConsiderAllGone()*/;
|
/*P_ConsiderAllGone()*/;
|
||||||
|
}
|
||||||
|
|
||||||
if (player->playerstate == PST_DEAD)
|
if (player->playerstate == PST_DEAD)
|
||||||
{
|
{
|
||||||
|
|
@ -4614,7 +4607,7 @@ void P_PlayerThink(player_t *player)
|
||||||
if (player->powers[pw_nocontrol] & ((1<<15)-1) && player->powers[pw_nocontrol] < UINT16_MAX)
|
if (player->powers[pw_nocontrol] & ((1<<15)-1) && player->powers[pw_nocontrol] < UINT16_MAX)
|
||||||
{
|
{
|
||||||
if (!(--player->powers[pw_nocontrol]))
|
if (!(--player->powers[pw_nocontrol]))
|
||||||
player->pflags &= ~PF_SKIDDOWN;
|
player->pflags &= ~PF_WPNDOWN;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
player->powers[pw_nocontrol] = 0;
|
player->powers[pw_nocontrol] = 0;
|
||||||
|
|
@ -4629,8 +4622,7 @@ void P_PlayerThink(player_t *player)
|
||||||
player->powers[pw_super]++;
|
player->powers[pw_super]++;
|
||||||
|
|
||||||
// Flash player after being hit.
|
// Flash player after being hit.
|
||||||
if (!(//player->pflags & PF_NIGHTSMODE ||
|
if (!(player->kartstuff[k_hyudorotimer] // SRB2kart - fixes Hyudoro not flashing when it should.
|
||||||
player->kartstuff[k_hyudorotimer] // SRB2kart - fixes Hyudoro not flashing when it should.
|
|
||||||
|| player->kartstuff[k_growshrinktimer] > 0 // Grow doesn't flash either.
|
|| player->kartstuff[k_growshrinktimer] > 0 // Grow doesn't flash either.
|
||||||
|| (player->respawn.state != RESPAWNST_NONE) // Respawn timer (for drop dash effect)
|
|| (player->respawn.state != RESPAWNST_NONE) // Respawn timer (for drop dash effect)
|
||||||
|| (player->pflags & PF_GAMETYPEOVER) // NO CONTEST explosion
|
|| (player->pflags & PF_GAMETYPEOVER) // NO CONTEST explosion
|
||||||
|
|
@ -4651,36 +4643,6 @@ void P_PlayerThink(player_t *player)
|
||||||
LUAh_PlayerThink(player);
|
LUAh_PlayerThink(player);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Checks if the mobj is above lava. Used by Pterabyte.
|
|
||||||
static boolean P_MobjAboveLava(mobj_t *mobj)
|
|
||||||
{
|
|
||||||
sector_t *sector = mobj->subsector->sector;
|
|
||||||
|
|
||||||
if (sector->ffloors)
|
|
||||||
{
|
|
||||||
ffloor_t *rover;
|
|
||||||
|
|
||||||
for (rover = sector->ffloors; rover; rover = rover->next)
|
|
||||||
{
|
|
||||||
if (!(rover->flags & FF_EXISTS) || !(rover->flags & FF_SWIMMABLE) || GETSECSPECIAL(rover->master->frontsector->special, 1) != 3)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
if (mobj->eflags & MFE_VERTICALFLIP)
|
|
||||||
{
|
|
||||||
if (*rover->bottomheight <= mobj->ceilingz && *rover->bottomheight >= mobj->z)
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (*rover->topheight >= mobj->floorz && *rover->topheight <= mobj->z)
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// P_PlayerAfterThink
|
// P_PlayerAfterThink
|
||||||
//
|
//
|
||||||
|
|
@ -4688,8 +4650,6 @@ static boolean P_MobjAboveLava(mobj_t *mobj)
|
||||||
//
|
//
|
||||||
void P_PlayerAfterThink(player_t *player)
|
void P_PlayerAfterThink(player_t *player)
|
||||||
{
|
{
|
||||||
ticcmd_t *cmd;
|
|
||||||
//INT32 oldweapon = player->currentweapon; // SRB2kart - unused
|
|
||||||
camera_t *thiscam = NULL; // if not one of the displayed players, just don't bother
|
camera_t *thiscam = NULL; // if not one of the displayed players, just don't bother
|
||||||
UINT8 i;
|
UINT8 i;
|
||||||
|
|
||||||
|
|
@ -4701,8 +4661,6 @@ void P_PlayerAfterThink(player_t *player)
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
cmd = &player->cmd;
|
|
||||||
|
|
||||||
#ifdef SECTORSPECIALSAFTERTHINK
|
#ifdef SECTORSPECIALSAFTERTHINK
|
||||||
if (player->onconveyor != 1 || !P_IsObjectOnGround(player->mo))
|
if (player->onconveyor != 1 || !P_IsObjectOnGround(player->mo))
|
||||||
player->onconveyor = 0;
|
player->onconveyor = 0;
|
||||||
|
|
|
||||||
12
src/r_bsp.c
12
src/r_bsp.c
|
|
@ -974,7 +974,7 @@ static void R_Subsector(size_t num)
|
||||||
&& ((viewz < heightcheck && (rover->flags & FF_BOTHPLANES || !(rover->flags & FF_INVERTPLANES)))
|
&& ((viewz < heightcheck && (rover->flags & FF_BOTHPLANES || !(rover->flags & FF_INVERTPLANES)))
|
||||||
|| (viewz > heightcheck && (rover->flags & FF_BOTHPLANES || rover->flags & FF_INVERTPLANES))))
|
|| (viewz > heightcheck && (rover->flags & FF_BOTHPLANES || rover->flags & FF_INVERTPLANES))))
|
||||||
{
|
{
|
||||||
UINT8 newlightlevel;
|
INT32 newlightlevel;
|
||||||
|
|
||||||
light = R_GetPlaneLight(frontsector, planecenterz,
|
light = R_GetPlaneLight(frontsector, planecenterz,
|
||||||
viewz < heightcheck);
|
viewz < heightcheck);
|
||||||
|
|
@ -1010,7 +1010,7 @@ static void R_Subsector(size_t num)
|
||||||
&& ((viewz > heightcheck && (rover->flags & FF_BOTHPLANES || !(rover->flags & FF_INVERTPLANES)))
|
&& ((viewz > heightcheck && (rover->flags & FF_BOTHPLANES || !(rover->flags & FF_INVERTPLANES)))
|
||||||
|| (viewz < heightcheck && (rover->flags & FF_BOTHPLANES || rover->flags & FF_INVERTPLANES))))
|
|| (viewz < heightcheck && (rover->flags & FF_BOTHPLANES || rover->flags & FF_INVERTPLANES))))
|
||||||
{
|
{
|
||||||
UINT8 newlightlevel;
|
INT32 newlightlevel;
|
||||||
|
|
||||||
light = R_GetPlaneLight(frontsector, planecenterz, viewz < heightcheck);
|
light = R_GetPlaneLight(frontsector, planecenterz, viewz < heightcheck);
|
||||||
|
|
||||||
|
|
@ -1059,12 +1059,12 @@ static void R_Subsector(size_t num)
|
||||||
&& polysec->floorheight >= floorcenterz
|
&& polysec->floorheight >= floorcenterz
|
||||||
&& (viewz < polysec->floorheight))
|
&& (viewz < polysec->floorheight))
|
||||||
{
|
{
|
||||||
UINT8 newlightlevel;
|
INT32 newlightlevel;
|
||||||
|
|
||||||
light = R_GetPlaneLight(frontsector, polysec->floorheight, viewz < polysec->floorheight);
|
light = R_GetPlaneLight(frontsector, polysec->floorheight, viewz < polysec->floorheight);
|
||||||
|
|
||||||
newlightlevel = (light == -1 ? frontsector->lightlevel : *frontsector->lightlist[light].lightlevel);
|
newlightlevel = (light == -1 ? frontsector->lightlevel : *frontsector->lightlist[light].lightlevel);
|
||||||
R_PlaneLightOverride(polysec, false, newlightlevel);
|
R_PlaneLightOverride(polysec, false, &newlightlevel);
|
||||||
|
|
||||||
ffloor[numffloors].plane = R_FindPlane(polysec->floorheight, polysec->floorpic,
|
ffloor[numffloors].plane = R_FindPlane(polysec->floorheight, polysec->floorpic,
|
||||||
(light == -1 ? frontsector->lightlevel : *frontsector->lightlist[light].lightlevel), polysec->floor_xoffs, polysec->floor_yoffs,
|
(light == -1 ? frontsector->lightlevel : *frontsector->lightlist[light].lightlevel), polysec->floor_xoffs, polysec->floor_yoffs,
|
||||||
|
|
@ -1090,12 +1090,12 @@ static void R_Subsector(size_t num)
|
||||||
&& polysec->ceilingheight <= ceilingcenterz
|
&& polysec->ceilingheight <= ceilingcenterz
|
||||||
&& (viewz > polysec->ceilingheight))
|
&& (viewz > polysec->ceilingheight))
|
||||||
{
|
{
|
||||||
UINT8 newlightlevel;
|
INT32 newlightlevel;
|
||||||
|
|
||||||
light = R_GetPlaneLight(frontsector, polysec->floorheight, viewz < polysec->floorheight);
|
light = R_GetPlaneLight(frontsector, polysec->floorheight, viewz < polysec->floorheight);
|
||||||
|
|
||||||
newlightlevel = (light == -1 ? frontsector->lightlevel : *frontsector->lightlist[light].lightlevel);
|
newlightlevel = (light == -1 ? frontsector->lightlevel : *frontsector->lightlist[light].lightlevel);
|
||||||
R_PlaneLightOverride(polysec, true, newlightlevel);
|
R_PlaneLightOverride(polysec, true, &newlightlevel);
|
||||||
|
|
||||||
ffloor[numffloors].plane = R_FindPlane(polysec->ceilingheight, polysec->ceilingpic,
|
ffloor[numffloors].plane = R_FindPlane(polysec->ceilingheight, polysec->ceilingpic,
|
||||||
(light == -1 ? frontsector->lightlevel : *frontsector->lightlist[light].lightlevel), polysec->ceiling_xoffs, polysec->ceiling_yoffs, polysec->ceilingpic_angle-po->angle,
|
(light == -1 ? frontsector->lightlevel : *frontsector->lightlist[light].lightlevel), polysec->ceiling_xoffs, polysec->ceiling_yoffs, polysec->ceilingpic_angle-po->angle,
|
||||||
|
|
|
||||||
97
src/r_data.c
97
src/r_data.c
|
|
@ -1671,94 +1671,6 @@ static void R_InitSpriteLumps(void)
|
||||||
Z_Malloc(max_spritelumps*sizeof(*spritecachedinfo), PU_STATIC, &spritecachedinfo);
|
Z_Malloc(max_spritelumps*sizeof(*spritecachedinfo), PU_STATIC, &spritecachedinfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
|
||||||
// R_CreateFadeColormaps
|
|
||||||
//
|
|
||||||
|
|
||||||
static void R_CreateFadeColormaps(void)
|
|
||||||
{
|
|
||||||
UINT8 px, fade;
|
|
||||||
RGBA_t rgba;
|
|
||||||
INT32 r, g, b;
|
|
||||||
size_t len, i;
|
|
||||||
|
|
||||||
len = (256 * FADECOLORMAPROWS);
|
|
||||||
fadecolormap = Z_MallocAlign(len*2, PU_STATIC, NULL, 8);
|
|
||||||
for (i = 0; i < len*2; i++)
|
|
||||||
fadecolormap[i] = (i%256);
|
|
||||||
|
|
||||||
// Load in the light tables, now 64k aligned for smokie...
|
|
||||||
{
|
|
||||||
lumpnum_t lump = W_CheckNumForName("FADECMAP");
|
|
||||||
lumpnum_t wlump = W_CheckNumForName("FADEWMAP");
|
|
||||||
|
|
||||||
// to black
|
|
||||||
if (lump != LUMPERROR)
|
|
||||||
W_ReadLumpHeader(lump, fadecolormap, len, 0U);
|
|
||||||
// to white
|
|
||||||
if (wlump != LUMPERROR)
|
|
||||||
W_ReadLumpHeader(wlump, fadecolormap+len, len, 0U);
|
|
||||||
|
|
||||||
// missing "to white" colormap lump
|
|
||||||
if (lump != LUMPERROR && wlump == LUMPERROR)
|
|
||||||
goto makewhite;
|
|
||||||
// missing "to black" colormap lump
|
|
||||||
else if (lump == LUMPERROR && wlump != LUMPERROR)
|
|
||||||
goto makeblack;
|
|
||||||
// both lumps found
|
|
||||||
else if (lump != LUMPERROR && wlump != LUMPERROR)
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
#define GETCOLOR \
|
|
||||||
px = colormaps[i%256]; \
|
|
||||||
fade = (i/256) * (256 / FADECOLORMAPROWS); \
|
|
||||||
rgba = V_GetMasterColor(px);
|
|
||||||
|
|
||||||
// to black
|
|
||||||
makeblack:
|
|
||||||
for (i = 0; i < len; i++)
|
|
||||||
{
|
|
||||||
// find pixel and fade amount
|
|
||||||
GETCOLOR;
|
|
||||||
|
|
||||||
// subtractive color blending
|
|
||||||
r = rgba.s.red - FADEREDFACTOR*fade/10;
|
|
||||||
g = rgba.s.green - FADEGREENFACTOR*fade/10;
|
|
||||||
b = rgba.s.blue - FADEBLUEFACTOR*fade/10;
|
|
||||||
|
|
||||||
// clamp values
|
|
||||||
if (r < 0) r = 0;
|
|
||||||
if (g < 0) g = 0;
|
|
||||||
if (b < 0) b = 0;
|
|
||||||
|
|
||||||
// find nearest color in palette
|
|
||||||
fadecolormap[i] = NearestColor(r,g,b);
|
|
||||||
}
|
|
||||||
|
|
||||||
// to white
|
|
||||||
makewhite:
|
|
||||||
for (i = len; i < len*2; i++)
|
|
||||||
{
|
|
||||||
// find pixel and fade amount
|
|
||||||
GETCOLOR;
|
|
||||||
|
|
||||||
// additive color blending
|
|
||||||
r = rgba.s.red + FADEREDFACTOR*fade/10;
|
|
||||||
g = rgba.s.green + FADEGREENFACTOR*fade/10;
|
|
||||||
b = rgba.s.blue + FADEBLUEFACTOR*fade/10;
|
|
||||||
|
|
||||||
// clamp values
|
|
||||||
if (r > 255) r = 255;
|
|
||||||
if (g > 255) g = 255;
|
|
||||||
if (b > 255) b = 255;
|
|
||||||
|
|
||||||
// find nearest color in palette
|
|
||||||
fadecolormap[i] = NearestColor(r,g,b);
|
|
||||||
}
|
|
||||||
#undef GETCOLOR
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// R_InitColormaps
|
// R_InitColormaps
|
||||||
//
|
//
|
||||||
|
|
@ -1774,9 +1686,6 @@ static void R_InitColormaps(void)
|
||||||
W_ReadLump(lump, colormaps);
|
W_ReadLump(lump, colormaps);
|
||||||
// no need to init encoremap at this stage
|
// no need to init encoremap at this stage
|
||||||
|
|
||||||
// Make colormap for fades
|
|
||||||
R_CreateFadeColormaps();
|
|
||||||
|
|
||||||
// Init Boom colormaps.
|
// Init Boom colormaps.
|
||||||
R_ClearColormaps();
|
R_ClearColormaps();
|
||||||
|
|
||||||
|
|
@ -1806,9 +1715,6 @@ void R_ReInitColormaps(UINT16 num, lumpnum_t newencoremap)
|
||||||
}
|
}
|
||||||
|
|
||||||
W_ReadLumpHeader(lump, colormaps, W_LumpLength(basecolormaplump), 0U);
|
W_ReadLumpHeader(lump, colormaps, W_LumpLength(basecolormaplump), 0U);
|
||||||
if (fadecolormap)
|
|
||||||
Z_Free(fadecolormap);
|
|
||||||
R_CreateFadeColormaps();
|
|
||||||
|
|
||||||
// Encore mode.
|
// Encore mode.
|
||||||
if (newencoremap != LUMPERROR)
|
if (newencoremap != LUMPERROR)
|
||||||
|
|
@ -2171,6 +2077,7 @@ lighttable_t *R_CreateLightTable(extracolormap_t *extra_colormap)
|
||||||
// This code creates the colormap array used by software renderer
|
// This code creates the colormap array used by software renderer
|
||||||
/////////////////////
|
/////////////////////
|
||||||
{
|
{
|
||||||
|
double r, g, b, cbrightness;
|
||||||
int p;
|
int p;
|
||||||
lighttable_t *colormap_p;
|
lighttable_t *colormap_p;
|
||||||
|
|
||||||
|
|
@ -2241,7 +2148,7 @@ lighttable_t *R_CreateLightTable(extracolormap_t *extra_colormap)
|
||||||
|
|
||||||
if (encoremap)
|
if (encoremap)
|
||||||
{
|
{
|
||||||
lighttable_t *colormap_p2 = extra_colormaps[mapnum].colormap;
|
lighttable_t *colormap_p2 = lighttable;
|
||||||
|
|
||||||
for (p = 0; p < 32; p++)
|
for (p = 0; p < 32; p++)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -215,7 +215,7 @@ UINT8* R_GetTranslationColormap(INT32 skinnum, skincolornum_t color, UINT8 flags
|
||||||
{
|
{
|
||||||
for (i = 0; i < (INT32)(sizeof(translationtablecache) / sizeof(translationtablecache[0])); i++)
|
for (i = 0; i < (INT32)(sizeof(translationtablecache) / sizeof(translationtablecache[0])); i++)
|
||||||
if (translationtablecache[i] && translationtablecache[i][color])
|
if (translationtablecache[i] && translationtablecache[i][color])
|
||||||
R_GenerateTranslationColormap(translationtablecache[i][color], i>=MAXSKINS ? MAXSKINS-i-1 : i, color);
|
K_GenerateKartColormap(translationtablecache[i][color], i>=MAXSKINS ? MAXSKINS-i-1 : i, color);
|
||||||
skincolor_modified[color] = false;
|
skincolor_modified[color] = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
37
src/r_main.c
37
src/r_main.c
|
|
@ -79,32 +79,6 @@ mobj_t *r_viewmobj;
|
||||||
|
|
||||||
int r_splitscreen;
|
int r_splitscreen;
|
||||||
|
|
||||||
// PORTALS!
|
|
||||||
// You can thank and/or curse JTE for these.
|
|
||||||
UINT8 portalrender;
|
|
||||||
sector_t *portalcullsector;
|
|
||||||
typedef struct portal_pair
|
|
||||||
{
|
|
||||||
INT32 line1;
|
|
||||||
INT32 line2;
|
|
||||||
UINT8 pass;
|
|
||||||
struct portal_pair *next;
|
|
||||||
|
|
||||||
fixed_t viewx;
|
|
||||||
fixed_t viewy;
|
|
||||||
fixed_t viewz;
|
|
||||||
angle_t viewangle;
|
|
||||||
|
|
||||||
INT32 start;
|
|
||||||
INT32 end;
|
|
||||||
INT16 *ceilingclip;
|
|
||||||
INT16 *floorclip;
|
|
||||||
fixed_t *frontscale;
|
|
||||||
} portal_pair;
|
|
||||||
portal_pair *portal_base, *portal_cap;
|
|
||||||
line_t *portalclipline;
|
|
||||||
INT32 portalclipstart, portalclipend;
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// precalculated math tables
|
// precalculated math tables
|
||||||
//
|
//
|
||||||
|
|
@ -172,10 +146,12 @@ void SendWeaponPref3(void);
|
||||||
void SendWeaponPref4(void);
|
void SendWeaponPref4(void);
|
||||||
|
|
||||||
consvar_t cv_tailspickup = {"tailspickup", "On", CV_NETVAR|CV_NOSHOWHELP, CV_OnOff, NULL, 0, NULL, NULL, 0, 0, NULL};
|
consvar_t cv_tailspickup = {"tailspickup", "On", CV_NETVAR|CV_NOSHOWHELP, CV_OnOff, NULL, 0, NULL, NULL, 0, 0, NULL};
|
||||||
consvar_t cv_chasecam = {"chasecam", "On", CV_CALL, CV_OnOff, ChaseCam_OnChange, 0, NULL, NULL, 0, 0, NULL};
|
consvar_t cv_chasecam[MAXSPLITSCREENPLAYERS] = {
|
||||||
consvar_t cv_chasecam2 = {"chasecam2", "On", CV_CALL, CV_OnOff, ChaseCam2_OnChange, 0, NULL, NULL, 0, 0, NULL};
|
{"chasecam", "On", CV_CALL, CV_OnOff, ChaseCam_OnChange, 0, NULL, NULL, 0, 0, NULL},
|
||||||
consvar_t cv_chasecam3 = {"chasecam3", "On", CV_CALL, CV_OnOff, ChaseCam3_OnChange, 0, NULL, NULL, 0, 0, NULL};
|
{"chasecam2", "On", CV_CALL, CV_OnOff, ChaseCam2_OnChange, 0, NULL, NULL, 0, 0, NULL},
|
||||||
consvar_t cv_chasecam4 = {"chasecam4", "On", CV_CALL, CV_OnOff, ChaseCam4_OnChange, 0, NULL, NULL, 0, 0, NULL};
|
{"chasecam3", "On", CV_CALL, CV_OnOff, ChaseCam3_OnChange, 0, NULL, NULL, 0, 0, NULL},
|
||||||
|
{"chasecam4", "On", CV_CALL, CV_OnOff, ChaseCam4_OnChange, 0, NULL, NULL, 0, 0, NULL}
|
||||||
|
};
|
||||||
|
|
||||||
consvar_t cv_shadow = {"shadow", "On", CV_SAVE, CV_OnOff, NULL, 0, NULL, NULL, 0, 0, NULL};
|
consvar_t cv_shadow = {"shadow", "On", CV_SAVE, CV_OnOff, NULL, 0, NULL, NULL, 0, 0, NULL};
|
||||||
consvar_t cv_skybox = {"skybox", "On", CV_SAVE, CV_OnOff, NULL, 0, NULL, NULL, 0, 0, NULL};
|
consvar_t cv_skybox = {"skybox", "On", CV_SAVE, CV_OnOff, NULL, 0, NULL, NULL, 0, 0, NULL};
|
||||||
|
|
@ -1664,7 +1640,6 @@ void R_RegisterEngineStuff(void)
|
||||||
CV_RegisterVar(&cv_cam_height[i]);
|
CV_RegisterVar(&cv_cam_height[i]);
|
||||||
CV_RegisterVar(&cv_cam_speed[i]);
|
CV_RegisterVar(&cv_cam_speed[i]);
|
||||||
CV_RegisterVar(&cv_cam_rotate[i]);
|
CV_RegisterVar(&cv_cam_rotate[i]);
|
||||||
CV_RegisterVar(&cv_cam_rotspeed[i]);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
CV_RegisterVar(&cv_showhud);
|
CV_RegisterVar(&cv_showhud);
|
||||||
|
|
|
||||||
|
|
@ -1036,6 +1036,8 @@ void R_DrawSinglePlane(visplane_t *pl)
|
||||||
itswater = true;
|
itswater = true;
|
||||||
if (spanfunctype == SPANDRAWFUNC_TRANS)
|
if (spanfunctype == SPANDRAWFUNC_TRANS)
|
||||||
{
|
{
|
||||||
|
UINT8 i;
|
||||||
|
|
||||||
spanfunctype = SPANDRAWFUNC_WATER;
|
spanfunctype = SPANDRAWFUNC_WATER;
|
||||||
|
|
||||||
// Copy the current scene, ugh
|
// Copy the current scene, ugh
|
||||||
|
|
@ -1048,11 +1050,44 @@ void R_DrawSinglePlane(visplane_t *pl)
|
||||||
bottom = vid.height;
|
bottom = vid.height;
|
||||||
|
|
||||||
// Only copy the part of the screen we need
|
// Only copy the part of the screen we need
|
||||||
VID_BlitLinearScreen((splitscreen && viewplayer == &players[secondarydisplayplayer]) ? screens[0] + (top+(vid.height>>1))*vid.width : screens[0]+((top)*vid.width), screens[1]+((top)*vid.width),
|
for (i = 0; i <= r_splitscreen; i++)
|
||||||
vid.width, bottom-top,
|
{
|
||||||
|
if (viewplayer == &players[displayplayers[i]])
|
||||||
|
{
|
||||||
|
INT32 scrx = 0;
|
||||||
|
INT32 scry = top;
|
||||||
|
INT32 offset;
|
||||||
|
|
||||||
|
if (r_splitscreen == 1)
|
||||||
|
{
|
||||||
|
if (i & 1)
|
||||||
|
{
|
||||||
|
scry += viewheight;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (i & 1)
|
||||||
|
{
|
||||||
|
scrx += viewwidth;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (i / 2)
|
||||||
|
{
|
||||||
|
scry += viewheight;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
offset = (scry*vid.width) + scrx;
|
||||||
|
|
||||||
|
// No idea if this works
|
||||||
|
VID_BlitLinearScreen(screens[0] + offset, screens[1] + offset,
|
||||||
|
viewwidth, bottom-top,
|
||||||
vid.width, vid.width);
|
vid.width, vid.width);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
|
||||||
|
|
@ -55,6 +55,8 @@ UINT8 P_GetSkinSprite2(skin_t *skin, UINT8 spr2, player_t *player)
|
||||||
{
|
{
|
||||||
UINT8 super = 0, i = 0;
|
UINT8 super = 0, i = 0;
|
||||||
|
|
||||||
|
(void)player;
|
||||||
|
|
||||||
if (!skin)
|
if (!skin)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
|
@ -107,7 +109,6 @@ static void Sk_SetDefaultValue(skin_t *skin)
|
||||||
skin->flags = 0;
|
skin->flags = 0;
|
||||||
|
|
||||||
strcpy(skin->realname, "Someone");
|
strcpy(skin->realname, "Someone");
|
||||||
strcpy(skin->hudname, "???");
|
|
||||||
|
|
||||||
skin->starttranscolor = 96;
|
skin->starttranscolor = 96;
|
||||||
skin->prefcolor = SKINCOLOR_GREEN;
|
skin->prefcolor = SKINCOLOR_GREEN;
|
||||||
|
|
@ -150,7 +151,7 @@ UINT32 R_GetSkinAvailabilities(void)
|
||||||
UINT8 i;
|
UINT8 i;
|
||||||
UINT32 response = 0;
|
UINT32 response = 0;
|
||||||
|
|
||||||
for (i = 0; i < MAXUNLOCKABLES; s++)
|
for (i = 0; i < MAXUNLOCKABLES; i++)
|
||||||
{
|
{
|
||||||
if (unlockables[i].type == SECRET_SKIN && unlockables[i].unlocked)
|
if (unlockables[i].type == SECRET_SKIN && unlockables[i].unlocked)
|
||||||
{
|
{
|
||||||
|
|
@ -274,7 +275,7 @@ void SetPlayerSkinByNum(INT32 playernum, INT32 skinnum)
|
||||||
player_t *player = &players[playernum];
|
player_t *player = &players[playernum];
|
||||||
skin_t *skin = &skins[skinnum];
|
skin_t *skin = &skins[skinnum];
|
||||||
UINT16 newcolor = 0;
|
UINT16 newcolor = 0;
|
||||||
UINT8 i;
|
//UINT8 i;
|
||||||
|
|
||||||
if (skinnum >= 0 && skinnum < numskins && R_SkinUsable(playernum, skinnum)) // Make sure it exists!
|
if (skinnum >= 0 && skinnum < numskins && R_SkinUsable(playernum, skinnum)) // Make sure it exists!
|
||||||
{
|
{
|
||||||
|
|
@ -360,8 +361,6 @@ static UINT16 W_CheckForSkinMarkerInPwad(UINT16 wadid, UINT16 startlump)
|
||||||
return INT16_MAX; // not found
|
return INT16_MAX; // not found
|
||||||
}
|
}
|
||||||
|
|
||||||
#define HUDNAMEWRITE(value) STRBUFCPY(skin->hudname, value)
|
|
||||||
|
|
||||||
// turn _ into spaces and . into katana dot
|
// turn _ into spaces and . into katana dot
|
||||||
#define SYMBOLCONVERT(name) for (value = name; *value; value++)\
|
#define SYMBOLCONVERT(name) for (value = name; *value; value++)\
|
||||||
{\
|
{\
|
||||||
|
|
@ -681,8 +680,8 @@ next_token:
|
||||||
|
|
||||||
R_FlushTranslationColormapCache();
|
R_FlushTranslationColormapCache();
|
||||||
|
|
||||||
if (!skin->availability) // Safe to print...
|
|
||||||
CONS_Printf(M_GetText("Added skin '%s'\n"), skin->name);
|
CONS_Printf(M_GetText("Added skin '%s'\n"), skin->name);
|
||||||
|
|
||||||
#ifdef SKINVALUES
|
#ifdef SKINVALUES
|
||||||
skin_cons_t[numskins].value = numskins;
|
skin_cons_t[numskins].value = numskins;
|
||||||
skin_cons_t[numskins].strvalue = skin->name;
|
skin_cons_t[numskins].strvalue = skin->name;
|
||||||
|
|
@ -847,13 +846,11 @@ next_token:
|
||||||
|
|
||||||
R_FlushTranslationColormapCache();
|
R_FlushTranslationColormapCache();
|
||||||
|
|
||||||
if (!skin->availability) // Safe to print...
|
|
||||||
CONS_Printf(M_GetText("Patched skin '%s'\n"), skin->name);
|
CONS_Printf(M_GetText("Patched skin '%s'\n"), skin->name);
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
#undef HUDNAMEWRITE
|
|
||||||
#undef SYMBOLCONVERT
|
#undef SYMBOLCONVERT
|
||||||
|
|
||||||
// SRB2Kart: Followers!
|
// SRB2Kart: Followers!
|
||||||
|
|
|
||||||
|
|
@ -791,15 +791,7 @@ static void R_DrawVisSprite(vissprite_t *vis)
|
||||||
colfunc = colfuncs[COLDRAWFUNC_TRANSTRANS];
|
colfunc = colfuncs[COLDRAWFUNC_TRANSTRANS];
|
||||||
dc_transmap = vis->transmap;
|
dc_transmap = vis->transmap;
|
||||||
if (!(vis->cut & SC_PRECIP) && vis->mobj->colorized)
|
if (!(vis->cut & SC_PRECIP) && vis->mobj->colorized)
|
||||||
dc_translation = R_GetTranslationColormap(TC_RAINBOW, vis->mobj->color, GTC_CACHE);
|
|
||||||
else if (!(vis->cut & SC_PRECIP)
|
|
||||||
&& vis->mobj->player && vis->mobj->player->dashmode >= DASHMODE_THRESHOLD
|
|
||||||
&& (vis->mobj->player->charflags & SF_DASHMODE)
|
|
||||||
&& ((leveltime/2) & 1))
|
|
||||||
{
|
{
|
||||||
if (vis->mobj->player->charflags & SF_MACHINE)
|
|
||||||
dc_translation = R_GetTranslationColormap(TC_DASHMODE, 0, GTC_CACHE);
|
|
||||||
else
|
|
||||||
dc_translation = R_GetTranslationColormap(TC_RAINBOW, vis->mobj->color, GTC_CACHE);
|
dc_translation = R_GetTranslationColormap(TC_RAINBOW, vis->mobj->color, GTC_CACHE);
|
||||||
}
|
}
|
||||||
else if (!(vis->cut & SC_PRECIP) && vis->mobj->skin && vis->mobj->sprite == SPR_PLAY) // MT_GHOST LOOKS LIKE A PLAYER SO USE THE PLAYER TRANSLATION TABLES. >_>
|
else if (!(vis->cut & SC_PRECIP) && vis->mobj->skin && vis->mobj->sprite == SPR_PLAY) // MT_GHOST LOOKS LIKE A PLAYER SO USE THE PLAYER TRANSLATION TABLES. >_>
|
||||||
|
|
@ -808,8 +800,10 @@ static void R_DrawVisSprite(vissprite_t *vis)
|
||||||
dc_translation = R_GetTranslationColormap((INT32)skinnum, vis->mobj->color, GTC_CACHE);
|
dc_translation = R_GetTranslationColormap((INT32)skinnum, vis->mobj->color, GTC_CACHE);
|
||||||
}
|
}
|
||||||
else // Use the defaults
|
else // Use the defaults
|
||||||
|
{
|
||||||
dc_translation = R_GetTranslationColormap(TC_DEFAULT, vis->mobj->color, GTC_CACHE);
|
dc_translation = R_GetTranslationColormap(TC_DEFAULT, vis->mobj->color, GTC_CACHE);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
else if (vis->transmap)
|
else if (vis->transmap)
|
||||||
{
|
{
|
||||||
colfunc = colfuncs[COLDRAWFUNC_FUZZY];
|
colfunc = colfuncs[COLDRAWFUNC_FUZZY];
|
||||||
|
|
@ -822,15 +816,7 @@ static void R_DrawVisSprite(vissprite_t *vis)
|
||||||
|
|
||||||
// New colormap stuff for skins Tails 06-07-2002
|
// New colormap stuff for skins Tails 06-07-2002
|
||||||
if (!(vis->cut & SC_PRECIP) && vis->mobj->colorized)
|
if (!(vis->cut & SC_PRECIP) && vis->mobj->colorized)
|
||||||
dc_translation = R_GetTranslationColormap(TC_RAINBOW, vis->mobj->color, GTC_CACHE);
|
|
||||||
else if (!(vis->cut & SC_PRECIP)
|
|
||||||
&& vis->mobj->player && vis->mobj->player->dashmode >= DASHMODE_THRESHOLD
|
|
||||||
&& (vis->mobj->player->charflags & SF_DASHMODE)
|
|
||||||
&& ((leveltime/2) & 1))
|
|
||||||
{
|
{
|
||||||
if (vis->mobj->player->charflags & SF_MACHINE)
|
|
||||||
dc_translation = R_GetTranslationColormap(TC_DASHMODE, 0, GTC_CACHE);
|
|
||||||
else
|
|
||||||
dc_translation = R_GetTranslationColormap(TC_RAINBOW, vis->mobj->color, GTC_CACHE);
|
dc_translation = R_GetTranslationColormap(TC_RAINBOW, vis->mobj->color, GTC_CACHE);
|
||||||
}
|
}
|
||||||
else if (!(vis->cut & SC_PRECIP) && vis->mobj->skin && vis->mobj->sprite == SPR_PLAY) // This thing is a player!
|
else if (!(vis->cut & SC_PRECIP) && vis->mobj->skin && vis->mobj->sprite == SPR_PLAY) // This thing is a player!
|
||||||
|
|
@ -839,8 +825,10 @@ static void R_DrawVisSprite(vissprite_t *vis)
|
||||||
dc_translation = R_GetTranslationColormap((INT32)skinnum, vis->mobj->color, GTC_CACHE);
|
dc_translation = R_GetTranslationColormap((INT32)skinnum, vis->mobj->color, GTC_CACHE);
|
||||||
}
|
}
|
||||||
else // Use the defaults
|
else // Use the defaults
|
||||||
|
{
|
||||||
dc_translation = R_GetTranslationColormap(TC_DEFAULT, vis->mobj->color, GTC_CACHE);
|
dc_translation = R_GetTranslationColormap(TC_DEFAULT, vis->mobj->color, GTC_CACHE);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
else if (vis->mobj->sprite == SPR_PLAY) // Looks like a player, but doesn't have a color? Get rid of green sonic syndrome.
|
else if (vis->mobj->sprite == SPR_PLAY) // Looks like a player, but doesn't have a color? Get rid of green sonic syndrome.
|
||||||
{
|
{
|
||||||
colfunc = colfuncs[COLDRAWFUNC_TRANS];
|
colfunc = colfuncs[COLDRAWFUNC_TRANS];
|
||||||
|
|
@ -1388,8 +1376,8 @@ static void R_ProjectSprite(mobj_t *thing)
|
||||||
|
|
||||||
mobj_t *oldthing = thing;
|
mobj_t *oldthing = thing;
|
||||||
|
|
||||||
const fixed_t oldthingxpos = oldthing->x + oldthing->sprxoff;
|
//const fixed_t oldthingxpos = oldthing->x + oldthing->sprxoff;
|
||||||
const fixed_t oldthingypos = oldthing->y + oldthing->spryoff;
|
//const fixed_t oldthingypos = oldthing->y + oldthing->spryoff;
|
||||||
const fixed_t oldthingzpos = oldthing->z + oldthing->sprzoff;
|
const fixed_t oldthingzpos = oldthing->z + oldthing->sprzoff;
|
||||||
|
|
||||||
fixed_t tr_x, tr_y;
|
fixed_t tr_x, tr_y;
|
||||||
|
|
|
||||||
|
|
@ -69,8 +69,7 @@ void R_ClipSprites(drawseg_t* dsstart, portal_t* portal);
|
||||||
boolean R_ThingVisible (mobj_t *thing);
|
boolean R_ThingVisible (mobj_t *thing);
|
||||||
|
|
||||||
boolean R_ThingVisibleWithinDist (mobj_t *thing,
|
boolean R_ThingVisibleWithinDist (mobj_t *thing,
|
||||||
fixed_t draw_dist,
|
fixed_t draw_dist);
|
||||||
fixed_t nights_draw_dist);
|
|
||||||
|
|
||||||
boolean R_PrecipThingVisible (precipmobj_t *precipthing,
|
boolean R_PrecipThingVisible (precipmobj_t *precipthing,
|
||||||
fixed_t precip_draw_dist);
|
fixed_t precip_draw_dist);
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue