Peoplemon  0.1.0
Peoplemon 3 game source documentation
MainEditor.cpp
Go to the documentation of this file.
2 
3 #include <Core/Properties.hpp>
10 
11 namespace editor
12 {
13 namespace state
14 {
15 MainEditor::Ptr MainEditor::create(core::system::Systems& s) { return Ptr(new MainEditor(s)); }
16 
17 MainEditor::MainEditor(core::system::Systems& s)
18 : State(bl::engine::StateMask::Editor)
19 , systems(s)
20 , mapPage(s)
21 , variousEditorsPage(s)
22 , scriptPage(s)
23 , peoplemonPage(s)
24 , movesPage(s)
25 , itemsPage(s)
26 , creditsPage(s)
27 , currentPage(&mapPage) {
28  gui = bl::gui::GUI::create(
29  s.engine(),
30  s.engine().renderer().getObserver(),
31  bl::gui::LinePacker::create(bl::gui::LinePacker::Vertical, 4, bl::gui::LinePacker::Compact),
32  {0.f,
33  0.f,
34  static_cast<float>(s.engine().window().getSfWindow().getSize().x),
35  static_cast<float>(s.engine().window().getSfWindow().getSize().y)});
36 
37  mapPage.registerGui(gui.get());
38  variousEditorsPage.registerGui(gui.get());
39  scriptPage.registerGui(gui.get());
40  peoplemonPage.registerGui(gui.get());
41  movesPage.registerGui(gui.get());
42  itemsPage.registerGui(gui.get());
43  creditsPage.registerGui(gui.get());
44 
45  mapPage.syncGui();
46 
47  notebook = bl::gui::Notebook::create();
48  notebook->setOutlineThickness(0.f);
49 
50  notebook->addPage("maps", "Maps", mapPage.getContent(), [this]() { currentPage = &mapPage; });
51  notebook->addPage("editors", "Various Editors", variousEditorsPage.getContent(), [this]() {
52  currentPage = &variousEditorsPage;
53  });
54  notebook->addPage(
55  "script", "Scripts", scriptPage.getContent(), [this]() { currentPage = &scriptPage; });
56  notebook->addPage("peoplemon", "Peoplemon DB", peoplemonPage.getContent(), [this]() {
57  currentPage = &peoplemonPage;
58  });
59  notebook->addPage(
60  "moves", "Move DB", movesPage.getContent(), [this]() { currentPage = &movesPage; });
61  notebook->addPage(
62  "items", "Item DB", itemsPage.getContent(), [this]() { currentPage = &itemsPage; });
63  notebook->addPage(
64  "credits", "Credits", creditsPage.getContent(), [this]() { currentPage = &creditsPage; });
65 
66  gui->pack(notebook, true, true);
67 }
68 
69 const char* MainEditor::name() const { return "MainEditor"; }
70 
71 void MainEditor::activate(bl::engine::Engine& engine) {
72  engine.renderer().getObserver().pushScene<bl::rc::Overlay>();
73  engine.renderer().getObserver().setClearColor(bl::sfcol(sf::Color{90, 90, 90}));
74  gui->addToOverlay();
75  bl::event::Dispatcher::subscribe(this);
76 }
77 
78 void MainEditor::deactivate(bl::engine::Engine& engine) {
79  gui->removeFromScene();
80  engine.renderer().getObserver().popScene();
81  bl::event::Dispatcher::unsubscribe(this);
82 }
83 
84 void MainEditor::update(bl::engine::Engine&, float dt, float) {
85  gui->update(dt);
86  currentPage->update(dt);
87 }
88 
89 void MainEditor::observe(const sf::Event& event) {
90  if (event.type == sf::Event::Resized) {
91  gui->setRegion({0.f,
92  0.f,
93  static_cast<float>(event.size.width),
94  static_cast<float>(event.size.height)});
95  }
96 }
97 
99  using namespace component;
100  auto& table = bl::gui::rdr::FactoryTable::getDefaultTable();
101 
102  table.registerFactoryForElement<HighlightRadioButton, rdr::HighlightRadioButtonComponent>();
103  table.registerFactoryForElement<ConversationTree, rdr::ConversationTreeComponent>();
104  table.registerFactoryForElement<EditMap, rdr::EditMapComponent>();
105 }
106 
107 } // namespace state
108 } // namespace editor
All classes and functionality used for implementing the game editor.
Definition: Tile.hpp:11
Owns all primary systems and a reference to the engine.
Definition: Systems.hpp:47
const bl::engine::Engine & engine() const
Const accessor for the Engine.
Definition: Systems.cpp:35
void syncGui()
Updates the GUI elements to sync with the data.
Definition: Map.cpp:871
virtual void update(float dt)=0
Any custom page update logic outside of event callbacks goes here.
bl::gui::Box::Ptr getContent()
Returns the content to put in the editor.
Definition: Page.cpp:11
void registerGui(bl::gui::GUI *parent)
Registers the parent GUI.
Definition: Page.cpp:13
The primary state of the editor. Owns the GUI and all tabs.
Definition: MainEditor.hpp:37
virtual void deactivate(bl::engine::Engine &) override
Unsubscribes the gui from window events.
Definition: MainEditor.cpp:78
virtual void update(bl::engine::Engine &, float dt, float) override
Updates the gui and the current page.
Definition: MainEditor.cpp:84
virtual const char * name() const override
Returns "MainEditor".
Definition: MainEditor.cpp:69
virtual void activate(bl::engine::Engine &) override
Subscribes the gui to window events.
Definition: MainEditor.cpp:71
static Ptr create(core::system::Systems &systems)
Construct a new Main Editor state.
Definition: MainEditor.cpp:15
static void registerCustomGuiComponents()
Registers renderer components for custom GUI elements.
Definition: MainEditor.cpp:98