mirror of
https://github.com/zhenyan121/SporeBG-Conid.git
synced 2026-04-10 14:24:10 +08:00
The calculation process has been modified, and now it is performed directly in the gameapplication class
This commit is contained in:
@@ -51,13 +51,13 @@ public:
|
||||
* @param x 点击位置的 X 坐标
|
||||
* @param y 点击位置的 Y 坐标
|
||||
*/
|
||||
virtual void handleClick(float x, float y) = 0;
|
||||
virtual void handleClick(int logicalX, int logicalY) = 0;
|
||||
/**
|
||||
* @brief 渲染鼠标位置相关内容
|
||||
* @param x 鼠标位置的 X 坐标
|
||||
* @param y 鼠标位置的 Y 坐标
|
||||
*/
|
||||
virtual void renderMousePosition(float x, float y){};
|
||||
virtual void renderMousePosition(int logicalX, int logicalY){};
|
||||
/**
|
||||
* @brief 设置场景事件回调函数
|
||||
* @param callback 场景事件回调函数
|
||||
|
||||
@@ -147,14 +147,14 @@ void SceneManager::changeScene(const std::string& sceneName) {
|
||||
|
||||
|
||||
|
||||
void SceneManager::handleClickCurrent(std::pair<float, float> clickOn) {
|
||||
auto [screenX, screenY] = clickOn;
|
||||
if (m_scene) m_scene->handleClick(screenX, screenY);
|
||||
void SceneManager::handleClickCurrent(std::pair<int, int> clickOn) {
|
||||
auto [logicalX, logicalY] = clickOn;
|
||||
if (m_scene) m_scene->handleClick(logicalX, logicalY);
|
||||
}
|
||||
|
||||
void SceneManager::handleMousePosition(std::pair<float, float> mousePosition) {
|
||||
auto [screenX, screenY] = mousePosition;
|
||||
if (m_scene) m_scene->renderMousePosition(screenX, screenY);
|
||||
void SceneManager::handleMousePosition(std::pair<int, int> mousePosition) {
|
||||
auto [logicalX, logicalY] = mousePosition;
|
||||
if (m_scene) m_scene->renderMousePosition(logicalX, logicalY);
|
||||
}
|
||||
|
||||
void SceneManager::updateCurrent() {
|
||||
|
||||
@@ -90,14 +90,14 @@ public:
|
||||
* @param clickOn 点击位置坐标对 {x, y}
|
||||
* @details 将点击事件转发给当前场景的 handleClick() 方法进行处理
|
||||
*/
|
||||
void handleClickCurrent(std::pair<float, float> clickOn);
|
||||
void handleClickCurrent(std::pair<int, int> clickOn);
|
||||
|
||||
/**
|
||||
* @brief 处理当前场景的鼠标位置事件
|
||||
* @param mousePosition 鼠标位置坐标对 {x, y}
|
||||
* @details 将鼠标位置事件转发给当前场景的 renderMousePosition() 方法进行处理
|
||||
*/
|
||||
void handleMousePosition(std::pair<float, float> mousePosition);
|
||||
void handleMousePosition(std::pair<int, int> mousePosition);
|
||||
|
||||
/**
|
||||
* @brief 更新当前场景
|
||||
|
||||
@@ -48,8 +48,8 @@ void GameScene::renderUI() {
|
||||
m_uiRenderer->renderUI(m_gameUIManager->getUIRenderData());
|
||||
}
|
||||
|
||||
void GameScene::handleClick(float screenX, float screenY) {
|
||||
if (m_gameUIManager->handleClick(screenX, screenY)) {
|
||||
void GameScene::handleClick(int logicalX, int logicalY) {
|
||||
if (m_gameUIManager->handleClick(logicalX, logicalY)) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -57,7 +57,7 @@ void GameScene::handleClick(float screenX, float screenY) {
|
||||
SDL_Log("Game is not running, click ignored.");
|
||||
return;
|
||||
}
|
||||
auto click = m_CoordinateConverter->ScreenToBoard(screenX, screenY, m_boardRenderer->getBoardArea());
|
||||
auto click = m_CoordinateConverter->ScreenToBoard(logicalX, logicalY, m_boardRenderer->getBoardArea());
|
||||
if (click) {
|
||||
auto [row, col] = click.value();
|
||||
m_gameSession->handleCoordinateInput(row, col);
|
||||
@@ -75,8 +75,8 @@ void GameScene::handleClick(float screenX, float screenY) {
|
||||
}
|
||||
}
|
||||
|
||||
void GameScene::renderMousePosition(float x, float y) {
|
||||
m_gameUIManager->UpdateMousePositon(x, y);
|
||||
void GameScene::renderMousePosition(int logicalX, int logicalY) {
|
||||
m_gameUIManager->updateMousePositon(logicalX, logicalY);
|
||||
}
|
||||
|
||||
void GameScene::restartGame() {
|
||||
|
||||
@@ -16,9 +16,9 @@ public:
|
||||
void update() override;
|
||||
void renderWorld() override; // 逻辑世界
|
||||
void renderUI() override; // 屏幕 UI
|
||||
void handleClick(float screenX, float screenY) override;
|
||||
void handleClick(int logicalX, int logicalYY) override;
|
||||
|
||||
void renderMousePosition(float x, float y) override;
|
||||
void renderMousePosition(int logicalX, int logicalY) override;
|
||||
|
||||
void restartGame();
|
||||
private:
|
||||
|
||||
@@ -44,12 +44,12 @@ void MainMenuScene::renderUI() {
|
||||
m_uiRenderer->renderUI(uiRenderData);
|
||||
}
|
||||
|
||||
void MainMenuScene::handleClick(float x, float y) {
|
||||
void MainMenuScene::handleClick(int logicalX, int logicalY) {
|
||||
// 处理点击事件
|
||||
m_mainMenuUIManager->handleClick(x, y);
|
||||
m_mainMenuUIManager->handleClick(logicalX, logicalY);
|
||||
}
|
||||
|
||||
|
||||
void MainMenuScene::renderMousePosition(float x, float y) {
|
||||
m_mainMenuUIManager->UpdateMousePositon(x, y);
|
||||
void MainMenuScene::renderMousePosition(int logicalX, int logicalY) {
|
||||
m_mainMenuUIManager->updateMousePositon(logicalX, logicalY);
|
||||
}
|
||||
@@ -13,9 +13,9 @@ public:
|
||||
void update() override;
|
||||
void renderWorld() override; // 逻辑世界
|
||||
void renderUI() override; // 屏幕 UI
|
||||
void handleClick(float x, float y) override;
|
||||
void handleClick(int logicalX, int logicalY) override;
|
||||
|
||||
void renderMousePosition(float x, float y) override;
|
||||
void renderMousePosition(int logicalX, int logicalY) override;
|
||||
private:
|
||||
// 其他私有成员变量和方法
|
||||
std::unique_ptr<MainMenuUIManager> m_mainMenuUIManager = nullptr;
|
||||
|
||||
Reference in New Issue
Block a user