mirror of
https://github.com/zhenyan121/SporeBG-Conid.git
synced 2026-04-10 06:14:08 +08:00
Divide render into renderWorld and renderUI
This commit is contained in:
@@ -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 坐标
|
||||
|
||||
@@ -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<int, int> SceneManager::getWindowDimensions() const {
|
||||
|
||||
@@ -107,10 +107,15 @@ public:
|
||||
|
||||
/**
|
||||
* @brief 渲染当前场景
|
||||
* @details 调用当前场景的 render() 方法进行每帧渲染
|
||||
* @details 调用当前场景的 renderWorld() 方法进行每帧渲染
|
||||
*/
|
||||
void renderCurrent();
|
||||
void renderWorld();
|
||||
|
||||
/**
|
||||
* @brief 渲染当前场景的 UI
|
||||
* @details 调用当前场景的 renderUI() 方法进行 UI 渲染
|
||||
*/
|
||||
void renderUI();
|
||||
/**
|
||||
* @brief 处理场景事件的回调函数
|
||||
* @param event 场景事件对象
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user