static void EraseRank() { int rankIndexToErase = TextMenu.ShowNumber("Which rank to delete?", 1, RankManager.Ranks.Count); if (rankIndexToErase == -1) { return; } Rank rankToErase = RankManager.Ranks[rankIndexToErase - 1]; Rank subRank; if (RankManager.Ranks.Count > 2) { Console.WriteLine(); WriteWarning(RankEraseWarning, rankToErase.Name); while (true) { int substitute = TextMenu.ShowNumber("Substitute rank", 1, RankManager.Ranks.Count); if (substitute == rankIndexToErase) { Console.WriteLine("Cannot substitute rank with itself; pick a different rank."); } else { subRank = RankManager.Ranks[substitute - 1]; break; } } } else { subRank = rankToErase.NextRankDown ?? rankToErase.NextRankUp; } if (TextMenu.ShowYesNo("Delete rank {0}, and substitute with {1}?", rankToErase.Name, subRank.Name)) { RankManager.DeleteRank(rankToErase, subRank); } }