diff --git a/src/d_main.c b/src/d_main.c index bad78c53070174e215416ce1fe9ed51b090c84c0..bf6c62ef2d8c591742e18d63bacd0f4c6ab16183 100644 --- a/src/d_main.c +++ b/src/d_main.c @@ -679,13 +679,13 @@ static void D_Display(void) s[sizeof s - 1] = '\0'; snprintf(s, sizeof s - 1, "get %d b/s", getbps); - V_DrawRightAlignedString(BASEVIDWIDTH, BASEVIDHEIGHT-ST_HEIGHT-40, V_YELLOWMAP, s); + V_DrawRightAlignedString(BASEVIDWIDTH, BASEVIDHEIGHT-40, V_YELLOWMAP, s); snprintf(s, sizeof s - 1, "send %d b/s", sendbps); - V_DrawRightAlignedString(BASEVIDWIDTH, BASEVIDHEIGHT-ST_HEIGHT-30, V_YELLOWMAP, s); + V_DrawRightAlignedString(BASEVIDWIDTH, BASEVIDHEIGHT-30, V_YELLOWMAP, s); snprintf(s, sizeof s - 1, "GameMiss %.2f%%", gamelostpercent); - V_DrawRightAlignedString(BASEVIDWIDTH, BASEVIDHEIGHT-ST_HEIGHT-20, V_YELLOWMAP, s); + V_DrawRightAlignedString(BASEVIDWIDTH, BASEVIDHEIGHT-20, V_YELLOWMAP, s); snprintf(s, sizeof s - 1, "SysMiss %.2f%%", lostpercent); - V_DrawRightAlignedString(BASEVIDWIDTH, BASEVIDHEIGHT-ST_HEIGHT-10, V_YELLOWMAP, s); + V_DrawRightAlignedString(BASEVIDWIDTH, BASEVIDHEIGHT-10, V_YELLOWMAP, s); } if (cv_perfstats.value) diff --git a/src/dedicated/i_system.c b/src/dedicated/i_system.c index 82dd51be0775a5ac0e4116391c24c5479481d2b6..1a1db8fb351e6017a8ee9d7745556550245e47c1 100644 --- a/src/dedicated/i_system.c +++ b/src/dedicated/i_system.c @@ -1390,8 +1390,8 @@ static const char *searchWad(const char *searchDir) #define CHECKWADPATH(ret) \ do { \ - I_OutputMsg(",%s", returnWadPath); \ - if (isWadPathOk(returnWadPath)) \ + I_OutputMsg(",%s", ret); \ + if (isWadPathOk(ret)) \ return ret; \ } while (0) @@ -1416,7 +1416,9 @@ static const char *locateWad(void) #ifndef NOCWD // examine current dir strcpy(returnWadPath, "."); - CHECKWADPATH(NULL); + I_OutputMsg(",%s", returnWadPath); + if (isWadPathOk(returnWadPath)) + return NULL; #endif #ifdef __APPLE__ @@ -1433,13 +1435,13 @@ static const char *locateWad(void) #ifndef NOHOME // find in $HOME - I_OutputMsg(",HOME/" DEFAULTDIR); if ((envstr = I_GetEnv("HOME")) != NULL) { - char *tmp = malloc(strlen(envstr) + sizeof(DEFAULTDIR)); + char *tmp = malloc(strlen(envstr) + 1 + sizeof(DEFAULTDIR)); strcpy(tmp, envstr); + strcat(tmp, "/"); strcat(tmp, DEFAULTDIR); - SEARCHWAD(envstr); + CHECKWADPATH(tmp); free(tmp); } #endif diff --git a/src/g_game.c b/src/g_game.c index bf369d111bb2ea1da40514e1b2b6b5ad3845d0af..5d6954b9b7cef3c6e5b34a1c2a5115fde61fdfb8 100644 --- a/src/g_game.c +++ b/src/g_game.c @@ -3352,7 +3352,7 @@ void G_AddPlayer(INT32 playernum) p->playerstate = PST_REBORN; - p->height = mobjinfo[MT_PLAYER].height; + p->height = skins[p->skin]->height; if (G_GametypeUsesLives() || ((netgame || multiplayer) && (gametyperules & GTR_FRIENDLY))) p->lives = cv_startinglives.value; diff --git a/src/hardware/hw_main.c b/src/hardware/hw_main.c index c70b6dd01f79487b80d3e74f47926da3054ec80a..f395a83905de4ecd65bef7017c41cfb8cef8f2f0 100644 --- a/src/hardware/hw_main.c +++ b/src/hardware/hw_main.c @@ -309,39 +309,39 @@ static FUINT HWR_CalcSlopeLight(FUINT lightnum, angle_t dir, fixed_t delta) return (FUINT)finallight; } -static FUINT HWR_SideLightLevel(side_t *side, UINT8 base_lightlevel) +static UINT8 HWR_SideLightLevel(side_t *side, INT16 base_lightlevel) { - return side->light + - ((side->lightabsolute) ? 0 : base_lightlevel); + return max(0, min(255, side->light + + ((side->lightabsolute) ? 0 : base_lightlevel))); } /* TODO: implement per-texture lighting -static FUINT HWR_TopLightLevel(side_t *side, UINT8 base_lightlevel) +static UINT8 HWR_TopLightLevel(side_t *side, INT16 base_lightlevel) { - return side->light_top + - ((side->lightabsolute_top) ? 0 : HWR_SideLightLevel(side, base_lightlevel)); + return max(0, min(255, side->light_top + + ((side->lightabsolute_top) ? 0 : HWR_SideLightLevel(side, base_lightlevel)))); } -static FUINT HWR_MidLightLevel(side_t *side, UINT8 base_lightlevel) +static UINT8 HWR_MidLightLevel(side_t *side, INT16 base_lightlevel) { - return side->light_mid + - ((side->lightabsolute_mid) ? 0 : HWR_SideLightLevel(side, base_lightlevel)); + return max(0, min(255, side->light_mid + + ((side->lightabsolute_mid) ? 0 : HWR_SideLightLevel(side, base_lightlevel)))); } -static FUINT HWR_BottomLightLevel(side_t *side, UINT8 base_lightlevel) +static UINT8 HWR_BottomLightLevel(side_t *side, INT16 base_lightlevel) { - return side->light_bottom + - ((side->lightabsolute_bottom) ? 0 : HWR_SideLightLevel(side, base_lightlevel)); + return max(0, min(255, side->light_bottom + + ((side->lightabsolute_bottom) ? 0 : HWR_SideLightLevel(side, base_lightlevel)))); } */ -static UINT8 HWR_FloorLightLevel(sector_t *sector, UINT8 base_lightlevel) +static UINT8 HWR_FloorLightLevel(sector_t *sector, INT16 base_lightlevel) { return max(0, min(255, sector->floorlightlevel + ((sector->floorlightabsolute) ? 0 : base_lightlevel))); } -static UINT8 HWR_CeilingLightLevel(sector_t *sector, UINT8 base_lightlevel) +static UINT8 HWR_CeilingLightLevel(sector_t *sector, INT16 base_lightlevel) { return max(0, min(255, sector->ceilinglightlevel + ((sector->ceilinglightabsolute) ? 0 : base_lightlevel))); diff --git a/src/hu_stuff.c b/src/hu_stuff.c index 8489e405837a9acbb1fd951792a2a155dcf6e3e4..caf13a445716167adaa20424af74f268565787ea 100644 --- a/src/hu_stuff.c +++ b/src/hu_stuff.c @@ -29,7 +29,7 @@ #include "i_video.h" #include "i_system.h" -#include "st_stuff.h" // ST_HEIGHT +#include "st_stuff.h" #include "r_local.h" #include "keys.h" @@ -204,7 +204,7 @@ void HU_LoadGraphics(void) HU_SetFontProperties(&hu_font, 0, 4, 8, 12); HU_SetFontProperties(&tny_font, 0, 2, 4, 12); HU_SetFontProperties(&cred_font, 0, 16, 16, 16); - HU_SetFontProperties(<_font, 0, 16, 20, 20); + HU_SetFontProperties(<_font, 0, 16, 20, 16); HU_SetFontProperties(&ntb_font, 2, 4, 20, 21); HU_SetFontProperties(&nto_font, 0, 4, 20, 21); @@ -1218,27 +1218,36 @@ static void HU_drawMiniChat(void) INT32 charwidth = 4, charheight = 6; INT32 boxw = cv_chatwidth.value; INT32 dx = 0, dy = 0; + boolean prev_linereturn = false; if (!chat_nummsg_min) return; // needless to say it's useless to do anything if we don't have anything to draw. for (size_t i = chat_nummsg_min; i > 0; i--) { - char *msg = V_ChatWordWrap(chatx, boxw-charwidth, V_SNAPTOBOTTOM|V_SNAPTOLEFT|V_ALLOWLOWERCASE, chat_mini[i-1]); + char *msg = V_ChatWordWrap(0, boxw-charwidth-2, V_SNAPTOBOTTOM|V_SNAPTOLEFT|V_ALLOWLOWERCASE|V_MONOSPACE, chat_mini[i-1]); for(size_t j = 0; msg[j]; j++) // iterate through msg { if (msg[j] == '\n') // get back down. { - chatheight += charheight; - dx = 0; + if (!prev_linereturn) + { + chatheight += charheight; + dx = 0; + } + prev_linereturn = true; } else if (msg[j] >= FONTSTART) { + prev_linereturn = false; + dx += charwidth; - if (dx >= boxw) + + if (dx >= boxw-charwidth-2) { dx = 0; chatheight += charheight; + prev_linereturn = true; } } } @@ -1250,35 +1259,43 @@ static void HU_drawMiniChat(void) } y = chaty - (chatheight + charheight); + prev_linereturn = false; for (size_t i = 0; i < chat_nummsg_min; i++) // iterate through our hot messages { INT32 timer = ((cv_chattime.value*TICRATE)-chat_timers[i]) - cv_chattime.value*TICRATE+9; // see below... INT32 transflag = (timer >= 0 && timer <= 9) ? (timer*V_10TRANS) : 0; // you can make bad jokes out of this one. - char *msg = V_ChatWordWrap(chatx, boxw-charwidth, V_SNAPTOBOTTOM|V_SNAPTOLEFT|V_ALLOWLOWERCASE, chat_mini[i]); // get the current message, and word wrap it. + char *msg = V_ChatWordWrap(0, boxw-charwidth-2, V_SNAPTOBOTTOM|V_SNAPTOLEFT|V_ALLOWLOWERCASE|V_MONOSPACE, chat_mini[i]); // get the current message, and word wrap it. UINT8 *colormap = NULL; for(size_t j = 0; msg[j]; j++) // iterate through msg { if (msg[j] == '\n') // get back down. { - dy += charheight; - dx = 0; + if (!prev_linereturn) + { + dy += charheight; + dx = 0; + } + prev_linereturn = true; } else if (msg[j] & 0x80) // get colormap colormap = V_GetStringColormap(((msg[j] & 0x7f) << V_CHARCOLORSHIFT) & V_CHARCOLORMASK); else if (msg[j] >= FONTSTART) { + prev_linereturn = false; + if (cv_chatbacktint.value) // on request of wolfy V_DrawFillConsoleMap(x + dx + 2, y+dy, charwidth, charheight, 239|V_SNAPTOBOTTOM|V_SNAPTOLEFT); - V_DrawChatCharacter(x + dx + 2, y+dy, msg[j] |V_SNAPTOBOTTOM|V_SNAPTOLEFT|transflag, true, colormap); - + V_DrawChatCharacter(x + dx + 2, y+dy, msg[j] |V_SNAPTOBOTTOM|V_SNAPTOLEFT|V_MONOSPACE|transflag, true, colormap); dx += charwidth; - if (dx >= boxw) + + if (dx >= boxw-charwidth-2) { dx = 0; dy += charheight; + prev_linereturn = true; } } } @@ -1303,6 +1320,7 @@ static void HU_drawChatLog(INT32 offset) UINT32 i = 0; INT32 chat_topy, chat_bottomy; boolean atbottom = false; + boolean prev_linereturn = false; // make sure that our scroll position isn't "illegal"; if (chat_scroll > chat_maxscroll) @@ -1335,27 +1353,38 @@ static void HU_drawChatLog(INT32 offset) for (i=0; i<chat_nummsg_log; i++) // iterate through our chatlog { - char *msg = V_ChatWordWrap(chatx, boxw-charwidth, V_SNAPTOBOTTOM|V_SNAPTOLEFT|V_ALLOWLOWERCASE, chat_log[i]); // get the current message, and word wrap it. + char *msg = V_ChatWordWrap(0, boxw-charwidth-2, V_SNAPTOBOTTOM|V_SNAPTOLEFT|V_ALLOWLOWERCASE|V_MONOSPACE, chat_log[i]); // get the current message, and word wrap it. UINT8 *colormap = NULL; for(size_t j = 0; msg[j]; j++) // iterate through msg { if (msg[j] == '\n') // get back down. { - dy += charheight; - dx = 0; + if (!prev_linereturn) + { + dy += charheight; + dx = 0; + } + prev_linereturn = true; } else if (msg[j] & 0x80) // get colormap colormap = V_GetStringColormap(((msg[j] & 0x7f) << V_CHARCOLORSHIFT) & V_CHARCOLORMASK); - else if (msg[j] >= FONTSTART) + else { - if ((y+dy+2 >= chat_topy) && (y+dy < (chat_bottomy))) - V_DrawChatCharacter(x + dx + 2, y+dy+2, msg[j] |V_SNAPTOBOTTOM|V_SNAPTOLEFT, true, colormap); + prev_linereturn = false; - dx += charwidth; - if (dx >= boxw-charwidth-2 && i<chat_nummsg_log) // end of message shouldn't count, nor should invisible characters!!!! + if (msg[j] >= FONTSTART) + { + if ((y+dy+2 >= chat_topy) && (y+dy < (chat_bottomy))) + V_DrawChatCharacter(x + dx + 2, y+dy+2, msg[j] |V_SNAPTOBOTTOM|V_SNAPTOLEFT|V_MONOSPACE, true, colormap); + + dx += charwidth; + } + + if (dx >= boxw-charwidth-2 && i < chat_nummsg_log) // end of message shouldn't count, nor should invisible characters!!!! { dx = 0; dy += charheight; + prev_linereturn = true; } } } diff --git a/src/m_menu.c b/src/m_menu.c index 7d4049df235adf33046a3883916e05ed41710ca9..301c4007538f4823ddd45ad33d0403c89c21e52e 100644 --- a/src/m_menu.c +++ b/src/m_menu.c @@ -8670,7 +8670,17 @@ static void M_DrawLoadGameData(void) if (savegameinfo[savetodraw].lives == -42) V_DrawRightAlignedThinString(x + 79, y, V_GRAYMAP, "NEW GAME"); else if (savegameinfo[savetodraw].lives == -666) - V_DrawRightAlignedThinString(x + 79, y, V_REDMAP, "CAN'T LOAD!"); + { + if (savegameinfo[savetodraw].continuescore == -62) + { + V_DrawRightAlignedThinString(x + 79, y, V_REDMAP, "ADDON NOT LOADED"); + V_DrawRightAlignedThinString(x + 79, y-10, V_REDMAP, savegameinfo[savetodraw].skinname); + } + else + { + V_DrawRightAlignedThinString(x + 79, y, V_REDMAP, "CAN'T LOAD!"); + } + } else if (savegameinfo[savetodraw].gamemap & 8192) V_DrawRightAlignedThinString(x + 79, y, V_GREENMAP, "CLEAR!"); else @@ -8903,6 +8913,7 @@ static void M_LoadSelect(INT32 choice) } #define VERSIONSIZE 16 +#define MISSING { savegameinfo[slot].continuescore = -62; savegameinfo[slot].lives = -666; Z_Free(savebuffer); return; } #define BADSAVE { savegameinfo[slot].lives = -666; Z_Free(savebuffer); return; } #define CHECKPOS if (sav_p >= end_p) BADSAVE // Reads the save file to list lives, level, player, etc. @@ -8999,10 +9010,11 @@ static void M_ReadSavegameInfo(UINT32 slot) CHECKPOS READSTRINGN(sav_p, ourSkinName, SKINNAMESIZE); savegameinfo[slot].skinnum = R_SkinAvailable(ourSkinName); + STRBUFCPY(savegameinfo[slot].skinname, ourSkinName); if (savegameinfo[slot].skinnum >= numskins || !R_SkinUsable(-1, savegameinfo[slot].skinnum)) - BADSAVE + MISSING CHECKPOS READSTRINGN(sav_p, botSkinName, SKINNAMESIZE); @@ -9010,7 +9022,7 @@ static void M_ReadSavegameInfo(UINT32 slot) if (savegameinfo[slot].botskin-1 >= numskins || !R_SkinUsable(-1, savegameinfo[slot].botskin-1)) - BADSAVE + MISSING } CHECKPOS @@ -9055,6 +9067,7 @@ static void M_ReadSavegameInfo(UINT32 slot) } #undef CHECKPOS #undef BADSAVE +#undef MISSING // // M_ReadSaveStrings diff --git a/src/m_menu.h b/src/m_menu.h index 55c0b4060820df361c0eb97c5729efeda9f60d4b..e76010c17a3dc76d99f6ceacdb19eb147be04c0c 100644 --- a/src/m_menu.h +++ b/src/m_menu.h @@ -422,6 +422,7 @@ typedef struct { char levelname[32]; UINT8 skinnum; + char skinname [SKINNAMESIZE+1]; UINT8 botskin; UINT8 numemeralds; UINT8 numgameovers; diff --git a/src/netcode/d_clisrv.c b/src/netcode/d_clisrv.c index d46e75c3f79dc475fa969cb6bdc48c06a4a938a8..5fee506af320578b7228cb6e5616ebac238120f7 100644 --- a/src/netcode/d_clisrv.c +++ b/src/netcode/d_clisrv.c @@ -1361,16 +1361,16 @@ static void IdleUpdate(void) if (!server || !netgame) return; - for (i = 1; i < MAXPLAYERS; i++) + for (i = 0; i < MAXPLAYERS; i++) { - if (cv_idletime.value && playeringame[i] && playernode[i] != UINT8_MAX && !players[i].quittime && !players[i].spectator && !players[i].bot && !IsPlayerAdmin(i) && i != serverplayer && gamestate == GS_LEVEL && !(players[i].pflags & PF_FINISHED)) + if (playeringame[i] && playernode[i] != UINT8_MAX && !players[i].quittime && !players[i].spectator && !players[i].bot && gamestate == GS_LEVEL) { if (players[i].cmd.forwardmove || players[i].cmd.sidemove || players[i].cmd.buttons) players[i].lastinputtime = 0; else players[i].lastinputtime++; - if (players[i].lastinputtime > (tic_t)cv_idletime.value * TICRATE * 60) + if (cv_idletime.value && !IsPlayerAdmin(i) && i != serverplayer && !(players[i].pflags & PF_FINISHED) && players[i].lastinputtime > (tic_t)cv_idletime.value * TICRATE * 60) { players[i].lastinputtime = 0; if (cv_idlespectate.value && G_GametypeHasSpectators()) diff --git a/src/netcode/i_tcp.c b/src/netcode/i_tcp.c index 6a50f440be80cfee5a591ed757ae1c79414c6455..24dfd7ec2797c190b0c0fdbf0343f19e33b001a0 100644 --- a/src/netcode/i_tcp.c +++ b/src/netcode/i_tcp.c @@ -317,7 +317,11 @@ init_upnpc_once(struct upnpdata *upnpuserdata) I_OutputMsg(M_GetText("Found UPnP device:\n desc: %s\n st: %s\n"), dev->descURL, dev->st); +#if (MINIUPNPC_API_VERSION >= 18) + UPNP_GetValidIGD(devlist, &urls, &data, lanaddr, sizeof(lanaddr), NULL, 0); +#else UPNP_GetValidIGD(devlist, &urls, &data, lanaddr, sizeof(lanaddr)); +#endif I_OutputMsg(M_GetText("Local LAN IP address: %s\n"), lanaddr); descXML = miniwget(dev->descURL, &descXMLsize, scope_id, &status_code); if (descXML) diff --git a/src/p_map.c b/src/p_map.c index b8584205b8082cd284a5aae81382882781d85ab6..b79f9d45c77ea069f079e1d2a50d6b45bfa1e646 100644 --- a/src/p_map.c +++ b/src/p_map.c @@ -2502,6 +2502,9 @@ boolean P_TryCameraMove(fixed_t x, fixed_t y, camera_t *thiscam) floatok = false; + if (dedicated) // this crashes so don't even try it + return false; + if (twodlevel || (thiscam == &camera && players[displayplayer].mo && (players[displayplayer].mo->flags2 & MF2_TWOD)) || (thiscam == &camera2 && players[secondarydisplayplayer].mo && (players[secondarydisplayplayer].mo->flags2 & MF2_TWOD))) diff --git a/src/p_slopes.c b/src/p_slopes.c index c2bacad9ed02ede75af92692d7b5e9ad0e6fb02d..ce276a6729a6bea818328821430366ffa920b18c 100644 --- a/src/p_slopes.c +++ b/src/p_slopes.c @@ -181,8 +181,8 @@ void T_DynamicSlopeLine (dynlineplanethink_t* th) { pslope_t* slope = th->slope; line_t* srcline = th->sourceline; - - fixed_t zdelta; + + fixed_t zdelta, oldoz = slope->o.z; switch(th->type) { case DP_FRONTFLOOR: @@ -209,7 +209,7 @@ void T_DynamicSlopeLine (dynlineplanethink_t* th) return; } - if (slope->zdelta != FixedDiv(zdelta, th->extent)) { + if (slope->zdelta != FixedDiv(zdelta, th->extent) || oldoz != slope->o.z) { slope->zdelta = FixedDiv(zdelta, th->extent); slope->zangle = R_PointToAngle2(0, 0, th->extent, -zdelta); slope->moved = true; diff --git a/src/p_spec.c b/src/p_spec.c index 78cf460632970ac108512f29f1fd2111aea5f462..d4939669a1ec5bce2ee873617b00edfce966829e 100644 --- a/src/p_spec.c +++ b/src/p_spec.c @@ -2405,18 +2405,15 @@ static void P_ProcessLineSpecial(line_t *line, mobj_t *mo, sector_t *callsec) y = line->args[3] << FRACBITS; z = line->args[4] << FRACBITS; - P_UnsetThingPosition(mo); - mo->x += x; - mo->y += y; - mo->z += z; - P_SetThingPosition(mo); - + P_SetOrigin(mo, mo->x + x, mo->y + y, mo->z + z); + if (mo->player) { if (bot) // This might put poor Tails in a wall if he's too far behind! D: But okay, whatever! >:3 P_SetOrigin(bot, bot->x + x, bot->y + y, bot->z + z); if (splitscreen && mo->player == &players[secondarydisplayplayer] && camera2.chase) { + camera2.reset = true; camera2.x += x; camera2.y += y; camera2.z += z; @@ -2424,6 +2421,7 @@ static void P_ProcessLineSpecial(line_t *line, mobj_t *mo, sector_t *callsec) } else if (camera.chase && mo->player == &players[displayplayer]) { + camera.reset = true; camera.x += x; camera.y += y; camera.z += z; diff --git a/src/p_user.c b/src/p_user.c index ea68f9443cb4b7eb438f4992899683a1b5b7553b..3ee13aca96989a4c7f5b94a64c8e525f275f9882 100644 --- a/src/p_user.c +++ b/src/p_user.c @@ -8829,6 +8829,8 @@ void P_MovePlayer(player_t *player) player->mo->height = P_GetPlayerSpinHeight(player); atspinheight = true; } + else if (player->powers[pw_carry] == CR_PLAYER || player->powers[pw_carry] == CR_PTERABYTE) // You're slightly shorter while being carried + player->mo->height = FixedDiv(P_GetPlayerHeight(player), FixedDiv(14*FRACUNIT,10*FRACUNIT)); else player->mo->height = P_GetPlayerHeight(player); @@ -12850,9 +12852,9 @@ void P_PlayerAfterThink(player_t *player) else { if (tails->player) - P_TryMove(player->mo, tails->x + P_ReturnThrustX(tails, tails->player->drawangle, 4*FRACUNIT), tails->y + P_ReturnThrustY(tails, tails->player->drawangle, 4*FRACUNIT), true); + P_TryMove(player->mo, tails->x + P_ReturnThrustX(tails, tails->player->drawangle, 4*tails->scale), tails->y + P_ReturnThrustY(tails, tails->player->drawangle, 4*tails->scale), true); else - P_TryMove(player->mo, tails->x + P_ReturnThrustX(tails, tails->angle, 4*FRACUNIT), tails->y + P_ReturnThrustY(tails, tails->angle, 4*FRACUNIT), true); + P_TryMove(player->mo, tails->x + P_ReturnThrustX(tails, tails->angle, 4*tails->scale), tails->y + P_ReturnThrustY(tails, tails->angle, 4*tails->scale), true); player->mo->momx = tails->momx; player->mo->momy = tails->momy; player->mo->momz = tails->momz; @@ -12866,7 +12868,7 @@ void P_PlayerAfterThink(player_t *player) P_SetPlayerAngle(player, player->mo->angle); } - if (P_AproxDistance(player->mo->x - tails->x, player->mo->y - tails->y) > player->mo->radius) + if (P_AproxDistance(player->mo->x - tails->x, player->mo->y - tails->y) > tails->radius) player->powers[pw_carry] = CR_NONE; if (player->powers[pw_carry] == CR_PLAYER) @@ -13087,7 +13089,7 @@ void P_PlayerAfterThink(player_t *player) player->mo->momy = ptera->momy; player->mo->momz = ptera->momz; - if (P_AproxDistance(player->mo->x - ptera->x - ptera->watertop, player->mo->y - ptera->y - ptera->waterbottom) > player->mo->radius) + if (P_AproxDistance(player->mo->x - ptera->x - ptera->watertop, player->mo->y - ptera->y - ptera->waterbottom) > ptera->radius) goto dropoff; ptera->watertop >>= 1; diff --git a/src/r_bsp.c b/src/r_bsp.c index 4b4c81b882986478eb682c4b17cb77d035409bee..373a170c90ea0b24e60bd6469a098ae4f8b75142 100644 --- a/src/r_bsp.c +++ b/src/r_bsp.c @@ -230,13 +230,13 @@ static INT32 R_DoorClosed(void) && (backsector->floorheight <= frontsector->floorheight || curline->sidedef->bottomtexture); } -static UINT8 R_FloorLightLevel(sector_t *sector, UINT8 base_lightlevel) +static UINT8 R_FloorLightLevel(sector_t *sector, INT16 base_lightlevel) { return max(0, min(255, sector->floorlightlevel + ((sector->floorlightabsolute) ? 0 : base_lightlevel))); } -static UINT8 R_CeilingLightLevel(sector_t *sector, UINT8 base_lightlevel) +static UINT8 R_CeilingLightLevel(sector_t *sector, INT16 base_lightlevel) { return max(0, min(255, sector->ceilinglightlevel + ((sector->ceilinglightabsolute) ? 0 : base_lightlevel))); diff --git a/src/r_draw.c b/src/r_draw.c index feb4693bb4a9ab995a099b003caf6a40e8e610f5..eca3f36b780d2763920fa57d4c6d7ecd4f79a57b 100644 --- a/src/r_draw.c +++ b/src/r_draw.c @@ -19,7 +19,6 @@ #include "doomstat.h" #include "r_local.h" #include "r_translation.h" -#include "st_stuff.h" // need ST_HEIGHT #include "i_video.h" #include "v_video.h" #include "m_misc.h" diff --git a/src/r_segs.c b/src/r_segs.c index 637e528fe886636a1fcb9e5255d7a4768c3ff6b7..a8a065c9b4c643f29b107baf34a25e1eb4e36ba5 100644 --- a/src/r_segs.c +++ b/src/r_segs.c @@ -94,29 +94,29 @@ transnum_t R_GetLinedefTransTable(fixed_t alpha) return (20*(FRACUNIT - alpha - 1) + FRACUNIT) >> (FRACBITS+1); } -static INT16 R_SideLightLevel(side_t *side, UINT8 base_lightlevel) +static UINT8 R_SideLightLevel(side_t *side, INT16 base_lightlevel) { - return side->light + - ((side->lightabsolute) ? 0 : base_lightlevel); + return max(0, min(255, side->light + + ((side->lightabsolute) ? 0 : base_lightlevel))); } /* TODO: implement per-texture lighting -static INT16 R_TopLightLevel(side_t *side, UINT8 base_lightlevel) +static UINT8 R_TopLightLevel(side_t *side, INT16 base_lightlevel) { - return side->light_top + - ((side->lightabsolute_top) ? 0 : R_SideLightLevel(side, base_lightlevel)); + return max(0, min(255, side->light_top + + ((side->lightabsolute_top) ? 0 : R_SideLightLevel(side, base_lightlevel)))); } -static INT16 R_MidLightLevel(side_t *side, UINT8 base_lightlevel) +static UINT8 R_MidLightLevel(side_t *side, INT16 base_lightlevel) { - return side->light_mid + - ((side->lightabsolute_mid) ? 0 : R_SideLightLevel(side, base_lightlevel)); + return max(0, min(255, side->light_mid + + ((side->lightabsolute_mid) ? 0 : R_SideLightLevel(side, base_lightlevel)))); } -static INT16 R_BottomLightLevel(side_t *side, UINT8 base_lightlevel) +static UINT8 R_BottomLightLevel(side_t *side, INT16 base_lightlevel) { - return side->light_bottom + - ((side->lightabsolute_bottom) ? 0 : R_SideLightLevel(side, base_lightlevel)); + return max(0, min(255, side->light_bottom + + ((side->lightabsolute_bottom) ? 0 : R_SideLightLevel(side, base_lightlevel)))); } */ diff --git a/src/screen.h b/src/screen.h index e23e8cbd6e1b55a1f3085c735ad6454d1c4d3541..375b3e04e9f3846a60992b9f230b4054321cf743 100644 --- a/src/screen.h +++ b/src/screen.h @@ -30,10 +30,6 @@ #define NUMSCREENS 5 #endif -// Size of statusbar. -#define ST_HEIGHT 32 -#define ST_WIDTH 320 - // used now as a maximum video mode size for extra vesa modes. // we try to re-allocate a minimum of buffers for stability of the memory, diff --git a/src/sdl/i_system.c b/src/sdl/i_system.c index e28fbd34abd5e17a322adad41e9068ae25935a00..9fe50a6a2347583f0fe705ff5c6f6a0466ea51a9 100644 --- a/src/sdl/i_system.c +++ b/src/sdl/i_system.c @@ -3003,8 +3003,8 @@ static const char *searchWad(const char *searchDir) #define CHECKWADPATH(ret) \ do { \ - I_OutputMsg(",%s", returnWadPath); \ - if (isWadPathOk(returnWadPath)) \ + I_OutputMsg(",%s", ret); \ + if (isWadPathOk(ret)) \ return ret; \ } while (0) @@ -3033,7 +3033,9 @@ static const char *locateWad(void) #ifndef NOCWD // examine current dir strcpy(returnWadPath, "."); - CHECKWADPATH(NULL); + I_OutputMsg(",%s", returnWadPath); + if (isWadPathOk(returnWadPath)) + return NULL; #endif #ifdef __APPLE__ @@ -3053,10 +3055,11 @@ static const char *locateWad(void) I_OutputMsg(",HOME/" DEFAULTDIR); if ((envstr = I_GetEnv("HOME")) != NULL) { - char *tmp = malloc(strlen(envstr) + sizeof(DEFAULTDIR)); + char *tmp = malloc(strlen(envstr) + 1 + sizeof(DEFAULTDIR)); strcpy(tmp, envstr); + strcat(tmp, "/"); strcat(tmp, DEFAULTDIR); - SEARCHWAD(envstr); + CHECKWADPATH(tmp); free(tmp); } #endif