From c9f4620702a2788a20a4e906a63425b84975e04b Mon Sep 17 00:00:00 2001 From: MajorCooke Date: Thu, 16 Jun 2016 07:24:00 -0500 Subject: [PATCH] Reimplemented P_SetPsprite. --- src/g_doom/a_doomweaps.cpp | 12 ++++++------ src/g_heretic/a_chicken.cpp | 2 +- src/g_heretic/a_hereticweaps.cpp | 4 ++-- src/g_hexen/a_clericstaff.cpp | 4 ++-- src/g_hexen/a_fighteraxe.cpp | 12 ++++++------ src/g_hexen/a_fighterplayer.cpp | 2 +- src/g_hexen/a_pig.cpp | 2 +- src/g_shared/a_artifacts.cpp | 16 ++++++++-------- src/g_strife/a_strifestuff.cpp | 2 +- src/g_strife/a_strifeweapons.cpp | 6 +++--- src/m_cheat.cpp | 2 +- src/p_pspr.cpp | 24 +++++++++++++++--------- src/p_pspr.h | 1 + src/p_user.cpp | 4 ++-- 14 files changed, 50 insertions(+), 43 deletions(-) diff --git a/src/g_doom/a_doomweaps.cpp b/src/g_doom/a_doomweaps.cpp index 7f1f578ca..c5eb9f1a8 100644 --- a/src/g_doom/a_doomweaps.cpp +++ b/src/g_doom/a_doomweaps.cpp @@ -81,7 +81,7 @@ DEFINE_ACTION_FUNCTION(AActor, A_FirePistol) if (!weapon->DepleteAmmo (weapon->bAltFire, true, 1)) return 0; - self->player->GetPSprite(PSP_FLASH)->SetState(weapon->FindState(NAME_Flash), true); + P_SetPsprite(self->player, PSP_FLASH, weapon->FindState(NAME_Flash), true); } self->player->mo->PlayAttacking2 (); @@ -273,7 +273,7 @@ DEFINE_ACTION_FUNCTION(AActor, A_FireShotgun) { if (!weapon->DepleteAmmo (weapon->bAltFire, true, 1)) return 0; - player->GetPSprite(PSP_FLASH)->SetState(weapon->FindState(NAME_Flash), true); + P_SetPsprite(player, PSP_FLASH, weapon->FindState(NAME_Flash), true); } player->mo->PlayAttacking2 (); @@ -309,7 +309,7 @@ DEFINE_ACTION_FUNCTION(AActor, A_FireShotgun2) { if (!weapon->DepleteAmmo (weapon->bAltFire, true, 2)) return 0; - player->GetPSprite(PSP_FLASH)->SetState(weapon->FindState(NAME_Flash), true); + P_SetPsprite(player, PSP_FLASH, weapon->FindState(NAME_Flash), true); } player->mo->PlayAttacking2 (); @@ -381,13 +381,13 @@ void P_SetSafeFlash(AWeapon *weapon, player_t *player, FState *flashstate, int i if (flashstate + index < cls->OwnedStates + cls->NumOwnedStates) { // we're ok so set the state - player->GetPSprite(PSP_FLASH)->SetState(flashstate + index, true); + P_SetPsprite(player, PSP_FLASH, flashstate + index, true); return; } else { // oh, no! The state is beyond the end of the state table so use the original flash state. - player->GetPSprite(PSP_FLASH)->SetState(flashstate, true); + P_SetPsprite(player, PSP_FLASH, flashstate, true); return; } } @@ -403,7 +403,7 @@ void P_SetSafeFlash(AWeapon *weapon, player_t *player, FState *flashstate, int i { // Invalid state. With no index offset, it should at least be valid. index = 0; } - player->GetPSprite(PSP_FLASH)->SetState(flashstate + index, true); + P_SetPsprite(player, PSP_FLASH, flashstate + index, true); } // diff --git a/src/g_heretic/a_chicken.cpp b/src/g_heretic/a_chicken.cpp index 4e496bb44..b70e4ff08 100644 --- a/src/g_heretic/a_chicken.cpp +++ b/src/g_heretic/a_chicken.cpp @@ -146,7 +146,7 @@ DEFINE_ACTION_FUNCTION(AActor, A_BeakRaise) return 0; } player->GetPSprite(PSP_WEAPON)->y = WEAPONTOP; - player->GetPSprite(PSP_WEAPON)->SetState(player->ReadyWeapon->GetReadyState()); + P_SetPsprite(player, PSP_WEAPON, player->ReadyWeapon->GetReadyState()); return 0; } diff --git a/src/g_heretic/a_hereticweaps.cpp b/src/g_heretic/a_hereticweaps.cpp index 8d5a902b1..d20146339 100644 --- a/src/g_heretic/a_hereticweaps.cpp +++ b/src/g_heretic/a_hereticweaps.cpp @@ -1164,7 +1164,7 @@ void APhoenixRodPowered::EndPowerup () Owner->player->refire = 0; S_StopSound (Owner, CHAN_WEAPON); Owner->player->ReadyWeapon = SisterWeapon; - Owner->player->GetPSprite(PSP_WEAPON)->SetState(SisterWeapon->GetReadyState()); + P_SetPsprite(Owner->player, PSP_WEAPON, SisterWeapon->GetReadyState()); } class APhoenixFX1 : public AActor @@ -1310,7 +1310,7 @@ DEFINE_ACTION_FUNCTION(AActor, A_FirePhoenixPL2) flamethrower = static_cast (player->ReadyWeapon); if (flamethrower == nullptr || --flamethrower->FlameCount == 0) { // Out of flame - player->GetPSprite(PSP_WEAPON)->SetState(flamethrower->FindState("Powerdown")); + P_SetPsprite(player, PSP_WEAPON, flamethrower->FindState("Powerdown")); player->refire = 0; S_StopSound (self, CHAN_WEAPON); return 0; diff --git a/src/g_hexen/a_clericstaff.cpp b/src/g_hexen/a_clericstaff.cpp index c278d8893..de4e1d75f 100644 --- a/src/g_hexen/a_clericstaff.cpp +++ b/src/g_hexen/a_clericstaff.cpp @@ -92,7 +92,7 @@ DEFINE_ACTION_FUNCTION(AActor, A_CStaffCheck) if (weapon != nullptr) { FState * newstate = weapon->FindState("Drain"); - if (newstate != nullptr) player->GetPSprite(PSP_WEAPON)->SetState(newstate); + if (newstate != nullptr) P_SetPsprite(player, PSP_WEAPON, newstate); } } if (weapon != nullptr) @@ -187,7 +187,7 @@ DEFINE_ACTION_FUNCTION(AActor, A_CStaffCheckBlink) { if (!--self->weaponspecial) { - self->player->GetPSprite(PSP_WEAPON)->SetState(self->player->ReadyWeapon->FindState ("Blink")); + P_SetPsprite(self->player, PSP_WEAPON, self->player->ReadyWeapon->FindState ("Blink")); self->weaponspecial = (pr_blink()+50)>>2; } else diff --git a/src/g_hexen/a_fighteraxe.cpp b/src/g_hexen/a_fighteraxe.cpp index 3813e9c3e..f47ad6a9d 100644 --- a/src/g_hexen/a_fighteraxe.cpp +++ b/src/g_hexen/a_fighteraxe.cpp @@ -76,7 +76,7 @@ DEFINE_ACTION_FUNCTION(AActor, A_FAxeCheckReady) } if (player->ReadyWeapon->Ammo1->Amount) { - player->GetPSprite(PSP_WEAPON)->SetState(player->ReadyWeapon->FindState ("ReadyGlow")); + P_SetPsprite(player, PSP_WEAPON, player->ReadyWeapon->FindState ("ReadyGlow")); } else { @@ -103,7 +103,7 @@ DEFINE_ACTION_FUNCTION(AActor, A_FAxeCheckReadyG) } if (player->ReadyWeapon->Ammo1->Amount <= 0) { - player->GetPSprite(PSP_WEAPON)->SetState(player->ReadyWeapon->FindState ("Ready")); + P_SetPsprite(player, PSP_WEAPON, player->ReadyWeapon->FindState ("Ready")); } else { @@ -130,7 +130,7 @@ DEFINE_ACTION_FUNCTION(AActor, A_FAxeCheckUp) } if (player->ReadyWeapon->Ammo1->Amount) { - player->GetPSprite(PSP_WEAPON)->SetState(player->ReadyWeapon->FindState ("SelectGlow")); + P_SetPsprite(player, PSP_WEAPON, player->ReadyWeapon->FindState ("SelectGlow")); } else { @@ -157,7 +157,7 @@ DEFINE_ACTION_FUNCTION(AActor, A_FAxeCheckUpG) } if (player->ReadyWeapon->Ammo1->Amount <= 0) { - player->GetPSprite(PSP_WEAPON)->SetState(player->ReadyWeapon->FindState ("Select")); + P_SetPsprite(player, PSP_WEAPON, player->ReadyWeapon->FindState ("Select")); } else { @@ -184,7 +184,7 @@ DEFINE_ACTION_FUNCTION(AActor, A_FAxeCheckAtk) } if (player->ReadyWeapon->Ammo1->Amount) { - player->GetPSprite(PSP_WEAPON)->SetState(player->ReadyWeapon->FindState ("FireGlow")); + P_SetPsprite(player, PSP_WEAPON, player->ReadyWeapon->FindState ("FireGlow")); } return 0; } @@ -273,7 +273,7 @@ axedone: (!(weapon->WeaponFlags & WIF_PRIMARY_USES_BOTH) || weapon->Ammo2 == nullptr || weapon->Ammo2->Amount == 0)) { - player->GetPSprite(PSP_WEAPON)->SetState(player->ReadyWeapon->FindState ("Fire") + 5); + P_SetPsprite(player, PSP_WEAPON, player->ReadyWeapon->FindState ("Fire") + 5); } } } diff --git a/src/g_hexen/a_fighterplayer.cpp b/src/g_hexen/a_fighterplayer.cpp index a8e26773b..3624ed625 100644 --- a/src/g_hexen/a_fighterplayer.cpp +++ b/src/g_hexen/a_fighterplayer.cpp @@ -120,7 +120,7 @@ DEFINE_ACTION_FUNCTION(AActor, A_FPunchAttack) if (pmo->weaponspecial >= 3) { pmo->weaponspecial = 0; - player->GetPSprite(PSP_WEAPON)->SetState(player->ReadyWeapon->FindState("Fire2")); + P_SetPsprite(player, PSP_WEAPON, player->ReadyWeapon->FindState("Fire2")); S_Sound (pmo, CHAN_VOICE, "*fistgrunt", 1, ATTN_NORM); } return 0; diff --git a/src/g_hexen/a_pig.cpp b/src/g_hexen/a_pig.cpp index 22c83ef3a..ea767dccd 100644 --- a/src/g_hexen/a_pig.cpp +++ b/src/g_hexen/a_pig.cpp @@ -39,7 +39,7 @@ void APigPlayer::MorphPlayerThink () { // Snout sniff if (player->ReadyWeapon != nullptr) { - player->GetPSprite(PSP_WEAPON)->SetState(player->ReadyWeapon->FindState("Grunt")); + P_SetPsprite(player, PSP_WEAPON, player->ReadyWeapon->FindState("Grunt")); } S_Sound (this, CHAN_VOICE, "PigActive1", 1, ATTN_NORM); // snort return; diff --git a/src/g_shared/a_artifacts.cpp b/src/g_shared/a_artifacts.cpp index 55496a7f1..07071daa6 100644 --- a/src/g_shared/a_artifacts.cpp +++ b/src/g_shared/a_artifacts.cpp @@ -1131,7 +1131,7 @@ void APowerWeaponLevel2::InitEffect () if (weapon->GetReadyState() != sister->GetReadyState()) { - Owner->player->GetPSprite(PSP_WEAPON)->SetState(sister->GetReadyState()); + P_SetPsprite(Owner->player, PSP_WEAPON, sister->GetReadyState()); } } @@ -1310,9 +1310,9 @@ void APowerTargeter::InitEffect () if (state != nullptr) { - player->GetPSprite(PSP_TARGETCENTER)->SetState(state + 0); - player->GetPSprite(PSP_TARGETLEFT)->SetState(state + 1); - player->GetPSprite(PSP_TARGETRIGHT)->SetState(state + 2); + P_SetPsprite(player, PSP_TARGETCENTER, state + 0); + P_SetPsprite(player, PSP_TARGETLEFT, state + 1); + P_SetPsprite(player, PSP_TARGETRIGHT, state + 2); } player->GetPSprite(PSP_TARGETCENTER)->x = (160-3); @@ -1357,13 +1357,13 @@ void APowerTargeter::DoEffect () { if (EffectTics & 32) { - player->GetPSprite(PSP_TARGETRIGHT)->SetState(nullptr); - player->GetPSprite(PSP_TARGETLEFT)->SetState(state + 1); + P_SetPsprite(player, PSP_TARGETRIGHT, nullptr); + P_SetPsprite(player, PSP_TARGETLEFT, state + 1); } else if (EffectTics & 16) { - player->GetPSprite(PSP_TARGETRIGHT)->SetState(state + 2); - player->GetPSprite(PSP_TARGETLEFT)->SetState(nullptr); + P_SetPsprite(player, PSP_TARGETRIGHT, state + 2); + P_SetPsprite(player, PSP_TARGETLEFT, nullptr); } } } diff --git a/src/g_strife/a_strifestuff.cpp b/src/g_strife/a_strifestuff.cpp index b92621ce0..a64c5bae9 100644 --- a/src/g_strife/a_strifestuff.cpp +++ b/src/g_strife/a_strifestuff.cpp @@ -352,7 +352,7 @@ DEFINE_ACTION_FUNCTION(AActor, A_ItBurnsItBurns) if (self->player != nullptr && self->player->mo == self) { - self->player->GetPSprite(PSP_STRIFEHANDS)->SetState(self->FindState("FireHands")); + P_SetPsprite(self->player, PSP_STRIFEHANDS, self->FindState("FireHands")); self->player->ReadyWeapon = nullptr; self->player->PendingWeapon = WP_NOCHANGE; self->player->playerstate = PST_LIVE; diff --git a/src/g_strife/a_strifeweapons.cpp b/src/g_strife/a_strifeweapons.cpp index 006bc76fa..f81ca79f7 100644 --- a/src/g_strife/a_strifeweapons.cpp +++ b/src/g_strife/a_strifeweapons.cpp @@ -219,7 +219,7 @@ DEFINE_ACTION_FUNCTION(AActor, A_ClearFlash) if (player == nullptr) return 0; - player->GetPSprite(PSP_FLASH)->SetState(nullptr); + P_SetPsprite (player, PSP_FLASH, nullptr); return 0; } @@ -235,7 +235,7 @@ DEFINE_ACTION_FUNCTION(AActor, A_ShowElectricFlash) if (self->player != nullptr) { - self->player->GetPSprite(PSP_FLASH)->SetState(self->player->ReadyWeapon->FindState(NAME_Flash)); + P_SetPsprite (self->player, PSP_FLASH, self->player->ReadyWeapon->FindState(NAME_Flash)); } return 0; } @@ -707,7 +707,7 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_FireGrenade) if (!weapon->DepleteAmmo (weapon->bAltFire)) return 0; - player->GetPSprite(PSP_FLASH)->SetState(flash, true); + P_SetPsprite (player, PSP_FLASH, flash, true); if (grenadetype != nullptr) { diff --git a/src/m_cheat.cpp b/src/m_cheat.cpp index be1ec8730..6b2f4f595 100644 --- a/src/m_cheat.cpp +++ b/src/m_cheat.cpp @@ -345,7 +345,7 @@ void cht_DoCheat (player_t *player, int cheat) player->mo->DamageType = NAME_None; if (player->ReadyWeapon != nullptr) { - player->GetPSprite(PSP_WEAPON)->SetState(player->ReadyWeapon->GetUpState()); + P_SetPsprite(player, PSP_WEAPON, player->ReadyWeapon->GetUpState()); } if (player->morphTics > 0) diff --git a/src/p_pspr.cpp b/src/p_pspr.cpp index 3defe5a41..36aa00aae 100644 --- a/src/p_pspr.cpp +++ b/src/p_pspr.cpp @@ -175,6 +175,12 @@ DPSprite *player_t::FindPSprite(int layer) // //------------------------------------------------------------------------ +void P_SetPsprite(player_t *player, PSPLayers id, FState *state, bool pending) +{ + if (player == nullptr) return; + player->GetPSprite(id)->SetState(state, pending); +} + DPSprite *player_t::GetPSprite(PSPLayers layer) { AActor *oldcaller = nullptr; @@ -360,7 +366,7 @@ void P_BringUpWeapon (player_t *player) if (player->ReadyWeapon != nullptr) { player->GetPSprite(PSP_WEAPON)->y = WEAPONTOP; - player->GetPSprite(PSP_WEAPON)->SetState(player->ReadyWeapon->GetReadyState()); + P_SetPsprite(player, PSP_WEAPON, player->ReadyWeapon->GetReadyState()); } return; } @@ -393,8 +399,8 @@ void P_BringUpWeapon (player_t *player) ? WEAPONTOP : WEAPONBOTTOM; // make sure that the previous weapon's flash state is terminated. // When coming here from a weapon drop it may still be active. - player->GetPSprite(PSP_FLASH)->SetState(nullptr); - player->GetPSprite(PSP_WEAPON)->SetState(weapon->GetUpState()); + P_SetPsprite(player, PSP_FLASH, nullptr); + P_SetPsprite(player, PSP_WEAPON, weapon->GetUpState()); } } @@ -427,7 +433,7 @@ void P_FireWeapon (player_t *player, FState *state) { state = weapon->GetAtkState(!!player->refire); } - player->GetPSprite(PSP_WEAPON)->SetState(state); + P_SetPsprite(player, PSP_WEAPON, state); if (!(weapon->WeaponFlags & WIF_NOALERT)) { P_NoiseAlert (player->mo, player->mo, false); @@ -465,7 +471,7 @@ void P_FireWeaponAlt (player_t *player, FState *state) state = weapon->GetAltAtkState(!!player->refire); } - player->GetPSprite(PSP_WEAPON)->SetState(state); + P_SetPsprite(player, PSP_WEAPON, state); if (!(weapon->WeaponFlags & WIF_NOALERT)) { P_NoiseAlert (player->mo, player->mo, false); @@ -490,7 +496,7 @@ void P_DropWeapon (player_t *player) player->WeaponState &= ~WF_DISABLESWITCH; if (player->ReadyWeapon != nullptr) { - player->GetPSprite(PSP_WEAPON)->SetState(player->ReadyWeapon->GetDownState()); + P_SetPsprite(player, PSP_WEAPON, player->ReadyWeapon->GetDownState()); } } @@ -834,7 +840,7 @@ static void P_CheckWeaponButtons (player_t *player) // state, the weapon won't disappear. ;) if (state != nullptr) { - player->GetPSprite(PSP_WEAPON)->SetState(state); + P_SetPsprite(player, PSP_WEAPON, state); return; } } @@ -1070,7 +1076,7 @@ DEFINE_ACTION_FUNCTION(AInventory, A_Lower) return 0; } // [RH] Clear the flash state. Only needed for Strife. - player->GetPSprite(PSP_FLASH)->SetState(nullptr); + P_SetPsprite(player, PSP_FLASH, nullptr); P_BringUpWeapon (player); return 0; } @@ -1174,7 +1180,7 @@ DEFINE_ACTION_FUNCTION_PARAMS(AInventory, A_GunFlash) flash = player->ReadyWeapon->FindState(NAME_Flash); } } - player->GetPSprite(PSP_FLASH)->SetState(flash); + P_SetPsprite(player, PSP_FLASH, flash); return 0; } diff --git a/src/p_pspr.h b/src/p_pspr.h index 63c285075..2c7a36518 100644 --- a/src/p_pspr.h +++ b/src/p_pspr.h @@ -105,6 +105,7 @@ private: void P_NewPspriteTick(); void P_CalcSwing (player_t *player); +void P_SetPsprite(player_t *player, PSPLayers id, FState *state, bool pending = false); void P_BringUpWeapon (player_t *player); void P_FireWeapon (player_t *player); void P_DropWeapon (player_t *player); diff --git a/src/p_user.cpp b/src/p_user.cpp index 2ca7434d5..e4b6ec6bd 100644 --- a/src/p_user.cpp +++ b/src/p_user.cpp @@ -1400,13 +1400,13 @@ void APlayerPawn::ActivateMorphWeapon () } if (player->ReadyWeapon != nullptr) { - player->GetPSprite(PSP_WEAPON)->SetState(player->ReadyWeapon->GetReadyState()); + P_SetPsprite(player, PSP_WEAPON, player->ReadyWeapon->GetReadyState()); } } if (player->ReadyWeapon != nullptr) { - player->GetPSprite(PSP_FLASH)->SetState(nullptr); + P_SetPsprite(player, PSP_FLASH, nullptr); } player->PendingWeapon = WP_NOCHANGE;