Esempio n. 1
0
        public void SceneTest()
        {
            IGame game = new GameBuilder().Build();
            Scene sce  = new Scene();

            int count = 0;

            game.SceneEvents.UnloadSceneEvent += (sender, args) =>
            {
                if (args.UnloadScene.GetHashCode() == sce.GetHashCode())
                {
                    count++;
                }
            };
            // ロードに成功
            Assert.True(game.LoadScene(sce).IsSuccess);
            // ロードに成功しているので取得に成功
            Assert.True(game.GetScene(sce.InstanceGuid).IsSuccess);

            Scene scene  = new Scene();
            Scene scene2 = new Scene();

            Assert.True(game.LoadScene(scene).IsSuccess);
            // 既に追加されているので失敗
            Assert.False(game.LoadScene(scene).IsSuccess);
            // ロードに成功しているので取得に成功
            Assert.True(game.GetScene(scene.InstanceGuid).IsSuccess);
            Assert.True(game.UnloadScene(scene).IsSuccess);
            // 既にアンロードされているので失敗
            Assert.False(game.UnloadScene(scene).IsSuccess);
            // アンロードされているので取得に失敗
            Assert.False(game.GetScene(scene.InstanceGuid).IsSuccess);
            Assert.True(game.LoadScene(scene).IsSuccess);
            Assert.True(game.GetScene(scene.InstanceGuid).IsSuccess);
            Assert.True(game.LoadScene(scene2).IsSuccess);
            Assert.True(game.GetScene(scene2.InstanceGuid).IsSuccess);
            Assert.True(game.UnloadScenes());
            // 全てアンロードしたので失敗
            Assert.False(game.GetScene(scene.InstanceGuid).IsSuccess);
            Assert.False(game.GetScene(scene2.InstanceGuid).IsSuccess);

            game.LoadScene(scene);
            game.LoadNextScene(scene2);
            // 前にロードしたシーンの取得に失敗
            Assert.False(game.GetScene(scene.InstanceGuid).IsSuccess);
            // 新しくロードしたシーンの取得に成功
            Assert.True(game.GetScene(scene2.InstanceGuid).IsSuccess);

            // イベントの呼び出しチェック
            Assert.True(count == 1);
        }