77
88#include " ../animation.h"
99
10+ #include < ranges>
11+ #include < numeric>
12+
1013namespace Impacto {
1114namespace WaitIconDisplay {
1215
@@ -43,13 +46,20 @@ void Init() {
4346 }
4447}
4548
49+ static bool AnyPageWaiting () {
50+ return std::ranges::any_of (std::views::iota (0 , std::ssize (DialoguePages)),
51+ [](int dialoguePageId) {
52+ return GetFlag (SF_SHOWWAITICON + dialoguePageId);
53+ });
54+ }
55+
4656void Update (float dt) {
4757 switch (WaitIconCurrentType) {
4858 case WaitIconType::None:
4959 return ;
5060
5161 case WaitIconType::SpriteAnim: {
52- bool showWaitIcon = GetFlag (Profile::ScriptVars::SF_SHOWWAITICON );
62+ const bool showWaitIcon = AnyPageWaiting ( );
5363 if (showWaitIcon && SpriteAnim.IsOut ())
5464 SpriteAnim.StartIn ();
5565 else if (!showWaitIcon && SpriteAnim.IsIn ())
@@ -60,7 +70,7 @@ void Update(float dt) {
6070 }
6171
6272 case WaitIconType::SpriteAnimFixed: {
63- bool showWaitIcon = GetFlag (Profile::ScriptVars::SF_SHOWWAITICON );
73+ const bool showWaitIcon = AnyPageWaiting ( );
6474 if (showWaitIcon && FixedSpriteAnim.IsOut ())
6575 FixedSpriteAnim.StartIn ();
6676 else if (!showWaitIcon && FixedSpriteAnim.IsIn ())
@@ -77,8 +87,8 @@ void Update(float dt) {
7787}
7888
7989static void RenderSpriteAnim (glm::vec2 pos, glm::vec4 opacityTint,
80- DialoguePageMode mode) {
81- if (!GetFlag (Profile::ScriptVars:: SF_SHOWWAITICON)) return ;
90+ DialoguePageMode mode, int dialoguePageId ) {
91+ if (!GetFlag (SF_SHOWWAITICON + dialoguePageId )) return ;
8292
8393 glm::vec2 offset = WaitIconOffset;
8494
@@ -102,8 +112,9 @@ static void RenderSpriteAnimFixed(glm::vec4 opacityTint) {
102112 opacityTint);
103113}
104114
105- static void RenderRotateZ (glm::vec2 pos, glm::vec4 opacityTint) {
106- if (!GetFlag (Profile::ScriptVars::SF_SHOWWAITICON)) return ;
115+ static void RenderRotateZ (glm::vec2 pos, glm::vec4 opacityTint,
116+ int dialoguePageId) {
117+ if (!GetFlag (SF_SHOWWAITICON + dialoguePageId)) return ;
107118
108119 // TODO: MO6TW only for now
109120 glm::vec3 euler (SimpleAnim.Progress * 2 .0f * std::numbers::pi_v<float >, 0 ,
@@ -119,35 +130,36 @@ static void RenderRotateZ(glm::vec2 pos, glm::vec4 opacityTint) {
119130 Renderer->DrawSprite (WaitIconSprite, dest, opacityTint);
120131}
121132
122- static void RenderFixed (glm::vec4 opacityTint) {
123- if (!GetFlag (Profile::ScriptVars:: SF_SHOWWAITICON)) return ;
133+ static void RenderFixed (glm::vec4 opacityTint, int dialoguePageId ) {
134+ if (!GetFlag (SF_SHOWWAITICON + dialoguePageId )) return ;
124135
125136 Renderer->DrawSprite (WaitIconSprite, WaitIconOffset, opacityTint);
126137}
127138
128- void Render (glm::vec2 pos, glm::vec4 opacityTint, DialoguePageMode mode) {
139+ void Render (glm::vec2 pos, glm::vec4 opacityTint, DialoguePageMode mode,
140+ int dialoguePageId) {
129141 switch (WaitIconCurrentType) {
130142 case WaitIconType::None:
131143 return ;
132144
133145 case WaitIconType::SpriteAnim:
134- RenderSpriteAnim (pos, opacityTint, mode);
146+ RenderSpriteAnim (pos, opacityTint, mode, dialoguePageId );
135147 return ;
136148
137149 case WaitIconType::SpriteAnimFixed:
138150 RenderSpriteAnimFixed (opacityTint);
139151 return ;
140152
141153 case WaitIconType::RotateZ:
142- RenderRotateZ (pos, opacityTint);
154+ RenderRotateZ (pos, opacityTint, dialoguePageId );
143155 return ;
144156
145157 case WaitIconType::Fixed:
146- RenderFixed (opacityTint);
158+ RenderFixed (opacityTint, dialoguePageId );
147159 return ;
148160
149161 default : {
150- if (!GetFlag (Profile::ScriptVars:: SF_SHOWWAITICON)) return ;
162+ if (!GetFlag (SF_SHOWWAITICON + dialoguePageId )) return ;
151163
152164 const CornersQuad dest =
153165 WaitIconSprite.ScaledBounds ()
0 commit comments