前回までの状況はこちら。
最新ソースはこちら(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++;
}
}
その他、微調整も加えています。
これで一応一通り完成しました。
次は、ちょっとした不具合とか、微調整を行って行きます。