Esempio n. 1
0
        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);
        }