| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 | using System.Collections.Generic;using System.Linq;using ET;namespace GFGGame{    public class DailyTaskDataManager : SingletonBase<DailyTaskDataManager>    {        private Dictionary<int, int> _livenessBoxInfos = new Dictionary<int, int>();        public void Clear()        {            _livenessBoxInfos.Clear();        }        public void UpdateLivenessBoxInfo(int boxId, int state)        {            if (!_livenessBoxInfos.ContainsKey(boxId))            {                _livenessBoxInfos.Add(boxId, state);            }            else            {                _livenessBoxInfos[boxId] = state;            }        }        /// <summary>        /// 根据宝箱id获取宝箱状态        /// </summary>0不可领取,1可领取,2已领取        /// <param name="boxId"></param>        /// <returns></returns>        public int GetBoxStateById(int boxId)        {            //已领取            if (_livenessBoxInfos.ContainsKey(boxId) && _livenessBoxInfos[boxId] == ConstBonusStatus.GOT) return 2;            //获取宝箱配置            var cfg = DailyActiveRewardCfgArray.Instance.GetCfg(boxId);            if (cfg == null)            {                Log.Error($"出现了没有配置的宝箱id{boxId}");                return ConstBonusStatus.CAN_NOT_GET;            }            //判断是否满足领取条件            return RoleDataManager.Liveness >= cfg.count ? ConstBonusStatus.CAN_GET : ConstBonusStatus.CAN_NOT_GET;        }        /// <summary>        /// 获取下一个奖励宝箱的活跃度        /// </summary>        /// <returns></returns>        public int GetShowLivenessBoxNum()        {            var cfgs = DailyActiveRewardCfgArray.Instance.dataArray;            foreach (var t in cfgs)            {                if (!_livenessBoxInfos.ContainsKey(t.id) || _livenessBoxInfos[t.id] != ConstBonusStatus.GOT)                {                    return t.count;                }            }            var index = cfgs.Length - 1;            return cfgs[index].count;        }             public bool GetHadGetRewardNum()        {            //TODO 可以缓存是否有领取的状态            return _livenessBoxInfos.Any(t => t.Value == ConstBonusStatus.CAN_GET);        }    }}
 |