// 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);
        }
    }
Exemple #3
0
 /// <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 = "";
     }
 }
Exemple #4
0
    /// <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);
        }
    }