Dialogue UI: Tactical Normie Countermeasure

Fade and overlay with Genesis font depending on context
This commit is contained in:
toaster 2025-08-13 15:40:16 +01:00
parent e76262ae5b
commit 2143fc6662
4 changed files with 56 additions and 0 deletions

View file

@ -294,9 +294,26 @@ void Dialogue::Tick(void)
{
slide += kSlideSpeed;
}
if (P_LevelIsFrozen())
{
if (fade > 0)
{
fade--;
}
}
else if (fade < 5)
{
fade++;
}
}
else
{
if (fade > 0)
{
fade--;
}
if (slide > 0)
{
slide -= kSlideSpeed;
@ -342,6 +359,11 @@ INT32 Dialogue::SlideAmount(fixed_t multiplier)
return Easing_OutCubic(slide, 0, multiplier);
}
INT32 Dialogue::FadeAmount(void)
{
return fade;
}
void Dialogue::Draw(void)
{
if (slide == 0)
@ -516,6 +538,7 @@ void Dialogue::Unset(void)
Dismiss();
SetSpeaker();
slide = 0;
fade = 0;
current_era = 0;
}
@ -547,3 +570,8 @@ INT32 K_GetDialogueSlide(fixed_t multiplier)
{
return g_dialogue.SlideAmount(multiplier);
}
INT32 K_GetDialogueFade(void)
{
return g_dialogue.FadeAmount();
}

View file

@ -27,6 +27,7 @@ void K_TickDialogue(void);
boolean K_DialogueFreeze(void);
INT32 K_GetDialogueSlide(fixed_t multiplier);
INT32 K_GetDialogueFade(void);
#ifdef __cplusplus
} // extern "C"

View file

@ -47,6 +47,7 @@ public:
void Draw(void);
INT32 SlideAmount(fixed_t multiplier);
INT32 FadeAmount(void);
void Dismiss(void);
void Unset(void);
@ -94,6 +95,7 @@ private:
bool active;
fixed_t slide;
INT32 fade;
bool dismissable;
bool freeze;

View file

@ -7654,6 +7654,31 @@ void K_drawKartHUD(void)
{
if (g_emeraldWin)
K_drawEmeraldWin(false);
// Tacitcal Normie Countermeasure
INT32 dfade = K_GetDialogueFade();
if (dfade)
{
V_DrawFadeScreen(31, dfade); // Fade out
srb2::Draw normiedraw = srb2::Draw()
.clipx(0.f, BASEVIDWIDTH)
.y((BASEVIDHEIGHT - 36)/2)
.flags((10 - dfade)<<FF_TRANSSHIFT)
.font(srb2::Draw::Font::kGenesis);
const char *normietext = "COMMUNICATION IN PROGRESS!! ";
INT32 normiew = srb2::Draw::TextElement(normietext).font(srb2::Draw::Font::kGenesis).width();
INT32 normiex = -((static_cast<INT32>(timeinmap)) % normiew);
while (normiex < BASEVIDWIDTH)
{
normiedraw
.x(normiex)
.text(normietext);
normiex += normiew;
}
}
}
// In case of font debugging break glass