前回までの状況はこちら。
バトルシーンを作成するために、バトルシーンで使用するパラメータを設定します。
シーンはその都度作成しなくちゃいけないので、コンストラクタで渡すのが一番良いでしょう。
public enum Player
{
Attack,
Deffence
}
public BattleScene(City attack, City deffence, Player player)
{
_attack = attack;
_attackPower = attack.Population;
_deffence = deffence;
_deffencePower = deffence.Population;
_player = player;
_status = GameStatus.SelectDeffenceAction;
}
playerというパラメータは、プレイヤーが攻撃側か防御側かを示すパラメータです。
あれこれ悩んだ結果、これが一番簡単だろうと。
これを画面に表示させます。
var attackCityLabel = new asd.TextObject2D();
attackCityLabel.Font = Singleton.LargeFont;
attackCityLabel.Text = _attack.Name;
attackCityLabel.Position = new asd.Vector2DF(450, 150);
layer.AddObject(attackCityLabel);
var deffenceCityLabel = new asd.TextObject2D();
deffenceCityLabel.Font = Singleton.LargeFont;
deffenceCityLabel.Text = _deffence.Name;
deffenceCityLabel.Position = new asd.Vector2DF(450, 650);
layer.AddObject(deffenceCityLabel);
_attackParam = new asd.TextObject2D();
_attackParam.Font = Singleton.LargeFont;
_attackParam.Text = "戦闘力:" + _attack.Population;
_attackParam.Position = new asd.Vector2DF(700, 650);
layer.AddObject(_attackParam);
_deffenceParam = new asd.TextObject2D();
_deffenceParam.Font = Singleton.LargeFont;
_deffenceParam.Text = "戦闘力:" + _deffence.Population;
_deffenceParam.Position = new asd.Vector2DF(700, 150);
layer.AddObject(_deffenceParam);
さらに、
このフローからバトルシーンの状態を抽出。
enum GameStatus {
SelectDeffenceAction,
SelectAttackAction,
ShowActionResult
}
これを実装。
protected override void OnUpdated()
{
switch (_status)
{
case GameStatus.SelectDeffenceAction:
break;
case GameStatus.SelectAttackAction:
break;
case GameStatus.ShowActionResult:
break;
}
if (asd.Engine.Mouse.LeftButton.ButtonState == asd.ButtonState.Push)
{
switch (_status)
{
case GameStatus.SelectDeffenceAction:
break;
case GameStatus.SelectAttackAction:
break;
case GameStatus.ShowActionResult:
break;
}
}
}
あとは、各状態について実装していけば良いのですな。
とりあえず今回はここまでにしておこう。