using cfg.DialogueCfg; using Cysharp.Threading.Tasks; using Framework; using Gameplay; using PhxhSDK; using System; using System.Collections.Generic; using System.Linq; using Random = UnityEngine.Random; /// /// 台词管理器 /// public class DialogueManager : Singlenton, IInitable { /// /// 台词播放记录数据 /// private class DialoguePlayData { /// /// 台词对应次数字典 /// public Dictionary DicCount; /// /// 上一次日期 /// public DateTime LastTime; public DialoguePlayData() { DicCount = new(); } public void SetNewTime(DateTime dateTime) { LastTime = dateTime; DicCount.Clear(); } } /// /// 台词播放记录数据key /// private const string DIALOGUE_PLAY_DATA = "Dialogue_play_data"; /// /// 台词配置数据,key:角色id, value:台词配置数据 /// private Dictionary> dicDialogueData; /// /// 角色台词对应的权重字典,key:角色id,value: subKey:台词id,subValue:台词权重 /// private Dictionary> dicDialogueWeight; /// /// 台词播放记录数据 /// private DialoguePlayData dialoguePlayData; /// /// 是否初始化 /// private bool isInit; #region 临时数据 /// /// 符合条件的台词数据 /// private readonly List listDialogueData = new(); private readonly List listDialogueWeight = new(); #endregion public void Init() { isInit = false; dicDialogueData = new(); dicDialogueWeight = new(); dialoguePlayData = StorageMgr.Instance.GetStorage(DIALOGUE_PLAY_DATA); EventManager.Instance.Register(EventManager.EventName.AllConfigLoad, InitData); } public void Release() { EventManager.Instance.Unregister(EventManager.EventName.AllConfigLoad, InitData); isInit = false; dicDialogueData.Clear(); dicDialogueData = null; } /// /// 播放台词 /// /// /// /// /// public async UniTask