mirror of
https://git.do.srb2.org/KartKrew/Kart-Public.git
synced 2025-02-21 03:11:24 +00:00
Mirror Mode
- Added kartmirror cvar, flips the screen & player controls. The post-processing effect is currently Software only; will need an OpenGL implementation but I don't know enough to make that happen - Moved adminplayer = -1 setting to SV_ResetServer instead of SV_StartServer
This commit is contained in:
parent
f5650eba09
commit
ffbf6e8752
9 changed files with 55 additions and 8 deletions
|
@ -2956,6 +2956,7 @@ void SV_ResetServer(void)
|
|||
playeringame[i] = false;
|
||||
playernode[i] = UINT8_MAX;
|
||||
sprintf(player_names[i], "Player %d", i + 1);
|
||||
adminplayers[i] = -1; // Populate the entire adminplayers array with -1.
|
||||
}
|
||||
|
||||
mynode = 0;
|
||||
|
@ -3223,10 +3224,6 @@ boolean Playing(void)
|
|||
|
||||
boolean SV_SpawnServer(void)
|
||||
{
|
||||
INT32 i;
|
||||
for (i = 0; i < MAXPLAYERS; i++)
|
||||
adminplayers[i] = -1; // Populate the entire adminplayers array with -1.
|
||||
|
||||
if (demoplayback)
|
||||
G_StopDemo(); // reset engine parameter
|
||||
if (metalplayback)
|
||||
|
|
|
@ -320,12 +320,13 @@ consvar_t cv_feather = {"feathers", "On", CV_NETVAR|CV_CHEAT, CV_OnOff, NU
|
|||
consvar_t cv_karthud = {"karthud", "Default", CV_SAVE|CV_CALL, karthud_cons_t, NULL, 0, NULL, NULL, 0, 0, NULL};
|
||||
consvar_t cv_kartcheck = {"kartcheck", "On", CV_SAVE, CV_OnOff, NULL, 0, NULL, NULL, 0, 0, NULL};
|
||||
static CV_PossibleValue_t kartstarsfx_cons_t[] = {{0, "Music"}, {1, "SMK"}, {0, NULL}};
|
||||
consvar_t cv_kartstarsfx = {"kartstarsfx", "SMK", CV_SAVE, kartstarsfx_cons_t, NULL, 0, NULL, NULL, 0, 0, NULL}; // change default to "SMK"?
|
||||
consvar_t cv_kartstarsfx = {"kartstarsfx", "SMK", CV_SAVE, kartstarsfx_cons_t, NULL, 0, NULL, NULL, 0, 0, NULL};
|
||||
consvar_t cv_kartcc = {"kartcc", "100cc", CV_NETVAR, kartcc_cons_t, NULL, 0, NULL, NULL, 0, 0, NULL};
|
||||
static CV_PossibleValue_t kartballoons_cons_t[] = {{1, "MIN"}, {12, "MAX"}, {0, NULL}};
|
||||
consvar_t cv_kartballoons = {"kartballoons", "3", CV_NETVAR, kartballoons_cons_t, NULL, 0, NULL, NULL, 0, 0, NULL};
|
||||
consvar_t cv_kartfrantic = {"kartfrantic", "Off", CV_NETVAR|CV_CHEAT, CV_OnOff, NULL, 0, NULL, NULL, 0, 0, NULL};
|
||||
consvar_t cv_kartcomeback = {"kartcomeback", "On", CV_NETVAR|CV_CHEAT, CV_OnOff, NULL, 0, NULL, NULL, 0, 0, NULL};
|
||||
consvar_t cv_kartmirror = {"kartmirror", "Off", CV_NETVAR|CV_CHEAT, CV_OnOff, NULL, 0, NULL, NULL, 0, 0, NULL};
|
||||
static CV_PossibleValue_t speedometer_cons_t[] = {{0, "Off"}, {1, "Kilometers"}, {2, "Miles"}, {3, "Fracunits"}, {0, NULL}};
|
||||
consvar_t cv_speedometer = {"speedometer", "Kilometers", CV_SAVE, speedometer_cons_t, NULL, 0, NULL, NULL, 0, 0, NULL}; // use tics in display
|
||||
|
||||
|
|
|
@ -112,6 +112,7 @@ extern consvar_t cv_kartcc;
|
|||
extern consvar_t cv_kartballoons;
|
||||
extern consvar_t cv_kartfrantic;
|
||||
extern consvar_t cv_kartcomeback;
|
||||
extern consvar_t cv_kartmirror;
|
||||
extern consvar_t cv_speedometer;
|
||||
|
||||
extern consvar_t cv_collideminimum;
|
||||
|
|
|
@ -259,7 +259,8 @@ typedef enum
|
|||
postimg_water,
|
||||
postimg_motion,
|
||||
postimg_flip,
|
||||
postimg_heat
|
||||
postimg_heat,
|
||||
postimg_mirror
|
||||
} postimg_t;
|
||||
|
||||
typedef UINT32 lumpnum_t; // 16 : 16 unsigned long (wad num: lump num)
|
||||
|
|
26
src/g_game.c
26
src/g_game.c
|
@ -981,6 +981,14 @@ void G_BuildTiccmd(ticcmd_t *cmd, INT32 realtics)
|
|||
gamepadjoystickmove = cv_usejoystick.value && Joystick.bGamepadStyle;
|
||||
|
||||
axis = JoyAxis(AXISTURN);
|
||||
|
||||
if (cv_kartmirror.value)
|
||||
{
|
||||
turnright = PLAYER1INPUTDOWN(gc_turnleft);
|
||||
turnleft = PLAYER1INPUTDOWN(gc_turnright);
|
||||
axis = -axis;
|
||||
}
|
||||
|
||||
if (gamepadjoystickmove && axis != 0)
|
||||
{
|
||||
turnright = turnright || (axis > 0);
|
||||
|
@ -1253,8 +1261,13 @@ void G_BuildTiccmd(ticcmd_t *cmd, INT32 realtics)
|
|||
cmd->forwardmove = (SINT8)(cmd->forwardmove + forward);
|
||||
cmd->sidemove = (SINT8)(cmd->sidemove + side);
|
||||
|
||||
if (cv_kartmirror.value)
|
||||
cmd->sidemove = -cmd->sidemove;
|
||||
|
||||
//{ SRB2kart - Drift support
|
||||
axis = JoyAxis(AXISTURN);
|
||||
if (cv_kartmirror.value)
|
||||
axis = -axis;
|
||||
|
||||
if (cmd->angleturn > 0) // Drifting to the left
|
||||
cmd->buttons |= BT_DRIFTLEFT;
|
||||
|
@ -1329,6 +1342,14 @@ void G_BuildTiccmd2(ticcmd_t *cmd, INT32 realtics)
|
|||
gamepadjoystickmove = cv_usejoystick2.value && Joystick2.bGamepadStyle;
|
||||
|
||||
axis = Joy2Axis(AXISTURN);
|
||||
|
||||
if (cv_kartmirror.value)
|
||||
{
|
||||
turnright = PLAYER2INPUTDOWN(gc_turnleft);
|
||||
turnleft = PLAYER2INPUTDOWN(gc_turnright);
|
||||
axis = -axis;
|
||||
}
|
||||
|
||||
if (gamepadjoystickmove && axis != 0)
|
||||
{
|
||||
turnright = turnright || (axis > 0);
|
||||
|
@ -1585,8 +1606,13 @@ void G_BuildTiccmd2(ticcmd_t *cmd, INT32 realtics)
|
|||
cmd->forwardmove = (SINT8)(cmd->forwardmove + forward);
|
||||
cmd->sidemove = (SINT8)(cmd->sidemove + side);
|
||||
|
||||
if (cv_kartmirror.value)
|
||||
cmd->sidemove = -cmd->sidemove;
|
||||
|
||||
//{ SRB2kart - Drift support
|
||||
axis = Joy2Axis(AXISTURN);
|
||||
if (cv_kartmirror.value)
|
||||
axis = -axis;
|
||||
|
||||
if (cmd->angleturn > 0) // Drifting to the left
|
||||
cmd->buttons |= BT_DRIFTLEFT;
|
||||
|
|
|
@ -308,7 +308,8 @@ void K_RegisterKartStuff(void)
|
|||
CV_RegisterVar(&cv_kartcc);
|
||||
CV_RegisterVar(&cv_kartballoons);
|
||||
CV_RegisterVar(&cv_kartfrantic);
|
||||
CV_RegisterVar(&cv_kartcomeback);
|
||||
CV_RegisterVar(&cv_kartcomeback);
|
||||
CV_RegisterVar(&cv_kartmirror);
|
||||
CV_RegisterVar(&cv_speedometer);
|
||||
CV_RegisterVar(&cv_collideminimum);
|
||||
CV_RegisterVar(&cv_collidesoundnum);
|
||||
|
|
|
@ -3581,7 +3581,9 @@ boolean P_CameraThinker(player_t *player, camera_t *thiscam, boolean resetcalled
|
|||
|| (thiscam == &camera2 && players[secondarydisplayplayer].mo && (players[secondarydisplayplayer].mo->flags2 & MF2_TWOD)))
|
||||
itsatwodlevel = true;
|
||||
|
||||
if (player->pflags & PF_FLIPCAM && !(player->pflags & PF_NIGHTSMODE) && player->mo->eflags & MFE_VERTICALFLIP)
|
||||
if (cv_kartmirror.value)
|
||||
postimg = postimg_mirror;
|
||||
else if (player->pflags & PF_FLIPCAM && !(player->pflags & PF_NIGHTSMODE) && player->mo->eflags & MFE_VERTICALFLIP)
|
||||
postimg = postimg_flip;
|
||||
else if (player->awayviewtics)
|
||||
{
|
||||
|
|
|
@ -8992,6 +8992,9 @@ static void P_CalcPostImg(player_t *player)
|
|||
*param = 5;
|
||||
}
|
||||
#endif
|
||||
|
||||
if (cv_kartmirror.value) // srb2kart
|
||||
*type = postimg_mirror;
|
||||
}
|
||||
|
||||
/*void P_DoPityCheck(player_t *player)
|
||||
|
|
|
@ -2121,6 +2121,21 @@ Unoptimized version
|
|||
heatindex[view]++;
|
||||
heatindex[view] %= vid.height;
|
||||
|
||||
VID_BlitLinearScreen(tmpscr+vid.width*vid.bpp*yoffset, screens[0]+vid.width*vid.bpp*yoffset,
|
||||
vid.width*vid.bpp, height, vid.width*vid.bpp, vid.width);
|
||||
}
|
||||
else if (type == postimg_mirror) // Flip the screen on the x axis
|
||||
{
|
||||
UINT8 *tmpscr = screens[4];
|
||||
UINT8 *srcscr = screens[0];
|
||||
INT32 y, x, x2;
|
||||
|
||||
for (y = yoffset; y < yoffset+height; y++)
|
||||
{
|
||||
for (x = 0, x2 = (vid.width*vid.bpp)-1; x < (vid.width*vid.bpp); x++, x2--)
|
||||
tmpscr[y*vid.width + x2] = srcscr[y*vid.width + x];
|
||||
}
|
||||
|
||||
VID_BlitLinearScreen(tmpscr+vid.width*vid.bpp*yoffset, screens[0]+vid.width*vid.bpp*yoffset,
|
||||
vid.width*vid.bpp, height, vid.width*vid.bpp, vid.width);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue