mirror of
https://github.com/ZDoom/gzdoom-gles.git
synced 2024-11-10 14:51:46 +00:00
- Added MAPINFO flag "SpawnWithWeaponRaised".
SVN r4013 (trunk)
This commit is contained in:
parent
549712e719
commit
787c338871
8 changed files with 19 additions and 17 deletions
|
@ -1128,7 +1128,7 @@ void G_FinishTravel ()
|
||||||
|
|
||||||
// The player being spawned here is a short lived dummy and
|
// The player being spawned here is a short lived dummy and
|
||||||
// must not start any ENTER script or big problems will happen.
|
// must not start any ENTER script or big problems will happen.
|
||||||
pawndup = P_SpawnPlayer (&playerstarts[pawn->player - players], int(pawn->player - players), true);
|
pawndup = P_SpawnPlayer (&playerstarts[pawn->player - players], int(pawn->player - players), SPF_TEMPPLAYER);
|
||||||
if (!(changeflags & CHANGELEVEL_KEEPFACING))
|
if (!(changeflags & CHANGELEVEL_KEEPFACING))
|
||||||
{
|
{
|
||||||
pawn->angle = pawndup->angle;
|
pawn->angle = pawndup->angle;
|
||||||
|
|
|
@ -181,7 +181,7 @@ enum ELevelFlags
|
||||||
|
|
||||||
LEVEL2_KEEPFULLINVENTORY = 0x00000040, // doesn't reduce the amount of inventory items to 1
|
LEVEL2_KEEPFULLINVENTORY = 0x00000040, // doesn't reduce the amount of inventory items to 1
|
||||||
|
|
||||||
/* = 0x00000080, */
|
LEVEL2_PRERAISEWEAPON = 0x00000080, // players should spawn with their weapons fully raised (but not when respawning it multiplayer)
|
||||||
LEVEL2_MONSTERFALLINGDAMAGE = 0x00000100,
|
LEVEL2_MONSTERFALLINGDAMAGE = 0x00000100,
|
||||||
LEVEL2_CLIPMIDTEX = 0x00000200,
|
LEVEL2_CLIPMIDTEX = 0x00000200,
|
||||||
LEVEL2_WRAPMIDTEX = 0x00000400,
|
LEVEL2_WRAPMIDTEX = 0x00000400,
|
||||||
|
|
|
@ -1271,6 +1271,7 @@ MapFlagHandlers[] =
|
||||||
{ "forgetstate", MITYPE_SETFLAG2, LEVEL2_FORGETSTATE, 0 },
|
{ "forgetstate", MITYPE_SETFLAG2, LEVEL2_FORGETSTATE, 0 },
|
||||||
{ "rememberstate", MITYPE_CLRFLAG2, LEVEL2_FORGETSTATE, 0 },
|
{ "rememberstate", MITYPE_CLRFLAG2, LEVEL2_FORGETSTATE, 0 },
|
||||||
{ "unfreezesingleplayerconversations",MITYPE_SETFLAG2, LEVEL2_CONV_SINGLE_UNFREEZE, 0 },
|
{ "unfreezesingleplayerconversations",MITYPE_SETFLAG2, LEVEL2_CONV_SINGLE_UNFREEZE, 0 },
|
||||||
|
{ "spawnwithweaponraised", MITYPE_SETFLAG2, LEVEL2_PRERAISEWEAPON, 0 },
|
||||||
{ "nobotnodes", MITYPE_IGNORE, 0, 0 }, // Skulltag option: nobotnodes
|
{ "nobotnodes", MITYPE_IGNORE, 0, 0 }, // Skulltag option: nobotnodes
|
||||||
{ "compat_shorttex", MITYPE_COMPATFLAG, COMPATF_SHORTTEX, 0 },
|
{ "compat_shorttex", MITYPE_COMPATFLAG, COMPATF_SHORTTEX, 0 },
|
||||||
{ "compat_stairs", MITYPE_COMPATFLAG, COMPATF_STAIRINDEX, 0 },
|
{ "compat_stairs", MITYPE_COMPATFLAG, COMPATF_STAIRINDEX, 0 },
|
||||||
|
|
|
@ -93,7 +93,7 @@ inline int GetSafeBlockY(long long blocky)
|
||||||
//
|
//
|
||||||
// P_PSPR
|
// P_PSPR
|
||||||
//
|
//
|
||||||
void P_SetupPsprites (player_t* curplayer);
|
void P_SetupPsprites (player_t* curplayer, bool startweaponup);
|
||||||
void P_MovePsprites (player_t* curplayer);
|
void P_MovePsprites (player_t* curplayer);
|
||||||
void P_DropWeapon (player_t* player);
|
void P_DropWeapon (player_t* player);
|
||||||
|
|
||||||
|
@ -114,7 +114,10 @@ void P_UnPredictPlayer ();
|
||||||
#define ONCEILINGZ FIXED_MAX
|
#define ONCEILINGZ FIXED_MAX
|
||||||
#define FLOATRANDZ (FIXED_MAX-1)
|
#define FLOATRANDZ (FIXED_MAX-1)
|
||||||
|
|
||||||
APlayerPawn *P_SpawnPlayer (struct FPlayerStart *mthing, int playernum, bool tempplayer=false);
|
#define SPF_TEMPPLAYER 1 // spawning a short-lived dummy player
|
||||||
|
#define SPF_WEAPONFULLYUP 2 // spawn with weapon already raised
|
||||||
|
|
||||||
|
APlayerPawn *P_SpawnPlayer (struct FPlayerStart *mthing, int playernum, int flags=0);
|
||||||
|
|
||||||
void P_ThrustMobj (AActor *mo, angle_t angle, fixed_t move);
|
void P_ThrustMobj (AActor *mo, angle_t angle, fixed_t move);
|
||||||
int P_FaceMobj (AActor *source, AActor *target, angle_t *delta);
|
int P_FaceMobj (AActor *source, AActor *target, angle_t *delta);
|
||||||
|
|
|
@ -4138,7 +4138,7 @@ EXTERN_CVAR (Bool, chasedemo)
|
||||||
|
|
||||||
extern bool demonew;
|
extern bool demonew;
|
||||||
|
|
||||||
APlayerPawn *P_SpawnPlayer (FPlayerStart *mthing, int playernum, bool tempplayer)
|
APlayerPawn *P_SpawnPlayer (FPlayerStart *mthing, int playernum, int flags)
|
||||||
{
|
{
|
||||||
player_t *p;
|
player_t *p;
|
||||||
APlayerPawn *mobj, *oldactor;
|
APlayerPawn *mobj, *oldactor;
|
||||||
|
@ -4239,7 +4239,7 @@ APlayerPawn *P_SpawnPlayer (FPlayerStart *mthing, int playernum, bool tempplayer
|
||||||
{
|
{
|
||||||
G_PlayerReborn (playernum);
|
G_PlayerReborn (playernum);
|
||||||
}
|
}
|
||||||
else if (oldactor != NULL && oldactor->player == p && !tempplayer)
|
else if (oldactor != NULL && oldactor->player == p && !(flags & SPF_TEMPPLAYER))
|
||||||
{
|
{
|
||||||
// Move the voodoo doll's inventory to the new player.
|
// Move the voodoo doll's inventory to the new player.
|
||||||
mobj->ObtainInventory (oldactor);
|
mobj->ObtainInventory (oldactor);
|
||||||
|
@ -4312,11 +4312,9 @@ APlayerPawn *P_SpawnPlayer (FPlayerStart *mthing, int playernum, bool tempplayer
|
||||||
p->cheats = CF_CHASECAM;
|
p->cheats = CF_CHASECAM;
|
||||||
|
|
||||||
// setup gun psprite
|
// setup gun psprite
|
||||||
if (!tempplayer)
|
if (!(flags & SPF_TEMPPLAYER))
|
||||||
{
|
{ // This can also start a script so don't do it for the dummy player.
|
||||||
// This can also start a script so don't do it for
|
P_SetupPsprites (p, !!(flags & SPF_WEAPONFULLYUP));
|
||||||
// the dummy player.
|
|
||||||
P_SetupPsprites (p);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (deathmatch)
|
if (deathmatch)
|
||||||
|
@ -4362,7 +4360,7 @@ APlayerPawn *P_SpawnPlayer (FPlayerStart *mthing, int playernum, bool tempplayer
|
||||||
}
|
}
|
||||||
|
|
||||||
// [BC] Do script stuff
|
// [BC] Do script stuff
|
||||||
if (!tempplayer)
|
if (!(flags & SPF_TEMPPLAYER))
|
||||||
{
|
{
|
||||||
if (state == PST_ENTER || (state == PST_LIVE && !savegamerestore))
|
if (state == PST_ENTER || (state == PST_LIVE && !savegamerestore))
|
||||||
{
|
{
|
||||||
|
@ -4548,7 +4546,7 @@ AActor *P_SpawnMapThing (FMapThing *mthing, int position)
|
||||||
AllPlayerStarts.Push(start);
|
AllPlayerStarts.Push(start);
|
||||||
if (!deathmatch && !(level.flags2 & LEVEL2_RANDOMPLAYERSTARTS))
|
if (!deathmatch && !(level.flags2 & LEVEL2_RANDOMPLAYERSTARTS))
|
||||||
{
|
{
|
||||||
return P_SpawnPlayer(&start, pnum);
|
return P_SpawnPlayer(&start, pnum, (level.flags2 & LEVEL2_PRERAISEWEAPON) ? SPF_WEAPONFULLYUP : 0);
|
||||||
}
|
}
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
|
@ -989,7 +989,7 @@ DEFINE_ACTION_FUNCTION_PARAMS(AInventory, A_Light)
|
||||||
//
|
//
|
||||||
//------------------------------------------------------------------------
|
//------------------------------------------------------------------------
|
||||||
|
|
||||||
void P_SetupPsprites(player_t *player)
|
void P_SetupPsprites(player_t *player, bool startweaponup)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
|
@ -999,7 +999,7 @@ void P_SetupPsprites(player_t *player)
|
||||||
player->psprites[i].state = NULL;
|
player->psprites[i].state = NULL;
|
||||||
}
|
}
|
||||||
// Spawn the ready weapon
|
// Spawn the ready weapon
|
||||||
player->PendingWeapon = player->ReadyWeapon;
|
player->PendingWeapon = !startweaponup ? player->ReadyWeapon : WP_NOCHANGE;
|
||||||
P_BringUpWeapon (player);
|
P_BringUpWeapon (player);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -310,7 +310,7 @@ static void SpawnExtraPlayers ()
|
||||||
if (playeringame[i] && players[i].mo == NULL)
|
if (playeringame[i] && players[i].mo == NULL)
|
||||||
{
|
{
|
||||||
players[i].playerstate = PST_ENTER;
|
players[i].playerstate = PST_ENTER;
|
||||||
P_SpawnPlayer(&playerstarts[i], i);
|
P_SpawnPlayer(&playerstarts[i], i, (level.flags2 & LEVEL2_PRERAISEWEAPON) ? SPF_WEAPONFULLYUP : 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -3986,7 +3986,7 @@ void P_SetupLevel (char *lumpname, int position)
|
||||||
{
|
{
|
||||||
players[i].mo = NULL;
|
players[i].mo = NULL;
|
||||||
FPlayerStart *mthing = G_PickPlayerStart(i);
|
FPlayerStart *mthing = G_PickPlayerStart(i);
|
||||||
P_SpawnPlayer(mthing, i);
|
P_SpawnPlayer(mthing, i, (level.flags2 & LEVEL2_PRERAISEWEAPON) ? SPF_WEAPONFULLYUP : 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue