From 764360126a9131213d36d6daf522a08cf226e15c Mon Sep 17 00:00:00 2001 From: PringlesGang Date: Wed, 2 Oct 2024 22:31:04 +0200 Subject: [PATCH] Changed wait icon display to use switch statements --- src/hud/waiticondisplay.cpp | 154 ++++++++++++++++++++---------------- 1 file changed, 88 insertions(+), 66 deletions(-) diff --git a/src/hud/waiticondisplay.cpp b/src/hud/waiticondisplay.cpp index 283aa096..46220ea8 100644 --- a/src/hud/waiticondisplay.cpp +++ b/src/hud/waiticondisplay.cpp @@ -15,87 +15,109 @@ using namespace Impacto::Profile::Dialogue; using namespace Impacto::Profile::CHLCC; void Init() { - if (WaitIconCurrentType == +WaitIconType::SpriteAnim) { - SpriteAnim = WaitIconSpriteAnim.Instantiate(); - SpriteAnim.LoopMode = ALM_Loop; - SpriteAnim.StartIn(); - } else if (WaitIconCurrentType == +WaitIconType::SpriteAnimFixed) { - SpriteAnim = WaitIconSpriteAnim.Instantiate(); - SpriteAnim.LoopMode = ALM_Stop; - FixedSpriteAnim = static_cast(&SpriteAnim); - FixedSpriteAnim->Def->FixSpriteId = WaitIconFixedSpriteId; - } else { - SimpleAnim.DurationIn = WaitIconAnimationDuration; - SimpleAnim.LoopMode = ALM_Loop; - SimpleAnim.StartIn(); + switch (WaitIconCurrentType) { + case WaitIconType::SpriteAnim: + SpriteAnim = WaitIconSpriteAnim.Instantiate(); + SpriteAnim.LoopMode = ALM_Loop; + SpriteAnim.StartIn(); + break; + case WaitIconType::SpriteAnimFixed: + SpriteAnim = WaitIconSpriteAnim.Instantiate(); + SpriteAnim.LoopMode = ALM_Stop; + FixedSpriteAnim = static_cast(&SpriteAnim); + FixedSpriteAnim->Def->FixSpriteId = WaitIconFixedSpriteId; + break; + default: + SimpleAnim.DurationIn = WaitIconAnimationDuration; + SimpleAnim.LoopMode = ALM_Loop; + SimpleAnim.StartIn(); + break; } } void Update(float dt) { - if (WaitIconCurrentType == +WaitIconType::SpriteAnim) { - SpriteAnim.Update(dt); - } else if (WaitIconCurrentType == +WaitIconType::SpriteAnimFixed) { - FixedSpriteAnim->Update(dt); - } else { - SimpleAnim.Update(dt); + switch (WaitIconCurrentType) { + case WaitIconType::SpriteAnim: + SpriteAnim.Update(dt); + break; + case WaitIconType::SpriteAnimFixed: + FixedSpriteAnim->Update(dt); + break; + default: + SimpleAnim.Update(dt); + break; } } void Render(glm::vec2 pos, glm::vec4 opacityTint, DialoguePageMode mode) { - if (WaitIconCurrentType == +WaitIconType::SpriteAnim) { - if (DialogueBoxCurrentType == +DialogueBoxType::CHLCC) { - // To deal with multiple DialogueBox - glm::vec4 col = glm::vec4(1.0f, 1.0f, 1.0f, opacityTint.a); - // Erin DialogueBox - if (mode == DPM_REV) { - Renderer->DrawSprite( - SpriteAnim.CurrentSprite(), - glm::vec2( - pos.x + - Impacto::Profile::CHLCC::DialogueBox::REVWaitIconOffset.x, - pos.y + - Impacto::Profile::CHLCC::DialogueBox::REVWaitIconOffset.y), - col); + switch (WaitIconCurrentType) { + case WaitIconType::SpriteAnim: + if (DialogueBoxCurrentType == +DialogueBoxType::CHLCC) { + // To deal with multiple DialogueBox + glm::vec4 col = glm::vec4(1.0f, 1.0f, 1.0f, opacityTint.a); + // Erin DialogueBox + if (mode == DPM_REV) { + Renderer->DrawSprite( + SpriteAnim.CurrentSprite(), + glm::vec2( + pos.x + + Impacto::Profile::CHLCC::DialogueBox::REVWaitIconOffset.x, + pos.y + + Impacto::Profile::CHLCC::DialogueBox::REVWaitIconOffset + .y), + col); + } else { + Renderer->DrawSprite( + SpriteAnim.CurrentSprite(), + glm::vec2(pos.x + WaitIconOffset.x, pos.y + WaitIconOffset.y), + col); + } } else { Renderer->DrawSprite( SpriteAnim.CurrentSprite(), - glm::vec2(pos.x + WaitIconOffset.x, pos.y + WaitIconOffset.y), col); + glm::vec2(pos.x + WaitIconOffset.x, pos.y + WaitIconOffset.y), + opacityTint); } - } else { + break; + + case WaitIconType::SpriteAnimFixed: Renderer->DrawSprite( - SpriteAnim.CurrentSprite(), - glm::vec2(pos.x + WaitIconOffset.x, pos.y + WaitIconOffset.y), - opacityTint); + FixedSpriteAnim->CurrentSprite(), + glm::vec2(WaitIconOffset.x - 50, WaitIconOffset.y - 50), opacityTint); + break; + + case WaitIconType::RotateZ: { + // TODO: MO6TW only for now + glm::vec3 euler(SimpleAnim.Progress * 2.0f * M_PI, 0, 0.6f); + glm::quat quat; + eulerZYXToQuat(&euler, &quat); + + glm::vec2 vanishingPoint( + (pos.x + WaitIconOffset.x) + (WaitIconSprite.ScaledWidth() / 2.0f), + (pos.y + WaitIconOffset.y) + (WaitIconSprite.ScaledHeight() / 2.0f)); + + Renderer->DrawSprite3DRotated( + WaitIconSprite, + glm::vec2(pos.x + WaitIconOffset.x, pos.y + WaitIconOffset.y), 1.0f, + vanishingPoint, true, quat, opacityTint); + break; } - } else if (WaitIconCurrentType == +WaitIconType::SpriteAnimFixed) { - Renderer->DrawSprite( - FixedSpriteAnim->CurrentSprite(), - glm::vec2(WaitIconOffset.x - 50, WaitIconOffset.y - 50), opacityTint); - } else if (WaitIconCurrentType == +WaitIconType::RotateZ) { - // TODO: MO6TW only for now - glm::vec3 euler(SimpleAnim.Progress * 2.0f * M_PI, 0, 0.6f); - glm::quat quat; - eulerZYXToQuat(&euler, &quat); - - glm::vec2 vanishingPoint( - (pos.x + WaitIconOffset.x) + (WaitIconSprite.ScaledWidth() / 2.0f), - (pos.y + WaitIconOffset.y) + (WaitIconSprite.ScaledHeight() / 2.0f)); - - Renderer->DrawSprite3DRotated( - WaitIconSprite, - glm::vec2(pos.x + WaitIconOffset.x, pos.y + WaitIconOffset.y), 1.0f, - vanishingPoint, true, quat, opacityTint); - } else if (WaitIconCurrentType == +WaitIconType::None) { - Renderer->DrawSprite( - WaitIconSprite, - glm::vec2(pos.x + WaitIconOffset.x, pos.y + WaitIconOffset.y), - opacityTint, glm::vec2(1.0f)); - } else { - Renderer->DrawSprite( - WaitIconSprite, - glm::vec2(pos.x + WaitIconOffset.x, pos.y + WaitIconOffset.y), - opacityTint, glm::vec2(1.0f), SimpleAnim.Progress * 2.0f * (float)M_PI); + + case WaitIconType::None: + Renderer->DrawSprite( + WaitIconSprite, + glm::vec2(pos.x + WaitIconOffset.x, pos.y + WaitIconOffset.y), + opacityTint, glm::vec2(1.0f)); + break; + + default: + Renderer->DrawSprite( + WaitIconSprite, + glm::vec2(pos.x + WaitIconOffset.x, pos.y + WaitIconOffset.y), + opacityTint, glm::vec2(1.0f), + SimpleAnim.Progress * 2.0f * (float)M_PI); + break; } }