refactor(core): 重构代码组织结构,将类型定义移至types目录
将核心类型定义从core目录迁移至新创建的types目录,包括: - 基础类型别名(type_alias.h) - 数学相关类型(type_math.h) - 颜色类型(type_color.h) - 窗口配置合并至application.h 删除不再使用的平台配置和旧类型文件 优化头文件包含关系,减少编译依赖
This commit is contained in:
parent
0f9ea65066
commit
ce2cc4d210
|
|
@ -1,39 +0,0 @@
|
||||||
#pragma once
|
|
||||||
|
|
||||||
#include <fostbite2D/config/platform_config.h>
|
|
||||||
#include <fostbite2D/platform/window.h>
|
|
||||||
#include <string>
|
|
||||||
|
|
||||||
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
|
|
||||||
|
|
@ -1,86 +0,0 @@
|
||||||
#pragma once
|
|
||||||
|
|
||||||
#include <fostbite2D/core/types.h>
|
|
||||||
|
|
||||||
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<PlatformConfig> createPlatformConfig(PlatformType type = PlatformType::Auto);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief 获取平台类型名称
|
|
||||||
* @param type 平台类型枚举值
|
|
||||||
* @return 平台名称字符串
|
|
||||||
*/
|
|
||||||
const char* getPlatformTypeName(PlatformType type);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
@ -1,12 +1,39 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
#include <fostbite2D/core/window.h>
|
||||||
#include <fostbite2D/module/module.h>
|
#include <fostbite2D/module/module.h>
|
||||||
#include <fostbite2D/config/app_config.h>
|
#include <fostbite2D/types/type_alias.h>
|
||||||
#include <fostbite2D/platform/window.h>
|
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
namespace frostbite2D {
|
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 应用程序类
|
* @brief 应用程序类
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,8 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <SDL2/SDL.h>
|
#include <SDL2/SDL.h>
|
||||||
#include <fostbite2D/core/math_types.h>
|
#include <fostbite2D/types/type_alias.h>
|
||||||
#include <fostbite2D/core/types.h>
|
#include <fostbite2D/types/type_math.h>
|
||||||
#include <functional>
|
#include <functional>
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
|
|
@ -55,4 +55,9 @@ using uint16 = std::uint16_t;
|
||||||
using uint32 = std::uint32_t;
|
using uint32 = std::uint32_t;
|
||||||
using uint64 = std::uint64_t;
|
using uint64 = std::uint64_t;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief 平台类型枚举
|
||||||
|
*/
|
||||||
|
enum class PlatformType { Auto, Windows, Switch, Linux, macOS };
|
||||||
|
|
||||||
} // namespace frostbite2D
|
} // namespace frostbite2D
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
#include <cmath>
|
#include <cmath>
|
||||||
#include <fostbite2D/core/types.h>
|
#include <fostbite2D/types/type_alias.h>
|
||||||
#include <glm/gtc/matrix_transform.hpp>
|
#include <glm/gtc/matrix_transform.hpp>
|
||||||
#include <glm/mat4x4.hpp>
|
#include <glm/mat4x4.hpp>
|
||||||
#include <glm/vec2.hpp>
|
#include <glm/vec2.hpp>
|
||||||
|
|
@ -1,20 +0,0 @@
|
||||||
#include <fostbite2D/config/app_config.h>
|
|
||||||
|
|
||||||
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;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
#include "SDL_log.h"
|
#include "SDL_log.h"
|
||||||
#include <SDL2/SDL.h>
|
#include <SDL2/SDL.h>
|
||||||
#include <fostbite2D/platform/window.h>
|
#include <fostbite2D/core/window.h>
|
||||||
#include <glad/glad.h>
|
#include <glad/glad.h>
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -1,10 +1,8 @@
|
||||||
#include "SDL_log.h"
|
#include "SDL_log.h"
|
||||||
#include <SDL2/SDL.h>
|
#include <SDL2/SDL.h>
|
||||||
#include <fostbite2D/core/application.h>
|
#include <fostbite2D/core/application.h>
|
||||||
#include <fostbite2D/core/color.h>
|
#include <fostbite2D/core/window.h>
|
||||||
#include <fostbite2D/platform/window.h>
|
|
||||||
#include <glad/glad.h>
|
#include <glad/glad.h>
|
||||||
#include <iostream>
|
|
||||||
|
|
||||||
using namespace frostbite2D;
|
using namespace frostbite2D;
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue