public void LoadGame() { var(game, data) = saveService.LoadGame(); GameData.Initialize(data); CurrentGame.Load(game); if (game == null) { return; } game.Player.Inventory.ItemAdded += (sender, args) => { game.Journal.Write(new ItemReceivedMessage(args.Item)); }; game.Player.Inventory.ItemRemoved += (sender, args) => { game.Journal.Write(new ItemLostMessage(args.Item)); }; game.TurnEnded += game_TurnEnded; turnsSinceLastSaving = 0; }
IEnumerator Load(int index) { yield return(SceneManager.LoadSceneAsync(index)); ui.StartGame(); CurrentGame?.Load(); if (CurrentGame != null) { CurrentGame.enabled = true; } }
private void game_TurnEnded(object sender, EventArgs args) { turnsSinceLastSaving++; if (turnsSinceLastSaving >= savingInterval) { saveGameTask?.Wait(); saveGameTask = saveService.SaveGameAsync(); turnsSinceLastSaving = 0; } if (CurrentGame.Player.Health <= 0) { saveGameTask?.Wait(); ((GameCore <Player>)CurrentGame.Game).TurnEnded -= game_TurnEnded; CurrentGame.Load(null); saveService.DeleteSave(); } }
internal static void Main() { try { GameConfigurator.Configure(); log = LogManager.GetLog(nameof(Program)); var gameWidth = FontProvider.GetScreenWidth(FontTarget.Game); var gameHeight = FontProvider.GetScreenHeight(FontTarget.Game) / 2; SadConsole.Game.Create(gameWidth, gameHeight); SadConsole.Game.OnInitialize = Init; SadConsole.Game.Instance.Run(); SadConsole.Game.Instance.Dispose(); log.Info("Closing game"); CurrentGame.Load(null); GC.Collect(); //throw new GameExitException(); } catch (GameExitException) { throw; } catch (Exception e) { log.Fatal(e); throw; } }