Merge remote-tracking branch 'srb2public/next'
This commit is contained in:
commit
dd05edfcc0
|
@ -812,11 +812,6 @@ void D_StartTitle(void)
|
||||||
CON_ToggleOff();
|
CON_ToggleOff();
|
||||||
|
|
||||||
// Reset the palette
|
// Reset the palette
|
||||||
#ifdef HWRENDER
|
|
||||||
if (rendermode == render_opengl)
|
|
||||||
HWR_SetPaletteColor(0);
|
|
||||||
else
|
|
||||||
#endif
|
|
||||||
if (rendermode != render_none)
|
if (rendermode != render_none)
|
||||||
V_SetPaletteLump("PLAYPAL");
|
V_SetPaletteLump("PLAYPAL");
|
||||||
}
|
}
|
||||||
|
|
|
@ -2905,8 +2905,8 @@ static boolean HWR_CheckBBox(fixed_t *bspcoord)
|
||||||
py2 = bspcoord[checkcoord[boxpos][3]];
|
py2 = bspcoord[checkcoord[boxpos][3]];
|
||||||
|
|
||||||
// check clip list for an open space
|
// check clip list for an open space
|
||||||
angle1 = R_PointToAngle(px1, py1) - dup_viewangle;
|
angle1 = R_PointToAngle2(dup_viewx>>1, dup_viewy>>1, px1>>1, py1>>1) - dup_viewangle;
|
||||||
angle2 = R_PointToAngle(px2, py2) - dup_viewangle;
|
angle2 = R_PointToAngle2(dup_viewx>>1, dup_viewy>>1, px2>>1, py2>>1) - dup_viewangle;
|
||||||
|
|
||||||
span = angle1 - angle2;
|
span = angle1 - angle2;
|
||||||
|
|
||||||
|
@ -4236,6 +4236,9 @@ static void HWR_SplitSprite(gr_vissprite_t *spr)
|
||||||
i = 0;
|
i = 0;
|
||||||
temp = FLOAT_TO_FIXED(realtop);
|
temp = FLOAT_TO_FIXED(realtop);
|
||||||
|
|
||||||
|
if (spr->mobj->frame & FF_FULLBRIGHT)
|
||||||
|
lightlevel = 255;
|
||||||
|
|
||||||
#ifdef ESLOPE
|
#ifdef ESLOPE
|
||||||
for (i = 1; i < sector->numlights; i++)
|
for (i = 1; i < sector->numlights; i++)
|
||||||
{
|
{
|
||||||
|
@ -4243,14 +4246,16 @@ static void HWR_SplitSprite(gr_vissprite_t *spr)
|
||||||
: sector->lightlist[i].height;
|
: sector->lightlist[i].height;
|
||||||
if (h <= temp)
|
if (h <= temp)
|
||||||
{
|
{
|
||||||
lightlevel = *list[i-1].lightlevel;
|
if (!(spr->mobj->frame & FF_FULLBRIGHT))
|
||||||
|
lightlevel = *list[i-1].lightlevel;
|
||||||
colormap = list[i-1].extra_colormap;
|
colormap = list[i-1].extra_colormap;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
i = R_GetPlaneLight(sector, temp, false);
|
i = R_GetPlaneLight(sector, temp, false);
|
||||||
lightlevel = *list[i].lightlevel;
|
if (!(spr->mobj->frame & FF_FULLBRIGHT))
|
||||||
|
lightlevel = *list[i].lightlevel;
|
||||||
colormap = list[i].extra_colormap;
|
colormap = list[i].extra_colormap;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -4265,7 +4270,8 @@ static void HWR_SplitSprite(gr_vissprite_t *spr)
|
||||||
// even if we aren't changing colormap or lightlevel, we still need to continue drawing down the sprite
|
// even if we aren't changing colormap or lightlevel, we still need to continue drawing down the sprite
|
||||||
if (!(list[i].flags & FF_NOSHADE) && (list[i].flags & FF_CUTSPRITES))
|
if (!(list[i].flags & FF_NOSHADE) && (list[i].flags & FF_CUTSPRITES))
|
||||||
{
|
{
|
||||||
lightlevel = *list[i].lightlevel;
|
if (!(spr->mobj->frame & FF_FULLBRIGHT))
|
||||||
|
lightlevel = *list[i].lightlevel;
|
||||||
colormap = list[i].extra_colormap;
|
colormap = list[i].extra_colormap;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -33,7 +33,9 @@
|
||||||
*/
|
*/
|
||||||
fixed_t FixedMul(fixed_t a, fixed_t b)
|
fixed_t FixedMul(fixed_t a, fixed_t b)
|
||||||
{
|
{
|
||||||
return (fixed_t)((((INT64)a * b) ) / FRACUNIT);
|
// Need to cast to unsigned before shifting to avoid undefined behaviour
|
||||||
|
// for negative integers
|
||||||
|
return (fixed_t)(((UINT64)((INT64)a * b)) >> FRACBITS);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif //__USE_C_FIXEDMUL__
|
#endif //__USE_C_FIXEDMUL__
|
||||||
|
|
|
@ -2090,6 +2090,7 @@ void T_EachTimeThinker(levelspecthink_t *eachtime)
|
||||||
boolean floortouch = false;
|
boolean floortouch = false;
|
||||||
fixed_t bottomheight, topheight;
|
fixed_t bottomheight, topheight;
|
||||||
msecnode_t *node;
|
msecnode_t *node;
|
||||||
|
ffloor_t *rover;
|
||||||
|
|
||||||
for (i = 0; i < MAXPLAYERS; i++)
|
for (i = 0; i < MAXPLAYERS; i++)
|
||||||
{
|
{
|
||||||
|
@ -2137,6 +2138,19 @@ void T_EachTimeThinker(levelspecthink_t *eachtime)
|
||||||
{
|
{
|
||||||
targetsec = §ors[targetsecnum];
|
targetsec = §ors[targetsecnum];
|
||||||
|
|
||||||
|
// Find the FOF corresponding to the control linedef
|
||||||
|
for (rover = targetsec->ffloors; rover; rover = rover->next)
|
||||||
|
{
|
||||||
|
if (rover->master == sec->lines[i])
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!rover) // This should be impossible, but don't complain if it is the case somehow
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (!(rover->flags & FF_EXISTS)) // If the FOF does not "exist", we pretend that nobody's there
|
||||||
|
continue;
|
||||||
|
|
||||||
for (j = 0; j < MAXPLAYERS; j++)
|
for (j = 0; j < MAXPLAYERS; j++)
|
||||||
{
|
{
|
||||||
if (!playeringame[j])
|
if (!playeringame[j])
|
||||||
|
|
|
@ -2561,11 +2561,6 @@ boolean P_SetupLevel(boolean skipprecip)
|
||||||
|
|
||||||
|
|
||||||
// Reset the palette
|
// Reset the palette
|
||||||
#ifdef HWRENDER
|
|
||||||
if (rendermode == render_opengl)
|
|
||||||
HWR_SetPaletteColor(0);
|
|
||||||
else
|
|
||||||
#endif
|
|
||||||
if (rendermode != render_none)
|
if (rendermode != render_none)
|
||||||
V_SetPaletteLump("PLAYPAL");
|
V_SetPaletteLump("PLAYPAL");
|
||||||
|
|
||||||
|
@ -3115,7 +3110,7 @@ boolean P_AddWadFile(const char *wadfilename, char **firstmapname)
|
||||||
|
|
||||||
if ((numlumps = W_LoadWadFile(wadfilename)) == INT16_MAX)
|
if ((numlumps = W_LoadWadFile(wadfilename)) == INT16_MAX)
|
||||||
{
|
{
|
||||||
CONS_Printf(M_GetText("Errors occured while loading %s; not added.\n"), wadfilename);
|
CONS_Printf(M_GetText("Errors occurred while loading %s; not added.\n"), wadfilename);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
else wadnum = (UINT16)(numwadfiles-1);
|
else wadnum = (UINT16)(numwadfiles-1);
|
||||||
|
|
27
src/p_spec.c
27
src/p_spec.c
|
@ -6722,6 +6722,7 @@ void T_Scroll(scroll_t *s)
|
||||||
line_t *line;
|
line_t *line;
|
||||||
size_t i;
|
size_t i;
|
||||||
INT32 sect;
|
INT32 sect;
|
||||||
|
ffloor_t *rover;
|
||||||
|
|
||||||
case sc_side: // scroll wall texture
|
case sc_side: // scroll wall texture
|
||||||
side = sides + s->affectee;
|
side = sides + s->affectee;
|
||||||
|
@ -6763,6 +6764,19 @@ void T_Scroll(scroll_t *s)
|
||||||
sector_t *psec;
|
sector_t *psec;
|
||||||
psec = sectors + sect;
|
psec = sectors + sect;
|
||||||
|
|
||||||
|
// Find the FOF corresponding to the control linedef
|
||||||
|
for (rover = psec->ffloors; rover; rover = rover->next)
|
||||||
|
{
|
||||||
|
if (rover->master == sec->lines[i])
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!rover) // This should be impossible, but don't complain if it is the case somehow
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (!(rover->flags & FF_EXISTS)) // If the FOF does not "exist", we pretend that nobody's there
|
||||||
|
continue;
|
||||||
|
|
||||||
for (node = psec->touching_thinglist; node; node = node->m_thinglist_next)
|
for (node = psec->touching_thinglist; node; node = node->m_thinglist_next)
|
||||||
{
|
{
|
||||||
thing = node->m_thing;
|
thing = node->m_thing;
|
||||||
|
@ -6826,6 +6840,19 @@ void T_Scroll(scroll_t *s)
|
||||||
sector_t *psec;
|
sector_t *psec;
|
||||||
psec = sectors + sect;
|
psec = sectors + sect;
|
||||||
|
|
||||||
|
// Find the FOF corresponding to the control linedef
|
||||||
|
for (rover = psec->ffloors; rover; rover = rover->next)
|
||||||
|
{
|
||||||
|
if (rover->master == sec->lines[i])
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!rover) // This should be impossible, but don't complain if it is the case somehow
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (!(rover->flags & FF_EXISTS)) // If the FOF does not "exist", we pretend that nobody's there
|
||||||
|
continue;
|
||||||
|
|
||||||
for (node = psec->touching_thinglist; node; node = node->m_thinglist_next)
|
for (node = psec->touching_thinglist; node; node = node->m_thinglist_next)
|
||||||
{
|
{
|
||||||
thing = node->m_thing;
|
thing = node->m_thing;
|
||||||
|
|
|
@ -608,7 +608,7 @@ void P_Ticker(boolean run)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Keep track of how long they've been playing!
|
// Keep track of how long they've been playing!
|
||||||
if (!demoplayback)
|
if (!demoplayback) // Don't increment if a demo is playing.
|
||||||
totalplaytime++;
|
totalplaytime++;
|
||||||
|
|
||||||
if (!useNightsSS && G_IsSpecialStage(gamemap))
|
if (!useNightsSS && G_IsSpecialStage(gamemap))
|
||||||
|
|
10
src/p_user.c
10
src/p_user.c
|
@ -1747,6 +1747,9 @@ boolean P_InSpaceSector(mobj_t *mo) // Returns true if you are in space
|
||||||
|
|
||||||
for (rover = sector->ffloors; rover; rover = rover->next)
|
for (rover = sector->ffloors; rover; rover = rover->next)
|
||||||
{
|
{
|
||||||
|
if (!(rover->flags & FF_EXISTS))
|
||||||
|
continue;
|
||||||
|
|
||||||
if (GETSECSPECIAL(rover->master->frontsector->special, 1) != SPACESPECIAL)
|
if (GETSECSPECIAL(rover->master->frontsector->special, 1) != SPACESPECIAL)
|
||||||
continue;
|
continue;
|
||||||
#ifdef ESLOPE
|
#ifdef ESLOPE
|
||||||
|
@ -1961,6 +1964,12 @@ static void P_CheckBouncySectors(player_t *player)
|
||||||
|
|
||||||
for (rover = node->m_sector->ffloors; rover; rover = rover->next)
|
for (rover = node->m_sector->ffloors; rover; rover = rover->next)
|
||||||
{
|
{
|
||||||
|
if (!(rover->flags & FF_EXISTS))
|
||||||
|
continue; // FOFs should not be bouncy if they don't even "exist"
|
||||||
|
|
||||||
|
if (GETSECSPECIAL(rover->master->frontsector->special, 1) != 15)
|
||||||
|
continue; // this sector type is required for FOFs to be bouncy
|
||||||
|
|
||||||
topheight = P_GetFOFTopZ(player->mo, node->m_sector, rover, player->mo->x, player->mo->y, NULL);
|
topheight = P_GetFOFTopZ(player->mo, node->m_sector, rover, player->mo->x, player->mo->y, NULL);
|
||||||
bottomheight = P_GetFOFBottomZ(player->mo, node->m_sector, rover, player->mo->x, player->mo->y, NULL);
|
bottomheight = P_GetFOFBottomZ(player->mo, node->m_sector, rover, player->mo->x, player->mo->y, NULL);
|
||||||
|
|
||||||
|
@ -1974,7 +1983,6 @@ static void P_CheckBouncySectors(player_t *player)
|
||||||
&& oldz + player->mo->height > P_GetFOFBottomZ(player->mo, node->m_sector, rover, oldx, oldy, NULL))
|
&& oldz + player->mo->height > P_GetFOFBottomZ(player->mo, node->m_sector, rover, oldx, oldy, NULL))
|
||||||
top = false;
|
top = false;
|
||||||
|
|
||||||
if (GETSECSPECIAL(rover->master->frontsector->special, 1) == 15)
|
|
||||||
{
|
{
|
||||||
fixed_t linedist;
|
fixed_t linedist;
|
||||||
|
|
||||||
|
|
|
@ -700,6 +700,14 @@ static void Impl_HandleMouseButtonEvent(SDL_MouseButtonEvent evt, Uint32 type)
|
||||||
|
|
||||||
SDL_memset(&event, 0, sizeof(event_t));
|
SDL_memset(&event, 0, sizeof(event_t));
|
||||||
|
|
||||||
|
// Ignore the event if the mouse is not actually focused on the window.
|
||||||
|
// This can happen if you used the mouse to restore keyboard focus;
|
||||||
|
// this apparently makes a mouse button down event but not a mouse button up event,
|
||||||
|
// resulting in whatever key was pressed down getting "stuck" if we don't ignore it.
|
||||||
|
// -- Monster Iestyn (28/05/18)
|
||||||
|
if (SDL_GetMouseFocus() != window)
|
||||||
|
return;
|
||||||
|
|
||||||
/// \todo inputEvent.button.which
|
/// \todo inputEvent.button.which
|
||||||
if (USE_MOUSEINPUT)
|
if (USE_MOUSEINPUT)
|
||||||
{
|
{
|
||||||
|
|
|
@ -216,17 +216,17 @@ void ST_doPaletteStuff(void)
|
||||||
else
|
else
|
||||||
palette = 0;
|
palette = 0;
|
||||||
|
|
||||||
|
#ifdef HWRENDER
|
||||||
|
if (rendermode == render_opengl)
|
||||||
|
palette = 0; // No flashpals here in OpenGL
|
||||||
|
#endif
|
||||||
|
|
||||||
palette = min(max(palette, 0), 13);
|
palette = min(max(palette, 0), 13);
|
||||||
|
|
||||||
if (palette != st_palette)
|
if (palette != st_palette)
|
||||||
{
|
{
|
||||||
st_palette = palette;
|
st_palette = palette;
|
||||||
|
|
||||||
#ifdef HWRENDER
|
|
||||||
if (rendermode == render_opengl)
|
|
||||||
HWR_SetPaletteColor(0);
|
|
||||||
else
|
|
||||||
#endif
|
|
||||||
if (rendermode != render_none)
|
if (rendermode != render_none)
|
||||||
{
|
{
|
||||||
V_SetPaletteLump(GetPalette()); // Reset the palette
|
V_SetPaletteLump(GetPalette()); // Reset the palette
|
||||||
|
|
Loading…
Reference in a new issue