完成关卡加载器-对象层

This commit is contained in:
Ziyu
2025-06-16 14:44:47 +08:00
parent b607b9e1db
commit 968cd46cda
5 changed files with 103 additions and 4 deletions
+11
View File
@@ -27,6 +27,17 @@ SpriteComponent::SpriteComponent(
spdlog::trace("创建 SpriteComponent,纹理ID: {}", texture_id);
}
SpriteComponent::SpriteComponent(engine::render::Sprite&& sprite, engine::resource::ResourceManager& resource_manager, engine::utils::Alignment alignment)
: resource_manager_(&resource_manager), sprite_(std::move(sprite)), alignment_(alignment)
{
if (!resource_manager_) {
spdlog::critical("创建 SpriteComponent 时 ResourceManager 为空!,此组件将无效。");
// 不要在游戏主循环中使用 try...catch / throw,会极大影响性能
}
// offset_ 和 sprite_size_ 将在 init 中计算
spdlog::trace("创建 SpriteComponent,纹理ID: {}", sprite_.getTextureId());
}
void SpriteComponent::init() {
if (!owner_) {
spdlog::error("SpriteComponent 在初始化前未设置所有者。");
+13
View File
@@ -51,6 +51,19 @@ public:
std::optional<SDL_FRect> source_rect_opt = std::nullopt,
bool is_flipped = false
);
/**
* @brief 构造函数
* @param sprite 精灵对象。
* @param resource_manager 资源管理器指针。
* @param alignment 初始对齐方式。
*/
SpriteComponent(
engine::render::Sprite&& sprite,
engine::resource::ResourceManager& resource_manager,
engine::utils::Alignment alignment = engine::utils::Alignment::NONE
);
~SpriteComponent() override = default;
// 禁止拷贝和移动