Ejemplo n.º 1
0
        internal void IndoorSceneLoaded(IndoorSceneRoot root)
        {
            Int32 num = m_indoorScenes.FindIndex((IndoorCache a) => a.Key == root.SceneName);

            if (num == -1)
            {
                String text = "IndoorScene name is invalid '" + root.SceneName + "'";
                foreach (IndoorCache indoorCache in m_indoorScenes)
                {
                    if (indoorCache.IsLoading)
                    {
                        text = text + "\n expected '" + indoorCache.Key + "' ?";
                    }
                }
                Debug.LogError(text);
                Destroy(root.gameObject);
                return;
            }
            root.transform.position = new Vector3(0f, -2000f, 0f);
            root.gameObject.SetActive(false);
            m_indoorScenes[num] = new IndoorCache(root.SceneName, root, false);
            if (m_lastRequest == root.SceneName)
            {
                LoadingScene = null;
                m_loads      = null;
                if (FinishLoadIndoorScene != null)
                {
                    FinishLoadIndoorScene(this, new FinishLoadIndoorSceneEventArgs(root));
                }
            }
            else
            {
                RequestIndoorScene(m_lastRequest);
            }
        }
Ejemplo n.º 2
0
        public void HandleChangeConversation(Object p_sender, EventArgs p_args)
        {
            IngameController main = IngameController.Instance;

            if (String.IsNullOrEmpty(m_currentIndoorScene) || m_indoorModel == null)
            {
                HandleBeginConversation(main);
            }
            else
            {
                m_popupActive        = false;
                m_InConversation     = true;
                m_currentIndoorScene = LegacyLogic.Instance.ConversationManager.IndoorScene;
                if (String.IsNullOrEmpty(m_currentIndoorScene))
                {
                    main.Minimap.gameObject.SetActive(false);
                    main.HUDControl.gameObject.SetActive(false);
                    main.DangerSense.gameObject.SetActive(false);
                    m_finishIndoorSceneLoad   = true;
                    m_finishFade              = true;
                    m_conversation.FinishFade = true;
                    m_conversation.gameObject.SetActive(true);
                    m_conversation.Init();
                    m_container.Init();
                }
                else
                {
                    m_finishIndoorSceneLoad   = false;
                    m_finishFade              = false;
                    m_conversation.FinishFade = false;
                    m_conversation.gameObject.SetActive(false);
                    OverlayManager  overlay      = IngameController.Instance.Overlay;
                    IndoorSceneRoot currentModel = m_indoorModel;
                    EventHandler    callback     = delegate(Object sender, EventArgs e)
                    {
                        main.Minimap.gameObject.SetActive(false);
                        main.HUDControl.gameObject.SetActive(false);
                        main.DangerSense.gameObject.SetActive(false);
                        IndoorSceneLoader.Instance.RequestIndoorScene(m_currentIndoorScene);
                        m_finishFade = true;
                        m_conversation.FinishFade = true;
                        m_conversation.gameObject.SetActive(true);
                        FXMainCamera instance = FXMainCamera.Instance;
                        instance.SwitchCamera(null);
                        if (currentModel != null)
                        {
                            currentModel.gameObject.SetActive(false);
                        }
                        m_conversation.Init();
                        m_container.Init();
                    };
                    overlay.FadeFrontTo(1f, 1f, callback);
                }
            }
        }
 protected override void Update()
 {
     if (m_SceneRoot == null)
     {
         m_SceneRoot = transform.root.GetComponentInChildren <IndoorSceneRoot>();
     }
     else
     {
         base.Update();
     }
 }
Ejemplo n.º 4
0
        public void RequestIndoorScene(String sceneName)
        {
            m_lastRequest = sceneName;
            if (LoadingScene != null)
            {
                return;
            }
            Int32       num         = m_indoorScenes.FindIndex((IndoorCache a) => a.Key == sceneName);
            IndoorCache indoorCache = default(IndoorCache);

            if (num >= 0)
            {
                indoorCache = m_indoorScenes[num];
            }
            else if (m_indoorScenes.Count >= 1)
            {
                IndoorSceneRoot rootScene = m_indoorScenes[0].RootScene;
                Helper.DestroyGO <IndoorSceneRoot>(ref rootScene);
                Resources.UnloadUnusedAssets();
                m_indoorScenes.RemoveAt(0);
            }
            if (!indoorCache.IsLoading && indoorCache.RootScene == null)
            {
                if (num >= 0)
                {
                    m_indoorScenes[num] = new IndoorCache(sceneName, null, true);
                }
                else
                {
                    m_indoorScenes.Add(new IndoorCache(sceneName, null, true));
                }
                SceneRequest sceneRequest = null;
                if (LegacyLogic.Instance.ModController.InModMode)
                {
                    sceneRequest = AssetBundleManagers.Instance.Mod.RequestScene(sceneName, 10, new SceneRequestCallback(OnSceneBundleLoaded), null);
                }
                if (sceneRequest == null)
                {
                    sceneRequest = AssetBundleManagers.Instance.Main.RequestScene(sceneName, 10, new SceneRequestCallback(OnSceneBundleLoaded), null);
                }
                if (sceneRequest == null)
                {
                    Debug.LogError("Fail load indoor scene '" + sceneName + "'");
                }
                LoadingScene = sceneName;
            }
            else if (FinishLoadIndoorScene != null && indoorCache.RootScene != null)
            {
                FinishLoadIndoorScene(this, new FinishLoadIndoorSceneEventArgs(indoorCache.RootScene));
            }
        }
Ejemplo n.º 5
0
        public void HandleEndConversation(IngameController main)
        {
            IndoorSceneRoot currentModel = m_indoorModel;

            if (!String.IsNullOrEmpty(m_currentIndoorScene) && !m_conversation.m_skipFade)
            {
                OverlayManager overlay  = IngameController.Instance.Overlay;
                EventHandler   callback = delegate(Object sender, EventArgs e)
                {
                    main.Minimap.gameObject.SetActive(true);
                    main.HUDControl.gameObject.SetActive(true);
                    main.DangerSense.gameObject.SetActive(true);
                    m_conversation.gameObject.SetActive(false);
                    FXMainCamera instance2 = FXMainCamera.Instance;
                    instance2.SwitchCamera(null);
                    if (currentModel != null)
                    {
                        currentModel.gameObject.SetActive(false);
                        AudioManager.Instance.RequestPlayAudioID(currentModel.ExitAudioID, 0, -1f, instance2.transform, 1f, 0f, 0f, null);
                    }
                    LegacyLogic.Instance.EventManager.InvokeEvent(null, EEventType.INDOOR_SCENE_CLOSED, EventArgs.Empty);
                    overlay.FadeFrontTo(0f);
                };
                overlay.FadeFrontTo(1f, 1f, callback);
            }
            else
            {
                main.Minimap.gameObject.SetActive(true);
                main.HUDControl.gameObject.SetActive(true);
                main.DangerSense.gameObject.SetActive(true);
                m_conversation.gameObject.SetActive(false);
                FXMainCamera instance = FXMainCamera.Instance;
                instance.SwitchCamera(null);
                if (currentModel != null && currentModel.gameObject.activeSelf)
                {
                    currentModel.gameObject.SetActive(false);
                    AudioManager.Instance.RequestPlayAudioID(currentModel.ExitAudioID, 0, -1f, instance.transform, 1f, 0f, 0f, null);
                }
                LegacyLogic.Instance.EventManager.InvokeEvent(null, EEventType.INDOOR_SCENE_CLOSED, EventArgs.Empty);
            }
            m_conversation.m_skipFade = false;
            m_currentIndoorScene      = null;
            m_InConversation          = false;
        }
Ejemplo n.º 6
0
 private void OnIndoorSceneLoaded(Object p_sender, FinishLoadIndoorSceneEventArgs p_args)
 {
     m_indoorSceneRoot = p_args.Root;
     SetMode(Mode.INDOOR);
 }
Ejemplo n.º 7
0
 private void HandleFinishLoadIndoorScene(Object p_sender, FinishLoadIndoorSceneEventArgs p_e)
 {
     m_indoorModel           = p_e.Root;
     m_finishIndoorSceneLoad = true;
     CheckOverlayTransition();
 }
Ejemplo n.º 8
0
 public FinishLoadIndoorSceneEventArgs(IndoorSceneRoot root)
 {
     Root = root;
 }
Ejemplo n.º 9
0
 public IndoorCache(String p_key, IndoorSceneRoot p_root, Boolean p_isLoading)
 {
     Key       = p_key;
     RootScene = p_root;
     IsLoading = p_isLoading;
 }