using System.Linq; using UnityEngine; using BingoBrain.Core; using BingoBrain.HotFix; namespace BingoBrain { public class SomsionCtrl : BaseCtrl { public static SomsionCtrl Instance { get; private set; } private SomsionModel model; #region 生命周期 protected override void OnInit() { Instance = this; model = ModuleBoardk.GetModel(ModelConst.SomsionModel) as SomsionModel; } protected override void OnDispose() { Instance = null; } #endregion #region 消息 protected override void AddListener() { ctrlDispatcher.AddListener(CtrlMsg.GameNewDays, RestEventDayMissionsProgress); gameDispatcher.AddListener(BingoInfo.ShowGameOver, AddBingGoNum); } protected override void RemoveListener() { ctrlDispatcher.RemoveListener(CtrlMsg.GameNewDays, RestEventDayMissionsProgress); gameDispatcher.RemoveListener(BingoInfo.ShowGameOver, AddBingGoNum); } #endregion /// /// 重置刷新任务 /// public void RestEventDayMissionsProgress(object obj) { SetActiveMissionsLst(); } /// /// 设置一次活跃任务 /// protected void SetActiveMissionsLst() { PreferencesMgr.Instance.ActiveMissions.Clear(); var dataList = GameHelper.GetConfig().GetDataList(); // dataList.Select(item => new Task(item.id, item.taskNum)) // .ToList() // .ForEach(task => // { // task.InitData(); // PreferencesMgr.Instance.ActiveMissions.Add(task); // }); for (int i = 0; i < dataList.Count; i++) { var item = dataList[i]; var task = new Task(item.id, item.taskNum); task.InitData(); PreferencesMgr.Instance.ActiveMissions.Add(task); } PreferencesMgr.Instance.SaveActiveMissions(); } /// /// 保存日常任务数据 累加 /// /// 任务的id /// 值 public void AddTaskVal(int id, int value = 1) { // var task = PreferencesMgr.Instance.ActiveMissions.Find((e) => e.Id == id); Task task = null; // 假设 TaskType 是任务的类型 for (int i = 0; i < PreferencesMgr.Instance.ActiveMissions.Count; i++) { if (PreferencesMgr.Instance.ActiveMissions[i].Id == id) { task = PreferencesMgr.Instance.ActiveMissions[i]; break; } } if (value > 0 && task is { IsReward: false }) { task.Progress += value; task.Progress = Mathf.Clamp(task.Progress, 0, task.MaxProgress); PreferencesMgr.Instance.SaveActiveMissions(); } } private void AddBingGoNum(object o) { Instance.AddTaskVal(1); Instance.AddTaskVal(2); Instance.AddTaskVal(3); Instance.AddTaskVal(4); Instance.AddTaskVal(5); } } }