|
12 | 12 | #include "Etterna/Models/Songs/Song.h"
|
13 | 13 |
|
14 | 14 | static bool previousGameplayState;
|
| 15 | +static AutosyncType lastSyncType; |
15 | 16 |
|
16 | 17 | static bool
|
17 | 18 | IsGameplay()
|
@@ -78,7 +79,7 @@ static LocalizedString COLLECTING_SAMPLE("ScreenSyncOverlay",
|
78 | 79 | static LocalizedString STANDARD_DEVIATION("ScreenSyncOverlay",
|
79 | 80 | "Standard deviation");
|
80 | 81 | void
|
81 |
| -ScreenSyncOverlay::UpdateText() |
| 82 | +ScreenSyncOverlay::UpdateText(bool forcedChange) |
82 | 83 | {
|
83 | 84 | // Update Status
|
84 | 85 | vector<RString> vs;
|
@@ -125,32 +126,36 @@ ScreenSyncOverlay::UpdateText()
|
125 | 126 | AdjustSync::GetSyncChangeTextSong(vs);
|
126 | 127 | }
|
127 | 128 |
|
128 |
| - Message set_status("SetStatus"); |
129 |
| - set_status.SetParam("text", join("\n", vs)); |
130 |
| - m_overlay->HandleMessage(set_status); |
| 129 | + if (forcedChange || !vs.empty() || type != lastSyncType) { |
| 130 | + Message set_status("SetStatus"); |
| 131 | + set_status.SetParam("text", join("\n", vs)); |
| 132 | + m_overlay->HandleMessage(set_status); |
| 133 | + } |
131 | 134 |
|
132 | 135 | // Update SyncInfo
|
133 | 136 | bool visible =
|
134 | 137 | GAMESTATE->m_SongOptions.GetCurrent().m_AutosyncType != AutosyncType_Off;
|
135 |
| - Message set_adjustments("SetAdjustments"); |
136 |
| - set_adjustments.SetParam("visible", visible); |
| 138 | + RString s; |
137 | 139 | if (visible) {
|
138 | 140 | float fNew = PREFSMAN->m_fGlobalOffsetSeconds;
|
139 | 141 | float fOld = AdjustSync::s_fGlobalOffsetSecondsOriginal;
|
140 | 142 | float fStdDev = AdjustSync::s_fStandardDeviation;
|
141 |
| - RString s; |
142 | 143 | s += OLD_OFFSET.GetValue() + ssprintf(": %0.3f\n", fOld);
|
143 | 144 | s += NEW_OFFSET.GetValue() + ssprintf(": %0.3f\n", fNew);
|
144 | 145 | s += STANDARD_DEVIATION.GetValue() + ssprintf(": %0.3f\n", fStdDev);
|
145 | 146 | s += COLLECTING_SAMPLE.GetValue() +
|
146 | 147 | ssprintf(": %d / %d",
|
147 | 148 | AdjustSync::s_iAutosyncOffsetSample + 1,
|
148 | 149 | AdjustSync::OFFSET_SAMPLE_COUNT);
|
| 150 | + } |
| 151 | + |
| 152 | + if (forcedChange || visible || type != lastSyncType) { |
| 153 | + Message set_adjustments("SetAdjustments"); |
| 154 | + set_adjustments.SetParam("visible", visible); |
149 | 155 | set_adjustments.SetParam("text", s);
|
150 |
| - } else { |
151 |
| - set_adjustments.SetParam("text", RString("")); |
| 156 | + m_overlay->HandleMessage(set_adjustments); |
152 | 157 | }
|
153 |
| - m_overlay->HandleMessage(set_adjustments); |
| 158 | + lastSyncType = type; |
154 | 159 | }
|
155 | 160 |
|
156 | 161 | static LocalizedString CANT_SYNC_WHILE_PLAYING_A_COURSE(
|
@@ -329,7 +334,7 @@ ScreenSyncOverlay::Input(const InputEventPlus& input)
|
329 | 334 | ShowHelp();
|
330 | 335 | }
|
331 | 336 |
|
332 |
| - UpdateText(); |
| 337 | + UpdateText(true); |
333 | 338 | return true;
|
334 | 339 | }
|
335 | 340 |
|
|
0 commit comments