diff --git a/src/scenes/base/Scene.h b/src/scenes/base/Scene.h index 2f64359..e734ca2 100644 --- a/src/scenes/base/Scene.h +++ b/src/scenes/base/Scene.h @@ -39,10 +39,13 @@ public: * @brief 每帧更新 */ virtual void update() = 0; + + virtual void renderWorld() = 0; // 逻辑世界 + virtual void renderUI() = 0; // 屏幕 UI /** * @brief 每帧渲染 */ - virtual void render() = 0; + //virtual void render() = 0; /** * @brief 处理点击事件 * @param x 点击位置的 X 坐标 diff --git a/src/scenes/base/SceneManager.cpp b/src/scenes/base/SceneManager.cpp index 212ff7f..f94ad6d 100644 --- a/src/scenes/base/SceneManager.cpp +++ b/src/scenes/base/SceneManager.cpp @@ -162,8 +162,12 @@ void SceneManager::updateCurrent() { } -void SceneManager::renderCurrent() { - if (m_scene) m_scene->render(); +void SceneManager::renderWorld() { + if (m_scene) m_scene->renderWorld(); +} + +void SceneManager::renderUI() { + if (m_scene) m_scene->renderUI(); } std::pair SceneManager::getWindowDimensions() const { diff --git a/src/scenes/base/SceneManager.h b/src/scenes/base/SceneManager.h index 984b537..e7a0bfd 100644 --- a/src/scenes/base/SceneManager.h +++ b/src/scenes/base/SceneManager.h @@ -107,10 +107,15 @@ public: /** * @brief 渲染当前场景 - * @details 调用当前场景的 render() 方法进行每帧渲染 + * @details 调用当前场景的 renderWorld() 方法进行每帧渲染 */ - void renderCurrent(); + void renderWorld(); + /** + * @brief 渲染当前场景的 UI + * @details 调用当前场景的 renderUI() 方法进行 UI 渲染 + */ + void renderUI(); /** * @brief 处理场景事件的回调函数 * @param event 场景事件对象 diff --git a/src/scenes/gameplay/GameScene.cpp b/src/scenes/gameplay/GameScene.cpp index 824d708..c5947af 100644 --- a/src/scenes/gameplay/GameScene.cpp +++ b/src/scenes/gameplay/GameScene.cpp @@ -32,7 +32,7 @@ void GameScene::update() { } -void GameScene::render() { +void GameScene::renderWorld() { m_boardRenderer->drawBackground(); m_boardRenderer->drawBoard(); @@ -40,8 +40,12 @@ void GameScene::render() { m_boardRenderer->drawPiece(m_gameSession->getSelectedPiece()); m_boardRenderer->drawMovementRange(); m_boardRenderer->renderBlackOverlay(); - m_uiRenderer->renderUI(m_gameUIManager->getUIRenderData()); + +} + +void GameScene::renderUI() { + m_uiRenderer->renderUI(m_gameUIManager->getUIRenderData()); } void GameScene::handleClick(float screenX, float screenY) { diff --git a/src/scenes/gameplay/GameScene.h b/src/scenes/gameplay/GameScene.h index e8895b7..2e97d51 100644 --- a/src/scenes/gameplay/GameScene.h +++ b/src/scenes/gameplay/GameScene.h @@ -14,7 +14,8 @@ public: void onEnter(SDL_Renderer* renderer, int WIDTH, int HEIGHT, UIRenderer* uiRenderer) override; void update() override; - void render() override; + void renderWorld() override; // 逻辑世界 + void renderUI() override; // 屏幕 UI void handleClick(float screenX, float screenY) override; void renderMousePosition(float x, float y) override; diff --git a/src/scenes/menu/MainMenuScene.cpp b/src/scenes/menu/MainMenuScene.cpp index 9ac5775..2159918 100644 --- a/src/scenes/menu/MainMenuScene.cpp +++ b/src/scenes/menu/MainMenuScene.cpp @@ -30,12 +30,18 @@ void MainMenuScene::update() { // 更新场景逻辑 } -void MainMenuScene::render() { +void MainMenuScene::renderWorld() { + SDL_FRect test = {20, 20, 20, 20}; // 渲染场景内容 + SDL_SetRenderDrawColor(m_renderer, 20, 20,20, 255); + SDL_RenderFillRect(m_renderer, &test); + +} + +void MainMenuScene::renderUI() { const UIRenderData& uiRenderData = m_mainMenuUIManager->getUIRenderData(); m_uiRenderer->renderUI(uiRenderData); - } void MainMenuScene::handleClick(float x, float y) { diff --git a/src/scenes/menu/MainMenuScene.h b/src/scenes/menu/MainMenuScene.h index ec1507d..475dddf 100644 --- a/src/scenes/menu/MainMenuScene.h +++ b/src/scenes/menu/MainMenuScene.h @@ -11,7 +11,8 @@ public: void onExit() override; void update() override; - void render() override; + void renderWorld() override; // 逻辑世界 + void renderUI() override; // 屏幕 UI void handleClick(float x, float y) override; void renderMousePosition(float x, float y) override;