From 7b535d886e08681027029910bd5cdd68f8801e0b Mon Sep 17 00:00:00 2001 From: obligaron Date: Sun, 25 Jul 2021 13:51:17 +0200 Subject: [PATCH] Make LoadPlrGFX check if graphics are already loaded --- Source/player.cpp | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/Source/player.cpp b/Source/player.cpp index 99871e8f0..5510c553a 100644 --- a/Source/player.cpp +++ b/Source/player.cpp @@ -2129,6 +2129,10 @@ void Player::RestorePartialMana() void LoadPlrGFX(Player &player, player_graphic graphic) { + auto &animationData = player.AnimationData[static_cast(graphic)]; + if (animationData.RawData != nullptr) + return; + char prefix[16]; char pszName[256]; const char *szCel; @@ -2224,12 +2228,13 @@ void LoadPlrGFX(Player &player, player_graphic graphic) } sprintf(pszName, R"(PlrGFX\%s\%s\%s%s.CL2)", cs, prefix, prefix, szCel); - auto &animationData = player.AnimationData[static_cast(graphic)]; SetPlayerGPtrs(pszName, animationData.RawData, animationData.CelSpritesForDirections, animationWidth); } void InitPlayerGFX(Player &player) { + ResetPlayerGFX(player); + if (player._pHitPoints >> 6 == 0) { player._pgfxnum = 0; LoadPlrGFX(player, player_graphic::Death); @@ -2256,8 +2261,7 @@ void ResetPlayerGFX(Player &player) void NewPlrAnim(Player &player, player_graphic graphic, Direction dir, int numberOfFrames, int delayLen, AnimationDistributionFlags flags /*= AnimationDistributionFlags::None*/, int numSkippedFrames /*= 0*/, int distributeFramesBeforeFrame /*= 0*/) { - if (player.AnimationData[static_cast(graphic)].RawData == nullptr) - LoadPlrGFX(player, graphic); + LoadPlrGFX(player, graphic); auto &celSprite = player.AnimationData[static_cast(graphic)].CelSpritesForDirections[static_cast(dir)];