using System.Collections; using System.Collections.Generic; using UnityEngine; using System; using TableConfig; namespace Snxxz.UI { public class BossRebornModel : Model { int m_BossRebornIntegral = 0; public int bossRebornIntegral { get { return m_BossRebornIntegral; } set { if (m_BossRebornIntegral != value) { m_BossRebornIntegral = value; if (bossRebornIntergralEvent != null) { bossRebornIntergralEvent(); } } } } int m_BossRebornInderalTotal = 0; public int bossRebornIndegralTotal { get { return m_BossRebornInderalTotal; } set { m_BossRebornInderalTotal = value; } } public int surplusSecond { get { return OperationTimeHepler.Instance.GetOperationSurplusTime(Operation.BossReborn); } } public event Action bossRebornIntergralEvent; public event Action bossTaskStateChangeEvent; Dictionary bossRebornTasks = new Dictionary(); const int bossRebornPointId = 20909; public Redpoint bossRebornPoint = new Redpoint(MainRedDot.REDPOINT_OPENSERVER, bossRebornPointId); public override void Init() { ParseConfig(); } public override void UnInit() { } public bool IsOpen() { return OperationTimeHepler.Instance.SatisfyOpenCondition(Operation.BossReborn); } public void UpdateTaskBaseInfos(HAB04_tagMCBossRebornInfo.tagMCBossRebornTaskInfo[] _tasks) { foreach (var task in _tasks) { if (bossRebornTasks.ContainsKey(task.TaskID)) { bossRebornTasks[task.TaskID].UpdateActivityBaseData(task); } else { bossRebornTasks[task.TaskID] = new BossRebornTask(task); } } } public List GetTasks() { return new List(bossRebornTasks.Values); } public BossRebornTask GetTaskData(int _id) { if (!bossRebornTasks.ContainsKey(_id)) { bossRebornTasks[_id] = new BossRebornTask(_id); } return bossRebornTasks[_id]; } public void RequestTaskReward(int _id) { var sendInfo = new CA504_tagCMPlayerGetReward(); sendInfo.RewardType = (int)GotServerRewardType.Def_RewardType_BossReborn; sendInfo.DataEx = (uint)_id; sendInfo.DataExStrLen = 0; sendInfo.DataExStr = string.Empty; GameNetSystem.Instance.SendInfo(sendInfo); } public void UpdateTaskData(HAB03_tagMCBossRebornPlayerInfo _serverInfo) { foreach (var info in _serverInfo.DataList) { var id = info.ActID; var data = GetTaskData(id); var oldState = data.GetState(); data.UpdateActivityData(info.CurTimes, info.GotTimes); var newState = data.GetState(); if (oldState != newState && bossTaskStateChangeEvent != null) { bossTaskStateChangeEvent(id); } } UpdateRedpoint(); } private void UpdateRedpoint() { if (!IsOpen()) { bossRebornPoint.state = RedPointState.None; } else { var rewardable = false; foreach (var task in bossRebornTasks.Values) { if (task.GetState() == BossRebornTask.State.Rewardable) { rewardable = true; break; } } bossRebornPoint.state = rewardable ? RedPointState.Simple : RedPointState.None; } } private void ParseConfig() { var keys = ConfigManager.Instance.GetAllKeys(); foreach (var key in keys) { var id = int.Parse(key); bossRebornTasks[id] = new BossRebornTask(id); } } } }