Exemple #1
0
        /// <summary>
        /// 接收新的任务
        /// </summary>
        /// <param name="message"></param>
        private void OnAcceptNewTasks(object message)
        {
#if true
            TimeModule.Instance.SetTimeout(
                () =>
            {
                SCAcceptTaskNotice msg = message as SCAcceptTaskNotice;

                IList <AcceptTaskInfo> acceptTaskInfos = msg.AcceptTasks;
                for (int i = 0; i < acceptTaskInfos.Count; ++i)
                {
                    AcceptTaskInfo taskInfo = acceptTaskInfos[i];
                    long taskUUID           = taskInfo.PlayerTaskId;

                    this.m_currentTaskList.RemoveAll(item => item.TaskConfID == taskInfo.TaskId && TaskSyncStatus.LOCAL == item.TaskSyncStatus);

                    TaskBase task = m_playerTaskSet.GetTaskById(taskUUID);
                    if (task == null)
                    {
                        task          = CreateNormalTaskInstance(taskInfo.TaskId);
                        task.TaskUUID = taskUUID;
                        m_playerTaskSet.AddTask(taskUUID, task);
                    }

                    task.TaskCurrentStatus = (TaskStatus)taskInfo.Status;
                    task.TaskSyncStatus    = TaskSyncStatus.SYNCED;

                    if (this.m_currentTaskList.Where(item => item.TaskUUID == task.TaskUUID).Count() > 0)
                    {
                        Debug.LogWarning($"accept new task duplicate task{task.TaskUUID}");
                    }
                    else
                    {
                        this.m_currentTaskList.Add(task);

                        GameEvents.TaskEvents.OnAcceptNewTask.SafeInvoke(taskUUID);
                        GameEvents.TaskEvents.OnSyncedTaskList.SafeInvoke(1);
                    }
                }
            }, 3.0f);
#else
            SCAcceptTaskNotice msg = message as SCAcceptTaskNotice;

            IList <AcceptTaskInfo> acceptTaskInfos = msg.AcceptTasks;
            for (int i = 0; i < acceptTaskInfos.Count; ++i)
            {
                AcceptTaskInfo taskInfo = acceptTaskInfos[i];
                long           taskUUID = taskInfo.PlayerTaskId;

                this.m_currentTaskList.RemoveAll(item => item.TaskConfID == taskInfo.TaskId && TaskSyncStatus.LOCAL == item.TaskSyncStatus);

                TaskBase task = m_playerTaskSet.GetTaskById(taskUUID);
                if (task == null)
                {
                    task          = CreateNormalTaskInstance(taskInfo.TaskId);
                    task.TaskUUID = taskUUID;
                    m_playerTaskSet.AddTask(taskUUID, task);
                }

                task.TaskCurrentStatus = (TaskStatus)taskInfo.Status;
                task.TaskSyncStatus    = TaskSyncStatus.SYNCED;

                if (this.m_currentTaskList.Where(item => item.TaskUUID == task.TaskUUID).Count() > 0)
                {
                    Debug.LogWarning($"accept new task duplicate task{task.TaskUUID}");
                }
                else
                {
                    this.m_currentTaskList.Add(task);

                    GameEvents.TaskEvents.OnAcceptNewTask.SafeInvoke(taskUUID);
                    GameEvents.TaskEvents.OnSyncedTaskList.SafeInvoke(1);
                }
            }
#endif
        }
        public static void Call(IMessage message)
        {
            //IMessage response = null;
            int messageId = message.GetMessageId();

            UnityEngine.Debug.Log("send standalon message " + messageId);
            switch (messageId)
            {
            case MessageDefine.CSSceneSuspendRequest:     //场景暂停
                SCSceneSuspendResponse suspendRes = new SCSceneSuspendResponse();
                suspendRes.Result = 0;
                MessageHandler.Call(MessageDefine.SCSceneSuspendResponse, suspendRes);
                break;

            case MessageDefine.SCSuspendResponse:     //拼图场景暂停
            {
                SCSuspendResponse suspendResponse = new SCSuspendResponse();
                suspendResponse.Result = 0;
                MessageHandler.Call(MessageDefine.SCSuspendResponse, suspendResponse);
            }
            break;

            case MessageDefine.CSSceneResumeRequest:     //场景恢复
                SCSceneResumeResponse resumeRes = new SCSceneResumeResponse();
                resumeRes.Result = 0;
                MessageHandler.Call(MessageDefine.SCSceneResumeResponse, resumeRes);
                break;

            case MessageDefine.CSResumeRequest:    //拼图场景恢复
            {
                SCResumeResponse resumeResponse = new SCResumeResponse();
                resumeResponse.Result = 0;
                MessageHandler.Call(MessageDefine.SCResumeResponse, resumeResponse);
            }
            break;

            case MessageDefine.CSSkillEmitRequest:     //技能释放
                CSSkillEmitRequest  emitReq = (CSSkillEmitRequest)message;
                SCSkillEmitResponse emitRes = new SCSkillEmitResponse();
                long propID = emitReq.PropId;
                emitRes.PropId = emitReq.PropId;
                ConfProp confProp = ConfProp.Get(propID);
                if (confProp == null)
                {
                    emitRes.SkillId = 0;
                    emitRes.Result  = 0;
                    MessageHandler.Call(MessageDefine.SCSkillEmitResponse, emitRes);
                    return;
                }
                emitRes.SkillId = confProp.skillId;
                emitRes.Result  = 1;
                MessageHandler.Call(MessageDefine.SCSkillEmitResponse, emitRes);
                break;

            case MessageDefine.CSSceneRewardRequest:      //局内结算
                #region
                CSSceneRewardRequest  rewardRequest = (CSSceneRewardRequest)message;
                ConfScene             confScene     = ConfScene.Get(rewardRequest.SceneId);
                SCSceneRewardResponse rewardRes     = new SCSceneRewardResponse();
                rewardRes.SceneId    = rewardRequest.SceneId;
                rewardRes.OutputCoin = confScene.outputMoney;
                rewardRes.OutputCash = confScene.outputCash;
                rewardRes.OutputVit  = confScene.outputVit;
                rewardRes.OutputExp  = confScene.outputExp;
                if (confScene.dropId > 0)
                {
                    ConfDropOut2 dropOut = ConfDropOut2.Get(confScene.dropId);
                    if (!string.IsNullOrEmpty(dropOut.fixed2))
                    {
                        List <DropOutJsonData> rdm_datas = CommonHelper.ParseDropOut(dropOut.fixed2);
                        for (int i = 0; i < rdm_datas.Count; i++)
                        {
                            GiftItem giftItem = new GiftItem();
                            giftItem.ItemId = rdm_datas[i].value;
                            giftItem.Num    = rdm_datas[i].count;
                            rewardRes.GiftItems.Add(giftItem);
                        }
                    }
                }
                MessageHandler.Call(MessageDefine.SCSceneRewardResponse, rewardRes);
                #endregion
                break;

            case MessageDefine.CSBuildingListReq:     //建筑物数据
                #region
                SCBuildingListResp buildRes  = new SCBuildingListResp();
                BuildingInfo       buildInfo = new BuildingInfo();
                buildInfo.BuildingId = 1;
                buildInfo.Status     = 1;
                buildRes.Infos.Add(buildInfo);
                MessageHandler.Call(MessageDefine.SCBuildingListResp, buildRes);
                #endregion
                break;

            case MessageDefine.CSTaskIdListRequest:     //获取任务列表
                #region
                //SCTaskIdListResponse taskIdListRes = new SCTaskIdListResponse();
                //TaskIdInfo taskIdInfo = new TaskIdInfo();
                //taskIdInfo.TaskId = 6001;
                //taskIdInfo.PlayerTaskId = taskIdInfo.TaskId * 10;
                //taskIdListRes.TaskIdInfos.Add(taskIdInfo);
                //MessageHandler.Call(MessageDefine.SCTaskIdListResponse, taskIdListRes);
                #endregion
                break;

            case MessageDefine.CSTaskListRequest:
                #region 任务
                CSTaskListRequest taskListRequest = (CSTaskListRequest)message;

                if (taskListRequest.TaskIds.Count > 1)
                {
                    //SCAcceptTaskNotice taskNotice = new SCAcceptTaskNotice();
                    if (taskListRequest.TaskIds[0] > 0)
                    {
                        SCTaskStatusChangeNotice taskStatusChange = new SCTaskStatusChangeNotice();
                        taskStatusChange.PlayerTaskId = taskListRequest.TaskIds[0] * 10;
                        taskStatusChange.TaskId       = taskListRequest.TaskIds[0];
                        taskStatusChange.Status       = 3;
                        MessageHandler.Call(MessageDefine.SCTaskStatusChangeNotice, taskStatusChange);
                    }

                    SCAcceptTaskNotice taskNotice = new SCAcceptTaskNotice();

                    AcceptTaskInfo acceptNewTaskInfo = new AcceptTaskInfo();
                    acceptNewTaskInfo.TaskId       = taskListRequest.TaskIds[1];
                    acceptNewTaskInfo.PlayerTaskId = acceptNewTaskInfo.TaskId * 10;
                    acceptNewTaskInfo.Status       = 1;
                    taskNotice.AcceptTasks.Add(acceptNewTaskInfo);


                    MessageHandler.Call(MessageDefine.SCAcceptTaskNotice, taskNotice);
                }
                #endregion
                //SCTaskListResponse taskListRes = new SCTaskListResponse();
                //TaskInfo taskInfo = new TaskInfo();
                //taskInfo.TaskId = 6001;
                //taskInfo.Status = 1;
                //taskInfo.PlayerTaskId = taskInfo.TaskId * 10;
                //taskListRes.TaskInfos.Add(taskInfo);
                //MessageHandler.Call(MessageDefine.SCTaskListResponse, taskListRes);
                break;

            case MessageDefine.CSChapterListRequest:     //章节
                #region
                SCChapterListResponse chapterListRes = new SCChapterListResponse();
                PlayerChapterInfo     chapterInfo    = new PlayerChapterInfo();
                chapterInfo.PlayerChapterId = 1000;
                chapterInfo.ChapterId       = 1;
                chapterInfo.Status          = 1;
                chapterListRes.Chapters.Add(chapterInfo);
                MessageHandler.Call(MessageDefine.SCChapterListResponse, chapterListRes);
                #endregion
                break;

            case MessageDefine.CSEnterRequest:
                #region 拼图
                SCEnterResponse enterRes = new SCEnterResponse();
                enterRes.Result = 0;
                CSEnterRequest enterRequest = (CSEnterRequest)message;
                long           sceneId      = enterRequest.SceneId;
                int            sceneType    = (int)(sceneId / CommonData.C_SCENE_TYPE_ID);

                int vitConsume = 0;
                int seconds    = 0;
                for (int i = 0; i < enterRequest.OfficerIds.Count; i++)
                {
                    long        officerId = enterRequest.OfficerIds[i];
                    ConfOfficer officer   = ConfOfficer.Get(officerId);
                    vitConsume += officer.vitConsume;
                    seconds    += officer.secondGain;
                    enterRes.OfficerIds.Add(officerId);
                }
                //if (sceneType == CommonData.C_SEEK_SCENE_START_ID) //寻物
                //{

                //}
                enterRes.Seconds    = seconds;
                enterRes.VitConsume = vitConsume;
                if (sceneType == CommonData.C_JIGSAW_SCENE_START_ID)     //拼图
                {
                    enterRes.Seconds = 3600;
                }
                //else if (sceneType == CommonData.C_CARTOON_SCENE_START_ID) // 事件
                //{

                //}
                MessageHandler.Call(MessageDefine.SCEnterResponse, enterRes);
                #endregion
                break;

            case MessageDefine.CSFinishRequest:
                #region 拼图结束
                CSFinishRequest finishRequest = (CSFinishRequest)message;

                SCFinishResponse finishRes = new SCFinishResponse();
                finishRes.Result  = 0;
                finishRes.SceneId = finishRequest.SceneId;
                Reward reward = new Reward();
                reward.Percent = 100;
                reward.Type    = 3;
                reward.Num     = 15;
                finishRes.Rewards.Add(reward);
                MessageHandler.Call(MessageDefine.SCFinishResponse, finishRes);
                #endregion
                break;

            case MessageDefine.CSSearchSceneSelectOfficerReq:
                #region   警员
                CSSearchSceneSelectOfficerReq selectOfficerReq = (CSSearchSceneSelectOfficerReq)message;
                int officerVitConsume  = 0;
                int officerCostSeconds = 300;
                for (int i = 0; i < selectOfficerReq.OfficerIds.Count; i++)
                {
                    long        officerId   = selectOfficerReq.OfficerIds[i];
                    ConfOfficer confOfficer = ConfOfficer.Get(officerId / 100);
                    officerVitConsume += confOfficer.vitConsume;
                    //officerCostSeconds += confOfficer.secondGain;
                }

                SCSearchSceneSelectOfficerResp selectOfficerReponse = new SCSearchSceneSelectOfficerResp();
                selectOfficerReponse.VitConsume  = officerVitConsume;
                selectOfficerReponse.CostSeconds = officerCostSeconds;
                MessageHandler.Call(MessageDefine.SCSearchSceneSelectOfficerResp, selectOfficerReponse);
                #endregion
                break;

            case MessageDefine.CSSceneEnterRequest:
            {
                #region 进入场景
                CSSceneEnterRequest  enterReq      = (CSSceneEnterRequest)message;
                SCSceneEnterResponse enterResponse = new SCSceneEnterResponse();
                int enterVitConsume  = 0;
                int enterCostSeconds = 300;
                for (int i = 0; i < enterReq.OfficerIds.Count; i++)
                {
                    long        officerId   = enterReq.OfficerIds[i];
                    ConfOfficer confOfficer = ConfOfficer.Get(officerId / 100);
                    enterVitConsume += confOfficer.vitConsume;
                    //enterCostSeconds += confOfficer.secondGain;
                    enterResponse.OfficerIds.Add(officerId);
                }
                enterResponse.IsDropScene = false;

                string   exhibit      = GuidNewNodeManager.Instance.GetCommonParams(GuidNewNodeManager.sceneExhibit);
                string[] exhibitIdStr = exhibit.Split('|');
                if (exhibitIdStr.Length > 0)
                {
                    for (int i = 0; i < exhibitIdStr.Length; i++)
                    {
                        long exhibitId = long.Parse(exhibitIdStr[i]);
                        //enterResponse.SceneExhibits.Add(exhibitId);
                        enterResponse.TaskExhibits.Add(exhibitId);
                        enterResponse.VitConsume = enterVitConsume;
                        enterResponse.Seconds    = enterCostSeconds;
                    }
                    MessageHandler.Call(MessageDefine.SCSceneEnterResponse, enterResponse);
                }
                #endregion
            }
            break;

            case MessageDefine.CSMarketItemRequest:
            {
                #region 请求时钟商店数据
                CSMarketItemRequest  marketItemReq = (CSMarketItemRequest)message;
                SCMarketItemResponse marketItemRes = new SCMarketItemResponse();
                MarketItemMsg        marketmsg     = new MarketItemMsg();
                if (marketItemReq.PropId == 4)
                {
                    marketmsg.Id       = 304;
                    marketmsg.Cost     = 0;
                    marketmsg.CostType = CostType.CostCash;
                }
                marketItemRes.MarketItems = marketmsg;
                MessageHandler.Call(MessageDefine.SCMarketItemResponse, marketItemRes);
                #endregion
            }
            break;

            case MessageDefine.MarkeBuyRequest:
            {
                #region 购买
                MarkeBuyRequest buyReq = (MarkeBuyRequest)message;

                MarkeBuyResponse buyRes  = new MarkeBuyResponse();
                PlayerPropMsg    propmsg = new PlayerPropMsg();
                if (buyReq.MarketItemId == 304)
                {
                    //购买时钟
                    propmsg.PropId = 4;
                    propmsg.Count  = 1;
                }
                buyRes.Props = propmsg;
                MessageHandler.Call(MessageDefine.MarkeBuyResponse, buyRes);
                #endregion
            }
            break;

            case MessageDefine.CSSkillTimerEmitReq:
            {
                #region 警员技能释放
                SCSkillTimerEmitResp res = new SCSkillTimerEmitResp();
                res.Result = 0;
                MessageHandler.Call(MessageDefine.SCSkillTimerEmitResp, res);
                #endregion
            }
            break;

            case MessageDefine.CSEventEnterRequest:
            {
                #region 进入事件
                SCEventEnterResponse res = new SCEventEnterResponse();
                res.Result = 0;
                MessageHandler.Call(MessageDefine.SCEventEnterResponse, res);
                #endregion
            }
            break;

            case MessageDefine.CSEventPhaseFeedbackRequest:
            {
                #region 请求事件
                CSEventPhaseFeedbackRequest request = (CSEventPhaseFeedbackRequest)message;


                SCEventPhaseFeedbackResponse res = new SCEventPhaseFeedbackResponse();
                res.Valuation  = true;
                res.TotalScore = 200;
                PhaseInfo phaseInfo = new PhaseInfo();
                phaseInfo.PhaseId           = (int)ConfEvent.Get(request.EventId).phases[0];
                phaseInfo.PhaseTemplateId   = (int)ConfEvent.Get(request.EventId).phases[0];
                phaseInfo.OfficerTemplateId = 121;
                phaseInfo.PhaseScore        = 200;
                res.PhaseInfos.Add(phaseInfo);
                MessageHandler.Call(MessageDefine.SCEventPhaseFeedbackResponse, res);
                #endregion
            }
            break;

            case MessageDefine.CSEventRewardRequest:
            {
                CSEventRewardRequest request = (CSEventRewardRequest)message;

                SCEventRewardResponse res = new SCEventRewardResponse();
                res.Score     = 200;
                res.Valuation = 2;
                SceneRewardComprise sceneReward = new SceneRewardComprise();
                ConfEvent           confEvent   = ConfEvent.Get(request.EventId);
                sceneReward.OutputCash = confEvent.cashGain;
                //sceneReward.OutputCoin = confEvent.coinGain;
                //sceneReward.OutputVit = confEvent.vitGain;
                //sceneReward.OutputExp = confEvent.expGain;
                sceneReward.Type = 1;
                res.SceneRewardComprise.Add(sceneReward);
                MessageHandler.Call(MessageDefine.SCEventRewardResponse, res);
            }
            break;
            }
        }