Render the Actiontype

This commit is contained in:
2025-12-13 18:35:49 +08:00
parent 4a71e4f742
commit 034c1a858e
5 changed files with 42 additions and 5 deletions

View File

@@ -199,3 +199,7 @@ int GameSession::getOldComponentID(int row, int col) {
const Board* GameSession::getBoard() const { const Board* GameSession::getBoard() const {
return m_board.get(); return m_board.get();
} }
ActionType GameSession::getCurrentActionType() const {
return m_currentActionType;
}

View File

@@ -52,4 +52,7 @@ public:
std::optional<std::pair<int, int>> getSelectedPiece() const; std::optional<std::pair<int, int>> getSelectedPiece() const;
const Board* getBoard() const; const Board* getBoard() const;
ActionType getCurrentActionType() const;
}; };

View File

@@ -45,6 +45,7 @@ void GameScene::handleClick(float screenX, float screenY) {
auto [row, col] = click.value(); auto [row, col] = click.value();
m_gameSession->handleCoordinateInput(row, col); m_gameSession->handleCoordinateInput(row, col);
m_gameSession->printBoard(); m_gameSession->printBoard();
m_gameUIManager->updateActionType( m_gameSession->getCurrentActionType());
} else { } else {
SDL_Log("invail cilck aera!"); SDL_Log("invail cilck aera!");
} }

View File

@@ -17,9 +17,10 @@ void GameUIManager::init() {
button->setPosition(20, 20); button->setPosition(20, 20);
button->setEnabled(true); button->setEnabled(true);
button->setVisible(true); button->setVisible(true);
button->setText("hello,world!!", {"SourceHanSansSC-Regular.otf", 48, {0, 0, 0, 255}}); button->setText("Please Choose", {"SourceHanSansSC-Regular.otf", 48, {0, 0, 0, 255}});
button->setName("TestButton"); button->setName("ActionButton");
m_buttons.emplace(button->getNameHash(), std::move(button)); m_buttons.emplace(button->getNameHash(), std::move(button));
auto label = std::make_unique<Label>(); auto label = std::make_unique<Label>();
label->setPosition(1200, 20); label->setPosition(1200, 20);
label->setText("0 0", {"SourceHanSansSC-Regular.otf", 48, {0, 0, 0, 255}}); label->setText("0 0", {"SourceHanSansSC-Regular.otf", 48, {0, 0, 0, 255}});
@@ -67,3 +68,28 @@ void GameUIManager::UpdateMousePositon(float x, float y) {
m_labels[makeHash("MousePositionLabel")]->setText(pos); m_labels[makeHash("MousePositionLabel")]->setText(pos);
} }
void GameUIManager::updateActionType(ActionType type) {
// 根据传入的 ActionType 更新 UI 组件状态
auto buttonIt = m_buttons.find(makeHash("ActionButton"));
if (buttonIt != m_buttons.end()) {
auto& button = buttonIt->second;
switch (type) {
case ActionType::GROW:
button->setBackgroundColor({255, 100, 0, 255}); // 橙色
button->setText("GROW");
break;
case ActionType::MOVE:
button->setBackgroundColor({0, 255, 0, 255}); // 绿色
button->setText("MOVE");
break;
case ActionType::SPORE:
button->setBackgroundColor({0, 0, 255, 255}); // 蓝色
button->setText("SPORE");
break;
default:
button->setBackgroundColor({255, 100, 0, 255}); // 默认橙色
break;
}
}
}

View File

@@ -1,9 +1,7 @@
#pragma once #pragma once
#include "ui/base/IUIManager.h" #include "ui/base/IUIManager.h"
#include "game/GameTypes.h"
class GameUIManager : public IUIManager { class GameUIManager : public IUIManager {
private:
public: public:
GameUIManager(SDL_Renderer* renderer, TextRenderer* textRenderer); GameUIManager(SDL_Renderer* renderer, TextRenderer* textRenderer);
@@ -16,4 +14,9 @@ public:
void CollectRenderData(); void CollectRenderData();
void UpdateMousePositon(float x, float y); void UpdateMousePositon(float x, float y);
void updateActionType(ActionType type);
private:
}; };