Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
75d24743c1 | ||
|
|
9573d6c4cf | ||
|
|
4fbcb14699 | ||
|
|
325b4d5137 | ||
|
|
f2e7b1d0bf | ||
|
|
02834da690 | ||
|
|
0c2bd7fd47 | ||
|
|
0ce3bea34b | ||
|
|
6a2ee9fa6a | ||
|
|
9525018c02 | ||
|
|
7ea7020095 | ||
|
|
e0b9d131ca | ||
|
|
34ab9d714c | ||
|
|
c68aacc922 | ||
|
|
aeca22c7a3 | ||
|
|
b93d8d1efb | ||
|
|
e16546db12 | ||
|
|
8cf2395d42 | ||
|
|
3abe74de86 | ||
|
|
5a61ebf325 |
No files matched your search
+2
-2
@@ -257,7 +257,7 @@ set(SRB2_CONFIG_SATURNJOIN ON CACHE BOOL
|
||||
set(SRB2_CONFIG_SCREENFBO ON CACHE BOOL
|
||||
"Enable hardware renderer (OpenGL) FBO downsampling support")
|
||||
|
||||
set(SRB2_CONFIG_PHOBOS ON CACHE BOOL
|
||||
set(SRB2_CONFIG_PHOBOS OFF CACHE BOOL
|
||||
" Compile the Phobos client. Which contains things not compatible with vanilla, such as raised skinlimits, 32 player support, bugfixes, etc.")
|
||||
|
||||
if(${SRB2_CONFIG_DEDICATED})
|
||||
@@ -586,7 +586,7 @@ if(${SRB2_CONFIG_SATURNJOIN})
|
||||
add_definitions(-DDOSATURNJOIN)
|
||||
endif()
|
||||
|
||||
if(${SRB2_CONFIG_HWRENDER} AND ${SRB2_CONFIG_SCREENFBO})
|
||||
if(${SRB2_CONFIG_PHOBOS})
|
||||
add_definitions(-DPHOBOS_BUILD)
|
||||
endif()
|
||||
|
||||
|
||||
+3
-2
@@ -1822,7 +1822,7 @@ static void SV_SendPlayerInfo(INT32 node)
|
||||
|
||||
// Extra data
|
||||
// Kart has extra skincolors, so we can't use this
|
||||
//netbuffer->u.playerinfo[i].data = 0; //netbuffer->u.playerinfo[i].data = players[i].skincolor;
|
||||
//netbuffer->u.playerinfo[i].data = 0;
|
||||
|
||||
// well why not, we only got like 100 of these?
|
||||
netbuffer->u.playerinfo[i].data = players[i].skincolor;
|
||||
@@ -5174,7 +5174,7 @@ static void PT_ServerInfo(SINT8 node)
|
||||
const tic_t ticthen = (tic_t)LONG(netbuffer->u.serverinfo.time);
|
||||
const tic_t ticdiff = (ticnow - ticthen)*1000/NEWTICRATE;
|
||||
netbuffer->u.serverinfo.time = (tic_t)LONG(ticdiff);
|
||||
netbuffer->u.serverinfo.servername[MAXSERVERNAME-1] = 0;
|
||||
netbuffer->u.serverinfo.servername[MAXSERVERNAME-1] = '\0';
|
||||
netbuffer->u.serverinfo.application
|
||||
[sizeof netbuffer->u.serverinfo.application - 1] = '\0';
|
||||
memcpy(servername, netbuffer->u.serverinfo.servername, MAXSERVERNAME);
|
||||
@@ -7253,6 +7253,7 @@ static void DedicatedIdleUpdate(INT32 *realtics)
|
||||
{
|
||||
CONS_Printf("DEDICATED: Awakening from idle (Player detected...)\n");
|
||||
}
|
||||
|
||||
dedicatedidle = 0;
|
||||
}
|
||||
}
|
||||
|
||||
+54
-1
@@ -147,6 +147,11 @@ static void Command_Addfilelocal(void);
|
||||
static void Command_Addfile(void);
|
||||
static void Command_Addskins(void);
|
||||
static void Command_GLocalSkin(void);
|
||||
static void SetPrefcolor(int splitplayer);
|
||||
static void Command_UsePrefcolor(void);
|
||||
static void Command_UsePrefcolor2(void);
|
||||
static void Command_UsePrefcolor3(void);
|
||||
static void Command_UsePrefcolor4(void);
|
||||
static void Command_ListWADS_f(void);
|
||||
static void Command_LocateLump_f(void);
|
||||
static void Command_ListDoomednums_f(void);
|
||||
@@ -866,6 +871,11 @@ void D_RegisterClientCommands(void)
|
||||
|
||||
COM_AddCommand("localskin", Command_GLocalSkin);
|
||||
|
||||
COM_AddCommand("useprefcolor", Command_UsePrefcolor);
|
||||
COM_AddCommand("useprefcolor2", Command_UsePrefcolor2);
|
||||
COM_AddCommand("useprefcolor3", Command_UsePrefcolor3);
|
||||
COM_AddCommand("useprefcolor4", Command_UsePrefcolor4);
|
||||
|
||||
K_RegisterClientKartStuff(); // SRB2kart
|
||||
|
||||
CV_RegisterVar(&cv_screenshot_option);
|
||||
@@ -4334,6 +4344,49 @@ static void Command_GLocalSkin(void)
|
||||
}
|
||||
}
|
||||
|
||||
static void SetPrefcolor(int splitplayer)
|
||||
{
|
||||
// splitscreen
|
||||
if (splitscreen < splitplayer)
|
||||
return;
|
||||
|
||||
const INT32 pnum = P_GetLocalPlayerNumForNum(splitplayer);
|
||||
|
||||
player_t *player = &players[pnum];
|
||||
consvar_t *colorvars[] = {&cv_playercolor, &cv_playercolor2, &cv_playercolor3, &cv_playercolor4};
|
||||
consvar_t *playercolor = colorvars[splitplayer];
|
||||
|
||||
if (skins[player->skin].prefcolor)
|
||||
{
|
||||
CV_SetValue(playercolor, skins[player->skin].prefcolor);
|
||||
CONS_Printf("Set color to %s%s\n", HU_SkinColorToConsoleColor(skins[player->skin].prefcolor), KartColor_Names[skins[player->skin].prefcolor]);
|
||||
}
|
||||
else
|
||||
{
|
||||
CONS_Printf("\x86Your skin has no prefcolor set\n");
|
||||
}
|
||||
}
|
||||
|
||||
static void Command_UsePrefcolor(void)
|
||||
{
|
||||
SetPrefcolor(0);
|
||||
}
|
||||
|
||||
static void Command_UsePrefcolor2(void)
|
||||
{
|
||||
SetPrefcolor(1);
|
||||
}
|
||||
|
||||
static void Command_UsePrefcolor3(void)
|
||||
{
|
||||
SetPrefcolor(2);
|
||||
}
|
||||
|
||||
static void Command_UsePrefcolor4(void)
|
||||
{
|
||||
SetPrefcolor(3);
|
||||
}
|
||||
|
||||
static void Got_RequestAddfilecmd(const UINT8 **cp, INT32 playernum)
|
||||
{
|
||||
char filename[241];
|
||||
@@ -4381,7 +4434,7 @@ static void Got_RequestAddfilecmd(const UINT8 **cp, INT32 playernum)
|
||||
else
|
||||
snprintf(message, sizeof(message), M_GetText("Unknown error finding wad file (%s)\n"), filename);
|
||||
|
||||
CONS_Printf("%s",message);
|
||||
CONS_Printf("%s", message);
|
||||
|
||||
for (j = 0; j < MAXPLAYERS; j++)
|
||||
if (adminplayers[j])
|
||||
|
||||
+8
-3
@@ -128,8 +128,13 @@ extern char logfilename[1024];
|
||||
// most interface strings are ignored in development mode.
|
||||
// we use comprevision and compbranch instead.
|
||||
#else
|
||||
#ifdef PHOBOS_BUILD
|
||||
#define VERSION 1 // Game version
|
||||
#define SUBVERSION 69 // more precise version number
|
||||
#else
|
||||
#define VERSION 1 // Game version
|
||||
#define SUBVERSION 6 // more precise version number
|
||||
#endif
|
||||
|
||||
#ifdef PHOBOS_BUILD
|
||||
#define CLIENTNAME "Phobos"
|
||||
@@ -139,10 +144,10 @@ extern char logfilename[1024];
|
||||
#define CLIENTNAMEW L"Saturn"
|
||||
#endif
|
||||
|
||||
#define VERSIONSTRING CLIENTNAME " v10"
|
||||
#define VERSIONSTRINGW CLIENTNAMEW L" v10"
|
||||
#define VERSIONSTRING CLIENTNAME " v10.1"
|
||||
#define VERSIONSTRINGW CLIENTNAMEW L" v10.1"
|
||||
|
||||
#define SATURN_TESTING // comment out for saturn release builds!
|
||||
//#define SATURN_TESTING // comment out for saturn release builds!
|
||||
|
||||
// Hey! If you change this, add 1 to the MODVERSION below! Otherwise we can't force updates!
|
||||
// And change CMakeLists.txt (not src/, but in root), for CMake users!
|
||||
|
||||
@@ -35,7 +35,7 @@ static int finalVertexArrayAllocSize = 65536;
|
||||
// not gonna use this for now, just sort by color and change state when it changes
|
||||
// later maybe when using vertex attributes if it's needed
|
||||
|
||||
static PolygonArrayEntry* polygonArray = NULL ;// contains the polygon data from DrawPolygon, waiting to be processed
|
||||
static PolygonArrayEntry* polygonArray = NULL; // contains the polygon data from DrawPolygon, waiting to be processed
|
||||
static PolygonArrayEntry **polygonArraySorted = NULL; // contains sorted pointers to polygonArray
|
||||
static int polygonArraySize = 0;
|
||||
static int polygonArrayAllocSize = 65536;
|
||||
@@ -171,8 +171,8 @@ static int comparePolygons(const void *p1, const void *p2)
|
||||
|
||||
// special case with signedness to prevent overflowing
|
||||
// FIXME: check for prediction slowdowns!
|
||||
const int shader1 = poly1->hash & 0x80000000 ? -1 : poly1->shader;
|
||||
const int shader2 = poly2->hash & 0x80000000 ? -1 : poly2->shader;
|
||||
const int shader1 = (poly1->hash & 0x80000000) ? -1 : poly1->shader;
|
||||
const int shader2 = (poly2->hash & 0x80000000) ? -1 : poly2->shader;
|
||||
|
||||
// skywalls and horizon lines must retain their order for horizon lines to work
|
||||
if (shader1 == -1 && shader2 == -1)
|
||||
@@ -214,8 +214,8 @@ static int comparePolygonsNoShaders(const void *p1, const void *p2)
|
||||
const PolygonArrayEntry *poly1 = *(PolygonArrayEntry *const *)p1;
|
||||
const PolygonArrayEntry *poly2 = *(PolygonArrayEntry *const *)p2;
|
||||
|
||||
const GLMipmap_t *texture1 = poly1->hash & 0x80000000 ? NULL : poly1->texture;
|
||||
const GLMipmap_t *texture2 = poly2->hash & 0x80000000 ? NULL : poly2->texture;
|
||||
const GLMipmap_t *texture1 = (poly1->hash & 0x80000000) ? NULL : poly1->texture;
|
||||
const GLMipmap_t *texture2 = (poly2->hash & 0x80000000) ? NULL : poly2->texture;
|
||||
|
||||
// skywalls and horizon lines must retain their order for horizon lines to work
|
||||
if (!texture1 && !texture2)
|
||||
|
||||
@@ -1236,7 +1236,7 @@ static void HWR_DrawSkyWall(FOutVector *wallVerts, FSurfaceInfo *Surf)
|
||||
// Returns true if the midtexture is visible, and false if... it isn't...
|
||||
static inline boolean HWR_BlendMidtextureSurface(FSurfaceInfo *pSurf)
|
||||
{
|
||||
FUINT blendmode = PF_Masked | PF_Translucent;
|
||||
FUINT blendmode = PF_Masked;
|
||||
|
||||
pSurf->PolyColor.s.alpha = 0xFF;
|
||||
|
||||
|
||||
@@ -1931,6 +1931,7 @@ static void GenerateMipmaps(INT32 w, INT32 h, RGBA_t *tex, INT32 maxLOD, UINT32
|
||||
{
|
||||
if (samplePoint[p].s.alpha == 0)
|
||||
continue;
|
||||
|
||||
sumR += samplePoint[p].s.red;
|
||||
sumG += samplePoint[p].s.green;
|
||||
sumB += samplePoint[p].s.blue;
|
||||
|
||||
+5
-8
@@ -472,9 +472,7 @@ static void DoSayCommand(SINT8 target, size_t usedargs, UINT8 flags)
|
||||
strlcat(msg, COM_Argv(ix + usedargs), msgspace);
|
||||
}
|
||||
|
||||
const size_t msglength = strlen(msg);
|
||||
|
||||
if (msglength > 4 && strnicmp(msg, "/pm", 3) == 0) // used /pm
|
||||
if (strlen(msg) > 4 && strnicmp(msg, "/pm", 3) == 0) // used /pm
|
||||
{
|
||||
// what we're gonna do now is check if the node exists
|
||||
// with that logic, characters 4 and 5 are our numbers:
|
||||
@@ -528,7 +526,7 @@ static void DoSayCommand(SINT8 target, size_t usedargs, UINT8 flags)
|
||||
strlcpy(msg, newmsg, HU_MAXMSGLEN + 1);
|
||||
}
|
||||
|
||||
SendNetXCmd(XD_SAY, buf, msglength + 1 + msg-buf);
|
||||
SendNetXCmd(XD_SAY, buf, strlen(msg) + 1 + msg-buf);
|
||||
}
|
||||
|
||||
/** Send a message to everyone.
|
||||
@@ -779,12 +777,11 @@ static void Got_Saycmd(const UINT8 **p, INT32 playernum)
|
||||
return;
|
||||
}
|
||||
|
||||
const size_t msglength = strlen(msg);
|
||||
|
||||
//check for invalid characters (0x80 or above)
|
||||
{
|
||||
size_t i;
|
||||
const size_t j = msglength;
|
||||
const size_t j = strlen(msg);
|
||||
|
||||
for (i = 0; i < j; i++)
|
||||
{
|
||||
if (msg[i] & 0x80)
|
||||
@@ -831,7 +828,7 @@ static void Got_Saycmd(const UINT8 **p, INT32 playernum)
|
||||
}
|
||||
|
||||
// Handle "/me" actions, but only in messages to everyone.
|
||||
if (target == 0 && msglength > 4 && strnicmp(msg, "/me ", 4) == 0)
|
||||
if (target == 0 && strlen(msg) > 4 && strnicmp(msg, "/me ", 4) == 0)
|
||||
{
|
||||
msg += 4;
|
||||
action = true;
|
||||
|
||||
+11
-2
@@ -4337,7 +4337,6 @@ static void K_DoShrink(player_t *user)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void K_DoPogoSpring(mobj_t *mo, fixed_t vertispeed, UINT8 sound)
|
||||
{
|
||||
if (mo->player && mo->player->spectator)
|
||||
@@ -4913,7 +4912,12 @@ static void K_MoveHeldObjects(player_t *player)
|
||||
case MT_JAWZ_SHIELD:
|
||||
{
|
||||
mobj_t *cur = player->mo->hnext;
|
||||
fixed_t speed = ((8 - min(4, player->kartstuff[k_itemamount])) * cur->info->speed) / 7;
|
||||
fixed_t speed = 0;
|
||||
|
||||
if (cur == NULL)
|
||||
return;
|
||||
|
||||
speed = ((8 - min(4, player->kartstuff[k_itemamount])) * cur->info->speed) / 7;
|
||||
|
||||
player->kartstuff[k_bananadrag] = 0; // Just to make sure
|
||||
|
||||
@@ -4960,8 +4964,13 @@ static void K_MoveHeldObjects(player_t *player)
|
||||
cur->flags &= ~MF_NOCLIPTHING;
|
||||
|
||||
if (!P_TryMove(cur, player->mo->x + cur->momx, player->mo->y + cur->momy, true))
|
||||
{
|
||||
P_SlideMove(cur, true);
|
||||
|
||||
if (P_MobjWasRemovedCompat(cur))
|
||||
continue;
|
||||
}
|
||||
|
||||
if (P_IsObjectOnGround(player->mo))
|
||||
{
|
||||
if (P_MobjFlip(cur) > 0)
|
||||
|
||||
+105
-86
@@ -7667,7 +7667,7 @@ static void M_DrawMPMainMenu(void)
|
||||
{
|
||||
char buf[28];
|
||||
strlcpy(buf, setupm_ip, sizeof(buf));
|
||||
V_DrawString(x+8,y+12, V_ALLOWLOWERCASE, buf);
|
||||
V_DrawString(x+8, y+12, V_ALLOWLOWERCASE, buf);
|
||||
}
|
||||
else
|
||||
M_DrawTextInputScroll(x+8, y+12, &setupm_input_ip, 0, SETUPM_IP_MAXSIZE);
|
||||
@@ -8205,12 +8205,12 @@ static void M_DrawSetupMultiPlayerMenu(void)
|
||||
case SKINMENUTYPE_EXTENDED:
|
||||
for (s = 0; s < SKINGRIDNEWWIDTH*SKINGRIDNEWHEIGHT; s++)
|
||||
{
|
||||
INT32 x = ((s % SKINGRIDNEWWIDTH) * 18) + ((BASEVIDWIDTH / 2) - (18 * SKINGRIDNEWWIDTH) - 8) + 100 + SKINXSHIFT; //BASEVIDWIDTH / 2 - ((icons + 1) * 24) - 4;
|
||||
INT32 y = ((s / SKINGRIDNEWWIDTH) * 18) + ((BASEVIDHEIGHT / 2) - (18 * (SKINGRIDNEWWIDTH/2)) + 10); //BASEVIDWIDTH / 2 - ((icons + 1) * 24) - 4;
|
||||
INT32 calcs = s + (setupm_skinypos * SKINGRIDNEWWIDTH);
|
||||
INT32 skinn;
|
||||
patch_t *face;
|
||||
UINT8 *cmap;
|
||||
const INT32 x = ((s % SKINGRIDNEWWIDTH) * 18) + ((BASEVIDWIDTH / 2) - (18 * SKINGRIDNEWWIDTH) - 8) + 100 + SKINXSHIFT; //BASEVIDWIDTH / 2 - ((icons + 1) * 24) - 4;
|
||||
const INT32 y = ((s / SKINGRIDNEWWIDTH) * 18) + ((BASEVIDHEIGHT / 2) - (18 * (SKINGRIDNEWWIDTH/2)) + 10); //BASEVIDWIDTH / 2 - ((icons + 1) * 24) - 4;
|
||||
const INT32 calcs = s + (setupm_skinypos * SKINGRIDNEWWIDTH);
|
||||
|
||||
if (calcs < numskins)
|
||||
skinn = skinsorted[calcs];
|
||||
@@ -8231,10 +8231,10 @@ static void M_DrawSetupMultiPlayerMenu(void)
|
||||
if (itemOn == 1) //has to be on skin select part
|
||||
{
|
||||
patch_t *cursor;
|
||||
INT32 curx = (((setupm_skinselect % SKINGRIDNEWWIDTH) * 18) + ((BASEVIDWIDTH / 2) - (18 * SKINGRIDNEWWIDTH/2)) + SKINXSHIFT) + 20;
|
||||
INT32 cury = (((setupm_skinselect / SKINGRIDNEWWIDTH) - setupm_skinypos) * 18) + ((BASEVIDHEIGHT / 2) - (18 * (SKINGRIDNEWWIDTH/2))+ 10);
|
||||
const INT32 curx = (((setupm_skinselect % SKINGRIDNEWWIDTH) * 18) + ((BASEVIDWIDTH / 2) - (18 * SKINGRIDNEWWIDTH/2)) + SKINXSHIFT) + 20;
|
||||
const INT32 cury = (((setupm_skinselect / SKINGRIDNEWWIDTH) - setupm_skinypos) * 18) + ((BASEVIDHEIGHT / 2) - (18 * (SKINGRIDNEWWIDTH/2))+ 10);
|
||||
|
||||
UINT8 cursorframe = (I_GetTime() / 4) % 7;
|
||||
const UINT8 cursorframe = (I_GetTime() / 4) % 7;
|
||||
cursor = (patch_t *)W_CachePatchName(va("K_CHILI%d", cursorframe + 1), PU_PATCH);
|
||||
V_DrawFixedPatch((curx << FRACBITS) - (FRACUNIT), (cury << FRACBITS) - (FRACUNIT), FRACUNIT+(FRACUNIT>>3), 0, cursor, NULL);
|
||||
}
|
||||
@@ -8243,9 +8243,9 @@ static void M_DrawSetupMultiPlayerMenu(void)
|
||||
case SKINMENUTYPE_GRID:
|
||||
for (s = 0; s < SKINGRIDWIDTH*SKINGRIDHEIGHT; s++)
|
||||
{
|
||||
INT32 x = ((s % SKINGRIDWIDTH) * 18) + ((BASEVIDWIDTH / 2) - (18 * SKINGRIDWIDTH) - 8) + 100 + SKINXSHIFT; //BASEVIDWIDTH / 2 - ((icons + 1) * 24) - 4;
|
||||
INT32 y = ((s / SKINGRIDWIDTH) * 18) + ((BASEVIDHEIGHT / 2) - (18 * (SKINGRIDWIDTH/2))); //BASEVIDWIDTH / 2 - ((icons + 1) * 24) - 4;
|
||||
INT32 calcs = s + (setupm_skinypos * SKINGRIDWIDTH);
|
||||
const INT32 x = ((s % SKINGRIDWIDTH) * 18) + ((BASEVIDWIDTH / 2) - (18 * SKINGRIDWIDTH) - 8) + 100 + SKINXSHIFT; //BASEVIDWIDTH / 2 - ((icons + 1) * 24) - 4;
|
||||
const INT32 y = ((s / SKINGRIDWIDTH) * 18) + ((BASEVIDHEIGHT / 2) - (18 * (SKINGRIDWIDTH/2))); //BASEVIDWIDTH / 2 - ((icons + 1) * 24) - 4;
|
||||
const INT32 calcs = s + (setupm_skinypos * SKINGRIDWIDTH);
|
||||
INT16 skinn;
|
||||
patch_t *face;
|
||||
UINT8 *cmap;
|
||||
@@ -8269,36 +8269,44 @@ static void M_DrawSetupMultiPlayerMenu(void)
|
||||
if (itemOn == 1) //has to be on skin select part
|
||||
{
|
||||
patch_t *cursor;
|
||||
INT32 curx = (((setupm_skinselect % SKINGRIDWIDTH) * 18) + ((BASEVIDWIDTH / 2) - (18 * SKINGRIDWIDTH/2)) + SKINXSHIFT) + 20;
|
||||
INT32 cury = (((setupm_skinselect / SKINGRIDWIDTH) - setupm_skinypos) * 18) + ((BASEVIDHEIGHT / 2) - (18 * (SKINGRIDWIDTH/2)));
|
||||
const INT32 curx = (((setupm_skinselect % SKINGRIDWIDTH) * 18) + ((BASEVIDWIDTH / 2) - (18 * SKINGRIDWIDTH/2)) + SKINXSHIFT) + 20;
|
||||
const INT32 cury = (((setupm_skinselect / SKINGRIDWIDTH) - setupm_skinypos) * 18) + ((BASEVIDHEIGHT / 2) - (18 * (SKINGRIDWIDTH/2)));
|
||||
|
||||
if (setupm_skinselect < numskins)
|
||||
{
|
||||
UINT8 *cmap = R_GetTranslationColormap(setupm_skinselect, setupm_fakecolor, GTC_MENUCACHE);
|
||||
const UINT8 *cmap = R_GetTranslationColormap(setupm_skinselect, setupm_fakecolor, GTC_MENUCACHE);
|
||||
cursor = facewantprefix[skinsorted[setupm_skinselect]];
|
||||
V_DrawFixedPatch(((curx-8) << FRACBITS), ((cury-8) << FRACBITS), FRACUNIT, 0, cursor, cmap);
|
||||
}
|
||||
else
|
||||
{
|
||||
UINT8 cursorframe = (I_GetTime() / 4) % 7;
|
||||
const UINT8 cursorframe = (I_GetTime() / 4) % 7;
|
||||
cursor = (patch_t *)W_CachePatchName(va("K_CHILI%d", cursorframe + 1), PU_PATCH);
|
||||
V_DrawFixedPatch((curx << FRACBITS) - (FRACUNIT), (cury << FRACBITS) - (FRACUNIT), FRACUNIT+(FRACUNIT>>3), 0, cursor, NULL);
|
||||
}
|
||||
}
|
||||
|
||||
{ // stat dot
|
||||
INT32 selectedskin = (itemOn == 1 && setupm_skinselect < numskins ? skinsorted[setupm_skinselect] : setupm_fakeskin);
|
||||
const INT32 selectedskin = (itemOn == 1 && setupm_skinselect < numskins ? skinsorted[setupm_skinselect] : setupm_fakeskin);
|
||||
|
||||
speed = skins[selectedskin].kartspeed;
|
||||
weight = skins[selectedskin].kartweight;
|
||||
statdot = (patch_t *)W_CachePatchName("K_SDOT1", PU_PATCH);
|
||||
if (skullAnimCounter < 4) // SRB2Kart: we draw this dot later so that it's not covered if there's multiple skins with the same stats
|
||||
V_DrawFixedPatch((((statx+46) + (speed*4))<<FRACBITS) + (FRACUNIT>>1), (((staty+71) + (weight*4))<<FRACBITS), FRACUNIT>>1, 0, statdot, flashcol);
|
||||
else
|
||||
V_DrawFixedPatch((((statx+46) + (speed*4))<<FRACBITS) + (FRACUNIT>>1), (((staty+71) + (weight*4))<<FRACBITS), FRACUNIT>>1, 0, statdot, NULL);
|
||||
|
||||
statdot = (patch_t *)W_CachePatchName("K_SDOT2", PU_PATCH); // coloured center
|
||||
const INT32 x = (((statx+46) + (speed*4))<<FRACBITS) + (FRACUNIT>>1);
|
||||
const INT32 y = (((staty+71) + (weight*4))<<FRACBITS);
|
||||
|
||||
statdot = (patch_t *)W_CachePatchName("K_SDOT1", PU_PATCH);
|
||||
|
||||
if (skullAnimCounter < 4) // SRB2Kart: we draw this dot later so that it's not covered if there's multiple skins with the same stats
|
||||
V_DrawFixedPatch(x, y, FRACUNIT>>1, 0, statdot, flashcol);
|
||||
else
|
||||
V_DrawFixedPatch(x, y, FRACUNIT>>1, 0, statdot, NULL);
|
||||
|
||||
if (setupm_fakecolor)
|
||||
V_DrawFixedPatch((((statx+46) + (speed*4))<<FRACBITS) + (FRACUNIT>>1), (((staty+71) + (weight*4))<<FRACBITS), FRACUNIT>>1, 0, statdot, R_GetTranslationColormap(0, setupm_fakecolor, GTC_MENUCACHE));
|
||||
{
|
||||
statdot = (patch_t *)W_CachePatchName("K_SDOT2", PU_PATCH); // coloured center
|
||||
V_DrawFixedPatch(x, y, FRACUNIT>>1, 0, statdot, R_GetTranslationColormap(0, setupm_fakecolor, GTC_MENUCACHE));
|
||||
}
|
||||
}
|
||||
break;
|
||||
case SKINMENUTYPE_2D:
|
||||
@@ -8307,12 +8315,13 @@ static void M_DrawSetupMultiPlayerMenu(void)
|
||||
{
|
||||
for (w = 0; w < MAXSTAT; w++)
|
||||
{
|
||||
INT32 x = ((s * 18) + ((BASEVIDWIDTH / 2) - (18 * 4)) - 8 + SKINXSHIFT); //BASEVIDWIDTH / 2 - ((icons + 1) * 24) - 4;
|
||||
INT32 y = ((w * 18) + ((BASEVIDHEIGHT / 2) - (18 * 4)) - 8); //BASEVIDWIDTH / 2 - ((icons + 1) * 24) - 4;
|
||||
INT32 skinn;
|
||||
patch_t *face;
|
||||
UINT8 *cmap;
|
||||
|
||||
const INT32 x = ((s * 18) + ((BASEVIDWIDTH / 2) - (18 * 4)) - 8 + SKINXSHIFT); //BASEVIDWIDTH / 2 - ((icons + 1) * 24) - 4;
|
||||
const INT32 y = ((w * 18) + ((BASEVIDHEIGHT / 2) - (18 * 4)) - 8); //BASEVIDWIDTH / 2 - ((icons + 1) * 24) - 4;
|
||||
|
||||
if (!skinstatscount[s][w])
|
||||
{
|
||||
V_DrawFill(x, y, 16, 16, 239);
|
||||
@@ -8330,20 +8339,20 @@ static void M_DrawSetupMultiPlayerMenu(void)
|
||||
if (itemOn == 1) //has to be on skin select part
|
||||
{
|
||||
patch_t *cursor;
|
||||
INT32 curx = ((setupm_skinxpos * 18) + ((BASEVIDWIDTH / 2) - (18 * 4)) - 8 + SKINXSHIFT);
|
||||
INT32 cury = ((setupm_skinypos * 18) + ((BASEVIDHEIGHT / 2) - (18 * 4)) - 8);
|
||||
const INT32 curx = ((setupm_skinxpos * 18) + ((BASEVIDWIDTH / 2) - (18 * 4)) - 8 + SKINXSHIFT);
|
||||
const INT32 cury = ((setupm_skinypos * 18) + ((BASEVIDHEIGHT / 2) - (18 * 4)) - 8);
|
||||
|
||||
if (skinstatscount[setupm_skinxpos][setupm_skinypos])
|
||||
{
|
||||
UINT8 *cmap = R_GetTranslationColormap(setupm_skinselect, setupm_fakecolor, GTC_MENUCACHE);
|
||||
INT32 skinn = skinstats[setupm_skinxpos][setupm_skinypos][(I_GetTime() / TICRATE) % skinstatscount[setupm_skinxpos][setupm_skinypos]];
|
||||
const UINT8 *cmap = R_GetTranslationColormap(setupm_skinselect, setupm_fakecolor, GTC_MENUCACHE);
|
||||
const INT32 skinn = skinstats[setupm_skinxpos][setupm_skinypos][(I_GetTime() / TICRATE) % skinstatscount[setupm_skinxpos][setupm_skinypos]];
|
||||
|
||||
cursor = facewantprefix[skinn];
|
||||
V_DrawFixedPatch(((curx-8) << FRACBITS), ((cury-8) << FRACBITS), FRACUNIT, 0, cursor, cmap);
|
||||
}
|
||||
else
|
||||
{
|
||||
UINT8 cursorframe = (I_GetTime() / 4) % 7;
|
||||
const UINT8 cursorframe = (I_GetTime() / 4) % 7;
|
||||
cursor = (patch_t *)W_CachePatchName(va("K_CHILI%d", cursorframe + 1), PU_PATCH);
|
||||
V_DrawFixedPatch((curx << FRACBITS) - (FRACUNIT), (cury << FRACBITS) - (FRACUNIT), FRACUNIT+(FRACUNIT>>3), 0, cursor, NULL);
|
||||
}
|
||||
@@ -8351,18 +8360,26 @@ static void M_DrawSetupMultiPlayerMenu(void)
|
||||
break;
|
||||
#undef SKINXSHIFT
|
||||
default:
|
||||
speed = skins[setupm_fakeskin].kartspeed;
|
||||
weight = skins[setupm_fakeskin].kartweight;
|
||||
{
|
||||
speed = skins[setupm_fakeskin].kartspeed;
|
||||
weight = skins[setupm_fakeskin].kartweight;
|
||||
|
||||
statdot = (patch_t *)W_CachePatchName("K_SDOT1", PU_PATCH);
|
||||
if (skullAnimCounter < 4) // SRB2Kart: we draw this dot later so that it's not covered if there's multiple skins with the same stats
|
||||
V_DrawFixedPatch(((BASEVIDWIDTH - mx - 80) + ((speed-1)*8))<<FRACBITS, ((my+76) + ((weight-1)*8))<<FRACBITS, FRACUNIT, 0, statdot, flashcol);
|
||||
else
|
||||
V_DrawFixedPatch(((BASEVIDWIDTH - mx - 80) + ((speed-1)*8))<<FRACBITS, ((my+76) + ((weight-1)*8))<<FRACBITS, FRACUNIT, 0, statdot, NULL);
|
||||
const INT32 x = ((BASEVIDWIDTH - mx - 80) + ((speed-1)*8))<<FRACBITS;
|
||||
const INT32 y = ((my+76) + ((weight-1)*8))<<FRACBITS;
|
||||
|
||||
statdot = (patch_t *)W_CachePatchName("K_SDOT2", PU_PATCH); // coloured center
|
||||
if (setupm_fakecolor)
|
||||
V_DrawFixedPatch(((BASEVIDWIDTH - mx - 80) + ((speed-1)*8))<<FRACBITS, ((my+76) + ((weight-1)*8))<<FRACBITS, FRACUNIT, 0, statdot, R_GetTranslationColormap(0, setupm_fakecolor, GTC_MENUCACHE));
|
||||
statdot = (patch_t *)W_CachePatchName("K_SDOT1", PU_PATCH);
|
||||
|
||||
if (skullAnimCounter < 4) // SRB2Kart: we draw this dot later so that it's not covered if there's multiple skins with the same stats
|
||||
V_DrawFixedPatch(x, y, FRACUNIT, 0, statdot, flashcol);
|
||||
else
|
||||
V_DrawFixedPatch(x, y, FRACUNIT, 0, statdot, NULL);
|
||||
|
||||
if (setupm_fakecolor)
|
||||
{
|
||||
statdot = (patch_t *)W_CachePatchName("K_SDOT2", PU_PATCH); // coloured center
|
||||
V_DrawFixedPatch(x, y, FRACUNIT, 0, statdot, R_GetTranslationColormap(0, setupm_fakecolor, GTC_MENUCACHE));
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -8389,10 +8406,13 @@ static void M_DrawSetupMultiPlayerMenu(void)
|
||||
cw = charw;
|
||||
else
|
||||
cw = indexwidth;
|
||||
|
||||
for (ch = 0; ch < 16; ch++)
|
||||
V_DrawFill(x, my+(cv_skinselectmenu.value?176:162)+ch, cw, 1, colortranslations[col][ch]);
|
||||
|
||||
if (++col >= MAXSKINCOLORS)
|
||||
col -= MAXSKINCOLORS-1;
|
||||
|
||||
x += cw;
|
||||
}
|
||||
}
|
||||
@@ -8420,6 +8440,7 @@ static void M_DrawSetupMultiPlayerMenu(void)
|
||||
|
||||
if (col < 0)
|
||||
col += numskins;
|
||||
|
||||
while (k <= icons)
|
||||
{
|
||||
if (!(k++))
|
||||
@@ -8436,12 +8457,16 @@ static void M_DrawSetupMultiPlayerMenu(void)
|
||||
offx = 8;
|
||||
offy = 8;
|
||||
}
|
||||
|
||||
colmap = R_GetTranslationColormap(col, setupm_fakecolor, GTC_MENUCACHE);
|
||||
V_DrawFixedPatch((x+offx)<<FRACBITS, (my+28+offy)<<FRACBITS, FRACUNIT, 0, face, colmap);
|
||||
|
||||
if (scale == FRACUNIT) // bit of a hack
|
||||
V_DrawFixedPatch((x+offx)<<FRACBITS, (my+28+offy)<<FRACBITS, FRACUNIT, 0, cursor, colmap);
|
||||
|
||||
if (++col >= numskins)
|
||||
col -= numskins;
|
||||
|
||||
x += FixedMul(iconwidth<<FRACBITS, 3*scale/2)/FRACUNIT;
|
||||
}
|
||||
}
|
||||
@@ -8582,6 +8607,7 @@ static void M_HandleSetupMultiPlayer(INT32 choice)
|
||||
}
|
||||
else
|
||||
M_NextOpt();
|
||||
|
||||
S_StartSound(NULL, sfx_menu1); // Tails
|
||||
break;
|
||||
}
|
||||
@@ -8608,6 +8634,7 @@ static void M_HandleSetupMultiPlayer(INT32 choice)
|
||||
{
|
||||
M_NextOpt();
|
||||
}
|
||||
|
||||
S_StartSound(NULL, sfx_menu1);
|
||||
}
|
||||
else if (itemOn == 0)
|
||||
@@ -8618,9 +8645,11 @@ static void M_HandleSetupMultiPlayer(INT32 choice)
|
||||
}
|
||||
else
|
||||
M_NextOpt();
|
||||
|
||||
S_StartSound(NULL, sfx_menu1); // Tails
|
||||
break;
|
||||
}
|
||||
|
||||
M_NextOpt();
|
||||
S_StartSound(NULL, sfx_menu1); // Tails
|
||||
break;
|
||||
@@ -8638,6 +8667,7 @@ static void M_HandleSetupMultiPlayer(INT32 choice)
|
||||
}
|
||||
else
|
||||
M_PrevOpt();
|
||||
|
||||
S_StartSound(NULL, sfx_menu1); // Tails
|
||||
break;
|
||||
}
|
||||
@@ -8656,6 +8686,7 @@ static void M_HandleSetupMultiPlayer(INT32 choice)
|
||||
{
|
||||
M_PrevOpt();
|
||||
}
|
||||
|
||||
S_StartSound(NULL, sfx_menu1);
|
||||
}
|
||||
else if (itemOn == 2)
|
||||
@@ -8675,9 +8706,11 @@ static void M_HandleSetupMultiPlayer(INT32 choice)
|
||||
}
|
||||
else
|
||||
M_PrevOpt();
|
||||
|
||||
S_StartSound(NULL, sfx_menu1); // Tails
|
||||
break;
|
||||
}
|
||||
|
||||
M_PrevOpt();
|
||||
S_StartSound(NULL, sfx_menu1); // Tails
|
||||
break;
|
||||
@@ -8696,6 +8729,7 @@ static void M_HandleSetupMultiPlayer(INT32 choice)
|
||||
setupm_skinselect--;
|
||||
else
|
||||
setupm_skinselect = SELECTEDSTATSCOUNT - 1;
|
||||
|
||||
S_StartSound(NULL, sfx_menu1);
|
||||
}
|
||||
else //player skin
|
||||
@@ -8728,6 +8762,7 @@ static void M_HandleSetupMultiPlayer(INT32 choice)
|
||||
else if (cv_skinselectmenu.value == SKINMENUTYPE_EXTENDED)
|
||||
setupm_skinypos = (((roundedskins/8) - SKINGRIDHEIGHT-2) > 0 ? (roundedskins/8) - SKINGRIDHEIGHT-2 : 0);
|
||||
}
|
||||
|
||||
S_StartSound(NULL, sfx_menu1);
|
||||
break;
|
||||
}
|
||||
@@ -8758,6 +8793,7 @@ static void M_HandleSetupMultiPlayer(INT32 choice)
|
||||
setupm_skinselect++;
|
||||
else
|
||||
setupm_skinselect = 0;
|
||||
|
||||
S_StartSound(NULL, sfx_menu1);
|
||||
}
|
||||
else //player skin
|
||||
@@ -8792,6 +8828,7 @@ static void M_HandleSetupMultiPlayer(INT32 choice)
|
||||
setupm_skinselect = 0;
|
||||
setupm_skinypos = 0;
|
||||
}
|
||||
|
||||
S_StartSound(NULL, sfx_menu1);
|
||||
break;
|
||||
}
|
||||
@@ -8814,12 +8851,14 @@ static void M_HandleSetupMultiPlayer(INT32 choice)
|
||||
setupm_skinlockedselect = false;
|
||||
break;
|
||||
}
|
||||
|
||||
exitmenu = true;
|
||||
break;
|
||||
|
||||
case KEY_BACKSPACE:
|
||||
if (cv_skinselectmenu.value)
|
||||
BREAKWHENLOCKED
|
||||
|
||||
if (itemOn == 0)
|
||||
{
|
||||
M_TextInputHandle(&setupm_input, choice);
|
||||
@@ -8849,6 +8888,7 @@ static void M_HandleSetupMultiPlayer(INT32 choice)
|
||||
case KEY_DEL:
|
||||
if (cv_skinselectmenu.value)
|
||||
BREAKWHENLOCKED
|
||||
|
||||
if (itemOn == 0)
|
||||
{
|
||||
M_TextInputHandle(&setupm_input, choice);
|
||||
@@ -9165,7 +9205,7 @@ static void M_DrawJoystick(void)
|
||||
compareval4 = cv_usejoystick[3].value;
|
||||
compareval3 = cv_usejoystick[2].value;
|
||||
compareval2 = cv_usejoystick[1].value;
|
||||
compareval = cv_usejoystick[0].value;
|
||||
compareval = cv_usejoystick[0].value;
|
||||
#endif
|
||||
|
||||
if ((setupcontrolplayer == 4 && (i == compareval4))
|
||||
@@ -9204,14 +9244,13 @@ void M_SetupJoystickMenu(INT32 choice)
|
||||
//
|
||||
// Update cv_usejoystick.string here so that the user can
|
||||
// properly change this value.
|
||||
if (i == cv_usejoystick[0].value)
|
||||
CV_SetValue(&cv_usejoystick[0], i);
|
||||
if (i == cv_usejoystick[1].value)
|
||||
CV_SetValue(&cv_usejoystick[1], i);
|
||||
if (i == cv_usejoystick[2].value)
|
||||
CV_SetValue(&cv_usejoystick[2], i);
|
||||
if (i == cv_usejoystick[3].value)
|
||||
CV_SetValue(&cv_usejoystick[3], i);
|
||||
for (INT32 f = 0; f < MAXSPLITSCREENPLAYERS; f++)
|
||||
{
|
||||
if (i == cv_usejoystick[f].value)
|
||||
{
|
||||
CV_SetValue(&cv_usejoystick[f], i);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -9250,9 +9289,11 @@ static void M_Setup4PJoystickMenu(INT32 choice)
|
||||
static void M_DoAssignJoystick(UINT8 pnum, INT32 choice)
|
||||
{
|
||||
INT32 oldchoice, oldstringchoice;
|
||||
const int joynum = atoi(cv_usejoystick[pnum].string);
|
||||
|
||||
oldchoice = oldstringchoice = joynum > numcontrollers ? joynum : cv_usejoystick[pnum].value;
|
||||
#define joystrnum (atoi(cv_usejoystick[pnum].string))
|
||||
#define joyoldchoice ((joystrnum > numcontrollers) ? joystrnum : cv_usejoystick[pnum].value)
|
||||
|
||||
oldchoice = oldstringchoice = joyoldchoice;
|
||||
CV_SetValue(&cv_usejoystick[pnum], choice);
|
||||
|
||||
// Just in case last-minute changes were made to cv_usejoystick.value,
|
||||
@@ -9262,59 +9303,37 @@ static void M_DoAssignJoystick(UINT8 pnum, INT32 choice)
|
||||
{
|
||||
CV_SetValue(&cv_usejoystick[pnum], cv_usejoystick[pnum].value);
|
||||
|
||||
if (oldchoice > numcontrollers) /* reset this so the comparison is valid*/
|
||||
// reset this so the comparison is valid
|
||||
if (oldchoice > numcontrollers)
|
||||
oldchoice = cv_usejoystick[pnum].value;
|
||||
|
||||
if (oldchoice != choice)
|
||||
{
|
||||
if (choice && oldstringchoice > numcontrollers) // if we did not select "None", we likely selected a used device
|
||||
CV_SetValue(&cv_usejoystick[pnum], (oldstringchoice > numcontrollers ? oldstringchoice : oldchoice));
|
||||
{
|
||||
CV_SetValue(&cv_usejoystick[pnum], ((oldstringchoice > numcontrollers) ? oldstringchoice : oldchoice));
|
||||
}
|
||||
|
||||
if (oldstringchoice ==
|
||||
(joynum > numcontrollers ? joynum : cv_usejoystick[pnum].value))
|
||||
if (oldstringchoice == joyoldchoice)
|
||||
{
|
||||
M_StartMessage("This joystick is used by another\n"
|
||||
"player. Reset the joystick\n"
|
||||
"for that player first.\n\n"
|
||||
"(Press a key)\n", NULL, MM_NOTHING);
|
||||
}
|
||||
}
|
||||
}
|
||||
#undef joystrnum
|
||||
#undef joyoldchoice
|
||||
}
|
||||
#endif
|
||||
|
||||
static void M_AssignJoystick(INT32 choice)
|
||||
{
|
||||
#ifdef JOYSTICK_HOTPLUG
|
||||
switch (setupcontrolplayer)
|
||||
{
|
||||
case 4:
|
||||
M_DoAssignJoystick(3, choice);
|
||||
break;
|
||||
case 3:
|
||||
M_DoAssignJoystick(2, choice);
|
||||
break;
|
||||
case 2:
|
||||
M_DoAssignJoystick(1, choice);
|
||||
break;
|
||||
case 1:
|
||||
M_DoAssignJoystick(0, choice);
|
||||
break;
|
||||
}
|
||||
M_DoAssignJoystick((setupcontrolplayer-1), choice);
|
||||
#else
|
||||
switch (setupcontrolplayer)
|
||||
{
|
||||
case 4:
|
||||
CV_SetValue(&cv_usejoystick[3], choice);
|
||||
break;
|
||||
case 3:
|
||||
CV_SetValue(&cv_usejoystick[2], choice);
|
||||
break;
|
||||
case 2:
|
||||
CV_SetValue(&cv_usejoystick[1], choice);
|
||||
break;
|
||||
case 1:
|
||||
CV_SetValue(&cv_usejoystick[0], choice);
|
||||
break;
|
||||
}
|
||||
CV_SetValue(&cv_usejoystick[(setupcontrolplayer-1)], choice);
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -9352,7 +9371,7 @@ static void M_SetupControlsMenu(UINT8 pnum)
|
||||
{
|
||||
// Hide P1-only controls
|
||||
OP_AllControlsMenu[19].status = IT_GRAYEDOUT2; // Chat
|
||||
OP_AllControlsMenu[10].status = IT_GRAYEDOUT2; // Rankings
|
||||
OP_AllControlsMenu[20].status = IT_GRAYEDOUT2; // Rankings
|
||||
OP_AllControlsMenu[21].status = IT_GRAYEDOUT2; // Pause
|
||||
OP_AllControlsMenu[22].status = IT_GRAYEDOUT2; // Screenshot
|
||||
OP_AllControlsMenu[23].status = IT_GRAYEDOUT2; // GIF
|
||||
@@ -9364,7 +9383,7 @@ static void M_SetupControlsMenu(UINT8 pnum)
|
||||
{
|
||||
// Unhide P1-only controls
|
||||
OP_AllControlsMenu[19].status = IT_CONTROL; // Chat
|
||||
OP_AllControlsMenu[10].status = IT_CONTROL; // Rankings
|
||||
OP_AllControlsMenu[20].status = IT_CONTROL; // Rankings
|
||||
OP_AllControlsMenu[21].status = IT_CONTROL; // Pause
|
||||
OP_AllControlsMenu[22].status = IT_CONTROL; // Screenshot
|
||||
OP_AllControlsMenu[23].status = IT_CONTROL; // GIF
|
||||
|
||||
@@ -418,6 +418,7 @@ boolean P_CheckSector(sector_t *sector, boolean crunch);
|
||||
void P_DelSeclist(msecnode_t *node);
|
||||
|
||||
void P_CreateSecNodeList(mobj_t *thing, fixed_t x, fixed_t y);
|
||||
void P_Initsecnode(void);
|
||||
|
||||
void P_RadiusAttack(mobj_t *spot, mobj_t *source, fixed_t damagedist);
|
||||
|
||||
|
||||
+33
-1
@@ -3983,19 +3983,51 @@ boolean P_CheckSector(sector_t *sector, boolean crunch)
|
||||
Lots of new Boom functions that work faster and add functionality.
|
||||
*/
|
||||
|
||||
#ifndef PHOBOS_BUILD
|
||||
static msecnode_t *headsecnode = NULL;
|
||||
#endif
|
||||
|
||||
void P_Initsecnode(void)
|
||||
{
|
||||
#ifndef PHOBOS_BUILD
|
||||
headsecnode = NULL;
|
||||
#endif
|
||||
}
|
||||
|
||||
// P_GetSecnode() retrieves a node from the freelist. The calling routine
|
||||
// should make sure it sets all fields properly.
|
||||
|
||||
static msecnode_t *P_GetSecnode(void)
|
||||
{
|
||||
#ifdef PHOBOS_BUILD
|
||||
return Z_LevelPoolCalloc(sizeof(msecnode_t));
|
||||
#else
|
||||
msecnode_t *node;
|
||||
|
||||
if (headsecnode)
|
||||
{
|
||||
// vanilla does not clear this
|
||||
// so for compat reasons we also dont
|
||||
// means we just reuse stale data which causes weird interactions with orbiting items in some cases
|
||||
node = headsecnode;
|
||||
headsecnode = headsecnode->m_thinglist_next;
|
||||
}
|
||||
else
|
||||
node = Z_LevelPoolCalloc(sizeof(msecnode_t));
|
||||
|
||||
return node;
|
||||
#endif
|
||||
}
|
||||
|
||||
// P_PutSecnode() returns a node to the freelist.
|
||||
|
||||
static inline void P_PutSecnode(msecnode_t *node)
|
||||
{
|
||||
#ifdef PHOBOS_BUILD
|
||||
Z_LevelPoolFree(node, sizeof(msecnode_t));
|
||||
#else
|
||||
node->m_thinglist_next = headsecnode;
|
||||
headsecnode = node;
|
||||
#endif
|
||||
}
|
||||
|
||||
// P_AddSecnode() searches the current list to see if this sector is
|
||||
|
||||
+1
-2
@@ -1148,7 +1148,6 @@ static void P_SceneryXYFriction(mobj_t *mo, fixed_t oldx, fixed_t oldy)
|
||||
{
|
||||
// Stolen from P_SpawnFriction
|
||||
mo->friction = FRACUNIT - 0x100;
|
||||
//mo->movefactor = ((0x10092 - mo->friction)*(0x70))/0x158;
|
||||
}
|
||||
else
|
||||
mo->friction = ORIG_FRICTION;
|
||||
@@ -3282,6 +3281,7 @@ void P_CalcChasePostImg(player_t *player, camera_t *thiscam)
|
||||
postimgtype |= POSTIMG_FLIP;
|
||||
|
||||
#ifdef HWRENDER
|
||||
// the rest of those effects wont work in gl splitscreen
|
||||
if (rendermode == render_opengl && splitscreen)
|
||||
{
|
||||
thiscam->postimg = postimgtype;
|
||||
@@ -3507,7 +3507,6 @@ static void P_CheckFloatbobPlatforms(mobj_t *mobj)
|
||||
if (!(rover->flags & FF_FLOATBOB))
|
||||
continue;
|
||||
|
||||
|
||||
if (mobj->eflags & MFE_VERTICALFLIP)
|
||||
{
|
||||
if (abs(*rover->bottomheight - (mobj->z + mobj->height)) > abs(mobj->momz))
|
||||
|
||||
@@ -3001,6 +3001,9 @@ boolean P_SetupLevel(boolean fromnetsave, boolean reloadinggamestate)
|
||||
CON_Drawer(); // let the user know what we are going to do
|
||||
I_FinishUpdate(); // page flip or blit buffer
|
||||
|
||||
// Initialize sector node list.
|
||||
P_Initsecnode();
|
||||
|
||||
if (netgame || multiplayer)
|
||||
cv_debug = botskin = 0;
|
||||
|
||||
|
||||
+1
-1
@@ -1017,7 +1017,7 @@ boolean P_IsLocalPlayer(const player_t *player)
|
||||
}
|
||||
|
||||
//
|
||||
// P_IsLocalPlayer
|
||||
// P_IsLocalPlayerNum
|
||||
//
|
||||
// Returns true if playernum is
|
||||
// on the local machine.
|
||||
|
||||
+10
-12
@@ -174,15 +174,10 @@ static void BlendTab_Translucent(UINT8 *table, int style, UINT8 blendamt)
|
||||
{
|
||||
frontrgba = pGammaCorrectedPalette[fg];
|
||||
|
||||
#if 0 // perfect implementation
|
||||
result.rgba = ASTBlendPixel(backrgba, frontrgba, style, 0xFF);
|
||||
result.rgba = ASTBlendPixel(result, frontrgba, AST_TRANSLUCENT, blendamt);
|
||||
table[((bg * 0x100) + fg)] = GetColorLUT(&transtab_lut, result.s.red, result.s.green, result.s.blue);
|
||||
#else // performance scrabbler
|
||||
result.rgba = ASTBlendPixel(backrgba, frontrgba, style, 0xFF);
|
||||
result.rgba = ASTBlendPixel(result, frontrgba, AST_TRANSLUCENT, blendamt);
|
||||
|
||||
table[((bg * 0x100) + fg)] = GetColorLUT(&transtab_lut_corrected, result.s.red, result.s.green, result.s.blue); // pGammaCorrectedPalette
|
||||
#endif
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -190,6 +185,7 @@ static void BlendTab_Translucent(UINT8 *table, int style, UINT8 blendamt)
|
||||
static void BlendTab_Subtractive(UINT8 *table, int style, UINT8 blendamt)
|
||||
{
|
||||
INT16 bg, fg;
|
||||
RGBA_t backrgba, frontrgba, result;
|
||||
|
||||
if (table == NULL)
|
||||
I_Error("BlendTab_Subtractive: input table was NULL!");
|
||||
@@ -202,11 +198,11 @@ static void BlendTab_Subtractive(UINT8 *table, int style, UINT8 blendamt)
|
||||
|
||||
for (bg = 0; bg < 0x100; bg++)
|
||||
{
|
||||
backrgba = pLocalPalette[bg]; // intentionally uses pLocalPalette
|
||||
|
||||
for (fg = 0; fg < 0x100; fg++)
|
||||
{
|
||||
RGBA_t backrgba = V_GetColor(bg);
|
||||
RGBA_t frontrgba = V_GetColor(fg);
|
||||
RGBA_t result;
|
||||
frontrgba = pLocalPalette[fg];
|
||||
|
||||
result.rgba = ASTBlendPixel(backrgba, frontrgba, style, 0xFF);
|
||||
result.s.red = std::max(0, result.s.red - blendamt);
|
||||
@@ -221,17 +217,19 @@ static void BlendTab_Subtractive(UINT8 *table, int style, UINT8 blendamt)
|
||||
static void BlendTab_Modulative(UINT8 *table)
|
||||
{
|
||||
INT16 bg, fg;
|
||||
RGBA_t backrgba, frontrgba, result;
|
||||
|
||||
if (table == NULL)
|
||||
I_Error("BlendTab_Modulative: input table was NULL!");
|
||||
|
||||
for (bg = 0; bg < 0x100; bg++)
|
||||
{
|
||||
backrgba = pGammaCorrectedPalette[bg];
|
||||
|
||||
for (fg = 0; fg < 0x100; fg++)
|
||||
{
|
||||
RGBA_t backrgba = V_GetColor(bg);
|
||||
RGBA_t frontrgba = V_GetColor(fg);
|
||||
RGBA_t result;
|
||||
frontrgba = pGammaCorrectedPalette[fg];
|
||||
|
||||
result.rgba = ASTBlendPixel(backrgba, frontrgba, AST_MODULATE, 0);
|
||||
table[((bg * 0x100) + fg)] = GetColorLUT(&transtab_lut_corrected, result.s.red, result.s.green, result.s.blue);
|
||||
}
|
||||
|
||||
@@ -1021,6 +1021,8 @@ void I_InitJoystick(UINT8 index)
|
||||
}
|
||||
}
|
||||
|
||||
#if 0 // no dont do this
|
||||
// reset everything just in case
|
||||
JoyInfo[index].dev = NULL;
|
||||
JoyInfo[index].oldjoy = -1;
|
||||
#if (SDL_VERSION_ATLEAST(2,32,4))
|
||||
@@ -1028,6 +1030,7 @@ void I_InitJoystick(UINT8 index)
|
||||
#endif
|
||||
JoyInfo[index].hasled = false;
|
||||
JoyInfo[index].hasrumble = false;
|
||||
#endif
|
||||
|
||||
if (cv_usejoystick[index].value)
|
||||
newcontroller = SDL_GameControllerOpen(cv_usejoystick[index].value-1);
|
||||
|
||||
+1
-1
@@ -568,7 +568,7 @@ static void ST_overlayDrawer(void)
|
||||
{
|
||||
if (!(multiplayer && demo.playback))
|
||||
{
|
||||
if(!P_IsLocalPlayer(stplyr))
|
||||
if (!P_IsLocalPlayer(stplyr))
|
||||
{
|
||||
/*char name[MAXPLAYERNAME+1];
|
||||
// shorten the name if its more than twelve characters.
|
||||
|
||||
@@ -256,6 +256,7 @@ static void Y_CalculateMatchData(UINT8 rankingsmode, void (*comparison)(INT32))
|
||||
}
|
||||
|
||||
if (demo.recording && !rankingsmode)
|
||||
{
|
||||
G_WriteStanding(
|
||||
data.pos[data.numplayers],
|
||||
data.name[data.numplayers],
|
||||
@@ -263,6 +264,7 @@ static void Y_CalculateMatchData(UINT8 rankingsmode, void (*comparison)(INT32))
|
||||
*data.color[data.numplayers],
|
||||
data.val[data.numplayers]
|
||||
);
|
||||
}
|
||||
|
||||
data.numplayers++;
|
||||
}
|
||||
|
||||
+4
-2
@@ -582,7 +582,8 @@ void Z_ChangeTag(void *ptr, INT32 tag)
|
||||
block = MEMBLOCK(ptr);
|
||||
|
||||
#ifdef PARANOIA
|
||||
if (block->id != ZONEID) I_Error("Z_ChangeTag at %s:%d: wrong id", file, line);
|
||||
if (block->id != ZONEID)
|
||||
I_Error("Z_ChangeTag at %s:%d: wrong id", file, line);
|
||||
#endif
|
||||
|
||||
if (tag >= PU_PURGELEVEL && block->user == NULL)
|
||||
@@ -613,7 +614,8 @@ void Z_SetUser(void *ptr, void **newuser)
|
||||
block = MEMBLOCK(ptr);
|
||||
|
||||
#ifdef PARANOIA
|
||||
if (block->id != ZONEID) I_Error("Z_SetUser at %s:%d: wrong id", file, line);
|
||||
if (block->id != ZONEID)
|
||||
I_Error("Z_SetUser at %s:%d: wrong id", file, line);
|
||||
#endif
|
||||
|
||||
if (block->tag >= PU_PURGELEVEL && newuser == NULL)
|
||||
|
||||
Reference in new issue
Block a user