diff --git a/src/scenes/gameplay/GameScene.cpp b/src/scenes/gameplay/GameScene.cpp index 707429c..b7c23a3 100644 --- a/src/scenes/gameplay/GameScene.cpp +++ b/src/scenes/gameplay/GameScene.cpp @@ -11,7 +11,7 @@ GameScene::~GameScene() { void GameScene::onEnter(SDL_Renderer* renderer, int WIDTH, int HEIGHT, UIRenderer* uiRenderer){ m_renderer = renderer; m_uiRenderer = uiRenderer; - m_gameUIManager = std::make_unique(); + m_gameUIManager = std::make_unique(renderer, uiRenderer->getTextRenderer()); m_gameUIManager->init(); m_gameRenderer = std::make_unique(WIDTH, HEIGHT, renderer); m_gameSession = std::make_unique(); @@ -49,3 +49,7 @@ void GameScene::handleClick(float screenX, float screenY) { SDL_Log("invail cilck aera!"); } } + +void GameScene::renderMousePosition(float x, float y) { + m_gameUIManager->UpdateMousePositon(x, y); +} \ No newline at end of file diff --git a/src/scenes/gameplay/GameScene.h b/src/scenes/gameplay/GameScene.h index 0411bef..8a7ebef 100644 --- a/src/scenes/gameplay/GameScene.h +++ b/src/scenes/gameplay/GameScene.h @@ -16,6 +16,8 @@ public: void update() override; void render() override; void handleClick(float screenX, float screenY) override; + + void renderMousePosition(float x, float y) override; private: std::unique_ptr m_gameRenderer; diff --git a/src/utils/CoordinateTools.cpp b/src/utils/CoordinateTools.cpp index 8e3c55b..f1b72f4 100644 --- a/src/utils/CoordinateTools.cpp +++ b/src/utils/CoordinateTools.cpp @@ -1,6 +1,11 @@ #include "CoordinateTools.h" std::pair physicalToLogical(const float screenX, const float screenY, SDL_Renderer* renderer) { + if (renderer == nullptr) { + SDL_Log("Renderer is null in physicalToLogical\n"); + return {static_cast(screenX), static_cast(screenY)}; + } + // 将窗口坐标转为逻辑坐标 float logicalX, logicalY; SDL_RenderCoordinatesFromWindow(