// 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); } }