前回までの状況はこちら。
はい、大幅に書き換えました。
詳細はgitHubのソースを見て欲しいのですが、
https://github.com/takishita2nd/HokkaidoWar
まず、メインシーンで使用していたデータは全てGameDataクラスに移動しました。
class GameData
{
public enum GameStatus
{
None,
SelectCity,
ActionEnemy,
ActionPlayer,
ShowResult,
GameEnd,
GameOver
}
public GameStatus gameStatus = GameStatus.None;
public List<City> Cities = null;
public List<City> AliveCities = null;
public Battle Battle = null;
public Player Player = null;
このクラスはシングルトンで管理します。
class Singleton
{
private static GameData _gameData = null;
public static GameData GetGameData()
{
if (_gameData == null)
{
_gameData = new GameData();
}
return _gameData;
}
このシングルトンクラス、ゲッターのでいいんじゃないかと思い始めた。
やっていることは同じですが。
メソッドでやるか、プロパティでやるかの違いです。
気が向いたら直します。
シーン遷移は全てシーンクラスのインスタンスを作り直します。
if (asd.Engine.Mouse.LeftButton.ButtonState == asd.ButtonState.Push)
{
var scene = new MainScene();
asd.Engine.ChangeScene(scene);
}
そのときに、ゲームデータを元に画面を作り直す、という感じです。
これで、バトルシーンからメインシーンに切り替わっても、ゲームが止まることは無くなりました。
これでやっと次に進める・・・。
「【北海道大戦】メインシーンの作り直し」への1件のフィードバック