Exemplo n.º 1
0
 //返回场景ID
 private int DealRequestEctypeSceneChange(SMsgActionNewWorld_SC targetScene)
 {
     //此时mapID是否生效问题,当其为0,1时再次请求,如果为2时
     if (targetScene.dwMapParam != 0)
     {
         if (IsCreateRoleStroyLine((int)targetScene.dwMapParam))
         {
             EctypeModel.Instance.SetPreEctypeID(CommonDefineManager.Instance.CommonDefine.TUTORIAL_ECTYPE_ID);
         }
         //当剧情ID不为0,说明存在要播放剧情//
         foreach (var stroyLineConfig in StroyLineConfigManager.Instance.GetStroyLineConfig)
         {
             if (stroyLineConfig.Value._StroyLineID == targetScene.dwMapParam)
             {
                 storyConfigData = stroyLineConfig.Value;
                 StroyLineDataManager.Instance.curStroyLineKey = new StroyLineKey {
                     VocationID  = storyConfigData._TriggerVocation,
                     ConditionID = storyConfigData._TriggerCondition, EctypeID = storyConfigData._EctypeID
                 };
                 return(stroyLineConfig.Value._SceneMapID);
             }
         }
     }
     return(0);
 }
Exemplo n.º 2
0
    /// <summary>
    /// 场景转换处理
    /// </summary>
    /// <param name="notifyArgs"></param>
    void SceneChangeHandle(INotifyArgs notifyArgs)
    {
        PlayerManager.Instance.LockPlayOnSceneChange(false);
        //add by lee : stop player state
        PlayerManager.Instance.StopPlayersSkill();
        SMsgActionNewWorld_SC targetScene = (SMsgActionNewWorld_SC)notifyArgs;

        m_newWorldMsg = targetScene;
        //如果是需要换服,需要对一些数据进行管理
        switch ((eTeleportType)targetScene.byTeleportFlg)
        {
        case eTeleportType.TELEPORTTYPE_JUMPSERVER:
            HeartFPSManager.Instance.Clear();
            SingletonManager.Instance.Clear();
            NotifyManager.ClearEvents();
            EnegryColdWorkData.Instance.Re_registration();
            TownGuideManager.Instance.ResetEventHandler();
            RegisterEventHandler();
            break;
        }

        GameState targetSceneState = SceneManager.GetCurSceneState(targetScene.dwMapId);

        //TraceUtil.Log(SystemModel.Rocky, "下一个地图ID:" + targetScene.dwMapId);
        //TraceUtil.Log(SystemModel.Rocky, "下一个dwMapParam:" + targetScene.dwMapParam);

        this.GotoState(targetSceneState, true);
        int returnMapID = DealRequestEctypeSceneChange(targetScene);

        if (returnMapID != 0)
        {
            m_curSceneMapID = (uint)returnMapID;
        }
        else
        {
            //跳转生效//
            m_curSceneMapID = targetScene.dwMapId;
        }
        SceneDataManager.Instance.ResetMapTridderAreaInfo(m_curSceneMapID);
        //TraceUtil.Log(SystemModel.Rocky, "下一个地图ID(剧情过滤完成后):" + m_curSceneMapID);
        m_curSceneName     = EctypeConfigManager.Instance.SceneConfigList[(int)m_curSceneMapID]._szSceneName;
        IsLockOperatorMode = EctypeConfigManager.Instance.SceneConfigList[(int)m_curSceneMapID]._isLockMode;

        //TraceUtil.Log(SystemModel.Rocky, "下一个Scene Name:" + m_curSceneName);
    }