4#include "Etterna/Actor/Menus/DualScrollBar.h"
5#include "Etterna/Models/Misc/InputEventPlus.h"
6#include "Etterna/Models/Lua/LuaExpressionTransform.h"
7#include "Etterna/Actor/Menus/OptionRow.h"
8#include "Etterna/Actor/Menus/OptionsCursor.h"
9#include "RageUtil/Sound/RageSound.h"
10#include "Etterna/Screen/Others/ScreenWithMenuElements.h"
11#include "Etterna/Models/Misc/ThemeMetric.h"
15AutoScreenMessage(SM_ExportOptions);
21 INPUTMODE_SHARE_CURSOR,
26StringToInputMode(
const std::string& str);
29#define FOREACH_OptionsPlayer(pn) \
30 for (PlayerNumber pn = GetNextHumanPlayer((PlayerNumber)-1); \
31 pn != PLAYER_INVALID && \
32 (m_InputMode == INPUTMODE_INDIVIDUAL || pn == 0); \
33 pn = GetNextHumanPlayer(pn))
43 void InitMenu(
const std::vector<OptionRowHandler*>& vHands);
45 void Update(
float fDeltaTime)
override;
47 void HandleScreenMessage(
const ScreenMessage& SM)
override;
49 void TweenOnScreen()
override;
50 void TweenOffScreen()
override;
53 void PushSelf(lua_State* L)
override;
57 virtual void ImportOptions(
int iRow,
const PlayerNumber& vpns) = 0;
58 virtual void ExportOptions(
int iRow,
const PlayerNumber& vpns) = 0;
59 virtual void ExportOptionsOnCancel(
int iRow,
const PlayerNumber& pn) = 0;
61 void RestartOptions();
62 void GetWidthXY(PlayerNumber pn,
68 std::string GetExplanationText(
int iRow)
const;
69 void RefreshIcons(
int iRow, PlayerNumber pn);
70 void PositionCursor(PlayerNumber pn);
71 void PositionRows(
bool bTween);
72 void TweenCursor(PlayerNumber pn);
73 void StoreFocus(PlayerNumber pn);
75 void BeginFadingOut();
76 virtual bool FocusedItemEndsScreen(PlayerNumber pn)
const;
77 std::string GetNextScreenForFocusedItem(PlayerNumber pn)
const;
79 void ChangeValueInRowRelative(
int iRow,
83 void ChangeValueInRowAbsolute(
int iRow,
92 bool MoveRowRelative(PlayerNumber pn,
int iDir,
bool bRepeat);
93 bool MoveRowAbsolute(PlayerNumber pn,
int iRow);
99 virtual void AfterChangeValueOrRow(PlayerNumber pn);
112 int GetCurrentRow(PlayerNumber pn = PLAYER_1)
const
116 bool AllAreOnLastRow()
const;
119 int GetNumRows()
const {
return static_cast<int>(
m_pRows.size()); }
128 NAV_TOGGLE_THREE_KEY,
131 void SetNavigation(Navigation nav) { m_OptionsNavigation = nav; }
132 void SetInputMode(InputMode im) { m_InputMode = im; }
142 Navigation m_OptionsNavigation;
143 InputMode m_InputMode;
181 m_exprRowPositionTransformFunction;
A container for other Actors.
Definition ActorFrame.h:8
A smart pointer for Actor.
Definition AutoActor.h:13
An actor that holds a Font and draws text to the screen.
Definition BitmapText.h:11
Allow Lua to have access to ScreenOptions.
Definition ScreenOptions.cpp:1373
Shows PlayerOptions and SongOptions in icon form.
Definition OptionRowHandler.h:185
Definition OptionRow.h:23
Definition OptionRow.h:56
A cursor for ScreenOptions.
Definition OptionsCursor.h:9
Definition RageSound.h:130
A grid of options; the selected option is drawn with a highlight rectangle.
Definition ScreenOptions.h:38
void Init() override
This is called immediately after construction, to allow initializing after all derived classes exist.
Definition ScreenOptions.cpp:105
void BeginScreen() override
This is called immediately before the screen is used.
Definition ScreenOptions.cpp:307
virtual void AfterChangeValueInRow(int iRow, PlayerNumber pn)
Perform an action after a row has changed its value.
Definition ScreenOptions.cpp:1173
std::vector< OptionRow * > m_pRows
Map menu lines to m_OptionRow entries.
Definition ScreenOptions.h:135
virtual void AfterChangeRow(PlayerNumber pn)
Perform an action after moving to a new row.
Definition ScreenOptions.cpp:1213
bool m_bGotAtLeastOneStartPressed
True if at least one player pressed Start after selecting the song.
Definition ScreenOptions.h:154
int m_iCurrentRow
The current row each player is on.
Definition ScreenOptions.h:137
The theme specific data.
Definition ThemeMetric.h:52