mirror of
https://github.com/zhenyan121/SporeBG-Conid.git
synced 2026-04-10 14:24:10 +08:00
Divide render into renderWorld and renderUI
This commit is contained in:
@@ -39,10 +39,13 @@ public:
|
|||||||
* @brief 每帧更新
|
* @brief 每帧更新
|
||||||
*/
|
*/
|
||||||
virtual void update() = 0;
|
virtual void update() = 0;
|
||||||
|
|
||||||
|
virtual void renderWorld() = 0; // 逻辑世界
|
||||||
|
virtual void renderUI() = 0; // 屏幕 UI
|
||||||
/**
|
/**
|
||||||
* @brief 每帧渲染
|
* @brief 每帧渲染
|
||||||
*/
|
*/
|
||||||
virtual void render() = 0;
|
//virtual void render() = 0;
|
||||||
/**
|
/**
|
||||||
* @brief 处理点击事件
|
* @brief 处理点击事件
|
||||||
* @param x 点击位置的 X 坐标
|
* @param x 点击位置的 X 坐标
|
||||||
|
|||||||
@@ -162,8 +162,12 @@ void SceneManager::updateCurrent() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void SceneManager::renderCurrent() {
|
void SceneManager::renderWorld() {
|
||||||
if (m_scene) m_scene->render();
|
if (m_scene) m_scene->renderWorld();
|
||||||
|
}
|
||||||
|
|
||||||
|
void SceneManager::renderUI() {
|
||||||
|
if (m_scene) m_scene->renderUI();
|
||||||
}
|
}
|
||||||
|
|
||||||
std::pair<int, int> SceneManager::getWindowDimensions() const {
|
std::pair<int, int> SceneManager::getWindowDimensions() const {
|
||||||
|
|||||||
@@ -107,10 +107,15 @@ public:
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief 渲染当前场景
|
* @brief 渲染当前场景
|
||||||
* @details 调用当前场景的 render() 方法进行每帧渲染
|
* @details 调用当前场景的 renderWorld() 方法进行每帧渲染
|
||||||
*/
|
*/
|
||||||
void renderCurrent();
|
void renderWorld();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief 渲染当前场景的 UI
|
||||||
|
* @details 调用当前场景的 renderUI() 方法进行 UI 渲染
|
||||||
|
*/
|
||||||
|
void renderUI();
|
||||||
/**
|
/**
|
||||||
* @brief 处理场景事件的回调函数
|
* @brief 处理场景事件的回调函数
|
||||||
* @param event 场景事件对象
|
* @param event 场景事件对象
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ void GameScene::update() {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void GameScene::render() {
|
void GameScene::renderWorld() {
|
||||||
|
|
||||||
m_boardRenderer->drawBackground();
|
m_boardRenderer->drawBackground();
|
||||||
m_boardRenderer->drawBoard();
|
m_boardRenderer->drawBoard();
|
||||||
@@ -40,8 +40,12 @@ void GameScene::render() {
|
|||||||
m_boardRenderer->drawPiece(m_gameSession->getSelectedPiece());
|
m_boardRenderer->drawPiece(m_gameSession->getSelectedPiece());
|
||||||
m_boardRenderer->drawMovementRange();
|
m_boardRenderer->drawMovementRange();
|
||||||
m_boardRenderer->renderBlackOverlay();
|
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) {
|
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 onEnter(SDL_Renderer* renderer, int WIDTH, int HEIGHT, UIRenderer* uiRenderer) override;
|
||||||
|
|
||||||
void update() override;
|
void update() override;
|
||||||
void render() override;
|
void renderWorld() override; // 逻辑世界
|
||||||
|
void renderUI() override; // 屏幕 UI
|
||||||
void handleClick(float screenX, float screenY) override;
|
void handleClick(float screenX, float screenY) override;
|
||||||
|
|
||||||
void renderMousePosition(float x, float y) 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();
|
const UIRenderData& uiRenderData = m_mainMenuUIManager->getUIRenderData();
|
||||||
m_uiRenderer->renderUI(uiRenderData);
|
m_uiRenderer->renderUI(uiRenderData);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainMenuScene::handleClick(float x, float y) {
|
void MainMenuScene::handleClick(float x, float y) {
|
||||||
|
|||||||
@@ -11,7 +11,8 @@ public:
|
|||||||
void onExit() override;
|
void onExit() override;
|
||||||
|
|
||||||
void update() override;
|
void update() override;
|
||||||
void render() override;
|
void renderWorld() override; // 逻辑世界
|
||||||
|
void renderUI() override; // 屏幕 UI
|
||||||
void handleClick(float x, float y) override;
|
void handleClick(float x, float y) override;
|
||||||
|
|
||||||
void renderMousePosition(float x, float y) override;
|
void renderMousePosition(float x, float y) override;
|
||||||
|
|||||||
Reference in New Issue
Block a user