using Snxxz.UI; using System; using System.Collections.Generic; using TableConfig; public class UnionTaskModel : Model,IBeforePlayerDataInitialize { private FuncConfigConfig _tagFuncModel; public Action RefreshLivenScoreEvent; public override void Init() { _tagFuncModel = Config.Instance.Get("FamilyActive"); SetUnionLivenReward(); SetUnionLivenScore(); } public void OnBeforePlayerDataInitialize() { taskInfoDict.Clear(); curLivenScore = 0; } public override void UnInit() { } private int nextLivenIndex = 0; private Dictionary taskInfoDict = new Dictionary(); private UnionLivenConfig _livenModel; public void RefreshlivenModel(HA316_tagMCFamilyActivityInfo data) { DebugEx.Log("RefreshlivenModel" + data.Count); int i = 0; for(i = 0; i < data.Count;i++) { if(!taskInfoDict.ContainsKey(data.InfoList[i].ActionID)) { UnionTaskInfo taskInfo = new UnionTaskInfo(); taskInfo.ActionID = data.InfoList[i].ActionID; taskInfo.FinishCnt = data.InfoList[i].FinishCnt; taskInfoDict.Add(data.InfoList[i].ActionID,taskInfo); } else { taskInfoDict[data.InfoList[i].ActionID].FinishCnt = data.InfoList[i].FinishCnt; } _livenModel = Config.Instance.Get(data.InfoList[i].ActionID); if (taskInfoDict[data.InfoList[i].ActionID].FinishCnt >= _livenModel.TotalActivityTime) { taskInfoDict[data.InfoList[i].ActionID].IsComplete = true; } else { taskInfoDict[data.InfoList[i].ActionID].IsComplete = false; } } SetReceiveAwardRecord(data.AwardRecord); SetSumlivenScore(); if(PlayerDatas.Instance.fairyData.HasFairy) { ControllerRedPoint(); } } public bool[] receiveAwardRecord = new bool[5]; private void SetReceiveAwardRecord(uint record) { int i = 0; for(i = 0; i< receiveAwardRecord.Length;i++) { receiveAwardRecord[i] = MathUtility.GetBitValue(record,(ushort)i); } } public int curLivenScore { get; private set; } public void SetSumlivenScore() { curLivenScore = 0; foreach(UnionTaskInfo info in taskInfoDict.Values) { UnionLivenConfig livenConfig = Config.Instance.Get(info.ActionID); int addSore = (int)(info.FinishCnt / livenConfig.OnceActivity) * livenConfig.SingleActiveValue; curLivenScore += addSore; } if (RefreshLivenScoreEvent != null) RefreshLivenScoreEvent(); } private List livenModellist = new List(); public List GetOpenUnionTasklist() { var configs = Config.Instance.GetAllValues(); livenModellist.Clear(); foreach (UnionLivenConfig value in configs) { if (FuncOpen.Instance.IsFuncOpen(value.UnLockFuncID)) { livenModellist.Add(value); } } return livenModellist; } public int[] unionLivenScores { get; private set; } private void SetUnionLivenScore() { unionLivenScores = null; if (_tagFuncModel == null) return; unionLivenScores = ConfigParse.GetMultipleStr(_tagFuncModel.Numerical1); } public int[] unionLivenRewards { get; private set; } private void SetUnionLivenReward() { unionLivenRewards = null; if (_tagFuncModel == null) return; unionLivenRewards = ConfigParse.GetMultipleStr(_tagFuncModel.Numerical2); } public UnionTaskInfo GetUnionTaskInfo(int actionID) { UnionTaskInfo info = null; taskInfoDict.TryGetValue(actionID, out info); return info; } #region 红点逻辑处理 private void ControllerRedPoint() { nextLivenIndex = 0; MainRedDot.Instance.fairyLivenRedPoint.state = RedPointState.None; int i = 0; for (i = 0; i < receiveAwardRecord.Length; i++) { if (!receiveAwardRecord[i]) { if (curLivenScore >= unionLivenScores[i]) { MainRedDot.Instance.fairyLivenRedPoint.state = RedPointState.Simple; break; } } } } #endregion } public class UnionTaskInfo { public byte ActionID; // ID public ushort FinishCnt; // 已完成次数 public bool IsComplete = false; //是否完成 }