SDOM - Simple SDL Document Object Model
A lightweight, extensible Document Object Model for SDL-based applications.
Loading...
Searching...
No Matches
SDOM_Stage.hpp
Go to the documentation of this file.
1#pragma once
2
4
5namespace SDOM
6{
7
8 class Factory; // Forward declaration
9
10 class Stage : public IDisplayObject
11 {
12 using SUPER = IDisplayObject;
13
14 // --- Friend Classes --- //
15 friend class Factory; // Allow Factory to create Stage Objects
16 friend class Core; // Allow Core to access Factory internals if needed
17
18 public:
19 // --- Type Info --- //
20 static constexpr const char* TypeName = "Stage";
21
22 // --- Initialization Struct --- //
24 {
26 {
27 name = TypeName;
28 type = TypeName;
29 color = {0, 0, 0, 255};
30 }
31 };
32
33 protected:
34 // --- Constructors --- //
35 Stage(const InitStruct& init);
36 Stage(const sol::table& config);
37
38 public:
39 // --- Static Factory Methods --- //
40 static std::unique_ptr<IDisplayObject> CreateFromLua(const sol::table& config) {
41 return std::unique_ptr<IDisplayObject>(new Stage(config));
42 }
43 static std::unique_ptr<IDisplayObject> CreateFromInitStruct(const IDisplayObject::InitStruct& baseInit) {
44 const auto& stageInit = static_cast<const Stage::InitStruct&>(baseInit);
45 return std::unique_ptr<IDisplayObject>(new Stage(stageInit));
46 }
47
48 // --- Destructor --- //
49 virtual ~Stage() = default;
50
51 // --- Lifecycle Methods (IDataObject) --- //
52 virtual bool onInit() override;
53 virtual void onQuit() override;
54
55 // --- Core Display Methods (IDisplayObject) --- //
56 virtual void onUpdate(float fElapsedTime) override;
57 virtual void onEvent(const Event& event) override;
58 virtual void onRender() override;
59 virtual bool onUnitTest() override;
60
61 // --- Stage-Specific State --- //
62 static int getMouseX() { return mouseX; }
63 static void setMouseX(int x) { mouseX = x; }
64 static int getMouseY() { return mouseY; }
65 static void setMouseY(int y) { mouseY = y; }
66 inline static int mouseX = 0; // current mouse horizontal coordinate within this stage
67 inline static int mouseY = 0; // current mouse vertical coordinate within this stage
68
69 // --- Lua Wrappers --- //
70 int getMouseX_lua() const { return getMouseX(); }
71 int getMouseY_lua() const { return getMouseY(); }
72 void setMouseX_lua(int x) { setMouseX(x); }
73 void setMouseY_lua(int y) { setMouseY(y); }
74
75 protected:
76 // --- Lua Registration --- //
77 virtual void _registerLuaBindings(const std::string& typeName, sol::state_view lua);
78
79 sol::usertype<Stage> objHandleType_; // Deprecated??
80
81
82 };
83
84} // namespace SDOM
The central singleton framework object for SDOM.
Definition SDOM_Core.hpp:27
Definition SDOM_Event.hpp:55
Definition SDOM_Factory.hpp:43
Definition SDOM_IDisplayObject.hpp:153
Definition SDOM_Stage.hpp:11
static constexpr const char * TypeName
Definition SDOM_Stage.hpp:20
virtual void onQuit() override
Definition SDOM_Stage.cpp:38
static int getMouseY()
Definition SDOM_Stage.hpp:64
sol::usertype< Stage > objHandleType_
Definition SDOM_Stage.hpp:79
static void setMouseX(int x)
Definition SDOM_Stage.hpp:63
void setMouseX_lua(int x)
Definition SDOM_Stage.hpp:72
virtual void _registerLuaBindings(const std::string &typeName, sol::state_view lua)
Definition SDOM_Stage.cpp:84
int getMouseY_lua() const
Definition SDOM_Stage.hpp:71
static int getMouseX()
Definition SDOM_Stage.hpp:62
virtual void onUpdate(float fElapsedTime) override
Definition SDOM_Stage.cpp:44
virtual bool onUnitTest() override
Runs unit tests for this object.
Definition SDOM_Stage.cpp:74
virtual ~Stage()=default
static int mouseX
Definition SDOM_Stage.hpp:66
void setMouseY_lua(int y)
Definition SDOM_Stage.hpp:73
static std::unique_ptr< IDisplayObject > CreateFromInitStruct(const IDisplayObject::InitStruct &baseInit)
Definition SDOM_Stage.hpp:43
static std::unique_ptr< IDisplayObject > CreateFromLua(const sol::table &config)
Definition SDOM_Stage.hpp:40
virtual bool onInit() override
Definition SDOM_Stage.cpp:31
static int mouseY
Definition SDOM_Stage.hpp:67
int getMouseX_lua() const
Definition SDOM_Stage.hpp:70
virtual void onRender() override
Definition SDOM_Stage.cpp:61
virtual void onEvent(const Event &event) override
Definition SDOM_Stage.cpp:52
static void setMouseY(int y)
Definition SDOM_Stage.hpp:65
Contains all core classes and utilities for the SDOM library.
Definition lua_BindHelpers.hpp:7
Definition SDOM_IDisplayObject.hpp:187
std::string type
Definition SDOM_IDisplayObject.hpp:189
std::string name
Definition SDOM_IDisplayObject.hpp:188
SDL_Color color
Definition SDOM_IDisplayObject.hpp:194
Definition SDOM_Stage.hpp:24
InitStruct()
Definition SDOM_Stage.hpp:25