using UnityGameFramework.Runtime;
namespace SepCore.CustomComponent
{
///
/// 单局共享随机组件。
/// 种子由局外(战备/部署界面玩家输入)带入,进入单局时初始化;
/// 地图生成、物资点、敌人 AI、逃跑判定和敌人掉落依次消费同一个随机源,
/// 战斗只沿用该随机源,不创建战斗私有随机源。
/// 对应 Docs/GameDesign/03_RunExploration.md 的随机生成器约定。
///
public class RandomComponent : GameFrameworkComponent
{
private int _seed;
private IRunRandomSource _random;
///
/// 获取本局随机种子;未开始单局时为 0。
///
public int Seed => _seed;
///
/// 获取本局共享随机源;未开始单局时为 null。
///
public IRunRandomSource Random => _random;
///
/// 开始一局新的单局:使用局外带入的种子初始化共享随机源。
///
/// 本局随机种子。
public void BeginRun(int seed)
{
_seed = seed;
_random = new RunRandomSource(seed);
}
///
/// 结束当前单局,清空种子与随机源。
///
public void EndRun()
{
_seed = 0;
_random = null;
}
}
}