【北海道大戦】戦闘結果表示、ゲーム終了動処理を実装する。

前回までの状況はこちら。

最新ソースはこちら(gitHub)

https://github.com/takishita2nd/HokkaidoWar

以前作成したこれ。

status=4、5の処理を作成していきます。

とは言っても、特に難しいことはしていません。

なので、一気に作成します。

ついでにゲームオーバーの処理も作成します。

    class HokkaidoWar
    {
        enum GameStatus
        {
            SelectCity,
            ActionEnemy,
            ActionPlayer,
            ShowResult,
            GameEnd,
            GameOver
        }

        public void Run()
        {
中略
            while (asd.Engine.DoEvents())
            {
                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;
                    }
                }
                asd.Engine.Update();
            }
        private void cycleProcessGameEnd()
        {
            var gameinfo = Singleton.GetGameProcessInfomation();
            gameinfo.ShowText(_player.City.GetPosition(), string.Empty);
            var info = Singleton.GetInfomationWindow();
            info.ShowText(cities[0].GetPosition(), "ゲームが終了しました\r\n");
            info.ShowText(cities[0].GetPosition(), cities[0].Name + "の勝利です\r\n");
        }

        private void cycleProcessGameOver(asd.Vector2DF pos)
        {
            var gameinfo = Singleton.GetGameProcessInfomation();
            gameinfo.ShowText(_player.City.GetPosition(), string.Empty);
            var info = Singleton.GetInfomationWindow();
            info.ShowText(pos, "敗北しました\r\n");
        }

        private void onClickMouseShowResult()
        {
            _battle.MyTurnEnd();
            cities = _battle.GetCityList();
            if(cities.Count <= 1)
            {
                gameStatus = GameStatus.GameEnd;
            }
            else
            {
                gameStatus = GameStatus.ActionEnemy;
            }
        }
    class Battle
    {
        public void MyTurnEnd()
        {
            if (lastDeffece != null)
            {
                lastDeffece.ClearPaint();
                lastDeffece = null;
            }
            if (lastAttack != null)
            {
                lastAttack.ClearPaint();
                lastAttack = null;
            }
            cityCnt++;
            if (cityCnt >= _cities.Count)
            {
                _cities = cityRandomReplace(_cities);
                cityCnt = 0;
                turn++;
            }
        }

その他、微調整も加えています。

これで一応一通り完成しました。

次は、ちょっとした不具合とか、微調整を行って行きます。