HoverRace  2.0
DialogScene.h
Go to the documentation of this file.
1 
2 // DialogScene.h
3 //
4 // Copyright (c) 2013-2016 Michael Imamura.
5 //
6 // Licensed under GrokkSoft HoverRace SourceCode License v1.0(the "License");
7 // you may not use this file except in compliance with the License.
8 //
9 // A copy of the license should have been attached to the package from which
10 // you have taken this file. If you can not find the license you can not use
11 // this file.
12 //
13 //
14 // The author makes no representations about the suitability of
15 // this software for any purpose. It is provided "as is" "AS IS",
16 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
17 // implied.
18 //
19 // See the License for the specific language governing permissions
20 // and limitations under the License.
21 
22 #pragma once
23 
24 #include "../../engine/Display/Color.h"
25 
26 #include "GameDirector.h"
27 
28 #include "FormScene.h"
29 
30 namespace HoverRace {
31  namespace Display {
32  class ActionButton;
33  class Background;
34  class FlexGrid;
35  class Label;
36  }
37 }
38 
39 namespace HoverRace {
40 namespace Client {
41 
46 class DialogScene : public FormScene
47 {
48  using SUPER = FormScene;
49 
50 public:
52  const std::string &parentTitle,
53  const std::string &title, const std::string &name);
55  const std::string &title = "", const std::string &name = "") :
56  DialogScene(display, director, "", title, name) { }
57  virtual ~DialogScene();
58 
59 protected:
60  const std::string &GetTitle() const { return title; }
61 
66  const std::string &GetFullTitle() const { return fullTitle; }
67 
68  void SetStoppingTransitionEnabled(bool enabled);
69 
70  Display::Container *GetContentRoot() const { return contentRoot.get(); }
71  Display::Container *GetStatusRoot() const { return statusRoot.get(); }
72 
73  void SupportOkAction(const std::string &label = "");
74  void SupportCancelAction(const std::string &label = "");
75  void SupportExtraAction(const std::string &label);
76 
77  void SetBackground(Display::Background *fader);
78 
79 protected:
80  virtual void OnOk();
81  virtual void OnCancel();
82  virtual void OnExtra();
83 
84 protected:
85  static std::string JoinTitles(const std::string &parent,
86  const std::string &title);
87 
88 public:
89  void AttachController(Control::InputEventController &controller,
90  ConnList &conns) override;
91  void DetachController(Control::InputEventController &controller,
92  ConnList &conns) override;
93  void OnPhaseTransition(double progress) override;
94  void PrepareRender() override;
95  void Render() override;
96 
97 public:
98  static constexpr double MARGIN_WIDTH = 40;
99 
100 protected:
102 
103 private:
104  std::string parentTitle;
105  std::string title;
106  std::string fullTitle;
110 
111  std::unique_ptr<Display::Background> fader;
112  std::shared_ptr<Display::FlexGrid> titleGrid;
113  std::shared_ptr<Display::Label> titleSepLbl;
114  std::shared_ptr<Display::Label> titleLbl;
115  std::shared_ptr<Display::Container> contentRoot;
116  std::shared_ptr<Display::Container> statusRoot;
117  std::shared_ptr<Display::FlexGrid> actionGrid;
118  std::shared_ptr<Display::ActionButton> okBtn;
119  std::shared_ptr<Display::ActionButton> cancelBtn;
120  std::shared_ptr<Display::ActionButton> extraBtn;
121 };
122 
123 } // namespace Client
124 } // namespace HoverRace
Definition: Color.h:40
std::shared_ptr< Display::Container > contentRoot
Definition: DialogScene.h:115
Display::Color titleColor
Definition: DialogScene.h:107
std::shared_ptr< Display::ActionButton > cancelBtn
Definition: DialogScene.h:119
Interface for game client shells.
Definition: GameDirector.h:57
std::string fullTitle
Definition: DialogScene.h:106
Display::Container * GetContentRoot() const
Definition: DialogScene.h:70
GameDirector & director
Definition: DialogScene.h:101
std::shared_ptr< Display::FlexGrid > titleGrid
Definition: DialogScene.h:112
GameDirector & director
Definition: TestLabScene.cpp:160
DialogScene(Display::Display &display, GameDirector &director, const std::string &title="", const std::string &name="")
Definition: DialogScene.h:54
std::shared_ptr< Display::ActionButton > extraBtn
Definition: DialogScene.h:120
std::array< boost::signals2::scoped_connection, 2 > conns
Definition: ProfileEditScene.cpp:152
Base class for views that fill the entire screen.
Definition: Background.h:43
Base class for scenes with a title and status area.
Definition: DialogScene.h:46
Base class for display managers.
Definition: Display.h:73
Base class for full-scene menus and the like.
Definition: FormScene.h:48
Display::Container * GetStatusRoot() const
Definition: DialogScene.h:71
std::shared_ptr< Display::FlexGrid > actionGrid
Definition: DialogScene.h:117
An invisible container for other UI widgets.
Definition: Container.h:49
std::shared_ptr< Display::ActionButton > okBtn
Definition: DialogScene.h:118
bool stoppingTransitionEnabled
Definition: DialogScene.h:108
Tracks connections as a group.
Definition: Scene.h:69
size_t actionGridCol
Definition: DialogScene.h:109
Definition: Announcement.h:24
std::shared_ptr< Display::Label > titleSepLbl
Definition: DialogScene.h:113
std::string title
Definition: DialogScene.h:105
std::shared_ptr< Display::Container > statusRoot
Definition: DialogScene.h:116
const std::string & GetFullTitle() const
Retrieve the full combined title (including parent title).
Definition: DialogScene.h:66
std::unique_ptr< Display::Background > fader
Definition: DialogScene.h:111
const std::string & GetTitle() const
Definition: DialogScene.h:60
Translates input events into actions.
Definition: Controller.h:106
std::shared_ptr< Display::Label > titleLbl
Definition: DialogScene.h:114
std::string parentTitle
Definition: DialogScene.h:104