feat(asset): 添加场景和资源注册方法

- 新增 RegisterScene 方法支持通过映射对象注册场景
- 新增 RegisterResource 方法支持通过映射对象注册资源
- 添加对重复键的检查并抛出相应异常
- 实现对无效标识符类型的验证逻辑
This commit is contained in:
GwWuYou 2025-12-18 19:48:40 +08:00
parent b67c922b09
commit 8123683e6e

View File

@ -1,4 +1,4 @@
using GFramework.Core.system;
using GFramework.Core.system;
namespace GFramework.Core.Godot.system;
@ -39,6 +39,20 @@ public abstract class AbstractAssetCatalogSystem : AbstractSystem, IAssetCatalog
_scenes[key] = new AssetCatalog.SceneId(path);
}
/// <summary>
/// 注册场景资源
/// </summary>
/// <param name="mapping">包含键和场景标识符的映射对象</param>
/// <exception cref="InvalidOperationException">当场景键已存在时抛出异常</exception>
public void RegisterScene(AssetCatalog.AssetCatalogMapping mapping)
{
if (mapping.Id is not AssetCatalog.SceneId sceneId)
throw new InvalidOperationException("Mapping ID is not a SceneId");
if (!_scenes.TryAdd(mapping.Key, sceneId))
throw new InvalidOperationException($"Scene key duplicated: {mapping.Key}");
}
/// <summary>
/// 注册普通资源
/// </summary>
@ -53,6 +67,20 @@ public abstract class AbstractAssetCatalogSystem : AbstractSystem, IAssetCatalog
_resources[key] = new AssetCatalog.ResourceId(path);
}
/// <summary>
/// 注册普通资源
/// </summary>
/// <param name="mapping">包含键和资源标识符的映射对象</param>
/// <exception cref="InvalidOperationException">当资源键已存在时抛出异常</exception>
public void RegisterResource(AssetCatalog.AssetCatalogMapping mapping)
{
if (mapping.Id is not AssetCatalog.ResourceId resourceId)
throw new InvalidOperationException("Mapping ID is not a ResourceId");
if (!_resources.TryAdd(mapping.Key, resourceId))
throw new InvalidOperationException($"Resource key duplicated: {mapping.Key}");
}
#endregion
#region Query