diff --git a/Advanced Software Engineering/Advanced Software Engineering/Advanced Software Engineering.csproj b/Advanced Software Engineering/Advanced Software Engineering/Advanced Software Engineering.csproj index db938c3..31c8844 100644 --- a/Advanced Software Engineering/Advanced Software Engineering/Advanced Software Engineering.csproj +++ b/Advanced Software Engineering/Advanced Software Engineering/Advanced Software Engineering.csproj @@ -71,6 +71,7 @@ + diff --git a/Advanced Software Engineering/Advanced Software Engineering/Commander.cs b/Advanced Software Engineering/Advanced Software Engineering/Commander.cs index 5da43a3..55f48a4 100644 --- a/Advanced Software Engineering/Advanced Software Engineering/Commander.cs +++ b/Advanced Software Engineering/Advanced Software Engineering/Commander.cs @@ -43,42 +43,42 @@ namespace Advanced_Software_Engineering { } public void ProcessCommands(string rawCommands) { - try { - //ignore case - rawCommands = rawCommands.ToLower(); - Console.WriteLine("Processing:\n" + rawCommands); + //ignore case + rawCommands = rawCommands.ToLower(); + Console.WriteLine("Processing:\n" + rawCommands); - //isolate commands - string[] commands = rawCommands.Split(Environment.NewLine.ToCharArray()); + //remove windows \r if they exist + rawCommands = rawCommands.Replace("\r", ""); - Console.WriteLine("\nThe rawCommand processed:"); - foreach (string rawCommand in commands) { - if (rawCommand == "") continue; - AddCommand(VerbFactory.MakeVerb(drawer, rawCommand)); - Console.WriteLine(rawCommand); - } + //isolate commands + string[] commands = rawCommands.Split("\n"[0]); - Console.WriteLine("\n\nHere is what the program is going to do:"); - Console.WriteLine("Set origin to 0, 0"); - foreach (Verb verb in this.commands) { - Console.WriteLine(verb.GetDescription()); - } - } catch (Exception e) { - Console.WriteLine("Error: Unknown error."); + Console.WriteLine("\nThe rawCommand processed:"); + int lineNumber = 0; + bool failed = false; + foreach (string rawCommand in commands) { + lineNumber++; + if (rawCommand == "") continue; try { - new ErrorWindow( - "Unexpected error parsing commands", - "The program phraser has encountered an undexpected error." + Environment.NewLine, - e.Message + Environment.NewLine + e.StackTrace, - ErrorWindow.ERROR_MESSAGE - ).Show(); - } catch (Exception windowError) { - Console.WriteLine("Failed to display error window!"); - throw windowError; + AddCommand(VerbFactory.MakeVerb(drawer, rawCommand)); + Console.WriteLine(rawCommand); + } catch (Exception e) { + Console.WriteLine("Error!"); + new ErrorWindow(e.Message, e.Message + " at line " + lineNumber, "While trying to process '" + rawCommand + "' an exception occured.\nMessage:\n" + e.Message + "\nStack Trace:\n" + e.StackTrace, ErrorWindow.ERROR_MESSAGE).Show(); + failed = true; + break; } - RemoveAllCommands(); } + + if (failed) RemoveAllCommands(); + + Console.WriteLine("\n\nHere is what the program is going to do:"); + Console.WriteLine("Set origin to 0, 0"); + foreach (Verb verb in this.commands) { + Console.WriteLine(verb.GetDescription()); + } + } public void ProcessCommandsAndExecute(string rawCommands) {