using vnxbqy.UI;
|
using System;
|
using System.Collections.Generic;
|
|
|
|
public class UnionTaskModel : Model,IBeforePlayerDataInitialize
|
{
|
private FuncConfigConfig _tagFuncModel;
|
public Action RefreshLivenScoreEvent;
|
public override void Init()
|
{
|
_tagFuncModel = FuncConfigConfig.Get("FamilyActive");
|
SetUnionLivenReward();
|
SetUnionLivenScore();
|
}
|
|
public void OnBeforePlayerDataInitialize()
|
{
|
taskInfoDict.Clear();
|
curLivenScore = 0;
|
|
}
|
|
public override void UnInit()
|
{
|
|
}
|
|
private int nextLivenIndex = 0;
|
|
private Dictionary<int, UnionTaskInfo> taskInfoDict = new Dictionary<int, UnionTaskInfo>();
|
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 = UnionLivenConfig.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 = UnionLivenConfig.Get(info.ActionID);
|
int addSore = (int)(info.FinishCnt / livenConfig.OnceActivity) * livenConfig.SingleActiveValue;
|
curLivenScore += addSore;
|
}
|
if (RefreshLivenScoreEvent != null)
|
RefreshLivenScoreEvent();
|
}
|
|
private List<UnionLivenConfig> livenModellist = new List<UnionLivenConfig>();
|
public List<UnionLivenConfig> GetOpenUnionTasklist()
|
{
|
var configs = UnionLivenConfig.GetValues();
|
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<int>(_tagFuncModel.Numerical1);
|
}
|
|
public int[] unionLivenRewards { get; private set; }
|
private void SetUnionLivenReward()
|
{
|
unionLivenRewards = null;
|
if (_tagFuncModel == null)
|
return;
|
unionLivenRewards = ConfigParse.GetMultipleStr<int>(_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; //是否完成
|
}
|