Your while conditions don't match menu options...other then that it seems you're returning options just fine. Remove first set of if conditions, replace while loop with do..while and put those ifs inside:
static ShotgunOption GetOptionFromUser()
{
char menuItem;
do
{
DisplayMenu();
menuItem = char.ToUpper(char.Parse(Console.ReadLine()));
if (menuItem == 'S')
{
return ShotgunOption.Shoot;
}
else if (menuItem == 'P')
{
return ShotgunOption.Shield;
}
else if (menuItem == 'R')
{
return ShotgunOption.Reload;
}
else {
Console.WriteLine("Error - Invalid menu item");
}
while (menuItem != 'F' && menuItem != 'C' &&
menuItem != 'I' && menuItem != 'X' && menuItem != 'R' && menuItem != 'D')
}
}
I didn't touch the conditions because they do not relate to the menu so maybe you have some more application logic hidden...play with it for a bit.
Good luck.