using System.Collections.Generic;
namespace GFGGame
{
public struct FieldInfos
{
///
/// 当前主题 由ConstItemAttributeType定义
///
public int theme;
///
/// 最高关卡记录列表,由简单到难
///
public Dictionary highestLvls;
///
/// 每周已领奖励
///
public int bonusWeekly;
///
/// 奖励上限
///
public int bonusMaxLimit;
///
/// 任务奖励状态 由ConstBonusStatus定义
///
public Dictionary taskDic;
///
/// 仅在上线时判断是否有奖励未结算
///
public bool hasBonus;
};
public struct FieldResult
{
///
/// 完成关数
///
public int passLvl;
///
/// 奖励列表
///
public List bonusList;
///
/// 体力消耗
///
public int costNum;
///
/// 章节id
///
public int chapterId;
}
public class FieldDataManager : SingletonBase
{
public FieldInfos fieldInfos = new FieldInfos();
public FieldResult fieldResult = new FieldResult();
///
///当前难度的副本Id
///
public int chapterId;
///
/// 当前关卡挑战进度,起始为1
///
public int currFightLv = 1;
public void UpdateTask(int taskId, int state)
{
if (!fieldInfos.taskDic.ContainsKey(taskId))
{
fieldInfos.taskDic.Add(taskId, state);
}
else
{
fieldInfos.taskDic[taskId] = state;
}
}
///
/// 根据副本Id获取最高记录
///
///
///
public int GetHighestLvByChapterId(int chapterId)
{
if (!fieldInfos.highestLvls.ContainsKey(chapterId))
{
return 0;
}
else
{
return fieldInfos.highestLvls[chapterId];
}
}
// ///
// /// 根据挑战难度获取副本配置
// ///
// ///
// ///
// public FieldCfg GetFieldCfgByDifficulty(int difficulty)
// {
// return FieldCfgArray.Instance.GetCfgs(difficulty)[0];
// }
// ///
// /// 根据挑战难度获取当前战斗Id
// ///
// ///
// public int GetLevelIdByDifficulty(int difficulty, int index)
// {
// FieldCfg cfg = GetFieldCfgByDifficulty(difficulty);
// return StoryLevelCfgArray.Instance.GetCfgs(cfg.type, cfg.subType, cfg.id)[index].id;
// }
///
/// 获取任务列表
///
///
public List GetTaskCfgs()
{
List cfgs = new List(FieldTaskCfgArray.Instance.dataArray);
cfgs.Sort((FieldTaskCfg a, FieldTaskCfg b) =>
{
int stateA = GetTaskState(a.id);
int stateB = GetTaskState(b.id);
if (stateA == 1) return -1;
if (stateB == 1) return 1;
return stateA.CompareTo(stateB);
});
return cfgs;
}
///
/// 根据任务ID获取任务状态0未完成1可领取2已领取
///
///
///
public int GetTaskState(int taskId)
{
return fieldInfos.taskDic.ContainsKey(taskId) ? fieldInfos.taskDic[taskId] : 0;
}
}
}