Etterna 0.74.4
Loading...
Searching...
No Matches
ScreenPrompt.h
1/* ScreenPrompt - Displays a prompt on top of another screen. */
2
3#ifndef SCREEN_PROMPT_H
4#define SCREEN_PROMPT_H
5
6#include "Etterna/Actor/Base/BitmapText.h"
7#include "RageUtil/Sound/RageSound.h"
8#include "ScreenWithMenuElements.h"
9
10enum PromptType
11{
12 PROMPT_OK,
13 PROMPT_YES_NO,
14 PROMPT_YES_NO_CANCEL
15};
16
17enum PromptAnswer
18{
19 ANSWER_YES,
20 ANSWER_NO,
21 ANSWER_CANCEL,
22 NUM_PromptAnswer
23};
24
26{
27 public:
28 static void SetPromptSettings(const std::string& sText,
29 PromptType type = PROMPT_OK,
30 PromptAnswer defaultAnswer = ANSWER_NO,
31 void (*OnYes)(void*) = nullptr,
32 void (*OnNo)(void*) = nullptr,
33 void* pCallbackData = nullptr);
34 static void Prompt(ScreenMessage smSendOnPop,
35 const std::string& sText,
36 PromptType type = PROMPT_OK,
37 PromptAnswer defaultAnswer = ANSWER_NO,
38 void (*OnYes)(void*) = nullptr,
39 void (*OnNo)(void*) = nullptr,
40 void* pCallbackData = nullptr);
41
42 void Init() override;
43 void BeginScreen() override;
44 void EndScreen() override;
45 bool Input(const InputEventPlus& input) override;
46
47 static PromptAnswer s_LastAnswer;
48 static bool s_bCancelledLast;
49 static bool s_bMustResetInputRedirAtClose;
50 static bool s_bResetInputRedirTo;
51 // Lua
52 // virtual void PushSelf( lua_State *L );
53
54 protected:
55 bool CanGoLeft() { return m_Answer > 0; }
56 bool CanGoRight();
57 void Change(int dir);
58 bool MenuLeft(const InputEventPlus& input) override;
59 bool MenuRight(const InputEventPlus& input) override;
60 bool MenuBack(const InputEventPlus& input) override;
61 bool MenuStart(const InputEventPlus& input) override;
62
63 virtual void End(bool bCancelled);
64 void PositionCursor();
65
66 void TweenOffScreen() override;
67
68 BitmapText m_textQuestion;
69 AutoActor m_sprCursor;
70 BitmapText m_textAnswer[NUM_PromptAnswer];
71 PromptAnswer m_Answer;
72
73 RageSound m_sndChange;
74};
75
76#endif
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
Holds a device input plus Game/Menu translations.
Definition InputEventPlus.h:9
Definition RageSound.h:130
Definition ScreenPrompt.h:26
void EndScreen() override
This is called when the screen is popped.
Definition ScreenPrompt.cpp:235
void BeginScreen() override
This is called immediately before the screen is used.
Definition ScreenPrompt.cpp:96
void Init() override
This is called immediately after construction, to allow initializing after all derived classes exist.
Definition ScreenPrompt.cpp:67
Definition ScreenWithMenuElements.h:12