Ejemplo n.º 1
0
        /// <summary>
        /// 新しいシーン情報を取得
        /// </summary>
        /// <param name="sceneCondition"></param>
        /// <returns></returns>
        private SceneData GetNewSceneData(SceneCondition sceneCondition)
        {
            IComponentInitialiser componentInitialiser = GetComponentInitialiser(sceneCondition);

            // コンポーネント初期化クラスがnullだとコンポーネントが作れないのでエラー
            if (componentInitialiser == null)
            {
                throw new InvalidOperationException(sceneCondition.ToString() + "のコンポーネント初期化クラスを指定してください");
            }

            string contentManagerName = GetContentManagerName(sceneCondition);

            // コンテントマネージャー名がnullだとコンテントマネージャーが作れないのでエラー
            if (contentManagerName == null)
            {
                throw new InvalidOperationException(sceneCondition.ToString() + "のコンテントマネージャー名を指定してください");
            }

            ContentManager contentManager = GetContentManager(contentManagerName);

            SceneData newSceneData =
                new SceneData(
                    sceneCondition,
                    new ComponentManager(Game, componentInitialiser, contentManager)
                    );

            SetContentManagerUser(contentManagerName, newSceneData.ComponentManager);

            return(newSceneData);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 次のシーン情報を新しく取得する
        /// すでにプリロードされている場合は、それが取得される
        /// </summary>
        /// <param name="nextSceneCondition"></param>
        /// <param name="clearHistory"></param>
        /// <returns></returns>
        public SceneData NextNewScene(SceneCondition nextSceneCondition, bool clearHistory)
        {
            // 次のシーンデータ取得
            SceneData nextSceneData = PopPreloadedCache(nextSceneCondition);

            if (nextSceneData == null)
            {
                nextSceneData = GetNewSceneData(nextSceneCondition);
                nextSceneData.ComponentManager.Load();
            }

            // 履歴追加
            if (CurrentSceneData != null)
            {
                _historySceneData.AddLast(CurrentSceneData);
            }

            // 現在のシーンデータにセット
            _currentSceneData = nextSceneData;

            // 他のシーンデータをプリロードする
            PreloadSceneData(nextSceneData);

            // 履歴をすべて削除する
            if (clearHistory)
            {
                ClearAllHistory(true);
            }

            return(CurrentSceneData);
        }
Ejemplo n.º 3
0
        /// <summary>
        /// シーンをプリロードしたシーンのコンポーネント管理クラスを登録する
        /// </summary>
        /// <param name="preloadSceneCondition"></param>
        /// <param name="preloader"></param>
        private void SetPreloader(SceneCondition preloadSceneCondition, IComponentManager preloader)
        {
            if (!_preloaders.ContainsKey(preloadSceneCondition))
            {
                _preloaders[preloadSceneCondition] = new HashSet <IComponentManager>();
            }

            _preloaders[preloadSceneCondition].Add(preloader);
        }
Ejemplo n.º 4
0
 /// <summary>
 /// コンポーネント初期化クラスを取得
 /// </summary>
 /// <param name="sceneCondition"></param>
 /// <returns></returns>
 private IComponentInitialiser GetComponentInitialiser(SceneCondition sceneCondition)
 {
     if (_componentInitialiser.ContainsKey(sceneCondition))
     {
         return(_componentInitialiser[sceneCondition]);
     }
     else
     {
         return(null);
     }
 }
Ejemplo n.º 5
0
 /// <summary>
 /// シーンで使うコンテントマネージャー名を取得する
 /// </summary>
 /// <param name="sceneCondition"></param>
 /// <returns></returns>
 private string GetContentManagerName(SceneCondition sceneCondition)
 {
     if (_contentManagerNames.ContainsKey(sceneCondition))
     {
         return(_contentManagerNames[sceneCondition]);
     }
     else
     {
         return(null);
     }
 }
Ejemplo n.º 6
0
 /// <summary>
 /// プリロードするシーン名リストを取得する
 /// </summary>
 /// <param name="sceneCondition"></param>
 /// <returns></returns>
 private IList <SceneCondition> GetPreloadList(SceneCondition sceneCondition)
 {
     if (_preloadSceneConditions.ContainsKey(sceneCondition))
     {
         return(_preloadSceneConditions[sceneCondition]);
     }
     else
     {
         return(null);
     }
 }
Ejemplo n.º 7
0
        /// <summary>
        /// 同じか
        /// </summary>
        /// <param name="obj"></param>
        /// <returns></returns>
        public override bool Equals(object obj)
        {
            if (obj == null)
            {
                return(false);
            }

            SceneCondition other = obj as SceneCondition;

            if (other == null)
            {
                return(false);
            }

            return(this.SceneName == other.SceneName && this.Attribute == other.Attribute);
        }
Ejemplo n.º 8
0
        /// <summary>
        /// キャッシュからプリロードされているシーン情報を取り出す(キャッシュは削除される)
        /// </summary>
        /// <param name="sceneCondition"></param>
        /// <returns></returns>
        private SceneData PopPreloadedCache(SceneCondition sceneCondition)
        {
            if (_preloadedCaches.ContainsKey(sceneCondition))
            {
                SceneData preloaded = _preloadedCaches[sceneCondition];

                _preloadedCaches.Remove(sceneCondition);

                _preloaders.Remove(sceneCondition);

                return(preloaded);
            }
            else
            {
                return(null);
            }
        }
Ejemplo n.º 9
0
        /// <summary>
        /// シーン遷移処理
        /// </summary>
        public void SceneTransition()
        {
            switch (_nextOrder)
            {
            case TransitionOrder.New:
                NewTransition();
                break;

            case TransitionOrder.Back:
                BackTransition();
                break;
            }

            _nextOrder          = TransitionOrder.None;
            _nextSceneCondition = null;
            _nextTransitionInfo = null;
        }
Ejemplo n.º 10
0
 /// <summary>
 /// シーンのコンテントマネージャー名をセットする
 /// </summary>
 /// <param name="sceneCondition"></param>
 /// <param name="contentManagerName"></param>
 public void SetSceneContentManagerName(SceneCondition sceneCondition, string contentManagerName)
 {
     _contentManagerNames[sceneCondition] = contentManagerName;
 }
Ejemplo n.º 11
0
        /// <summary>
        /// シーンをプリロードしたシーンのコンポーネント管理クラスを登録する
        /// </summary>
        /// <param name="preloadSceneCondition"></param>
        /// <param name="preloader"></param>
        private void SetPreloader(SceneCondition preloadSceneCondition, IComponentManager preloader)
        {
            if (!_preloaders.ContainsKey(preloadSceneCondition))
            {
                _preloaders[preloadSceneCondition] = new HashSet<IComponentManager>();
            }

            _preloaders[preloadSceneCondition].Add(preloader);
        }
Ejemplo n.º 12
0
 /// <summary>
 /// シーンが読み込まれたとき、他にプリロードするシーン名を指定する
 /// </summary>
 /// <param name="sceneCondition"></param>
 /// <param name="preloadList"></param>
 public void SetPreloadSceneConditions(SceneCondition sceneCondition, IList<SceneCondition> preloadList)
 {
     SceneObjectManager.SetPreloadSceneConditions(sceneCondition, preloadList);
 }
Ejemplo n.º 13
0
 /// <summary>
 /// シーン遷移指定:新しいシーンの作成
 /// </summary>
 /// <param name="nextSceneCondition"></param>
 /// <param name="transitionInfo"></param>
 public void NewScene(SceneCondition nextSceneCondition, TransitionInfo transitionInfo)
 {
     _nextOrder = TransitionOrder.New;
     _nextSceneCondition = nextSceneCondition;
     _nextTransitionInfo = transitionInfo;
 }
Ejemplo n.º 14
0
 /// <summary>
 /// シーンが読み込まれたとき、他にプリロードするシーン名を指定する
 /// </summary>
 /// <param name="sceneCondition"></param>
 /// <param name="preloadList"></param>
 public void SetPreloadSceneConditions(SceneCondition sceneCondition, IList <SceneCondition> preloadList)
 {
     SceneObjectManager.SetPreloadSceneConditions(sceneCondition, preloadList);
 }
Ejemplo n.º 15
0
 /// <summary>
 /// シーンのコンテントマネージャー名をセットする
 /// </summary>
 /// <param name="sceneCondition"></param>
 /// <param name="contentManagerName"></param>
 public void SetSceneContentManagerName(SceneCondition sceneCondition, string contentManagerName)
 {
     SceneObjectManager.SetSceneContentManagerName(sceneCondition, contentManagerName);
 }
Ejemplo n.º 16
0
 /// <summary>
 /// シーン遷移指定:新しいシーンの作成
 /// </summary>
 /// <param name="nextSceneCondition"></param>
 /// <param name="transitionInfo"></param>
 public void NewScene(SceneCondition nextSceneCondition, TransitionInfo transitionInfo)
 {
     _nextOrder          = TransitionOrder.New;
     _nextSceneCondition = nextSceneCondition;
     _nextTransitionInfo = transitionInfo;
 }
Ejemplo n.º 17
0
 /// <summary>
 /// シーンが読み込まれたとき、他にプリロードするシーン名を指定する
 /// </summary>
 /// <param name="sceneCondition"></param>
 /// <param name="preloadList"></param>
 public void SetPreloadSceneConditions(SceneCondition sceneCondition, IList <SceneCondition> preloadList)
 {
     _preloadSceneConditions[sceneCondition] = preloadList;
 }
Ejemplo n.º 18
0
 /// <summary>
 /// シーンのコンポーネント初期化クラスを登録する
 /// </summary>
 /// <param name="sceneCondition"></param>
 /// <param name="componentInitialiser"></param>
 public void SetSceneInitialiser(SceneCondition sceneCondition, IComponentInitialiser componentInitialiser)
 {
     _componentInitialiser[sceneCondition] = componentInitialiser;
 }
Ejemplo n.º 19
0
 /// <summary>
 /// シーンのコンテントマネージャー名をセットする
 /// </summary>
 /// <param name="sceneCondition"></param>
 /// <param name="contentManagerName"></param>
 public void SetSceneContentManagerName(SceneCondition sceneCondition, string contentManagerName)
 {
     _contentManagerNames[sceneCondition] = contentManagerName;
 }
Ejemplo n.º 20
0
 /// <summary>
 /// シーン情報を作成する
 /// </summary>
 /// <param name="sceneCondition"></param>
 /// <param name="componentManager"></param>
 public SceneData(SceneCondition sceneCondition, IComponentManager componentManager)
 {
     SceneCondition = sceneCondition;
     ComponentManager = componentManager;
 }
Ejemplo n.º 21
0
 /// <summary>
 /// シーン情報を作成する
 /// </summary>
 /// <param name="sceneCondition"></param>
 /// <param name="componentManager"></param>
 public SceneData(SceneCondition sceneCondition, IComponentManager componentManager)
 {
     SceneCondition   = sceneCondition;
     ComponentManager = componentManager;
 }
Ejemplo n.º 22
0
 /// <summary>
 /// プリロードするシーン名リストを取得する
 /// </summary>
 /// <param name="sceneCondition"></param>
 /// <returns></returns>
 private IList<SceneCondition> GetPreloadList(SceneCondition sceneCondition)
 {
     if (_preloadSceneConditions.ContainsKey(sceneCondition))
     {
         return _preloadSceneConditions[sceneCondition];
     }
     else
     {
         return null;
     }
 }
Ejemplo n.º 23
0
        /// <summary>
        /// 新しいシーン情報を取得
        /// </summary>
        /// <param name="sceneCondition"></param>
        /// <returns></returns>
        private SceneData GetNewSceneData(SceneCondition sceneCondition)
        {
            IComponentInitialiser componentInitialiser = GetComponentInitialiser(sceneCondition);

            // コンポーネント初期化クラスがnullだとコンポーネントが作れないのでエラー
            if (componentInitialiser == null)
            {
                throw new InvalidOperationException(sceneCondition.ToString() + "のコンポーネント初期化クラスを指定してください");
            }

            string contentManagerName = GetContentManagerName(sceneCondition);

            // コンテントマネージャー名がnullだとコンテントマネージャーが作れないのでエラー
            if (contentManagerName == null)
            {
                throw new InvalidOperationException(sceneCondition.ToString() + "のコンテントマネージャー名を指定してください");
            }

            ContentManager contentManager = GetContentManager(contentManagerName);

            SceneData newSceneData =
                new SceneData(
                    sceneCondition,
                    new ComponentManager(Game, componentInitialiser, contentManager)
                    );

            SetContentManagerUser(contentManagerName, newSceneData.ComponentManager);

            return newSceneData;
        }
Ejemplo n.º 24
0
 /// <summary>
 /// シーン遷移指定:新しいシーンの作成
 /// 遷移情報はデフォルトが使われる
 /// </summary>
 /// <param name="nextSceneCondition"></param>
 public void NewScene(SceneCondition nextSceneCondition)
 {
     NewScene(nextSceneCondition, null);
 }
Ejemplo n.º 25
0
 /// <summary>
 /// シーンのコンポーネント初期化クラスを登録する
 /// </summary>
 /// <param name="sceneCondition"></param>
 /// <param name="componentInitialiser"></param>
 public void SetSceneInitialiser(SceneCondition sceneCondition, IComponentInitialiser componentInitialiser)
 {
     SceneObjectManager.SetSceneInitialiser(sceneCondition, componentInitialiser);
 }
Ejemplo n.º 26
0
 /// <summary>
 /// シーン遷移指定:前のシーンに戻る
 /// </summary>
 public void BackScene()
 {
     _nextOrder          = TransitionOrder.Back;
     _nextSceneCondition = null;
 }
Ejemplo n.º 27
0
 /// <summary>
 /// シーンが読み込まれたとき、他にプリロードするシーン名を指定する
 /// </summary>
 /// <param name="sceneCondition"></param>
 /// <param name="preloadList"></param>
 public void SetPreloadSceneConditions(SceneCondition sceneCondition, IList<SceneCondition> preloadList)
 {
     _preloadSceneConditions[sceneCondition] = preloadList;
 }
Ejemplo n.º 28
0
 /// <summary>
 /// シーンのコンポーネント初期化クラスを登録する
 /// </summary>
 /// <param name="sceneCondition"></param>
 /// <param name="componentInitialiser"></param>
 public void SetSceneInitialiser(SceneCondition sceneCondition, IComponentInitialiser componentInitialiser)
 {
     SceneObjectManager.SetSceneInitialiser(sceneCondition, componentInitialiser);
 }
Ejemplo n.º 29
0
 /// <summary>
 /// シーンで使うコンテントマネージャー名を取得する
 /// </summary>
 /// <param name="sceneCondition"></param>
 /// <returns></returns>
 private string GetContentManagerName(SceneCondition sceneCondition)
 {
     if (_contentManagerNames.ContainsKey(sceneCondition))
     {
         return _contentManagerNames[sceneCondition];
     }
     else
     {
         return null;
     }
 }
Ejemplo n.º 30
0
 /// <summary>
 /// シーン遷移指定:新しいシーンの作成
 /// 遷移情報はデフォルトが使われる
 /// </summary>
 /// <param name="nextSceneCondition"></param>
 public void NewScene(SceneCondition nextSceneCondition)
 {
     NewScene(nextSceneCondition, null);
 }
Ejemplo n.º 31
0
 /// <summary>
 /// コンポーネント初期化クラスを取得
 /// </summary>
 /// <param name="sceneCondition"></param>
 /// <returns></returns>
 private IComponentInitialiser GetComponentInitialiser(SceneCondition sceneCondition)
 {
     if (_componentInitialiser.ContainsKey(sceneCondition))
     {
         return _componentInitialiser[sceneCondition];
     }
     else
     {
         return null;
     }
 }
Ejemplo n.º 32
0
        /// <summary>
        /// シーン遷移処理
        /// </summary>
        public void SceneTransition()
        {
            switch (_nextOrder)
            {
                case TransitionOrder.New:
                    NewTransition();
                    break;
                case TransitionOrder.Back:
                    BackTransition();
                    break;
            }

            _nextOrder = TransitionOrder.None;
            _nextSceneCondition = null;
            _nextTransitionInfo = null;
        }
Ejemplo n.º 33
0
 /// <summary>
 /// シーンのコンポーネント初期化クラスを登録する
 /// </summary>
 /// <param name="sceneCondition"></param>
 /// <param name="componentInitialiser"></param>
 public void SetSceneInitialiser(SceneCondition sceneCondition, IComponentInitialiser componentInitialiser)
 {
     _componentInitialiser[sceneCondition] = componentInitialiser;
 }
Ejemplo n.º 34
0
 /// <summary>
 /// シーンのコンテントマネージャー名をセットする
 /// </summary>
 /// <param name="sceneCondition"></param>
 /// <param name="contentManagerName"></param>
 public void SetSceneContentManagerName(SceneCondition sceneCondition, string contentManagerName)
 {
     SceneObjectManager.SetSceneContentManagerName(sceneCondition, contentManagerName);
 }
Ejemplo n.º 35
0
        /// <summary>
        /// キャッシュからプリロードされているシーン情報を取り出す(キャッシュは削除される)
        /// </summary>
        /// <param name="sceneCondition"></param>
        /// <returns></returns>
        private SceneData PopPreloadedCache(SceneCondition sceneCondition)
        {
            if (_preloadedCaches.ContainsKey(sceneCondition))
            {
                SceneData preloaded = _preloadedCaches[sceneCondition];

                _preloadedCaches.Remove(sceneCondition);

                _preloaders.Remove(sceneCondition);

                return preloaded;
            }
            else
            {
                return null;
            }
        }
Ejemplo n.º 36
0
 /// <summary>
 /// シーン遷移指定:前のシーンに戻る
 /// </summary>
 public void BackScene()
 {
     _nextOrder = TransitionOrder.Back;
     _nextSceneCondition = null;
 }
Ejemplo n.º 37
0
        /// <summary>
        /// 次のシーン情報を新しく取得する
        /// すでにプリロードされている場合は、それが取得される
        /// </summary>
        /// <param name="nextSceneCondition"></param>
        /// <param name="clearHistory"></param>
        /// <returns></returns>
        public SceneData NextNewScene(SceneCondition nextSceneCondition, bool clearHistory)
        {
            // 次のシーンデータ取得
            SceneData nextSceneData = PopPreloadedCache(nextSceneCondition);
            if (nextSceneData == null)
            {
                nextSceneData = GetNewSceneData(nextSceneCondition);
                nextSceneData.ComponentManager.Load();
            }

            // 履歴追加
            if (CurrentSceneData != null)
            {
                _historySceneData.AddLast(CurrentSceneData);
            }

            // 現在のシーンデータにセット
            _currentSceneData = nextSceneData;

            // 他のシーンデータをプリロードする
            PreloadSceneData(nextSceneData);

            // 履歴をすべて削除する
            if (clearHistory)
            {
                ClearAllHistory(true);
            }

            return CurrentSceneData;
        }