protected override void DoLoadingForGameType(GameTypeLoadingStates gameTypeLoadingState, out GameTypeLoadingStates nextState) { nextState = GameTypeLoadingStates.None; switch (gameTypeLoadingState) { case GameTypeLoadingStates.InitializeFirstStep: CurrentGame.Initialize(); nextState = GameTypeLoadingStates.WaitSecondStep; break; case GameTypeLoadingStates.WaitSecondStep: nextState = GameTypeLoadingStates.LoadVisualsThirdState; break; case GameTypeLoadingStates.LoadVisualsThirdState: nextState = GameTypeLoadingStates.PostInitializeFourthState; break; } }
public GameCore <Player> StartGame() { if (CurrentGame.Game is GameCore <Player> oldGame) { oldGame.TurnEnded -= game_TurnEnded; } GameData.Initialize(new GameData()); var player = CreatePlayer(); var startMap = DungeonMapGenerator.Current.GenerateNewMap(1, out var playerPosition); CurrentGame.Initialize(startMap, player, playerPosition); var game = (GameCore <Player>)CurrentGame.Game; startMap.Refresh(); player.Inventory.ItemAdded += (sender, args) => { game.Journal.Write(new ItemReceivedMessage(args.Item)); }; player.Inventory.ItemRemoved += (sender, args) => { game.Journal.Write(new ItemLostMessage(args.Item)); }; game.Journal.Write(new StartGameMessage()); game.TurnEnded += game_TurnEnded; saveService.SaveGame(); turnsSinceLastSaving = 0; return(game); }