//-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Thursday, January 25, 2018 //-------------------------------------------------------- using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using System.Text.RegularExpressions; using System.Text; using vnxbqy.UI; namespace vnxbqy.UI { //接收剧情任务状态封包 public class TaskListType { public int TaskID; public int TaskType;//(0,未完成,1,正在进行中) } public class StoryMissionsModel : Model, IBeforePlayerDataInitialize { public Dictionary StoryMissionsDic = new Dictionary();//(value,0未完成,1完成) public Dictionary> TaskCfgDict = new Dictionary>(); public Dictionary TaskMainDic = new Dictionary();//剧情编号,任务ID public Dictionary> taskListConfig = new Dictionary>();//关于任务列表 TaskModel m_PlayerTaskDatas; TaskModel onPlayerTask { get { return m_PlayerTaskDatas ?? (m_PlayerTaskDatas = ModelCenter.Instance.GetModel()); } } public override void Init() { var configTaskListValue = TaskListConfig.GetValues(); foreach (var value in configTaskListValue) { List _list = null; if (!TaskCfgDict.TryGetValue(value.ChapterID, out _list)) { _list = new List(); TaskCfgDict.Add(value.ChapterID, _list); } _list.Add(value); } } public void OnBeforePlayerDataInitialize() { } public override void UnInit() { } public void TaskMain() { TaskMainDic.Clear(); taskListConfig.Clear(); if (onPlayerTask.MainTaskDic.Count != 0) { foreach (int key in onPlayerTask.MainTaskDic.Keys) { int chapterID = TaskListConfig.Get(key).ChapterID; if (TaskMainDic.ContainsKey(chapterID)) { TaskMainDic[chapterID] = key; } else { TaskMainDic.Add(chapterID, key); } } } foreach (var key in TaskCfgDict.Keys) { if (TaskMainDic.ContainsKey(key))//身上的挂载任务 { int taskID = TaskMainDic[key]; int cout = TaskCfgDict[key].Count; if (!taskListConfig.ContainsKey(key)) { List taskType = new List(); for (int i = 0; i < cout; i++) { TaskListType taskList = new TaskListType(); taskList.TaskID = TaskCfgDict[key][i].TaskID; if (TaskCfgDict[key][i].TaskID < taskID) { taskList.TaskType = 0; } if (TaskCfgDict[key][i].TaskID == taskID) { taskList.TaskType = 1; } if (TaskCfgDict[key][i].TaskID > taskID) { taskList.TaskType = 2; } taskType.Add(taskList); } taskListConfig.Add(key, taskType); } } if (StoryMissionsDic.ContainsKey(key))//服务端任务表 { int cout = TaskCfgDict[key].Count; if (!taskListConfig.ContainsKey(key)) { List taskType = new List(); for (int i = 0; i < cout; i++) { TaskListType taskList = new TaskListType(); taskList.TaskID = TaskCfgDict[key][i].TaskID; taskList.TaskType = 0; taskType.Add(taskList); } taskListConfig.Add(key, taskType); } } } } public void StoryMissionStateInfo(HB104_tagMCStoryMissionStateInfo vNetData) { for (int i = 0; i < vNetData.StoryMissionStateList.Length; i++) { int storyNum = vNetData.StoryMissionStateList[i].StoryNum; int isAllFinish = vNetData.StoryMissionStateList[i].IsAllFinish; if (StoryMissionsDic.ContainsKey(storyNum)) { StoryMissionsDic[storyNum] = isAllFinish; } else { StoryMissionsDic.Add(storyNum, isAllFinish); } } } } }