From ce2cc4d2100cfa5bf7772bd4f9ba3aaac648e7d5 Mon Sep 17 00:00:00 2001 From: Lenheart <947330670@qq.com> Date: Sat, 21 Feb 2026 02:46:19 +0800 Subject: [PATCH] =?UTF-8?q?refactor(core):=20=E9=87=8D=E6=9E=84=E4=BB=A3?= =?UTF-8?q?=E7=A0=81=E7=BB=84=E7=BB=87=E7=BB=93=E6=9E=84=EF=BC=8C=E5=B0=86?= =?UTF-8?q?=E7=B1=BB=E5=9E=8B=E5=AE=9A=E4=B9=89=E7=A7=BB=E8=87=B3types?= =?UTF-8?q?=E7=9B=AE=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 将核心类型定义从core目录迁移至新创建的types目录,包括: - 基础类型别名(type_alias.h) - 数学相关类型(type_math.h) - 颜色类型(type_color.h) - 窗口配置合并至application.h 删除不再使用的平台配置和旧类型文件 优化头文件包含关系,减少编译依赖 --- .../include/fostbite2D/config/app_config.h | 39 --------- .../fostbite2D/config/platform_config.h | 86 ------------------- .../include/fostbite2D/core/application.h | 31 ++++++- .../fostbite2D/{platform => core}/window.h | 4 +- .../{core/types.h => types/type_alias.h} | 5 ++ .../{core/color.h => types/type_color.h} | 0 .../{core/math_types.h => types/type_math.h} | 2 +- .../src/fostbite2D/config/app_config.cpp | 20 ----- .../fostbite2D/{platform => core}/window.cpp | 2 +- Fostbite2D/src/main.cpp | 4 +- 10 files changed, 39 insertions(+), 154 deletions(-) delete mode 100644 Fostbite2D/include/fostbite2D/config/app_config.h delete mode 100644 Fostbite2D/include/fostbite2D/config/platform_config.h rename Fostbite2D/include/fostbite2D/{platform => core}/window.h (98%) rename Fostbite2D/include/fostbite2D/{core/types.h => types/type_alias.h} (95%) rename Fostbite2D/include/fostbite2D/{core/color.h => types/type_color.h} (100%) rename Fostbite2D/include/fostbite2D/{core/math_types.h => types/type_math.h} (99%) delete mode 100644 Fostbite2D/src/fostbite2D/config/app_config.cpp rename Fostbite2D/src/fostbite2D/{platform => core}/window.cpp (98%) diff --git a/Fostbite2D/include/fostbite2D/config/app_config.h b/Fostbite2D/include/fostbite2D/config/app_config.h deleted file mode 100644 index f857497..0000000 --- a/Fostbite2D/include/fostbite2D/config/app_config.h +++ /dev/null @@ -1,39 +0,0 @@ -#pragma once - -#include -#include -#include - -namespace frostbite2D { - -/** - * @file app_config.h - * @brief 应用级别配置 - * - * 本文件仅包含应用级别的配置项,不包含任何模块特定配置。 - * 各模块应该在自己的模块文件中定义配置结构,并实现 IModuleConfig 接口。 - * - * 模块配置通过 ModuleRegistry 注册,由 ConfigManager 统一管理。 - * 这种设计遵循开闭原则,新增模块无需修改引擎核心代码。 - */ - -/** - * @brief 应用配置结构体 - * 仅包含应用级别的配置项,模块配置由各模块自行管理 - */ -struct AppConfig { - std::string appName = "frostbite2D App"; - std::string appVersion = "1.0.0"; - std::string organization = ""; - std::string configFile = "config.json"; - WindowConfig windowConfig; - PlatformType targetPlatform = PlatformType::Auto; - - /** - * @brief 创建默认配置 - * @return 默认的应用配置实例 - */ - static AppConfig createDefault(); -}; - -} // namespace frostbite2D diff --git a/Fostbite2D/include/fostbite2D/config/platform_config.h b/Fostbite2D/include/fostbite2D/config/platform_config.h deleted file mode 100644 index 406886c..0000000 --- a/Fostbite2D/include/fostbite2D/config/platform_config.h +++ /dev/null @@ -1,86 +0,0 @@ -#pragma once - -#include - -namespace frostbite2D { - -/** - * @file platform_config.h - * @brief 平台配置接口 - * - * 平台配置只提供平台能力信息,不再直接修改应用配置。 - * 各模块通过 IModuleConfig::applyPlatformConstraints() 处理平台约束。 - */ - -/** - * @brief 平台类型枚举 - */ -enum class PlatformType { - Auto, - Windows, - Switch, - Linux, - macOS -}; - -/** - * @brief 平台能力结构 - */ -struct PlatformCapabilities { - bool supportsWindowed = true; - bool supportsFullscreen = true; - bool supportsBorderless = true; - bool supportsCursor = true; - bool supportsCursorHide = true; - bool supportsDPIAwareness = true; - bool supportsVSync = true; - bool supportsMultiMonitor = true; - bool supportsClipboard = true; - bool supportsGamepad = true; - bool supportsTouch = false; - bool supportsKeyboard = true; - bool supportsMouse = true; - bool supportsResize = true; - bool supportsHighDPI = true; - int maxTextureSize = 16384; - int preferredScreenWidth = 1920; - int preferredScreenHeight = 1080; - float defaultDPI = 96.0f; - - bool hasWindowSupport() const { return supportsWindowed || supportsFullscreen || supportsBorderless; } - bool hasInputSupport() const { return supportsKeyboard || supportsMouse || supportsGamepad || supportsTouch; } - bool isDesktop() const { return supportsKeyboard && supportsMouse && supportsWindowed; } - bool isConsole() const { return !supportsWindowed && supportsGamepad; } -}; - -/** - * @brief 平台配置抽象接口 - */ -class PlatformConfig { -public: - virtual ~PlatformConfig() = default; - - virtual PlatformType platformType() const = 0; - virtual const char* platformName() const = 0; - virtual const PlatformCapabilities& capabilities() const = 0; - - virtual int getRecommendedWidth() const = 0; - virtual int getRecommendedHeight() const = 0; - virtual bool isResolutionSupported(int width, int height) const = 0; -}; - -/** - * @brief 创建平台配置实例 - * @param type 平台类型,默认为 Auto(自动检测) - * @return 平台配置的智能指针 - */ -UniquePtr createPlatformConfig(PlatformType type = PlatformType::Auto); - -/** - * @brief 获取平台类型名称 - * @param type 平台类型枚举值 - * @return 平台名称字符串 - */ -const char* getPlatformTypeName(PlatformType type); - -} diff --git a/Fostbite2D/include/fostbite2D/core/application.h b/Fostbite2D/include/fostbite2D/core/application.h index b1d4219..65cd2cd 100644 --- a/Fostbite2D/include/fostbite2D/core/application.h +++ b/Fostbite2D/include/fostbite2D/core/application.h @@ -1,12 +1,39 @@ #pragma once +#include #include -#include -#include +#include #include namespace frostbite2D { +/** + * @brief 应用配置结构体 + * 仅包含应用级别的配置项,模块配置由各模块自行管理 + */ +struct AppConfig { + std::string appName = "frostbite2D App"; + std::string appVersion = "1.0.0"; + std::string organization = "frostbite"; + + WindowConfig windowConfig; + PlatformType targetPlatform = PlatformType::Auto; + + /** + * @brief 创建默认配置 + * @return 默认的应用配置实例 + */ + static AppConfig createDefault() { + AppConfig config; + config.appName = "Frostbite2D App"; + config.appVersion = "1.0.0"; + config.organization = "frostbite"; + config.targetPlatform = PlatformType::Auto; + config.windowConfig = WindowConfig(); + return config; + } +}; + /** * @brief 应用程序类 */ diff --git a/Fostbite2D/include/fostbite2D/platform/window.h b/Fostbite2D/include/fostbite2D/core/window.h similarity index 98% rename from Fostbite2D/include/fostbite2D/platform/window.h rename to Fostbite2D/include/fostbite2D/core/window.h index abc0819..0abd98b 100644 --- a/Fostbite2D/include/fostbite2D/platform/window.h +++ b/Fostbite2D/include/fostbite2D/core/window.h @@ -1,8 +1,8 @@ #pragma once #include -#include -#include +#include +#include #include #include diff --git a/Fostbite2D/include/fostbite2D/core/types.h b/Fostbite2D/include/fostbite2D/types/type_alias.h similarity index 95% rename from Fostbite2D/include/fostbite2D/core/types.h rename to Fostbite2D/include/fostbite2D/types/type_alias.h index 88de928..dba4af4 100644 --- a/Fostbite2D/include/fostbite2D/core/types.h +++ b/Fostbite2D/include/fostbite2D/types/type_alias.h @@ -55,4 +55,9 @@ using uint16 = std::uint16_t; using uint32 = std::uint32_t; using uint64 = std::uint64_t; +/** + * @brief 平台类型枚举 + */ +enum class PlatformType { Auto, Windows, Switch, Linux, macOS }; + } // namespace frostbite2D diff --git a/Fostbite2D/include/fostbite2D/core/color.h b/Fostbite2D/include/fostbite2D/types/type_color.h similarity index 100% rename from Fostbite2D/include/fostbite2D/core/color.h rename to Fostbite2D/include/fostbite2D/types/type_color.h diff --git a/Fostbite2D/include/fostbite2D/core/math_types.h b/Fostbite2D/include/fostbite2D/types/type_math.h similarity index 99% rename from Fostbite2D/include/fostbite2D/core/math_types.h rename to Fostbite2D/include/fostbite2D/types/type_math.h index 5c5734a..66d70ec 100644 --- a/Fostbite2D/include/fostbite2D/core/math_types.h +++ b/Fostbite2D/include/fostbite2D/types/type_math.h @@ -2,7 +2,7 @@ #include #include -#include +#include #include #include #include diff --git a/Fostbite2D/src/fostbite2D/config/app_config.cpp b/Fostbite2D/src/fostbite2D/config/app_config.cpp deleted file mode 100644 index e736872..0000000 --- a/Fostbite2D/src/fostbite2D/config/app_config.cpp +++ /dev/null @@ -1,20 +0,0 @@ -#include - -namespace frostbite2D { - -AppConfig AppConfig::createDefault() { - AppConfig config; - - config.appName = "Frostbite2D App"; - config.appVersion = "1.0.0"; - config.organization = ""; - config.configFile = "config.json"; - config.targetPlatform = PlatformType::Auto; - config.windowConfig.title = "Frostbite2D"; - - return config; -} - - - -} \ No newline at end of file diff --git a/Fostbite2D/src/fostbite2D/platform/window.cpp b/Fostbite2D/src/fostbite2D/core/window.cpp similarity index 98% rename from Fostbite2D/src/fostbite2D/platform/window.cpp rename to Fostbite2D/src/fostbite2D/core/window.cpp index c72cf9c..5b9d816 100644 --- a/Fostbite2D/src/fostbite2D/platform/window.cpp +++ b/Fostbite2D/src/fostbite2D/core/window.cpp @@ -1,6 +1,6 @@ #include "SDL_log.h" #include -#include +#include #include diff --git a/Fostbite2D/src/main.cpp b/Fostbite2D/src/main.cpp index 4749f84..1b5e7bf 100644 --- a/Fostbite2D/src/main.cpp +++ b/Fostbite2D/src/main.cpp @@ -1,10 +1,8 @@ #include "SDL_log.h" #include #include -#include -#include +#include #include -#include using namespace frostbite2D;