diff --git a/src/k_dialogue.cpp b/src/k_dialogue.cpp index 99b999fd6..cbba6c0e1 100644 --- a/src/k_dialogue.cpp +++ b/src/k_dialogue.cpp @@ -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(); +} diff --git a/src/k_dialogue.h b/src/k_dialogue.h index fca78c627..1edec2914 100644 --- a/src/k_dialogue.h +++ b/src/k_dialogue.h @@ -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" diff --git a/src/k_dialogue.hpp b/src/k_dialogue.hpp index 678cc36b0..79eeb3557 100644 --- a/src/k_dialogue.hpp +++ b/src/k_dialogue.hpp @@ -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; diff --git a/src/k_hud.cpp b/src/k_hud.cpp index afc8e5ab0..709e523a7 100644 --- a/src/k_hud.cpp +++ b/src/k_hud.cpp @@ -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)<(timeinmap)) % normiew); + + while (normiex < BASEVIDWIDTH) + { + normiedraw + .x(normiex) + .text(normietext); + normiex += normiew; + } + } } // In case of font debugging break glass