最新ソースはこちら(gitHub)。
https://github.com/takishita2nd/HokkaidoWar
バトルシーンを追加するに当たりまして、
今まではエンジンに直接オブジェクトを配置していましたが、
シーンを使用するとなると、このやり方では上手くいけないっぽい。
なので、メインシーンを追加して、このシーンのレイヤーにオブジェクトを配置する必要があります。
なので、今回はその修正を実行。
    class HokkaidoWar
    {
        public HokkaidoWar()
        {
        }
        public void Run()
        {
            asd.Engine.Initialize("北海道大戦", 1200, 1000, new asd.EngineOption());
            // シーンの登録
            var scene = new MainScene();
            asd.Engine.ChangeScene(scene);
            while (asd.Engine.DoEvents())
            {
                asd.Engine.Update();
            }
            asd.Engine.Terminate();
        }
    }
いままでエンジンに追加していたオブジェクトは全て無くなり、シーンを作成して、そのシーンに移行、という処理に変わります。
    class MainScene : asd.Scene
    {
中略
        protected override void OnRegistered()
        {
            var layer = Singleton.GetMainSceneLayer();
            AddLayer(layer);
            // 下地
            var background = new asd.GeometryObject2D();
            layer.AddObject(background);
            var bgRect = new asd.RectangleShape();
            bgRect.DrawingArea = new asd.RectF(0, 0, 1800, 1000);
            background.Shape = bgRect;
            cities = new List<City>();
            var r = new Random();
            foreach (var map in mapData.list)
            {
                City city = new City(map.name, map.point, map.population);
                cities.Add(city);
            }
            _battle = new Battle(cities);
            aliveCities = _battle.GetAliveCityList();
        }
        protected override void OnUpdated()
        {
            asd.Vector2DF pos = asd.Engine.Mouse.Position;
            switch (gameStatus)
            {
                case GameStatus.SelectCity:
                    cycleProcessSelectCity(pos);
                    break;
                case GameStatus.ActionEnemy:
                    cycleProcessActionEnemy(pos);
                    break;
                case GameStatus.ActionPlayer:
                    cycleProcessActionPlayer(pos);
                    break;
                case GameStatus.ShowResult:
                    break;
                case GameStatus.GameEnd:
                    cycleProcessGameEnd();
                    break;
                case GameStatus.GameOver:
                    cycleProcessGameOver(pos);
                    break;
            }
            if (asd.Engine.Mouse.LeftButton.ButtonState == asd.ButtonState.Push)
            {
                switch (gameStatus)
                {
                    case GameStatus.SelectCity:
                        onClickMouseSelectCity(pos);
                        break;
                    case GameStatus.ActionEnemy:
                        break;
                    case GameStatus.ActionPlayer:
                        onClickMouseActionPlayer(pos);
                        break;
                    case GameStatus.ShowResult:
                        onClickMouseShowResult();
                        break;
                    case GameStatus.GameEnd:
                        break;
                    case GameStatus.GameOver:
                        break;
                }
            }
        }
後略
OnRegistered()はシーン登録時に実行されます。
オブジェクトの配置はここで行います。
レイヤーはシングルトンで取り出すようにしました。(いろんなところでオブジェクトの配置やっているので)
OnUpdated()には、while (asd.Engine.DoEvents()){ }内で実行していた処理を行います。
これは、asd.Engine.Update();実行時に実行されるイメージです。
細かい所は結構修正しているのですが、概要はこんな感じです。

とりあえず、シーンを使用して、今までと同じ動きが出来ることを確認しました。
次はバトルシーンの追加をしていきましょうか。
		
		










