| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126 | using System.Collections.Generic;namespace GFGGame{    public struct FieldInfos    {        /// <summary>        /// 当前主题 由ConstItemAttributeType定义        /// </summary>        public int theme;        /// <summary>        /// 最高关卡记录列表,由简单到难        /// </summary>        public Dictionary<int, int> highestLvls;        /// <summary>        /// 每周已领奖励        /// </summary>        public int bonusWeekly;        /// <summary>        /// 奖励上限        /// </summary>        public int bonusMaxLimit;        /// <summary>        /// 任务奖励状态 由ConstBonusStatus定义        /// </summary>        public Dictionary<int, int> taskDic;        /// <summary>        /// 仅在上线时判断是否有奖励未结算        /// </summary>        public bool hasBonus;    };    public struct FieldResult    {        /// <summary>        /// 完成关数        /// </summary>        public int passLvl;        /// <summary>        /// 奖励列表        /// </summary>        public List<ItemData> bonusList;        /// <summary>        /// 体力消耗        /// </summary>        public int costNum;        /// <summary>        /// 章节id        /// </summary>        public int chapterId;    }    public class FieldDataManager : SingletonBase<FieldDataManager>    {        public FieldInfos fieldInfos = new FieldInfos();        public FieldResult fieldResult = new FieldResult();        //用于记录进入主界面后打开界面        public bool waitToShowFieldFightEndView = false;        /// <summary>        ///当前难度的副本Id        /// </summary>        public int chapterId;        /// <summary>        /// 当前关卡挑战进度,起始为1        /// </summary>        public int currFightLv = 1;        /// <summary>        /// 当前难度        /// </summary>        public int difficulty = 0;        /// <summary>        /// 多轮可获得奖励        /// </summary>        public int accumulateReward = 0;        /// <summary>        /// 根据副本Id获取最高记录        /// </summary>        /// <param name="chapterId"></param>        /// <returns></returns>        public int GetHighestLvByChapterId(int chapterId)        {            if (!fieldInfos.highestLvls.ContainsKey(chapterId))            {                return 0;            }            else            {                return fieldInfos.highestLvls[chapterId];            }        }        /// <summary>        /// 获取任务列表        /// </summary>        /// <returns></returns>        public List<FieldTaskCfg> GetTaskCfgs()        {            List<FieldTaskCfg> cfgs = new List<FieldTaskCfg>(FieldTaskCfgArray.Instance.dataArray);            cfgs.Sort((FieldTaskCfg a, FieldTaskCfg b) =>            {                int stateA = GetTaskState(a.id) == 1 ? 1 : -1;                int stateB = GetTaskState(b.id) == 1 ? 1 : -1;                if (stateA > stateB) return -1;                if (stateB > stateA) return 1;                return GetTaskState(a.id).CompareTo(GetTaskState(b.id));            });            return cfgs;        }        /// <summary>        /// 根据任务ID获取任务状态0未完成1可领取2已领取        /// </summary>        /// <param name="taskId"></param>        /// <returns></returns>        public int GetTaskState(int taskId)        {            if (fieldInfos.taskDic == null) return 0;            return fieldInfos.taskDic.ContainsKey(taskId) ? fieldInfos.taskDic[taskId] : 0;        }    }}
 |