static public void Ask() // Parses the user input { if (Program.winCondition) { ; } // skips to victory screen if you've already won else if (Program.turns > 0) // checks if you have any turns remaining { string command = ""; if (Program.wantReset && Program.resetStep < Program.saveFile.Count) { command = Program.saveFile[Program.resetStep]; Console.WriteLine($"> {command}"); Program.currentLog.Add(command); Program.resetStep++; Program.turns--; if (Program.resetStep >= Program.saveFile.Count) { Program.wantReset = false; } } else { while (String.IsNullOrWhiteSpace(command)) { Console.Write($"\nYou have {Program.turns} turns left. What would you like to do? "); command = Console.ReadLine().ToLower(); Program.turns--; Program.currentLog.Add(command); if (Program.turns < 1) { break; // ends loop if you're out of turns } } } if (!String.IsNullOrWhiteSpace(command)) { List <string> commands = new List <string>(command.Split(default(string[]), StringSplitOptions.RemoveEmptyEntries)); TranslateInput(ref commands); if (command == "insert batteries into flashlight") { Temp_Four_Word_Commands.InsertBatteriesInToFlashlight(); } else if (command == "insert batteries into tapedeck") { Temp_Four_Word_Commands.InsertBatteriesInToTapeDeck(); } else if (command == "insert batteries into tape deck") { Temp_Four_Word_Commands.InsertBatteriesInToTapeDeck(); } else if (command == "insert batteries into tape player") { Temp_Four_Word_Commands.InsertBatteriesInToTapeDeck(); } else if (commands.Count == 1) { OneWordCommands.Parse(commands); } else if (commands.Count == 2) { TwoWordCommands.Parse(commands); } else { MultiWordCommands.Parse(commands); } Ask(); } } else { Console.WriteLine("No turns left!"); } }
static public void Parse(List <string> oneWord) { if (validOneWordCommands.Contains(oneWord[0])) { if (oneWord[0] == "win") { Win(); // does series of if/else if checkes to determine which method to operate } else if (oneWord[0] == "explore") { Explore(); } else if (oneWord[0] == "inventory") { Inventory(); } else if (oneWord[0] == "move") { Move(); } else if (oneWord[0] == "access") { Access(); } else if (oneWord[0] == "save") { Save(); } else if (oneWord[0] == "load") { Load(); } else if (oneWord[0] == "help") { Help(); } else { Console.WriteLine("Invalid command!"); } } else if (TwoWordCommands.validTwoWordCommands.Contains(oneWord[0]) || MultiWordCommands.validMultiWordCommands.Contains(oneWord[0])) { Console.Write($"{oneWord[0]} what? "); // asks for more works if command is recognized but not complete List <string> commands = new List <string>(Console.ReadLine().ToLower().Split(default(string[]), StringSplitOptions.RemoveEmptyEntries)); Prompt.TranslateInput(ref commands); if (oneWord[0] != commands[0]) { commands.Insert(0, oneWord[0]); // checcks to see if original verb was repeated } if (commands.Count == 1) { Parse(commands); } else if (commands.Count == 2) { TwoWordCommands.Parse(commands); } else { MultiWordCommands.Parse(commands); } } else { Console.WriteLine("Invalid Command"); } }