mirror of
https://github.com/ZDoom/gzdoom-gles.git
synced 2025-01-31 12:30:32 +00:00
Merge branch 'master' of https://github.com/rheit/zdoom
This commit is contained in:
commit
d65589281f
3 changed files with 26 additions and 16 deletions
|
@ -60,6 +60,7 @@ void DSectorEffect::Destroy()
|
||||||
}
|
}
|
||||||
|
|
||||||
DSectorEffect::DSectorEffect (sector_t *sector)
|
DSectorEffect::DSectorEffect (sector_t *sector)
|
||||||
|
: DThinker(STAT_SECTOREFFECT)
|
||||||
{
|
{
|
||||||
m_Sector = sector;
|
m_Sector = sector;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1207,29 +1207,23 @@ void G_FinishTravel ()
|
||||||
pnum = int(pawn->player - players);
|
pnum = int(pawn->player - players);
|
||||||
pawn->ChangeStatNum (STAT_PLAYER);
|
pawn->ChangeStatNum (STAT_PLAYER);
|
||||||
pawndup = pawn->player->mo;
|
pawndup = pawn->player->mo;
|
||||||
start = NULL;
|
|
||||||
assert (pawn != pawndup);
|
assert (pawn != pawndup);
|
||||||
if (pawndup == NULL)
|
|
||||||
{ // Oh no! there was no start for this player!
|
|
||||||
start = G_PickPlayerStart(pnum, PPS_FORCERANDOM);
|
|
||||||
if (start != NULL) pawndup = P_SpawnPlayer(start, pnum, (level.flags2 & LEVEL2_PRERAISEWEAPON) ? SPF_WEAPONFULLYUP : 0);
|
|
||||||
if (pawndup == NULL)
|
|
||||||
{
|
|
||||||
pawn->flags |= MF_NOSECTOR | MF_NOBLOCKMAP;
|
|
||||||
pawn->Destroy();
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (start == NULL)
|
|
||||||
{
|
|
||||||
start = G_PickPlayerStart(pnum, 0);
|
start = G_PickPlayerStart(pnum, 0);
|
||||||
if (start == NULL)
|
if (start == NULL)
|
||||||
|
{
|
||||||
|
if (pawndup != nullptr)
|
||||||
{
|
{
|
||||||
Printf(TEXTCOLOR_RED "No player %d start to travel to!\n", pnum + 1);
|
Printf(TEXTCOLOR_RED "No player %d start to travel to!\n", pnum + 1);
|
||||||
// Move to the coordinates this player had when they left the level.
|
// Move to the coordinates this player had when they left the level.
|
||||||
pawn->SetXYZ(pawndup->Pos());
|
pawn->SetXYZ(pawndup->Pos());
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Could not find a start for this player at all. This really should never happen but if it does, let's better abort.
|
||||||
|
DThinker::DestroyThinkersInList(STAT_TRAVELLING);
|
||||||
|
I_Error ("No player %d start to travel to!\n", pnum + 1);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
oldpawn = pawndup;
|
oldpawn = pawndup;
|
||||||
|
|
||||||
|
@ -1266,8 +1260,11 @@ void G_FinishTravel ()
|
||||||
pawn->player->camera = pawn;
|
pawn->player->camera = pawn;
|
||||||
pawn->player->viewheight = pawn->ViewHeight;
|
pawn->player->viewheight = pawn->ViewHeight;
|
||||||
pawn->flags2 &= ~MF2_BLASTED;
|
pawn->flags2 &= ~MF2_BLASTED;
|
||||||
|
if (oldpawn != nullptr)
|
||||||
|
{
|
||||||
DObject::StaticPointerSubstitution (oldpawn, pawn);
|
DObject::StaticPointerSubstitution (oldpawn, pawn);
|
||||||
oldpawn->Destroy();
|
oldpawn->Destroy();
|
||||||
|
}
|
||||||
if (pawndup != NULL)
|
if (pawndup != NULL)
|
||||||
{
|
{
|
||||||
pawndup->Destroy();
|
pawndup->Destroy();
|
||||||
|
|
|
@ -642,6 +642,11 @@ static void ReadOnePlayer(FSerializer &arc, bool skipload)
|
||||||
{
|
{
|
||||||
CopyPlayer(&players[i], &playerTemp, name);
|
CopyPlayer(&players[i], &playerTemp, name);
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// we need the player actor, so that G_FinishTravel can destroy it later.
|
||||||
|
players[i].mo = playerTemp.mo;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -755,6 +760,13 @@ static void ReadMultiplePlayers(FSerializer &arc, int numPlayers, int numPlayers
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
for (i = 0; i < MAXPLAYERS; ++i)
|
||||||
|
{
|
||||||
|
players[i].mo = playertemp[i].mo;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
delete[] tempPlayerUsed;
|
delete[] tempPlayerUsed;
|
||||||
delete[] playertemp;
|
delete[] playertemp;
|
||||||
|
|
Loading…
Reference in a new issue