コード例 #1
0
    public void OnEvent(int eventid, object param)
    {
        if (eventid == (int)Client.GameEventID.TASK_VISITNPC)
        {
            m_currvisitNpc = (uint)param;
        }
        else if (eventid == (int)Client.GameEventID.TASK_ITEM_COLLECT_USE)
        {
            Client.stTaskNpcItem stData = (Client.stTaskNpcItem)param;
            TaskItemCollect(stData);
        }
        else if (eventid == (int)Client.GameEventID.SYSTEM_LOADUICOMPELETE)
        {
            if (!FirstLoginSuccess)
            {
                FirstLoginSuccess = true;

                if (m_nAcceptTaskId != 0)
                {
                    Engine.Utility.EventEngine.Instance().DispatchEvent((int)Client.GameEventID.TASK_ACCEPT, m_nAcceptTaskId);
                    m_nAcceptTaskId = 0;
                }
            }
        }
        else if ((int)Client.GameEventID.RECONNECT_SUCESS == eventid)
        {
            this.FirstLoginSuccess = true;

            //大重连  服务器会重发所有消息
            Client.stReconnectSucess rs = (Client.stReconnectSucess)param;
            if (rs.isLogin)
            {
                this.m_bReconnect = true;

                if (DataManager.Manager <UIPanelManager>().IsShowPanel(PanelID.NpcDialogPanel))
                {
                    DataManager.Manager <UIPanelManager>().HidePanel(PanelID.NpcDialogPanel);
                    DataManager.Manager <UIPanelManager>().ShowMain();
                }
                Engine.Utility.Log.Info("重连成功关闭任务追踪界面");
                //DataManager.Manager<UIPanelManager>().HidePanel(PanelID.MissionAndTeamPanel);
            }
        }
        else if ((int)Client.GameEventID.ENTITYSYSTEM_CREATEENTITY == eventid)
        {
            Client.stCreateEntity createEntity = (Client.stCreateEntity)param;
            AddEntityEffect(createEntity);
        }
        else if ((int)Client.GameEventID.ENTITYSYSTEM_REMOVEENTITY == eventid)
        {
            Client.stRemoveEntity removeEntity = (Client.stRemoveEntity)param;
            RemoveEntityEffect(removeEntity);
        }
        else if ((int)Client.GameEventID.TASK_CANSUBMIT == eventid)
        {
            Client.stTaskCanSubmit taskSubmit = (Client.stTaskCanSubmit)param;
            RemoveCollectNpcEffectByTaskId(taskSubmit.taskid);
        }
    }
コード例 #2
0
ファイル: GuideManager_Event.cs プロジェクト: zuojiashun/src
    /// <summary>
    /// 事件处理
    /// </summary>
    /// <param name="nEventID"></param>
    /// <param name="param"></param>
    public void GlobalEventHandler(int nEventID, object param)
    {
        GuideDefine.GuideTriggerType triggerType = GuideDefine.GuideTriggerType.Invalide;
        bool playerLogin = false;

        switch (nEventID)
        {
        case (int)Client.GameEventID.ENTITYSYSTEM_LEVELUP:
        {
            triggerType = GuideDefine.GuideTriggerType.Level;
            CheckTabFuncOpen(true);
        }
        break;

        case (int)(int)Client.GameEventID.CHAPTER_EFFECT_END:
        {
            triggerType = GuideDefine.GuideTriggerType.ChapterEnd;
        }
        break;

        case (int)Client.GameEventID.TASK_ACCEPT:
        case (int)Client.GameEventID.TASK_DONING:
        case (int)Client.GameEventID.TASK_CANSUBMIT:
        case (int)Client.GameEventID.TASK_DONE:
        case (int)Client.GameEventID.UIEVENTGUIDERECYCLETRIGGER:
        {
            triggerType = GuideDefine.GuideTriggerType.Task;
        };
            break;

        case (int)Client.GameEventID.SEVENDAYOPENSTATUS:
        case (int)Client.GameEventID.GODWEAPENSTATUS:
        case (int)Client.GameEventID.OPENSERVERGIFTSTATUS:
        case (int)Client.GameEventID.FIRSTRECHARGESTATUS:
        case (int)Client.GameEventID.RETREWARDSTATUS:
        case (int)Client.GameEventID.QUESTIONSTATUS:
        {
            triggerType = GuideDefine.GuideTriggerType.Condition;
        }
        break;

        case (int)Client.GameEventID.TITLE_NEWTITLE:               //称号获得
        case (int)Client.GameEventID.MAINPANEL_SHOWREDWARING:      //日常
        {
            stShowMainPanelRedPoint st        = (stShowMainPanelRedPoint)param;
            WarningDirection        direction = (WarningDirection)st.direction;
            WarningEnum             model     = (WarningEnum)st.modelID;
            if (model == WarningEnum.Daily && st.bShowRed)
            {
                triggerType = GuideDefine.GuideTriggerType.Condition;
            }
        }
        break;

        case (int)Client.GameEventID.UIEVENTDOGUIDEWORKFLOWCHECK:
        {
            CheckWorkFlowData checkData = new CheckWorkFlowData
            {
                CheckTypeMask = GuideDefine.GetTriggerMaskByType(GuideDefine.GuideTriggerType.Always),
            };
            if (null != param && param is CheckWorkFlowData)
            {
                checkData = (CheckWorkFlowData)param;
            }
            CheckWorkFlow(checkData);
        }
        break;

        case (int)Client.GameEventID.SYSTEM_GAME_READY:
            //case (int)Client.GameEventID.PLAYER_LOGIN_SUCCESS:
        {
            triggerType = GuideDefine.GuideTriggerType.Always;
            playerLogin = true;
            CheckTabFuncOpen(false);
        }
        break;

        case (int)Client.GameEventID.RECONNECT_SUCESS:
        {
            //断线重连
            if (null != param && param is Client.stReconnectSucess)
            {
                Client.stReconnectSucess reconnect = (Client.stReconnectSucess)param;
            }
            triggerType = GuideDefine.GuideTriggerType.Always;
            playerLogin = true;
        }
        break;

        case (int)Client.GameEventID.UIEVENTGUIDEWORKFLOWCHECKCOMPLETE:
        {
            //设置数据状态
            m_bool_workFlowReady = true;
            //执行下一个工作流
            Engine.Utility.EventEngine.Instance().DispatchEvent((int)Client.GameEventID.UIEVENTDOGUIDEWORKFLOW);
        }
        break;

        case (int)Client.GameEventID.UIEVENTDOGUIDEWORKFLOW:
        {
            DoWorkFlow();
        }
        break;

        case (int)Client.GameEventID.UIEVENT_PANELSTATUS:
        {
            if (null != param && param is UIPanelBase.PanelStatusData)
            {
                UIPanelBase.PanelStatusData status = (UIPanelBase.PanelStatusData)param;
                if (status.Status == UIPanelBase.PanelStatus.Show)
                {
                    DoRefreshNewFuncOpenStaus(status.ID);
                }
                else if (status.Status == UIPanelBase.PanelStatus.Hide)
                {
                    ClearRecycleTriggerGuideByPanel(status.ID);
                }
            }
        }
        break;

        /***************面板焦点状态改变********************/
        case (int)Client.GameEventID.UIEVENT_PANELFOCUSSTATUSCHANGED:
        {
            UIPanelManager.PanelFocusData status = (UIPanelManager.PanelFocusData)param;
            if (status.GetFocus)
            {
                //任务提交面板显示检测工作流(条件触发)
                Engine.Utility.EventEngine.Instance().DispatchEvent((int)Client.GameEventID.UIEVENTDOGUIDEWORKFLOWCHECK
                                                                    , new CheckWorkFlowData()
                    {
                        CheckTypeMask = (1 << (int)GuideDefine.GuideTriggerType.Condition),
                    });

                //刷新新功能开启状态
                //DoRefreshNewFuncOpenStaus(status.ID);
                //执行下一个工作流
                Engine.Utility.EventEngine.Instance().DispatchEvent((int)Client.GameEventID.UIEVENTDOGUIDEWORKFLOW);
            }
        }
        break;

        case (int)Client.GameEventID.UIEVENTGAMEOBJMOVESTATUSCHANGED:
        {
            if (null != param && param is UIDefine.GameObjMoveData)
            {
                UIDefine.GameObjMoveData moveData = param as UIDefine.GameObjMoveData;
                //Engine.Utility.Log.LogGroup("WJH", "MOveStatus status:{0} child:{1} ", moveData.Status, moveData.Objs.Count);
                bool adjustTime = false;
                bool matchTime  = false;
                switch (moveData.Status)
                {
                case UIDefine.GameObjMoveStatus.MoveToInvisible:
                {
                    adjustTime = true;
                    matchTime  = false;
                }
                break;

                case UIDefine.GameObjMoveStatus.Invisible:
                case UIDefine.GameObjMoveStatus.Visible:
                {
                    adjustTime = true;
                    matchTime  = true;
                }
                break;

                case UIDefine.GameObjMoveStatus.MoveToVisible:
                {
                }
                break;
                }

                AdjustWorkFlowDoTime(adjustTime, matchTime);
                AdjustUnGuideRefreshDoTime(adjustTime, matchTime);
            }
        }
        break;

        /**********新手引导*************/
        case (int)Client.GameEventID.UIEVENTGUIDECOMPLETE:
        {
            //完成一个引导
            CompleteGuide((uint)param);
            //执行下一个工作流
            Engine.Utility.EventEngine.Instance().DispatchEvent((int)Client.GameEventID.UIEVENTDOGUIDEWORKFLOW);
        }
        break;

        case (int)Client.GameEventID.UIEVENTGUIDESKIP:
        {
            //跳过静默完成当前引导
            SilentCompleteGuideGroup((uint)param);
            //执行下一个工作流
            Engine.Utility.EventEngine.Instance().DispatchEvent((int)Client.GameEventID.UIEVENTDOGUIDEWORKFLOW);
        }
        break;

        /**********新功能开启*************/
        case (int)Client.GameEventID.UIEVENTNEWFUNCOPENREAD:
        {
            OnNewFuncOpenRead((GuideDefine.FuncOpenShowData)param);
        }
        break;

        case (int)Client.GameEventID.UIEVENTNEWFUNCOPENADD:
        {
            OnNewFuncOpenAdd((GuideDefine.FuncOpenShowData)param);
        }
        break;

        case (int)Client.GameEventID.UIEVENTNEWFUNCCOMPLETE:
        {
            //执行下一个工作流
            Engine.Utility.EventEngine.Instance().DispatchEvent((int)Client.GameEventID.UIEVENTDOGUIDEWORKFLOW);
        }
        break;

        //物品变更检测工作流(条件触发)
        case (int)Client.GameEventID.UIEVENT_UPDATEITEM:
        {
            if (null != param && param is ItemDefine.UpdateItemPassData)
            {
                ItemDefine.UpdateItemPassData passData = param as ItemDefine.UpdateItemPassData;
                if (passData.UpdateType == ItemDefine.UpdateItemType.Add ||
                    (passData.UpdateType == ItemDefine.UpdateItemType.Update && passData.ChangeNum > 0))
                {
                    GuideDefine.GetTriggerMaskByType(GuideDefine.GuideTriggerType.Condition);
                    //任务提交面板显示检测工作流(条件触发)
                    Engine.Utility.EventEngine.Instance().DispatchEvent((int)Client.GameEventID.UIEVENTDOGUIDEWORKFLOWCHECK
                                                                        , new CheckWorkFlowData()
                        {
                            CheckTypeMask = (GuideDefine.GetTriggerMaskByType(GuideDefine.GuideTriggerType.Condition)
                                             | GuideDefine.GetTriggerMaskByType(GuideDefine.GuideTriggerType.ItemGet)),
                            Param = passData.BaseId,
                        });
                }
            }
        }
        break;

        case (int)Client.GameEventID.UIEVENTUISTATECHANGED:
        {
            if (null != param && param is PanelID)
            {
                PanelID pid = (PanelID)param;
                RefreshGuideTargetObj(pid);
            }
        }
        break;
        }

        if (triggerType != GuideDefine.GuideTriggerType.Invalide)
        {
            //检测工作流
            Engine.Utility.EventEngine.Instance().DispatchEvent((int)Client.GameEventID.UIEVENTDOGUIDEWORKFLOWCHECK, new CheckWorkFlowData()
            {
                CheckTypeMask = GuideDefine.GetTriggerMaskByType(triggerType),
                Param         = param,
            });
        }

        if (playerLogin)
        {
            //数据流准备好
            Engine.Utility.EventEngine.Instance().DispatchEvent((int)Client.GameEventID.UIEVENTGUIDEWORKFLOWCHECKCOMPLETE);
        }
    }