using SepCore.CustomComponent;
using SepCore.Definition;
namespace SepCore.Battle
{
///
/// 战斗配置的运行时适配器,隔离战斗规则与 GameEntry.Luban。
/// 配置缺失返回 null,由启动校验决定失败;正常行动不重复扫描全表完整性。
/// EditMode 测试使用内存配置,不使用本类。
///
internal sealed class LubanBattleConfigProvider : IBattleConfigProvider
{
public EnemyPartyConfig GetEnemyParty(int id)
{
return SafeGet(() => GameEntry.Luban.Get(id));
}
public EnemyConfig GetEnemy(int id)
{
return SafeGet(() => GameEntry.Luban.Get(id));
}
public BattleActionConfig GetAction(int id)
{
return SafeGet(() => GameEntry.Luban.Get(id));
}
public GlobalConfig GetGlobal()
{
return SafeGet(() => GameEntry.Luban.Global != null ? GameEntry.Luban.Global.Data : null);
}
private static T SafeGet(System.Func getter) where T : class
{
try
{
return GameEntry.Luban != null && GameEntry.Luban.IsReady ? getter() : null;
}
catch (System.Exception)
{
return null;
}
}
}
}