// Use this for initialization void Start() { runTimeTaskData = new RunTimeTaskData(); runTimeTaskData.OnDeserializedMethod(default(StreamingContext)); List <TaskMap.RunTimeTaskInfo> runtimeTaskInfos = runTimeTaskData.GetAllToDoList(); foreach (var item in runtimeTaskInfos) { item.IsStart = true; item.IsOver = true; } runtimeTaskInfos = runTimeTaskData.GetAllToDoList(); foreach (var item in runtimeTaskInfos) { item.IsStart = true; item.IsOver = true; } runtimeTaskInfos = runTimeTaskData.GetAllToDoList(); foreach (var item in runtimeTaskInfos) { if (item.ID == 4) { item.IsStart = true; item.IsOver = true; } } DebugNowState(); }
private void DebugNowState() { List <TaskMap.RunTimeTaskInfo> runtimeTaskInfos = runTimeTaskData.GetAllToDoList(); foreach (var item in runtimeTaskInfos) { Debug.Log(item.ID); } }
/// <summary> /// 显示当前任务 /// </summary> private void ShowNowTask() { TaskMap.RunTimeTaskInfo runTimeTaskInfo = null; //显示地图标记的任务 if (iMapState.MarkTaskID > -1) { runTimeTaskInfo = runTimeTasksData.GetAllToDoList().Where(temp => temp.ID == iMapState.MarkTaskID && temp.IsStart).FirstOrDefault(); } //如果地图没有标记或者标记的任务已经被完成了,则显示当前的第一个主线任务 if (runTimeTaskInfo == null) { runTimeTaskInfo = runTimeTasksData.GetAllToDoList().Where(temp => temp.TaskInfoStruct.TaskType == TaskMap.Enums.EnumTaskType.Main && temp.IsStart).FirstOrDefault(); } //如果主线已经做完了,则选取第一个任务 if (runTimeTaskInfo == null) { runTimeTaskInfo = runTimeTasksData.GetAllToDoList().Where(temp => temp.TaskInfoStruct.TaskType != TaskMap.Enums.EnumTaskType.Main && temp.IsStart).FirstOrDefault(); } //如果当前存在任务则显示 if (runTimeTaskInfo != null) { taskTitleObj.SetActive(true); taskValueObj.SetActive(true); gameObject.GetComponent <Image>().color = new Color(1, 1, 1, 0.3f); taskTitleText.text = runTimeTaskInfo.TaskInfoStruct.TaskTitile; taskValueText.text = runTimeTaskInfo.TaskInfoStruct.TaskExplain; StartCoroutine(WaitUpdateValueText());//用于刷新显示 verticalLayoutGroup.SetLayoutHorizontal(); verticalLayoutGroup.SetLayoutVertical(); } //如果当前不存在任务则隐藏 else { taskTitleObj.SetActive(false); taskValueObj.SetActive(false); gameObject.GetComponent <Image>().color = new Color(1, 1, 1, 0); taskTitleText.text = ""; taskValueText.text = ""; } }
/// <summary> /// 初始化对话 /// </summary> private void InitTalk() { fisrtKeyUP = false; int touchNPCID = iInteractiveState.ClickInteractiveNPCID; TaskMap.RunTimeTaskInfo[] runTimeTaskInfos = runtimeTasksData.GetAllToDoList() .Where(temp => temp.TaskInfoStruct.ReceiveTaskNpcId == touchNPCID && temp.IsOver == false && temp.IsStart == false) .ToArray(); //首先选择 TaskMap.RunTimeTaskInfo runTimeTaskInfo = runTimeTaskInfos.Where(temp => temp.TaskInfoStruct.TaskType == TaskMap.Enums.EnumTaskType.Spur).FirstOrDefault(); if (runTimeTaskInfo == null) { runTimeTaskInfo = runTimeTaskInfos.Where(temp => temp.TaskInfoStruct.TaskType == TaskMap.Enums.EnumTaskType.Repeat).FirstOrDefault(); } if (runTimeTaskInfo != null) { this.runTimeTaskInfo = runTimeTaskInfo;//这个表示当前的任务 DialogueCondition[] dialogueConditions = dialogueStructData.SearchDialogueConditionsByNPCID(runTimeTaskInfo.TaskInfoStruct.ReceiveTaskNpcId, temp => temp.enumDialogueType == EnumDialogueType.Ask).ToArray(); DialoguePoint taskPoint; dialogueCodition = dialogueConditions.Where(temp => DialoguePointHasThisTask(temp.topPoint, this.runTimeTaskInfo.ID.ToString(), out taskPoint)).FirstOrDefault(); if (dialogueCodition != null)//如果存在该任务 { this.nowDialoguePoint = this.dialogueCodition.topPoint; InitDontShowTalk(dialogueCodition); ShowTalk(); } else { gameObject.SetActive(false); } } else { gameObject.SetActive(false); } }