public void OpenStartCartoonForID(long id) { ContextId = id; ConfCartoonScene confScene = ConfCartoonScene.Get(ContextId); if (confScene == null && confScene.sceneInfoIds.Length == 0) { return; } CSCartoonEnterRequest enterReq = new CSCartoonEnterRequest(); enterReq.SceneId = ContextId; GameEvents.NetWorkEvents.SendMsg.SafeInvoke(enterReq); }
private void OnRes(object obj) { if (obj is SCChatFinishResponse) { SCChatFinishResponse res = (SCChatFinishResponse)obj; if (res.Status == null) { var req = EngineCoreEvents.SystemEvents.GetRspPairReq.SafeInvoke(); CSChatFinishRequest req_msg = req as CSChatFinishRequest; long chat_id = req_msg.ChatId; foreach (var task in m_currentTaskList) { NormalTask taskInfo = task as NormalTask; if (taskInfo.CompleteConditionList.Count > 1 || 0 == taskInfo.CompleteConditionList.Count) { continue; } TaskCompleteCondition taskCompleteCondition = taskInfo.CompleteConditionList[0]; TaskCompleteAttribute taskCompleteAttribute = taskCompleteCondition.GetType().GetCustomAttributes(typeof(TaskCompleteAttribute), true)[0] as TaskCompleteAttribute; if (TaskCompleteMode.CompletedByDialog != taskCompleteAttribute.CompleteMode) { continue; } long task_dialog_id = (long)taskCompleteCondition.TaskCompleteData; if (chat_id != task_dialog_id) { continue; } taskInfo.TaskCurrentStatus = TaskStatus.COMPLETED; } GameEvents.TaskEvents.OnSyncedTaskList.SafeInvoke(this.m_currentTaskList.Count); } } else if (obj is SCCombineResponse) { SCCombineResponse res = (SCCombineResponse)obj; if (res.Success) { var req = EngineCoreEvents.SystemEvents.GetRspPairReq.SafeInvoke(); CSCombineRequest req_msg = req as CSCombineRequest; long combine_id = req_msg.CombineId; long prop_id = ConfCombineFormula.Get(combine_id).outputId; bool tsk_finished = false; foreach (var task in m_currentTaskList) { NormalTask taskInfo = task as NormalTask; if (taskInfo.CompleteConditionList.Count > 1 || 0 == taskInfo.CompleteConditionList.Count) { continue; } TaskCompleteCondition taskCompleteCondition = taskInfo.CompleteConditionList[0]; TaskCompleteAttribute taskCompleteAttribute = taskCompleteCondition.GetType().GetCustomAttributes(typeof(TaskCompleteAttribute), true)[0] as TaskCompleteAttribute; if (TaskCompleteMode.CompleteByCombinePropID != taskCompleteAttribute.CompleteMode) { continue; } long[] all_tsk_combine_prop_id = (long[])taskCompleteCondition.TaskCompleteData; if (0 == all_tsk_combine_prop_id.Length) { Debug.LogError($"合成任务{taskInfo.TaskConfID}没有配置完成物件"); continue; } long task_combine_prop_id = all_tsk_combine_prop_id[0]; if (prop_id != task_combine_prop_id) { continue; } tsk_finished = true; taskInfo.TaskCurrentStatus = TaskStatus.COMPLETED; } if (tsk_finished) { GameEvents.TaskEvents.OnSyncedTaskList.SafeInvoke(this.m_currentTaskList.Count); EngineCoreEvents.UIEvent.HideUIEvent.SafeInvoke(UIDefine.UI_COMBINE); } } } else if (obj is SCCartoonEnterResponse) { SCCartoonEnterResponse res = obj as SCCartoonEnterResponse; if (!MsgStatusCodeUtil.OnError(res.Result)) { var req = EngineCoreEvents.SystemEvents.GetRspPairReq.SafeInvoke(); CSCartoonEnterRequest req_msg = req as CSCartoonEnterRequest; long cur_scene_id = req_msg.SceneId; foreach (var task in m_currentTaskList) { NormalTask taskInfo = task as NormalTask; if (taskInfo.CompleteConditionList.Count > 1 || 0 == taskInfo.CompleteConditionList.Count) { continue; } TaskCompleteCondition taskCompleteCondition = taskInfo.CompleteConditionList[0]; TaskCompleteAttribute taskCompleteAttribute = taskCompleteCondition.GetType().GetCustomAttributes(typeof(TaskCompleteAttribute), true)[0] as TaskCompleteAttribute; if (TaskCompleteMode.CompletedBySceneID != taskCompleteAttribute.CompleteMode) { continue; } long scene_id = (long)taskCompleteCondition.TaskCompleteData; if (CommonData.C_CARTOON_SCENE_START_ID != scene_id / CommonData.C_SCENE_TYPE_ID) { continue; } if (cur_scene_id != scene_id) { continue; } taskInfo.TaskCurrentStatus = TaskStatus.COMPLETED; } } } else if (obj is SCCartoonRewardReqsponse) { GameEvents.TaskEvents.OnSyncedTaskList.SafeInvoke(this.m_currentTaskList.Count); } }