mirror of
https://github.com/zhenyan121/SporeBG-Conid.git
synced 2026-04-10 06:14:08 +08:00
Added QuitButton
This commit is contained in:
@@ -12,6 +12,7 @@
|
||||
|
||||
class IUIManager {
|
||||
public:
|
||||
using SceneEventCallback = std::function<void(const std::string&)>;
|
||||
virtual ~IUIManager() = default;
|
||||
|
||||
virtual void init() = 0;
|
||||
@@ -26,9 +27,8 @@ protected:
|
||||
std::unordered_map<int, std::unique_ptr<Button>> m_buttons;
|
||||
std::unordered_map<int, std::unique_ptr<Label>> m_labels;
|
||||
UIRenderData m_uiRenderData;
|
||||
SDL_Renderer* m_renderer = nullptr;
|
||||
TextRenderer* m_textRenderer = nullptr;
|
||||
|
||||
|
||||
SceneEventCallback m_eventCallback;
|
||||
size_t makeHash(const std::string& name) {
|
||||
return std::hash<std::string>{}(name);
|
||||
}
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
#include "GameUIManager.h"
|
||||
#include "ui/base/UIWidgetFactory.h"
|
||||
GameUIManager::GameUIManager(SDL_Renderer* renderer, TextRenderer* textRenderer)
|
||||
GameUIManager::GameUIManager(SceneEventCallback eventCallback)
|
||||
{
|
||||
m_renderer = renderer;
|
||||
m_textRenderer = textRenderer;
|
||||
m_eventCallback = eventCallback;
|
||||
}
|
||||
|
||||
GameUIManager::~GameUIManager() {
|
||||
@@ -145,6 +144,18 @@ void GameUIManager::setupUIComponents() {
|
||||
restartButton->setVisible(false); // 初始时隐藏
|
||||
restartButton->setEnabled(false);
|
||||
m_buttons.emplace(restartButton->getNameHash(), std::move(restartButton));
|
||||
|
||||
auto QuitButton = UIWidgetFactory::createStandardButton(
|
||||
"QuitButton",
|
||||
"Quit",
|
||||
550,
|
||||
20,
|
||||
[this](){
|
||||
m_eventCallback("MainMenuScene");
|
||||
}
|
||||
|
||||
);
|
||||
m_buttons.emplace(QuitButton->getNameHash(), std::move(QuitButton));
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
#include <functional>
|
||||
class GameUIManager : public IUIManager {
|
||||
public:
|
||||
GameUIManager(SDL_Renderer* renderer, TextRenderer* textRenderer);
|
||||
GameUIManager(SceneEventCallback eventCallback);
|
||||
|
||||
~GameUIManager();
|
||||
|
||||
|
||||
@@ -1,11 +1,9 @@
|
||||
#include "MainMenuUIManager.h"
|
||||
|
||||
#include "ui/base/UIWidgetFactory.h"
|
||||
MainMenuUIManager::MainMenuUIManager(SDL_Renderer* renderer,
|
||||
TextRenderer* textRenderer,
|
||||
MainMenuUIManager::MainMenuUIManager(
|
||||
SceneEventCallback eventCallback) {
|
||||
m_renderer = renderer;
|
||||
m_textRenderer = textRenderer;
|
||||
|
||||
m_eventCallback = eventCallback;
|
||||
}
|
||||
|
||||
|
||||
@@ -6,9 +6,8 @@ class TextRenderer;
|
||||
class MainMenuUIManager : public IUIManager {
|
||||
public:
|
||||
|
||||
using SceneEventCallback = std::function<void(const std::string&)>;
|
||||
MainMenuUIManager(SDL_Renderer* renderer,
|
||||
TextRenderer* textRenderer,
|
||||
|
||||
MainMenuUIManager(
|
||||
SceneEventCallback eventCallback
|
||||
);
|
||||
~MainMenuUIManager();
|
||||
@@ -24,7 +23,7 @@ public:
|
||||
void handleClick(int logicalX, int logicalY);
|
||||
|
||||
private:
|
||||
SceneEventCallback m_eventCallback;
|
||||
|
||||
|
||||
|
||||
};
|
||||
Reference in New Issue
Block a user