From 42f37e7dedfb58102490a04aea08df2246b10e2d Mon Sep 17 00:00:00 2001 From: toaster Date: Thu, 30 Nov 2023 15:03:48 +0000 Subject: [PATCH] Small improvements to Dialogue internals - Guarantee not-visible dialogue on map transition/invalidation - Don't grab a portrait for skins that don't have portraits --- src/k_dialogue.cpp | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/src/k_dialogue.cpp b/src/k_dialogue.cpp index 7f3a03b18..76f575700 100644 --- a/src/k_dialogue.cpp +++ b/src/k_dialogue.cpp @@ -70,15 +70,20 @@ void Dialogue::SetSpeaker(std::string skinName, int portraitID) if (sprdef->numframes > 0) { portraitID %= sprdef->numframes; + + const spriteframe_t *sprframe = &sprdef->spriteframes[portraitID]; + + portrait = static_cast( W_CachePatchNum(sprframe->lumppat[0], PU_CACHE) ); + portraitColormap = R_GetTranslationColormap(skinID, static_cast(skin->prefcolor), GTC_CACHE); + } + else + { + portrait = nullptr; + portraitColormap = nullptr; } - const spriteframe_t *sprframe = &sprdef->spriteframes[portraitID]; - speaker = skin->realname; - portrait = static_cast( W_CachePatchNum(sprframe->lumppat[0], PU_CACHE) ); - portraitColormap = R_GetTranslationColormap(skinID, static_cast(skin->prefcolor), GTC_CACHE); - voiceSfx = skin->soundsid[ S_sfx[sfx_ktalk].skinsound ]; } else @@ -333,6 +338,7 @@ void Dialogue::Unset(void) { Dismiss(); SetSpeaker(); + slide = 0; } /*