From 2d43b73e572b46192e6509dcf73e76a6cf1d2789 Mon Sep 17 00:00:00 2001 From: zhenyan121 <3367366583@qq.com> Date: Sun, 28 Dec 2025 16:34:16 +0800 Subject: [PATCH] feat: add player display label --- src/scenes/gameplay/GameScene.cpp | 2 ++ src/ui/managers/GameUIManager.cpp | 24 ++++++++++++++++++++++-- src/ui/managers/GameUIManager.h | 2 ++ 3 files changed, 26 insertions(+), 2 deletions(-) diff --git a/src/scenes/gameplay/GameScene.cpp b/src/scenes/gameplay/GameScene.cpp index dbb83c8..39841c2 100644 --- a/src/scenes/gameplay/GameScene.cpp +++ b/src/scenes/gameplay/GameScene.cpp @@ -43,6 +43,8 @@ void GameScene::postHandleClick() { m_boardRenderer->updateMovementRange(m_gameSession->getSelectedPiece(), m_gameSession->getCurrentActionType()); m_gameUIManager->updateGameState(m_gameSession->getGameState()); m_boardRenderer->setGameState(m_gameSession->getGameState()); + m_gameUIManager->updatePlayerTurn(m_gameSession->getCurrentPlayer()); + } void GameScene::handleBoardClick(int row, int col) { diff --git a/src/ui/managers/GameUIManager.cpp b/src/ui/managers/GameUIManager.cpp index 840a4c5..1371293 100644 --- a/src/ui/managers/GameUIManager.cpp +++ b/src/ui/managers/GameUIManager.cpp @@ -113,6 +113,18 @@ void GameUIManager::updateGameState(GameState state) { m_currentGameState = state; } +void GameUIManager::updatePlayerTurn(PlayerID playerID) { + auto labelIt = m_labels.find(makeHash("PlayerLabel")); + if (labelIt != m_labels.end()) { + auto& label = labelIt->second; + if (playerID == PlayerID::P1) { + label->setText("Player 1's Turn"); + } else if (playerID == PlayerID::P2) { + label->setText("Player 2's Turn"); + } + } +} + void GameUIManager::setupUIComponents() { // 这里可以添加更多的UI组件初始化逻辑 @@ -120,7 +132,7 @@ void GameUIManager::setupUIComponents() { "ActionButton", "Please Choose", 20, - 20, + 60, [](){ } @@ -156,7 +168,14 @@ void GameUIManager::setupUIComponents() { ); m_buttons.emplace(QuitButton->getNameHash(), std::move(QuitButton)); - + + auto playerLabel = UIWidgetFactory::createStandardLabel( + "PlayerLabel", + "Player 1's Turn", + 20, + 20 + ); + m_labels.emplace(playerLabel->getNameHash(), std::move(playerLabel)); } @@ -175,3 +194,4 @@ bool GameUIManager::handleClick(int lx, int ly) { } return false; } + diff --git a/src/ui/managers/GameUIManager.h b/src/ui/managers/GameUIManager.h index 1d84981..7a1281d 100644 --- a/src/ui/managers/GameUIManager.h +++ b/src/ui/managers/GameUIManager.h @@ -22,6 +22,8 @@ public: void updateGameState(GameState state); + void updatePlayerTurn(PlayerID playerID); + bool handleClick(int logicalX, int logicalY); protected: std::function m_restartCallback;