31 114, 180, 247, 314, 401};
32 inline constexpr std::array<int, 3>
HelpButtonY{180, 288, 401};
36 inline constexpr std::array<int, 4>
MenuButtonX{31, 180, 478, 615};
37 inline constexpr std::array<int, 4>
MenuButtonY{494, 493, 490, 490};
38 inline constexpr std::array<int, 4>
MenuButtonWidth{170, 159, 164, 175};
46 inline constexpr std::array<int, 7>
ToggleY{135, 175, 215, 255, 295, 335, 375};
51 const auto index =
static_cast<std::size_t
>(
button);
79 const auto index =
static_cast<std::size_t
>(toggle);
99 const auto index =
static_cast<std::size_t
>(
button);
121 const auto index =
static_cast<std::size_t
>(
button);
144 state.previousView = previousView;
145 state.optionSnapshotLoaded =
false;
152 bool musicOn, std::uint8_t musicTuneIndex,
154 bool lightingOn,
bool board3DOn,
161 state.originalMusicTuneIndex =
state.musicTuneIndex;
167 state.optionSnapshotLoaded =
true;
186 state.active =
false;
187 state.optionSnapshotLoaded =
false;
194 static_cast<int>(message.numberA),
195 static_cast<int>(message.numberB));
198 result.pressedMenuButton = menu;
199 state.quickHelpVisible =
false;
200 state.musicChoiceRects = {};
201 state.currentScreen =
static_cast<Screen>(
static_cast<std::uint8_t
>(*menu));
202 state.optionSnapshotLoaded =
false;
208 const auto x =
static_cast<int>(message.numberA);
209 const auto y =
static_cast<int>(message.numberB);
212 result.pressedOptionOkay =
true;
213 result.requestedBackdrop =
state.previousView;
214 state.active =
false;
217 if (!
state.optionSnapshotLoaded)
return result;
223 result.pressedMusicTune =
index;
232 result.pressedOptionToggle = toggle;
233 const auto index =
static_cast<std::size_t
>(toggle);
243 state.active =
false;
244 result.requestedBackdrop =
state.previousView;
250 if (
state.quickHelpVisible)
254 if (!
state.quickHelpButtonRects[
index].contains(
255 static_cast<int>(message.numberA),
static_cast<int>(message.numberB)))
continue;
256 if (
index == 0 &&
state.quickHelpPageIndex > 0)
258 --
state.quickHelpPageIndex;
259 state.quickHelpFirstLine =
state.quickHelpPageOffsets[
state.quickHelpPageIndex];
260 state.quickHelpInitialPage =
false;
262 else if (
index == 1 &&
state.quickHelpLinesPerPage > 0 &&
263 state.quickHelpFirstLine +
state.quickHelpLinesPerPage <
state.quickHelpLines.size() &&
264 state.quickHelpPageIndex + 1 <
state.quickHelpPageOffsets.size())
266 state.quickHelpFirstLine +=
state.quickHelpLinesPerPage;
267 ++
state.quickHelpPageIndex;
270 state.quickHelpPageOffsets[
state.quickHelpPageIndex] =
state.quickHelpFirstLine;
271 state.quickHelpInitialPage =
false;
273 else if (
index == 2)
state.quickHelpVisible =
false;
279 static_cast<int>(message.numberA),
280 static_cast<int>(message.numberB));
281 if (!
button)
return result;
282 result.pressedHelpButton =
button;
285 result.requestedBackdrop =
state.previousView;
286 state.active =
false;
295 static_cast<int>(message.numberA),
296 static_cast<int>(message.numberB));
300 result.pressedFileButton =
button;
303 result.requestedBackdrop =
state.previousView;
304 state.active =
false;
std::atomic< float > left
constexpr bool isIBarVisible(Screen2D screen) noexcept
Rect optionToggleRect(OptionToggle toggle, bool onSide) noexcept
bool selectMusicTune(State &state, std::uint8_t tuneIndex) noexcept
constexpr std::uint8_t MusicTuneCount
bool beginFromIBar(State &state, display::Screen2D previousView) noexcept
bool optionToggleSupported(OptionToggle toggle) noexcept
constexpr int OptionOkayHeight
void reset(State &state) noexcept
constexpr int OptionOkayWidth
InputResult processInput(State &state, display::Screen2D desiredView, const uimsg::Message &message) noexcept
Rect menuButtonRect(MenuButton button) noexcept
std::size_t quickHelpPageLineCount(std::size_t totalLines, std::size_t firstLine, int lineHeight, bool initialPage) noexcept
void loadSupportedOptionValues(State &state, bool tokenVoicesOn, bool hostCommentsOn, bool musicOn, std::uint8_t musicTuneIndex, bool tokenAnimationsOn, bool cameraMovementOn, bool lightingOn, bool board3DOn, bool filteringOn) noexcept
Rect optionOkayRect() noexcept
std::optional< HelpButton > helpButtonHit(int x, int y) noexcept
std::optional< FileButton > fileButtonHit(int x, int y) noexcept
constexpr std::array< OptionToggle, 8 > SupportedOptionToggles
std::optional< MenuButton > menuButtonHit(int x, int y) noexcept
constexpr int OptionOkayY
Rect fileButtonRect(FileButton button) noexcept
constexpr int OptionOkayX
Rect helpButtonRect(HelpButton button) noexcept
bool contains(int x, int y) const noexcept