Polyphase Game Engine
Loading...
Searching...
No Matches
DialogWindow.h
Go to the documentation of this file.
1#pragma once
2
4#include "AssetRef.h"
5#include "Datum.h"
6
7class Button;
8class Canvas;
9class Node;
10class Quad;
11class Texture;
12
13enum class ButtonBarAlignment : uint8_t
14{
15 Left,
16 Center,
17 Right,
18 Spread,
19 Count
20};
21
23{
24public:
25
27
28 virtual void Create() override;
29 virtual void Start() override;
30 virtual void OnInstanced() override;
31 virtual void Tick(float deltaTime) override;
32 virtual void PreRender() override;
33 virtual void GatherProperties(std::vector<Property>& props) override;
34
35#if EDITOR
36 virtual bool DrawCustomProperty(Property& prop) override;
37#endif
38
39 // Confirm Button
40 void SetConfirmText(const std::string& text);
41 const std::string& GetConfirmText() const;
42 void SetConfirmNormalColor(glm::vec4 color);
43 glm::vec4 GetConfirmNormalColor() const;
44 void SetConfirmHoveredColor(glm::vec4 color);
45 glm::vec4 GetConfirmHoveredColor() const;
46 void SetConfirmPressedColor(glm::vec4 color);
47 glm::vec4 GetConfirmPressedColor() const;
48 void SetConfirmTexture(Texture* texture);
49 Texture* GetConfirmTexture();
50 void SetShowConfirmButton(bool show);
51 bool GetShowConfirmButton() const;
52
53 // Reject Button
54 void SetRejectText(const std::string& text);
55 const std::string& GetRejectText() const;
56 void SetRejectNormalColor(glm::vec4 color);
57 glm::vec4 GetRejectNormalColor() const;
58 void SetRejectHoveredColor(glm::vec4 color);
59 glm::vec4 GetRejectHoveredColor() const;
60 void SetRejectPressedColor(glm::vec4 color);
61 glm::vec4 GetRejectPressedColor() const;
62 void SetRejectTexture(Texture* texture);
63 Texture* GetRejectTexture();
64 void SetShowRejectButton(bool show);
65 bool GetShowRejectButton() const;
66
67 // Button Bar Layout
68 void SetButtonBarHeight(float height);
69 float GetButtonBarHeight() const;
70 void SetButtonSpacing(float spacing);
71 float GetButtonSpacing() const;
72 void SetButtonBarAlignment(ButtonBarAlignment alignment);
73 ButtonBarAlignment GetButtonBarAlignment() const;
74 void SetButtonBarColor(glm::vec4 color);
75 glm::vec4 GetButtonBarColor() const;
76 void SetButtonWidth(float width);
77 float GetButtonWidth() const;
78 void SetButtonBarPadding(float padding);
79 float GetButtonBarPadding() const;
80
81 // Dialog Actions
82 void Confirm();
83 void Reject();
84 void RefreshButtonBar();
85
86 // Internal widget access
87 Canvas* GetButtonBar();
88 Button* GetConfirmButton();
89 Button* GetRejectButton();
90
91protected:
92
93 static bool HandlePropChange(Datum* datum, uint32_t index, const void* newValue);
94 static void OnConfirmButtonActivated(Node* listener, const std::vector<Datum>& args);
95 static void OnRejectButtonActivated(Node* listener, const std::vector<Datum>& args);
96 void EnsureButtonBar();
97 void UpdateButtonBar();
98
99 // Confirm Button Properties
100 std::string mConfirmText = "Confirm";
101 glm::vec4 mConfirmNormalColor = glm::vec4(0.2f, 0.5f, 0.2f, 1.0f);
102 glm::vec4 mConfirmHoveredColor = glm::vec4(0.3f, 0.6f, 0.3f, 1.0f);
103 glm::vec4 mConfirmPressedColor = glm::vec4(0.15f, 0.4f, 0.15f, 1.0f);
105 bool mShowConfirmButton = true;
106
107 // Reject Button Properties
108 std::string mRejectText = "Cancel";
109 glm::vec4 mRejectNormalColor = glm::vec4(0.5f, 0.2f, 0.2f, 1.0f);
110 glm::vec4 mRejectHoveredColor = glm::vec4(0.6f, 0.3f, 0.3f, 1.0f);
111 glm::vec4 mRejectPressedColor = glm::vec4(0.4f, 0.15f, 0.15f, 1.0f);
113 bool mShowRejectButton = true;
114
115 // Button Bar Layout Properties
116 float mButtonBarHeight = 40.0f;
117 float mButtonSpacing = 10.0f;
118 float mButtonWidth = 80.0f;
119 float mButtonBarPadding = 8.0f;
121 glm::vec4 mButtonBarColor = glm::vec4(0.18f, 0.18f, 0.25f, 1.0f);
122
123 // Transient children
124 Canvas* mButtonBar = nullptr;
125 Quad* mButtonBarBackground = nullptr;
126 Button* mConfirmButton = nullptr;
127 Button* mRejectButton = nullptr;
128 bool mButtonSignalsConnected = false;
129};
ButtonBarAlignment
Definition DialogWindow.h:14
#define POLYPHASE_API
Definition PolyphaseAPI.h:31
Definition AssetRef.h:18
Definition Button.h:21
Definition Canvas.h:9
Definition Datum.h:164
Definition DialogWindow.h:23
DECLARE_NODE(DialogWindow, Window)
TextureRef mRejectTexture
Definition DialogWindow.h:112
TextureRef mConfirmTexture
Definition DialogWindow.h:104
Definition Node.h:67
virtual bool DrawCustomProperty(Property &prop)
Definition Object.h:46
Definition Property.h:14
Definition Quad.h:20
Definition Texture.h:10
Definition Window.h:22
virtual void Tick(float deltaTime) override
Definition Window.cpp:374
virtual void GatherProperties(std::vector< Property > &props) override
Definition Window.cpp:319
static bool HandlePropChange(Datum *datum, uint32_t index, const void *newValue)
Definition Window.cpp:21
virtual void Create() override
Definition Window.cpp:190
virtual void OnInstanced() override
Definition Window.cpp:312
virtual void PreRender() override
Definition Window.cpp:533
virtual void Start() override
Definition Window.cpp:280