Beispiel #1
0
        static public async void Fight(Monster monster, Player player)
        {
            monsterTurn(monster, player);
            isPlayerFighting = true;
            // Fight until death
            while (player.Hp > 0 && monster.Hp > 0 && isPlayerFighting)
            {
                Menu menu = new Menu(
                    CommandsEnum.CmdHit.ToString(),
                    CommandsEnum.CmdUseObject.ToString(),
                    CommandsEnum.CmdEscape.ToString());

                await menu.Activate();

                if (monster.Hp > 0)
                {
                    monsterTurn(monster, player);
                }
            }
            // Player is dead
            if (player.Hp <= 0)
            {
                Console.Clear();
                Console.WriteLine($"\n\n\n");
                Console.WriteLine($"You just died!");
                player.Hp = 100;
                Console.ReadLine();

                var menu = new Menu(
                    CommandsEnum.CmdCreateNewGame.ToString(),
                    CommandsEnum.CmdLoadSavedGame.ToString(),
                    CommandsEnum.CmdAbout.ToString(),
                    CommandsEnum.CmdExit.ToString()
                    );

                await menu.Activate();

                while (_playerInstance.Cells.Count != 0)
                {
                    await cellsAccessLayer.RemoveAsync(_playerInstance.Cells.Last().Id);

                    _playerInstance.Cells.Remove(_playerInstance.Cells.First());
                }

                int weaponTypeToDelete = player.Weapons.First().WeaponTypeId;

                await weaponsAccessLayer.RemoveAsync(player.Weapons.First().Id);

                await weaponsTypeAccessLayer.RemoveAsync(weaponTypeToDelete);

                await playersAccessLayer.RemoveAsync(player.Id);

                _playerInstance = null;
            }
        }