diff --git a/README.md b/README.md index 53d2383..8900614 100644 --- a/README.md +++ b/README.md @@ -11,6 +11,10 @@ cmake -G "Ninja" -DCMAKE_BUILD_TYPE=Debug -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COM ninja ``` +## 目前更新计划 +- 使用位图渲染文字,移除TTF + + ## 待添加玩法 - 生命值 - 道具(直接消灭一个孢子之类的) diff --git a/src/core/GameApplication.cpp b/src/core/GameApplication.cpp index ffb10ed..a4457aa 100644 --- a/src/core/GameApplication.cpp +++ b/src/core/GameApplication.cpp @@ -53,10 +53,13 @@ SDL_AppResult GameApplication::handleInputEvent(SDL_Event* event) { m_sceneManager->handleClickCurrent(input.mouseCilckOn); } m_sceneManager->handleMousePosition(input.mouseCurrentPosition); + m_windowManager->setFullscreen(input.isFullscreen); return result; } void GameApplication::run() { + m_windowManager->Clear(); m_sceneManager->updateCurrent(); m_sceneManager->renderCurrent(); + m_windowManager->Present(); } \ No newline at end of file diff --git a/src/graphics/font/FontManager.cpp b/src/graphics/font/FontManager.cpp index 82b2a9e..49175ec 100644 --- a/src/graphics/font/FontManager.cpp +++ b/src/graphics/font/FontManager.cpp @@ -36,7 +36,7 @@ TTF_Font* FontManager::loadFont(const std::string& fontID, int ptSize) { // 字体加载失败,抛出异常 throw std::runtime_error("无法加载字体: " + fontID); } - + TTF_SetFontHinting(font, TTF_HINTING_MONO); // 单色渲染,不抗锯齿 // 将新加载的字体存入缓存 m_fonts[key] = font; return font; diff --git a/src/graphics/font/TextRenderer.cpp b/src/graphics/font/TextRenderer.cpp index d1a3573..46aebfe 100644 --- a/src/graphics/font/TextRenderer.cpp +++ b/src/graphics/font/TextRenderer.cpp @@ -91,7 +91,7 @@ TextRenderer::CachedText TextRenderer::createAndCacheTexture(const std::string& SDL_Log("错误:无法创建纹理\n"); return result; } - + SDL_SetTextureScaleMode(texture, SDL_SCALEMODE_NEAREST); // 保存结果 result.texture = texture; result.width = width; diff --git a/src/scenes/base/Scene.h b/src/scenes/base/Scene.h index 6053d64..2f64359 100644 --- a/src/scenes/base/Scene.h +++ b/src/scenes/base/Scene.h @@ -68,7 +68,7 @@ protected: SDL_Renderer* m_renderer; ///< SDL 渲染器指针 EventCallback m_eventCallback; ///< 场景事件回调函数 - void beginFrame() { + /*void beginFrame() { if (!m_renderer) { SDL_Log("Renderer is null in beginFrame!"); return; @@ -77,12 +77,12 @@ protected: SDL_SetRenderDrawColor(m_renderer, 255, 255, 255, 255); SDL_RenderClear(m_renderer); //std::cout << "begin frame\n"; - } + }*/ - void endFrame() { + /*void endFrame() { // 提交到屏幕 //std::cout << "end frame\n"; SDL_RenderPresent(m_renderer); - } + }*/ }; diff --git a/src/scenes/base/SceneManager.h b/src/scenes/base/SceneManager.h index 226175e..984b537 100644 --- a/src/scenes/base/SceneManager.h +++ b/src/scenes/base/SceneManager.h @@ -125,7 +125,7 @@ private: std::stack> m_scenes; ///< 场景栈,存储场景层级关系(使用 shared_ptr) std::unordered_map> m_sceneCache; ///< 场景缓存,按名字缓存场景以便切换时复用 std::unordered_map()>> m_sceneFactories; ///< 场景工厂映射,按名字动态创建场景实例 - + /** * @brief 获取窗口尺寸的辅助方法 * @return 返回 {宽度, 高度},如果获取失败则返回默认值 {1600, 900} diff --git a/src/scenes/gameplay/GameScene.cpp b/src/scenes/gameplay/GameScene.cpp index 06f4700..824d708 100644 --- a/src/scenes/gameplay/GameScene.cpp +++ b/src/scenes/gameplay/GameScene.cpp @@ -33,7 +33,7 @@ void GameScene::update() { } void GameScene::render() { - beginFrame(); + m_boardRenderer->drawBackground(); m_boardRenderer->drawBoard(); @@ -41,7 +41,7 @@ void GameScene::render() { m_boardRenderer->drawMovementRange(); m_boardRenderer->renderBlackOverlay(); m_uiRenderer->renderUI(m_gameUIManager->getUIRenderData()); - endFrame(); + } void GameScene::handleClick(float screenX, float screenY) { diff --git a/src/scenes/menu/MainMenuScene.cpp b/src/scenes/menu/MainMenuScene.cpp index c6543ff..9ac5775 100644 --- a/src/scenes/menu/MainMenuScene.cpp +++ b/src/scenes/menu/MainMenuScene.cpp @@ -31,11 +31,11 @@ void MainMenuScene::update() { } void MainMenuScene::render() { - beginFrame(); + // 渲染场景内容 const UIRenderData& uiRenderData = m_mainMenuUIManager->getUIRenderData(); m_uiRenderer->renderUI(uiRenderData); - endFrame(); + } void MainMenuScene::handleClick(float x, float y) { diff --git a/src/utils/Config.h b/src/utils/Config.h index e391b03..50f5315 100644 --- a/src/utils/Config.h +++ b/src/utils/Config.h @@ -7,6 +7,7 @@ struct GameConfig { int windowHeight = 900; std::string windowTitle = "孢子棋"; bool vsync = true; + int uiScale = 2; } ; // 获取棋盘渲染区域信息(用于坐标转换)