/// <summary> /// 解析任务配置-任务触发条件 /// </summary> /// <param name="taskConfig"></param> /// <returns></returns> private List <TaskCreaterParams> ParseTaskTriggerConditions(ConfTask taskConfig) { List <TaskCreaterParams> taskTriggerCreaterParamList = new List <TaskCreaterParams>(); TaskCreaterParams triggerParam = new TaskCreaterParams() { Condition = taskConfig.triggerKey, Data = taskConfig.triggerValue }; taskTriggerCreaterParamList.Add(triggerParam); return(taskTriggerCreaterParamList); }
/// <summary> /// 解析任务配置-任务奖励信息 /// </summary> /// <param name="taskConfig"></param> /// <returns></returns> private List <TaskCreaterParams> ParseTaskRewardInfo(ConfTask taskConfig) { List <TaskCreaterParams> taskCreaterParamList = new List <TaskCreaterParams>(); //称号奖励 if (taskConfig.rewardTitleId != 0) { TaskCreaterParams titleParam = new TaskCreaterParams() { Condition = (int)TaskRewardMode.TITLE, Data = taskConfig.rewardTitleId }; taskCreaterParamList.Add(titleParam); } //体力奖励 if (taskConfig.rewardVit != 0) { TaskCreaterParams vitParam = new TaskCreaterParams() { Condition = (int)TaskRewardMode.ITEM, Data = new RewardItemDataWrap() { ItemType = RewardItemType.VIT, ItemNum = taskConfig.rewardVit } }; taskCreaterParamList.Add(vitParam); } //金币奖励 if (taskConfig.rewardCoin != 0) { TaskCreaterParams coinParam = new TaskCreaterParams() { Condition = (int)TaskRewardMode.ITEM, Data = new RewardItemDataWrap() { ItemType = RewardItemType.COIN, ItemNum = taskConfig.rewardCoin } }; taskCreaterParamList.Add(coinParam); } //现金奖励 if (taskConfig.rewardCash != 0) { TaskCreaterParams cashParam = new TaskCreaterParams() { Condition = (int)TaskRewardMode.ITEM, Data = new RewardItemDataWrap() { ItemType = RewardItemType.CASH, ItemNum = taskConfig.rewardCash } }; taskCreaterParamList.Add(cashParam); } //经验奖励 if (taskConfig.rewardExp != 0) { TaskCreaterParams expParam = new TaskCreaterParams() { Condition = (int)TaskRewardMode.ITEM, Data = new RewardItemDataWrap() { ItemType = RewardItemType.EXP, ItemNum = taskConfig.rewardExp } }; taskCreaterParamList.Add(expParam); } //long chapter_id = GlobalInfo.MY_PLAYER_INFO.PlayerChapterSystem.CurrentChapterInfo.ChapterID; //ConfChapter chapter_data = ConfChapter.Get(chapter_id); //int jigsaw_idx = chapter_data.clueUnlockTaskIds.ToList().IndexOf(taskConfig.id); //if (jigsaw_idx >= 0) //{ // TaskCreaterParams expParam = new TaskCreaterParams() { Condition = (int)TaskRewardMode.CLUE, Data = new RewardClueDataWarp() { m_clueType = TaskClueMode.JIGSAW, m_png = chapter_data.clueIds[jigsaw_idx] } }; // taskCreaterParamList.Add(expParam); //} //int npc_idx = chapter_data.actorUnlockTaskIds.ToList().IndexOf(taskConfig.id); //if (npc_idx >= 0) //{ // TaskCreaterParams expParam = new TaskCreaterParams() { Condition = (int)TaskRewardMode.CLUE, Data = new RewardClueDataWarp() { m_clueType = TaskClueMode.NPC, m_id = chapter_data.actorIds[npc_idx] } }; // taskCreaterParamList.Add(expParam); //} //int scene_idx = chapter_data.sceneUnlockTaskIds.ToList().IndexOf(taskConfig.id); //if (scene_idx >= 0) //{ // TaskCreaterParams expParam = new TaskCreaterParams() { Condition = (int)TaskRewardMode.CLUE, Data = new RewardClueDataWarp() { m_clueType = TaskClueMode.SCENE, m_id = chapter_data.scenceIds[scene_idx] } }; // taskCreaterParamList.Add(expParam); //} //道具奖励 if (taskConfig.rewardPropIds.Length > 0 && taskConfig.rewardPropNums.Length > 0) { long[] rewardItemIds = taskConfig.rewardPropIds; int[] rewardItemNums = taskConfig.rewardPropNums; if (rewardItemIds.Length != rewardItemNums.Length) { Debug.LogError($"task {taskConfig.id} reward item error,item ids length {rewardItemIds.Length}, item nums length {rewardItemNums.Length}"); } for (int i = 0; i < rewardItemIds.Length; ++i) { RewardItemDataWrap rewardItemData = new RewardItemDataWrap() { ItemNum = rewardItemNums[i], ItemID = rewardItemIds[i], ItemType = RewardItemType.ITEM }; taskCreaterParamList.Add(new TaskCreaterParams() { Condition = (int)TaskRewardMode.ITEM, Data = rewardItemData }); } } return(taskCreaterParamList); }
/// <summary> /// 解析任务配置-任务完成条件 /// </summary> /// <param name="taskConfig"></param> /// <returns></returns> private List <TaskCreaterParams> ParseTaskCompleteConditions(ConfTask taskConfig) { List <TaskCreaterParams> taskCompleteCondition = new List <TaskCreaterParams>(); if (taskConfig.conditionLevel > 0) { taskCompleteCondition.Add(new TaskCreaterParams() { Condition = (int)TaskCompleteMode.CompleteByLevel, Data = taskConfig.conditionLevel }); } if (taskConfig.conditionSceneId > 0) { taskCompleteCondition.Add(new TaskCreaterParams() { Condition = (int)TaskCompleteMode.CompletedBySceneID, Data = taskConfig.conditionSceneId }); } if (taskConfig.conditionDialogueId > 0) { taskCompleteCondition.Add(new TaskCreaterParams() { Condition = (int)TaskCompleteMode.CompletedByDialog, Data = taskConfig.conditionDialogueId }); } if (taskConfig.conditionReasoningId > 0) { taskCompleteCondition.Add(new TaskCreaterParams() { Condition = (int)TaskCompleteMode.CompleteByReasonID, Data = taskConfig.conditionReasoningId }); } if (taskConfig.conditionPropExIds.Length > 0) { long[] itemIds = taskConfig.conditionPropExIds; TaskCreaterParams taskCreaterParams = new TaskCreaterParams() { Condition = (int)TaskCompleteMode.CompleteByCombinePropID, Data = itemIds }; taskCompleteCondition.Add(taskCreaterParams); } //if (taskConfig.condition > 0) // taskCompleteCondition.Add(new TaskCreaterParams() { Condition = (int)TaskCompleteMode.CompleteByReasonID, Data = taskConfig.conditionReasoningId }); if (taskConfig.conditionFindId > 0) { taskCompleteCondition.Add(new TaskCreaterParams() { Condition = (int)TaskCompleteMode.CompleteByScanID, Data = taskConfig.conditionFindId }); } //if (taskConfig.conditionEventId > 0) // taskCompleteCondition.Add(new TaskCreaterParams() { Condition = (int)TaskCompleteMode.CompletedByEvents, Data = taskConfig.conditionEventId }); if (taskConfig.conditionPropIds.Length > 0 && taskConfig.conditionPropNums.Length > 0) { long[] itemIds = taskConfig.conditionPropIds; long[] itemNums = new long[taskConfig.conditionPropNums.Length]; Array.Copy(taskConfig.conditionPropNums, itemNums, itemNums.Length); if (itemIds.Length != itemNums.Length) { Debug.LogWarning($"task: {taskConfig.id} error ,complete item nums error,item id:{itemIds.Length} ,item nums :{itemNums.Length}"); if (itemNums.Length > itemIds.Length) { itemNums = new ArraySegment <long>(itemNums, 0, itemIds.Length).Array; } else if (itemNums.Length < itemIds.Length) { long[] itemNumsCompatibility = new long[itemIds.Length]; Array.Copy(itemNums, itemNumsCompatibility, itemNums.Length); for (int i = itemNums.Length - 1; i < itemIds.Length; ++i) { itemNumsCompatibility[i] = itemNums[itemNums.Length - 1]; } itemNums = itemNumsCompatibility; } } TaskCreaterParams taskCreaterParams = new TaskCreaterParams() { Condition = (int)TaskCompleteMode.CompletedByItem, Data = new List <long[]> { itemIds, itemNums } }; taskCompleteCondition.Add(taskCreaterParams); } else if (taskConfig.conditionExhibits.Length > 0 && taskConfig.conditionExhibitsNum.Length > 0) { long[] itemIds = taskConfig.conditionExhibits; long[] itemNums = new long[taskConfig.conditionExhibitsNum.Length]; Array.Copy(taskConfig.conditionExhibitsNum, itemNums, itemNums.Length); if (itemIds.Length != itemNums.Length) { Debug.LogError($"task: {taskConfig.id} error ,complete exhibit nums error,item id:{itemIds.Length} ,item nums :{itemNums.Length}"); } TaskCreaterParams taskCreaterParams = new TaskCreaterParams() { Condition = (int)TaskCompleteMode.CompletedByItem, Data = new List <long[]> { itemIds, itemNums } }; taskCompleteCondition.Add(taskCreaterParams); } return(taskCompleteCondition); }