예제 #1
0
    public void OnLoadSceneOver()
    {
        mIsLoadSceneOver = true;
        while (mLoadSceneOverActions.Count > 0)
        {
            var act = mLoadSceneOverActions.Dequeue();
            try
            {
                act(true);
            }
            catch (Exception)
            {
                // do nothing.
            }
        }

        if (null != GameLogic.Instance && null != GameLogic.Instance.Scene)
        {
            var table = Table.GetScene(GameLogic.Instance.Scene.SceneTypeId);
            if (null != table)
            {
                var fuben = Table.GetFuben(table.FubenId);
                if (null != fuben)
                {
                    if (-1 != fuben.BeforeStoryId)
                    {
                        PlayCG.PlayById(fuben.BeforeStoryId);
                    }
                }
            }
        }

        if (isInMieshiFuben())
        {
            var e1 = new Show_UI_Event(UIConfig.MieShiTapUI);
            EventDispatcher.Instance.DispatchEvent(e1);
        }

        var logic = GameLogic.Instance;

        if (logic != null)
        {
            var scene = logic.Scene;
            if (scene != null)
            {
                var tbScene = Table.GetScene(scene.SceneTypeId);
                if (tbScene != null && tbScene.FubenId == -1) // 不是副本
                {
                    PlayerDataManager.Instance.PlayerDataModel.DungeonState = (int)eDungeonState.Start;
                }
            }
        }
    }
예제 #2
0
파일: Scene.cs 프로젝트: pikaqiufk/Client
    private void ExcuteDungeonLogicOpration(bool isReconnectDungeon = false)
    {
        if (lastLogicId == LogicId)
        {
            return;
        }
        var tbFubenLogic = Table.GetFubenLogic(LogicId);

        if (tbFubenLogic == null)
        {
            return;
        }
        lastLogicId = LogicId;
        for (int i = 0, imax = tbFubenLogic.AdvanceOpTYpe.Length; i < imax; ++i)
        {
            var opType = (eFubenPhaseOpType)tbFubenLogic.AdvanceOpTYpe[i];
            if (opType == eFubenPhaseOpType.None)
            {
                break;
            }
            var param1 = tbFubenLogic.AdvanceParam1[i];
            switch (opType)
            {
            case eFubenPhaseOpType.PlayAnimation:
            {
                if (isReconnectDungeon)
                {
//下线后回来的第一次
                    break;
                }
                PlayCG.PlayById(param1, CallBackPlayCgOver);
            }
            break;

            case eFubenPhaseOpType.PlayBgMusic:
            {
                if (isReconnectDungeon)
                {
//下线后回来的第一次
                    SoundManager.Instance.StopBGM(0);
                    SoundManager.Instance.PlayBGMusic(param1, 0, 3, false);
                }
                else
                {
                    SoundManager.Instance.PlayBGMusic(param1, 3, 3, false);
                }
                Logger.Info("-----------------eFubenPhaseOpType.PlayBgMusic:id = {0}-------------------", param1);
            }
            break;
            }
        }
    }
예제 #3
0
        public void OnLoadSceneOver(int formersceneid)
        {
            bool needAutoFinght = true;

            mIsLoadSceneOver = true;
            while (mLoadSceneOverActions.Count > 0)
            {
                var act = mLoadSceneOverActions.Dequeue();
                try
                {
                    act(true);
                }
                catch (Exception)
                {
                    // do nothing.
                }
            }

            if (null != GameLogic.Instance && null != GameLogic.Instance.Scene)
            {
                var table = Table.GetScene(GameLogic.Instance.Scene.SceneTypeId);
                if (null != table && table.FubenId >= 0)
                {
                    var fuben = Table.GetFuben(table.FubenId);
                    if (null != fuben)
                    {
                        if (-1 != fuben.BeforeStoryId)
                        {
                            PlayCG.PlayById(fuben.BeforeStoryId);
                            needAutoFinght = false;
                        }
                    }
                }
            }

            if (PlayCG.Instance.IsPlayCG)
            {
                needAutoFinght = false;
            }

            PlayerDataManager.Instance.CheckShowSkill();

            if (isInMieshiFuben())
            {
                var e1 = new Show_UI_Event(UIConfig.MieShiTapUI);
                EventDispatcher.Instance.DispatchEvent(e1);
                needAutoFinght = false;
            }

            var logic = GameLogic.Instance;

            if (logic != null)
            {
                var scene = logic.Scene;
                if (scene != null)
                {
                    var tbScene = Table.GetScene(scene.SceneTypeId);
                    if (tbScene != null && tbScene.FubenId == -1) // 不是副本
                    {
                        PlayerDataManager.Instance.PlayerDataModel.DungeonState = (int)eDungeonState.Start;
                    }
                    if (!PlayCG.Instance.IsPlayCG)
                    {
                        var player = ObjManager.Instance.MyPlayer;
                        if (null == player)
                        {
                            Logger.Debug("null==player");
                            return;
                        }
                        var tbFormerScene = Table.GetScene(formersceneid);
                        if (null == tbFormerScene)
                        {
                            return;
                        }
                        if (null != tbFormerScene && EnterSceneCounter > 1)//第一次进入游戏不需要播放传送特效
                        {
                            var tbFormerFuben = Table.GetFuben(tbFormerScene.FubenId);
                            var tbNowFuben    = Table.GetFuben(tbScene.FubenId);
                            if (null == tbFormerFuben)//从场景切
                            {
                                if (null == tbNowFuben)
                                {//切场景播
                                    var tableData = Table.GetEffect(2002);
                                    if (tableData != null)
                                    {
                                        EffectManager.Instance.CreateEffect(tableData, player, null, null, null,
                                                                            (tableData.BroadcastType == 0 && player.GetObjType() == OBJ.TYPE.MYPLAYER) || tableData.BroadcastType == 1);
                                    }
                                }
                                else if (tbNowFuben.AssistType != (int)eDungeonAssistType.PhaseDungeon)
                                {//进非相位副本播
                                    var tableData = Table.GetEffect(2002);
                                    if (tableData != null)
                                    {
                                        EffectManager.Instance.CreateEffect(tableData, player, null, null, null,
                                                                            (tableData.BroadcastType == 0 && player.GetObjType() == OBJ.TYPE.MYPLAYER) || tableData.BroadcastType == 1);
                                    }
                                }
                            }
                            else
                            {//从副本切
                                if (tbFormerFuben.AssistType != (int)eDungeonAssistType.PhaseDungeon)
                                {
                                    var tableData = Table.GetEffect(2002);
                                    if (tableData != null)
                                    {
                                        EffectManager.Instance.CreateEffect(tableData, player, null, null, null,
                                                                            (tableData.BroadcastType == 0 && player.GetObjType() == OBJ.TYPE.MYPLAYER) || tableData.BroadcastType == 1);
                                    }
                                }
                            }
                        }
                    }
                    if (!needAutoFinght)
                    {
                        return;
                    }

                    if (tbScene != null && tbScene.FubenId != -1)
                    {
                        var tbFuben = Table.GetFuben(tbScene.FubenId);
                        if (null == tbFuben)
                        {
                            return;
                        }
                        if (-1 != tbFuben.FarmLogic)
                        {
                            ObjManager.Instance.MyPlayer.EnterAutoCombat();
                        }
                    }
                }
            }
        }
예제 #4
0
    //当任务完成时
    private void OnCommitMission(int id, List <int> newMissionList = null)
    {
        var npcId = NpcId;

        //任务场景特效
        GameLogic.Instance.SceneEffect.OnCommitMission(id);

        //关闭任务窗口
        //EventDispatcher.Instance.DispatchEvent(new Close_UI_Event(UIConfig.MissionFrame));

        //尝试触发新功能系统
        if (null != newMissionList)
        {
            {
                var __list5      = newMissionList;
                var __listCount5 = __list5.Count;
                for (var __i5 = 0; __i5 < __listCount5; ++__i5)
                {
                    var missionId = __list5[__i5];
                    {
                        if (GameLogic.Instance.GuideTrigger.OnMissionBecomeAcceptable(missionId))
                        {
                            EventDispatcher.Instance.DispatchEvent(new Close_UI_Event(UIConfig.MissionFrame));
                            return;
                        }
                    }
                }
            }
        }


        //比方特效
        //EffectManager.Instance.CreateEffect(11, ObjManager.Instance.MyPlayer.gameObject);

        {
//潜规则
            if (id == 6 && 0 == PlayerDataManager.Instance.GetRoleId())
            {
                if (0 == PlayerDataManager.Instance.GetCurrentEquipSkillCount())
                {
                    //关闭任务窗口
                    EventDispatcher.Instance.DispatchEvent(new Close_UI_Event(UIConfig.MissionFrame));

                    EventDispatcher.Instance.DispatchEvent(new Show_UI_Event(UIConfig.MainUI));

                    var e = new SkillEquipMainUiAnime(4, 0);
                    EventDispatcher.Instance.DispatchEvent(e);
                    return;
                }
            }
            else if (id == 6 && 1 == PlayerDataManager.Instance.GetRoleId())
            {
                if (0 == PlayerDataManager.Instance.GetCurrentEquipSkillCount())
                {
                    //关闭任务窗口
                    EventDispatcher.Instance.DispatchEvent(new Close_UI_Event(UIConfig.MissionFrame));

                    EventDispatcher.Instance.DispatchEvent(new Show_UI_Event(UIConfig.MainUI));

                    var e = new SkillEquipMainUiAnime(104, 0);
                    EventDispatcher.Instance.DispatchEvent(e);
                    return;
                }
            }
            else if (id == 6 && 2 == PlayerDataManager.Instance.GetRoleId())
            {
                if (0 == PlayerDataManager.Instance.GetCurrentEquipSkillCount())
                {
                    //关闭任务窗口
                    EventDispatcher.Instance.DispatchEvent(new Close_UI_Event(UIConfig.MissionFrame));

                    EventDispatcher.Instance.DispatchEvent(new Show_UI_Event(UIConfig.MainUI));

                    var e = new SkillEquipMainUiAnime(204, 0);
                    EventDispatcher.Instance.DispatchEvent(e);
                    return;
                }
            }
            else if (id == 107)
            {
                if (2 == PlayerDataManager.Instance.GetCurrentEquipSkillCount())
                {
                    if (0 == PlayerDataManager.Instance.GetRoleId())
                    {
                        //关闭任务窗口
                        EventDispatcher.Instance.DispatchEvent(new Close_UI_Event(UIConfig.MissionFrame));

                        EventDispatcher.Instance.DispatchEvent(new Show_UI_Event(UIConfig.MainUI));

                        var e = new SkillEquipMainUiAnime(6, 2);
                        EventDispatcher.Instance.DispatchEvent(e);
                        return;
                    }
                    else if (1 == PlayerDataManager.Instance.GetRoleId())
                    {
                        //关闭任务窗口
                        EventDispatcher.Instance.DispatchEvent(new Close_UI_Event(UIConfig.MissionFrame));

                        EventDispatcher.Instance.DispatchEvent(new Show_UI_Event(UIConfig.MainUI));

                        var e = new SkillEquipMainUiAnime(106, 2);
                        EventDispatcher.Instance.DispatchEvent(e);
                        return;
                    }
                    else if (2 == PlayerDataManager.Instance.GetRoleId())
                    {
                        //关闭任务窗口
                        EventDispatcher.Instance.DispatchEvent(new Close_UI_Event(UIConfig.MissionFrame));

                        EventDispatcher.Instance.DispatchEvent(new Show_UI_Event(UIConfig.MainUI));

                        var e = new SkillEquipMainUiAnime(207, 2);
                        EventDispatcher.Instance.DispatchEvent(e);
                        return;
                    }
                }
            }
            else if (id == 411)
            {
                //关闭任务窗口
                //EventDispatcher.Instance.DispatchEvent(new Close_UI_Event(UIConfig.MissionFrame));
                //EventDispatcher.Instance.DispatchEvent(new Show_UI_Event(UIConfig.CharacterUI));
                //return;
            }
        }

        //每日任务就不接了着了
        var table = Table.GetMissionBase(id);

        if (null == table)
        {
            //关闭任务窗口
            EventDispatcher.Instance.DispatchEvent(new Close_UI_Event(UIConfig.MissionFrame));
            return;
        }

        if (eMissionMainType.Daily == (eMissionMainType)table.ViewType ||
            eMissionMainType.Circle == (eMissionMainType)table.ViewType)
        {
            //关闭任务窗口
            EventDispatcher.Instance.DispatchEvent(new Close_UI_Event(UIConfig.MissionFrame));
            return;
        }

        //有限播放剧情
        var roleId = PlayerDataManager.Instance.GetRoleId();

        if (roleId >= 0 && roleId < table.StoryId.Length)
        {
            var storyId = table.StoryId[roleId];
            if (storyId != -1)
            {
                //关闭任务窗口
                EventDispatcher.Instance.DispatchEvent(new Close_UI_Event(UIConfig.MissionFrame));
                PlayCG.PlayById(storyId, () => { NextMissionAction(table.NextMission, npcId); });
                return;
            }
        }

        //弹出完成提示
        if (-1 != table.UIGuideId)
        {
            ShowMissionUI(id);
            //关闭任务窗口
            EventDispatcher.Instance.DispatchEvent(new Close_UI_Event(UIConfig.MissionFrame));
            return;
        }

        //没有剧情就打开下一个任务
        if (-1 == NextMissionAction(table.NextMission, npcId, 0.5f))
        {
            //关闭任务窗口
            EventDispatcher.Instance.DispatchEvent(new Close_UI_Event(UIConfig.MissionFrame));
        }
    }
예제 #5
0
    //当接受任务时
    private void OnAcceptMission(int id)
    {
        var tableData = Table.GetMissionBase(id);

        if (null == tableData)
        {
            return;
        }

        if (eMissionType.Dungeon == (eMissionType)tableData.FinishCondition)
        {
            ChangedSceneByMission(tableData.FinishParam[0], id);
            EventDispatcher.Instance.DispatchEvent(new Close_UI_Event(UIConfig.MissionFrame));
            return;
        }


        var npcId = NpcId;

        //场景特效
        GameLogic.Instance.SceneEffect.OnAcceptMission(id);


        //播放接受任务特效
        //EffectManager.Instance.CreateEffect(10, ObjManager.Instance.MyPlayer.gameObject);

        //尝试触发新功能系统
        if (GameLogic.Instance.GuideTrigger.OnMissionAccept(id))
        {
            EventDispatcher.Instance.DispatchEvent(new Close_UI_Event(UIConfig.MissionFrame));
            return;
        }

        //是否需要显示对话框


        //播放剧情
        var callBack = new Action(() =>
        {
            if (eMissionType.AcceptStroy == (eMissionType)tableData.FinishCondition)
            { // 播放剧情
                var roleId = PlayerDataManager.Instance.GetRoleId();
                var idx    = -1;
                if (roleId >= 0 && roleId < tableData.FinishParam.Count)
                {
                    idx = tableData.FinishParam[roleId];
                }
                if (-1 == idx)
                {
                    idx = tableData.FinishParam[0];
                }
                if (-1 != idx)
                {
                    //关闭UI
                    EventDispatcher.Instance.DispatchEvent(new Close_UI_Event(UIConfig.MissionFrame));
                    var call        = new Action(() => { NextMissionAction(id, NpcId); });
                    var willDestroy = true;
                    //120任务硬编码
                    if (120 == id)
                    {
                        call        = () => { ChangedSceneByMission(5, 120); };
                        willDestroy = false;
                    }

                    PlayCG.PlayById(idx, call, willDestroy);
                }
                else
                {
                    EventDispatcher.Instance.DispatchEvent(new Close_UI_Event(UIConfig.MissionFrame));
                }
            }
            else
            {
                {
//如果是支线任务,并且不是从NPC那里接受的,就不继续做什么
                    var type = (eMissionMainType)tableData.ViewType;
                    if (eMissionMainType.SubStoryLine == type)
                    {
                        if (-1 == tableData.NpcStart)
                        {
                            EventDispatcher.Instance.DispatchEvent(new Close_UI_Event(UIConfig.MissionFrame));
                            return;
                        }
                    }
                }


                if (-1 == NextMissionAction(id, npcId, 0.5f))
                {
                    //关闭UI
                    EventDispatcher.Instance.DispatchEvent(new Close_UI_Event(UIConfig.MissionFrame));
                }
            }
        });

        //显示任务剧情对话
        if (-1 != tableData.TalkId)
        {
            //关闭UI
            EventDispatcher.Instance.DispatchEvent(new Close_UI_Event(UIConfig.MissionFrame));
            StartDialog(tableData.TalkId, callBack);
            return;
        }

        //判断剧情播放
        callBack();
    }
예제 #6
0
    //根据任务状态去往任务所需地点
    public void GoToMissionPlace(int id)
    {
        MissionBaseModel data = null;

        if (!MissionData.Datas.TryGetValue(id, out data))
        {
            return;
        }
        GameControl.Executer.Stop();
        var table = Table.GetMissionBase(id);

        if (null == table)
        {
            Logger.Error("GoToMissionPlace({0})  null == table", id);
            return;
        }
        var type  = (eMissionMainType)table.ViewType;
        var state = (eMissionState)data.Exdata[0];

        if (eMissionState.Acceptable == state)
        {
            if (-1 == table.NpcStart)
            {
                var arg = new MissionListArguments();
                arg.Tab       = 2;
                arg.MissionId = id;

                EventDispatcher.Instance.DispatchEvent(new Show_UI_Event(UIConfig.MissionList, arg));
                //GameLogic.Instance.StartCoroutine(ShowMissionById(2,id));
                return;
            }
            ObjManager.Instance.MyPlayer.LeaveAutoCombat();

            var e = new MapSceneDrawPath(new Vector3(table.PosX, 0, table.PosY), 1.0f);
            EventDispatcher.Instance.DispatchEvent(e);

            var command = GameControl.GoToCommand(table.NpcScene, table.PosX, table.PosY, 1.0f);
            GameControl.Executer.PushCommand(command);

            var command1 = new FuncCommand(() => { Instance.OpenMissionById(id, table.NpcStart); });
            GameControl.Executer.PushCommand(command1);
        }
        else if (eMissionState.Finished == state)
        {
            //如果是日常任务就直接弹界面

            if (eMissionMainType.Daily == type ||
                eMissionMainType.Circle == type)
            {
                var arg = new MissionListArguments();
                arg.Tab       = 3;
                arg.MissionId = id;
                EventDispatcher.Instance.DispatchEvent(new Show_UI_Event(UIConfig.MissionList, arg));
                //GameLogic.Instance.StartCoroutine(ShowMissionById(3,id));
                return;
            }
            if (eMissionMainType.SubStoryLine == type && -1 == table.FinishNpcId)
            {
                var arg = new MissionListArguments();
                arg.Tab       = 2;
                arg.MissionId = id;
                EventDispatcher.Instance.DispatchEvent(new Show_UI_Event(UIConfig.MissionList, arg));
                return;
            }
            ObjManager.Instance.MyPlayer.LeaveAutoCombat();

            var e = new MapSceneDrawPath(new Vector3(table.FinishPosX, 0, table.FinishPosY), 1.0f);
            EventDispatcher.Instance.DispatchEvent(e);

            var command = GameControl.GoToCommand(table.FinishSceneId, table.FinishPosX, table.FinishPosY, 1.0f);
            GameControl.Executer.PushCommand(command);

            var command1 = new FuncCommand(() => { Instance.OpenMissionById(id, table.FinishNpcId); });
            GameControl.Executer.PushCommand(command1);
        }
        else if (eMissionState.Unfinished == state)
        {
            if (eMissionMainType.Circle == type)
            {
//记录一下当前正在做的环任务
                CurrentDoingCircleMission = id;
            }
            else
            {
                CurrentDoingCircleMission = -1;
            }

            EventDispatcher.Instance.DispatchEvent(new UIEvent_DoMissionGoTo());

            if (0 == table.TrackType)
            {
//到地图某一地方
                ObjManager.Instance.MyPlayer.LeaveAutoCombat();
                var e = new MapSceneDrawPath(new Vector3(table.TrackParam[1], 0, table.TrackParam[2]), 1.0f);
                EventDispatcher.Instance.DispatchEvent(e);

                var command = GameControl.GoToCommand(table.TrackParam[0], table.TrackParam[1], table.TrackParam[2]);
                GameControl.Executer.ExeCommand(command);
            }
            else if (1 == table.TrackType)
            {
//直接开某个界面
                if (13 == table.TrackParam[0])
                {
                    var arg = new MissionListArguments();
                    arg.IsFromMisson = true;
                    arg.Tab          = table.TrackParam[1];
                    var e = new Show_UI_Event(UIConfig.MissionList, arg);
                    EventDispatcher.Instance.DispatchEvent(e);
                }
                else
                {
                    GameUtils.GotoUiTab(table.TrackParam[0], table.TrackParam[1], table.TrackParam[2]);
                }


                return;
            }

            switch ((eMissionType)table.FinishCondition)
            {
            case eMissionType.KillMonster:
            case eMissionType.CheckItem:
            {
                //计算下和该任务完成地点相同的其他任务
                var missionList = new List <int>();
                missionList.Add(id);
                {
                    // foreach(var tempData in MissionData.Datas)
                    var __enumerator3 = (MissionData.Datas).GetEnumerator();
                    while (__enumerator3.MoveNext())
                    {
                        var tempData = __enumerator3.Current;
                        {
                            var missionData = tempData.Value;

                            if (missionData.MissionId == id)
                            {
                                continue;
                            }

                            //正在做的任务
                            if (eMissionState.Unfinished != (eMissionState)missionData.Exdata[0])
                            {
                                continue;
                            }

                            //只检查杀怪和获得物品的任务
                            var tableTemp = Table.GetMissionBase(missionData.MissionId);
                            var typeTemp  = (eMissionType)tableTemp.FinishCondition;
                            if (eMissionType.KillMonster != typeTemp &&
                                eMissionType.CheckItem != typeTemp)
                            {
                                continue;
                            }

                            //检查任务完成地点
                            if (tableTemp.TrackParam[0] != table.TrackParam[0] ||
                                tableTemp.TrackParam[1] != table.TrackParam[1] ||
                                tableTemp.TrackParam[2] != table.TrackParam[2])
                            {
                                continue;
                            }

                            missionList.Add(missionData.MissionId);
                        }
                    }
                }


                var command1 = new FuncCommand(() =>
                    {
                        GameControl.Instance.TargetObj = null;
                        ObjManager.Instance.MyPlayer.EnterAutoCombat(missionList);
                    });
                GameControl.Executer.PushCommand(command1);
            }
            break;

            case eMissionType.AcceptProgressBar:
            case eMissionType.AreaProgressBar:
            {
                var command1 = new FuncCommand(() =>
                    {
                        if (OBJ.CHARACTER_STATE.IDLE != ObjManager.Instance.MyPlayer.GetCurrentStateName())
                        {
                            return;
                        }

                        var dicId = table.FinishParam[1];
                        var e     = new ShowMissionProgressEvent(GameUtils.GetDictionaryText(dicId));
                        EventDispatcher.Instance.DispatchEvent(e);
                        Logger.Info("FuncCommand CallBackFun.......................1");

                        Action endCallback = () =>
                        {
                            ObjManager.Instance.MyPlayer.PlayAnimation(OBJ.CHARACTER_ANI.STAND);
                            CompleteMission(id);
                            if (-1 != table.FinishParam[2])
                            {
                                GameLogic.Instance.SceneEffect.StopEffect(table.FinishParam[2]);
                            }
                            var e1 = new HideMissionProgressEvent(id);
                            EventDispatcher.Instance.DispatchEvent(e1);
                        };

                        Action interruptCallback = () =>
                        {
                            if (-1 != table.FinishParam[2])
                            {
                                GameLogic.Instance.SceneEffect.StopEffect(table.FinishParam[2]);
                            }
                            var e1 = new HideMissionProgressEvent(id);
                            EventDispatcher.Instance.DispatchEvent(e1);
                        };
                        GameLogic.Instance.StopCoroutine("LaunchAction");
                        var animationId = -1;
                        if (!int.TryParse(table.PlayCollectionAct, out animationId))
                        {
                            Logger.Error("int.TryParse(table.PlayCollectionAct) failed [{0}]", table.Id);
                        }

                        if (-1 == animationId)
                        {
                            animationId = 11;
                        }

                        GameLogic.Instance.StartCoroutine(GameUtils.LaunchAction(animationId, table.FinishParam[0],
                                                                                 endCallback, interruptCallback));
                        if (-1 != table.FinishParam[2])
                        {
                            GameLogic.Instance.SceneEffect.PlayEffect(table.FinishParam[2]);
                        }
                    });
                GameControl.Executer.PushCommand(command1);
            }
            break;

            case eMissionType.EquipItem:
            case eMissionType.EnhanceEquip:
            {
            }
            break;

            case eMissionType.AreaStroy:
            {
//播放剧情
                if (-1 != CurrentMissionTableData.FinishParam[0])
                {
                    var storyId = CurrentMissionTableData.FinishParam[0];

                    Action endCallback = () => { CompleteMission(id); };

                    PlayCG.PlayById(storyId, endCallback);
                }
            }
            break;

            case eMissionType.BuyItem:
            case eMissionType.DepotTakeOut:
            {
                var command1 = new FuncCommand(() => { OpenMissionByNpcId(table.FinishParam[2]); });
                GameControl.Executer.PushCommand(command1);
            }
            break;

            case eMissionType.Dungeon:
            {
                var sceneId = table.FinishParam[0];

                var currentSceneId = GameLogic.Instance.Scene.SceneTypeId;
                if (sceneId != currentSceneId)
                {
                    UIManager.Instance.ShowMessage(MessageBoxType.OkCancel,
                                                   GameUtils.GetDictionaryText(220507),
                                                   GameUtils.GetDictionaryText(1503),
                                                   () => { ChangedSceneByMission(sceneId, id); });
                }
                else
                {
                    var player = ObjManager.Instance.MyPlayer;
                    if (null != player)
                    {
                        player.EnterAutoCombat();
                    }
                }
            }
            break;

            default:
            {
                EventDispatcher.Instance.DispatchEvent(new ShowUIHintBoard(210118));
            }
            break;
            }
        }
        EventDispatcher.Instance.DispatchEvent(new Close_UI_Event(UIConfig.MissionList));
    }