예제 #1
0
파일: BattleMenu.cs 프로젝트: muqg/Battles
        // Returns false on completed turn. True if it is still player's turn
        public static bool Show(CharacterStats player, Stats enemy)
        {
            try
            {
                Menu.Announce($"{enemy.OwnerUnit.Name}: {enemy.Health}/{enemy.MaxHealth} health");
                Console.WriteLine($"Your health: {player.Health}/{player.MaxHealth}\n");
                Menu.ShowOptions(options);

                int command = Command.ParseIntCommand();
                switch (command)
                {
                case 1:
                    player.OwnerUnit.AttackEnemy(player, enemy);
                    return(false);

                case 2:
                    Skill skill = chooseSkill(player, enemy);
                    if (skill != null)
                    {
                        if (skill.Use(player, enemy))
                        {
                            return(false);    // Successful usage
                        }
                        else
                        {
                            player.Mana += skill.Cost;     // Replenish mana on failed usage
                        }
                    }

                    return(true);    // No skill has been used (e.g. back command)

                case 3:
                    if (player.ActiveItems.Count > 0)
                    {
                        if (player.HasUsedItem)
                        {
                            Console.WriteLine(Constants.ItemUsedMessage);
                        }
                        else
                        {
                            chooseItem(player, enemy);
                        }
                    }
                    else
                    {
                        Console.WriteLine("There are no usable items.\n");
                    }

                    return(true);    // Items don't end the turn (not considered actions)

                case 4:
                    enemy.ShowBuffs();
                    player.ShowBuffs();
                    return(true);    // This does not end player's turn

                case 5:
                    Console.WriteLine(enemy);
                    Console.WriteLine(player);
                    return(true);    // This does not end player's turn

                case 6:
                    Console.WriteLine("You concede\n");
                    player.Health = 0;
                    return(false);

                default:
                    Console.WriteLine(Constants.InvalidCommand);
                    return(true);
                }
            }
            catch (NotImplementedException)
            {
                Console.WriteLine("Option is not yet implemented. (NYI)\n");
                return(true);
            }
        }