mirror of
https://github.com/ZDoom/Raze.git
synced 2025-02-20 18:42:26 +00:00
- playerFloorSprite
This commit is contained in:
parent
1e10cef556
commit
eae1d589ec
7 changed files with 40 additions and 43 deletions
|
@ -49,10 +49,10 @@ void BounceGrenade(DExhumedActor* pActor, short nAngle)
|
|||
|
||||
void ThrowGrenade(short nPlayer, int, int, int ecx, int push1)
|
||||
{
|
||||
if (PlayerList[nPlayer].nPlayerGrenade == nullptr)
|
||||
if (PlayerList[nPlayer].pPlayerGrenade == nullptr)
|
||||
return;
|
||||
|
||||
auto pActor = PlayerList[nPlayer].nPlayerGrenade;
|
||||
auto pActor = PlayerList[nPlayer].pPlayerGrenade;
|
||||
short nPlayerSprite = PlayerList[nPlayer].nSprite;
|
||||
auto pGrenadeSprite = &pActor->s();
|
||||
auto pPlayerSprite = &PlayerList[nPlayer].Actor()->s();
|
||||
|
@ -95,7 +95,7 @@ void ThrowGrenade(short nPlayer, int, int, int ecx, int push1)
|
|||
pActor->x = bcos(nAngle, -4) * pActor->nTurn;
|
||||
pActor->y = bsin(nAngle, -4) * pActor->nTurn;
|
||||
|
||||
PlayerList[nPlayer].nPlayerGrenade = nullptr;
|
||||
PlayerList[nPlayer].pPlayerGrenade = nullptr;
|
||||
|
||||
return;
|
||||
}
|
||||
|
@ -140,7 +140,7 @@ void BuildGrenade(int nPlayer)
|
|||
pActor->nPhase = runlist_AddRunRec(pSprite->lotag - 1, pActor, 0x0F0000);
|
||||
pActor->nRun = runlist_AddRunRec(NewRun, pActor, 0x0F0000);
|
||||
|
||||
PlayerList[nPlayer].nPlayerGrenade = pActor;
|
||||
PlayerList[nPlayer].pPlayerGrenade = pActor;
|
||||
}
|
||||
|
||||
void ExplodeGrenade(DExhumedActor* pActor)
|
||||
|
|
|
@ -117,13 +117,13 @@ void ResetPlayerWeapons(short nPlayer)
|
|||
PlayerList[nPlayer].field_3A = 0;
|
||||
PlayerList[nPlayer].field_3FOUR = 0;
|
||||
|
||||
PlayerList[nPlayer].nPlayerGrenade = nullptr;
|
||||
PlayerList[nPlayer].pPlayerGrenade = nullptr;
|
||||
PlayerList[nPlayer].nPlayerWeapons = 0x1; // turn on bit 1 only
|
||||
}
|
||||
|
||||
void InitWeapons()
|
||||
{
|
||||
for (auto& p : PlayerList) p.nPlayerGrenade = nullptr;
|
||||
for (auto& p : PlayerList) p.pPlayerGrenade = nullptr;
|
||||
}
|
||||
|
||||
void SetNewWeapon(short nPlayer, short nWeapon)
|
||||
|
|
|
@ -184,7 +184,7 @@ static bool UseEye(short nPlayer)
|
|||
|
||||
pSprite->cstat |= 0x8000;
|
||||
|
||||
if (PlayerList[nPlayer].nPlayerFloorSprite >= 0) {
|
||||
if (PlayerList[nPlayer].pPlayerFloorSprite != nullptr) {
|
||||
pSprite->cstat |= 0x8000;
|
||||
}
|
||||
|
||||
|
|
|
@ -220,7 +220,7 @@ void RestartPlayer(short nPlayer)
|
|||
auto nSpr = &sprite[nSprite];
|
||||
int nDopSprite = PlayerList[nPlayer].nDoppleSprite;
|
||||
|
||||
int floorspr;
|
||||
DExhumedActor* floorsprt;
|
||||
|
||||
if (nSprite > -1)
|
||||
{
|
||||
|
@ -231,9 +231,9 @@ void RestartPlayer(short nPlayer)
|
|||
|
||||
plr->nSprite = -1;
|
||||
|
||||
int nFloorSprite = PlayerList[nPlayer].nPlayerFloorSprite;
|
||||
if (nFloorSprite > -1) {
|
||||
mydeletesprite(nFloorSprite);
|
||||
auto pFloorSprite = PlayerList[nPlayer].pPlayerFloorSprite;
|
||||
if (pFloorSprite != nullptr) {
|
||||
DeleteActor(pFloorSprite);
|
||||
}
|
||||
|
||||
if (nDopSprite > -1)
|
||||
|
@ -249,10 +249,8 @@ void RestartPlayer(short nPlayer)
|
|||
nSprite = actor->GetSpriteIndex();
|
||||
nSpr = &actor->s();
|
||||
|
||||
mychangespritesect(nSprite, PlayerList[nPlayer].sPlayerSave.nSector);
|
||||
changespritestat(nSprite, 100);
|
||||
|
||||
assert(nSprite >= 0 && nSprite < kMaxSprites);
|
||||
ChangeActorSect(actor, PlayerList[nPlayer].sPlayerSave.nSector);
|
||||
ChangeActorStat(actor, 100);
|
||||
|
||||
int nDSprite = insertsprite(nSpr->sectnum, 100);
|
||||
PlayerList[nPlayer].nDoppleSprite = nDSprite;
|
||||
|
@ -276,9 +274,8 @@ void RestartPlayer(short nPlayer)
|
|||
plr->angle.ang = buildang(nstspr->ang&kAngleMask);
|
||||
nSpr->ang = plr->angle.ang.asbuild();
|
||||
|
||||
floorspr = insertsprite(nSpr->sectnum, 0);
|
||||
assert(floorspr >= 0 && floorspr < kMaxSprites);
|
||||
auto fspr = &sprite[floorspr];
|
||||
floorsprt = insertActor(nSpr->sectnum, 0);
|
||||
auto fspr = &floorsprt->s();
|
||||
|
||||
fspr->x = nSpr->x;
|
||||
fspr->y = nSpr->y;
|
||||
|
@ -296,13 +293,13 @@ void RestartPlayer(short nPlayer)
|
|||
plr->angle.ang = buildang(PlayerList[nPlayer].sPlayerSave.nAngle&kAngleMask);
|
||||
nSpr->ang = plr->angle.ang.asbuild();
|
||||
|
||||
floorspr = -1;
|
||||
floorsprt = nullptr;
|
||||
}
|
||||
|
||||
plr->angle.backup();
|
||||
plr->horizon.backup();
|
||||
|
||||
PlayerList[nPlayer].nPlayerFloorSprite = floorspr;
|
||||
PlayerList[nPlayer].pPlayerFloorSprite = floorsprt;
|
||||
|
||||
nSpr->cstat = 0x101;
|
||||
nSpr->shade = -12;
|
||||
|
@ -391,7 +388,7 @@ void RestartPlayer(short nPlayer)
|
|||
plr->nMagic = 0;
|
||||
}
|
||||
|
||||
PlayerList[nPlayer].nPlayerGrenade = nullptr;
|
||||
PlayerList[nPlayer].pPlayerGrenade = nullptr;
|
||||
PlayerList[nPlayer].oeyelevel = PlayerList[nPlayer].eyelevel = -14080;
|
||||
dVertPan[nPlayer] = 0;
|
||||
|
||||
|
@ -455,7 +452,7 @@ void StartDeathSeq(int nPlayer, int nVal)
|
|||
runlist_SignalRun(nLotag - 1, nPlayer | 0x70000);
|
||||
}
|
||||
|
||||
if (PlayerList[nPlayer].nPlayerGrenade)
|
||||
if (PlayerList[nPlayer].pPlayerGrenade)
|
||||
{
|
||||
ThrowGrenade(nPlayer, 0, 0, 0, -10000);
|
||||
}
|
||||
|
@ -823,10 +820,10 @@ void AIPlayer::Tick(RunListEvent* ev)
|
|||
if (PlayerList[nPlayer].nInvisible == 0)
|
||||
{
|
||||
pPlayerSprite->cstat &= 0x7FFF; // set visible
|
||||
short nFloorSprite = PlayerList[nPlayer].nPlayerFloorSprite;
|
||||
auto pFloorSprite = PlayerList[nPlayer].pPlayerFloorSprite;
|
||||
|
||||
if (nFloorSprite > -1) {
|
||||
sprite[nFloorSprite].cstat &= 0x7FFF; // set visible
|
||||
if (pFloorSprite != nullptr) {
|
||||
pFloorSprite->s().cstat &= 0x7FFF; // set visible
|
||||
}
|
||||
}
|
||||
else if (PlayerList[nPlayer].nInvisible == 150 && nPlayer == nLocalPlayer)
|
||||
|
@ -1294,19 +1291,20 @@ sectdone:
|
|||
}
|
||||
|
||||
// loc_1B1EB
|
||||
if (nTotalPlayers > 1)
|
||||
auto pFloorActor = PlayerList[nPlayer].pPlayerFloorSprite;
|
||||
if (nTotalPlayers > 1 && pFloorActor)
|
||||
{
|
||||
int nFloorSprite = PlayerList[nPlayer].nPlayerFloorSprite;
|
||||
auto pFloorSprite = &pFloorActor->s();
|
||||
|
||||
sprite[nFloorSprite].x = pPlayerSprite->x;
|
||||
sprite[nFloorSprite].y = pPlayerSprite->y;
|
||||
pFloorSprite->x = pPlayerSprite->x;
|
||||
pFloorSprite->y = pPlayerSprite->y;
|
||||
|
||||
if (sprite[nFloorSprite].sectnum != pPlayerSprite->sectnum)
|
||||
if (pFloorSprite->sectnum != pPlayerSprite->sectnum)
|
||||
{
|
||||
mychangespritesect(nFloorSprite, pPlayerSprite->sectnum);
|
||||
ChangeActorSect(pFloorActor, pPlayerSprite->sectnum);
|
||||
}
|
||||
|
||||
sprite[nFloorSprite].z = sector[pPlayerSprite->sectnum].floorz;
|
||||
pFloorSprite->z = sector[pPlayerSprite->sectnum].floorz;
|
||||
}
|
||||
|
||||
int var_30 = 0;
|
||||
|
@ -2691,11 +2689,11 @@ FSerializer& Serialize(FSerializer& arc, const char* keyname, Player& w, Player*
|
|||
("taunttimer", w.nTauntTimer)
|
||||
("weapons", w.nPlayerWeapons)
|
||||
("viewsect", w.nPlayerViewSect)
|
||||
("floorspr", w.nPlayerFloorSprite)
|
||||
("floorspr", w.pPlayerFloorSprite)
|
||||
("save", w.sPlayerSave)
|
||||
("totalvel", w.totalvel)
|
||||
("eyelevel", w.eyelevel)
|
||||
("grenade", w.nPlayerGrenade)
|
||||
("grenade", w.pPlayerGrenade)
|
||||
|
||||
.EndObject();
|
||||
}
|
||||
|
|
|
@ -109,12 +109,12 @@ struct Player
|
|||
short nTauntTimer;
|
||||
uint16_t nPlayerWeapons; // each set bit represents a weapon the player has
|
||||
short nPlayerViewSect;
|
||||
short nPlayerFloorSprite;
|
||||
PlayerSave sPlayerSave;
|
||||
int ototalvel;
|
||||
int totalvel;
|
||||
int16_t eyelevel, oeyelevel;
|
||||
DExhumedActor* nPlayerGrenade;
|
||||
DExhumedActor* pPlayerGrenade;
|
||||
DExhumedActor* pPlayerFloorSprite;
|
||||
|
||||
};
|
||||
|
||||
|
|
|
@ -75,9 +75,10 @@ void FreeRa(short nPlayer)
|
|||
|
||||
void BuildRa(short nPlayer)
|
||||
{
|
||||
short nPlayerSprite = PlayerList[nPlayer].nSprite;
|
||||
auto pPlayerActor = PlayerList[nPlayer].Actor();
|
||||
auto pPlayerSprite = &pPlayerActor->s();
|
||||
|
||||
auto pActor = insertActor(sprite[nPlayerSprite].sectnum, 203);
|
||||
auto pActor = insertActor(pPlayerSprite->sectnum, 203);
|
||||
auto pSprite = &pActor->s();
|
||||
|
||||
pSprite->cstat = 0x8000;
|
||||
|
@ -91,9 +92,7 @@ void BuildRa(short nPlayer)
|
|||
pSprite->pal = 1;
|
||||
pSprite->xrepeat = 64;
|
||||
pSprite->yrepeat = 64;
|
||||
pSprite->x = sprite[nPlayerSprite].x;
|
||||
pSprite->y = sprite[nPlayerSprite].y;
|
||||
pSprite->z = sprite[nPlayerSprite].z;
|
||||
pSprite->pos = pPlayerSprite->pos;
|
||||
|
||||
// GrabTimeSlot(3);
|
||||
|
||||
|
|
|
@ -465,8 +465,8 @@ void AISWPressSector::Use(RunListEvent* ev)
|
|||
{
|
||||
if (SwitchData[nSwitch].nKeyMask)
|
||||
{
|
||||
short nSprite = PlayerList[nPlayer].nSprite;
|
||||
PlayFXAtXYZ(StaticSound[nSwitchSound], sprite[nSprite].x, sprite[nSprite].y, 0, sprite[nSprite].sectnum, CHANF_LISTENERZ);
|
||||
auto pSprite = &PlayerList[nPlayer].Actor()->s();
|
||||
PlayFXAtXYZ(StaticSound[nSwitchSound], pSprite->x, pSprite->y, 0, pSprite->sectnum, CHANF_LISTENERZ);
|
||||
|
||||
StatusMessage(300, "YOU NEED THE KEY FOR THIS DOOR");
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue