diff --git a/Advanced Software Engineering/Advanced Software Engineering/Commander.cs b/Advanced Software Engineering/Advanced Software Engineering/Commander.cs index faf8dc8..bd13aa5 100644 --- a/Advanced Software Engineering/Advanced Software Engineering/Commander.cs +++ b/Advanced Software Engineering/Advanced Software Engineering/Commander.cs @@ -122,7 +122,15 @@ namespace Advanced_Software_Engineering { ProcessCommands(rawCommands, pardonCommands); for (; start < commands.Count; start++) { - commands[start].ExecuteVerb(); + try { + commands[start].ExecuteVerb(); + } catch (Exception e) { + IVerb tmp = commands[start]; + if (!pardonCommands) RemoveAllCommands(); + else commands.Remove(commands[start]); + new ErrorWindow("Runtime Error", "Failed to " + tmp.GetDescription(), "While trying to '" + tmp.GetDescription() + "' an exception occured.\nMessage:\n" + e.Message + "\nStack Trace:\n" + e.StackTrace, ErrorWindow.ERROR_MESSAGE).Show(); + break; + } } } diff --git a/Advanced Software Engineering/Advanced Software Engineering/Drawer.cs b/Advanced Software Engineering/Advanced Software Engineering/Drawer.cs index 3f09228..5bfbde0 100644 --- a/Advanced Software Engineering/Advanced Software Engineering/Drawer.cs +++ b/Advanced Software Engineering/Advanced Software Engineering/Drawer.cs @@ -67,6 +67,7 @@ namespace Advanced_Software_Engineering { pen = new Pen(defaultColor, defaultWidth); brush = new SolidBrush(defaultColor); fill = false; + variables.Clear(); } /// diff --git a/Advanced Software Engineering/Advanced Software Engineering/Verbs/Value/DeclareVariable.cs b/Advanced Software Engineering/Advanced Software Engineering/Verbs/Value/DeclareVariable.cs index e749e10..8a9e1c3 100644 --- a/Advanced Software Engineering/Advanced Software Engineering/Verbs/Value/DeclareVariable.cs +++ b/Advanced Software Engineering/Advanced Software Engineering/Verbs/Value/DeclareVariable.cs @@ -1,4 +1,5 @@ using System; +using System.Collections.Generic; namespace Advanced_Software_Engineering.Verbs.Value { @@ -7,17 +8,34 @@ namespace Advanced_Software_Engineering.Verbs.Value { private IValue value; private string name; - public DeclareVariable(Drawer drawer, string type, string assgnment) { + public DeclareVariable(Drawer drawer, string type, string assignment) { this.drawer = drawer; - value = ValueFactory.CreateValue(type, assgnment); + // get variable name + // assignment looks something like this at this point: + // i = 20 + // or + // i = 2 == 5 + + // bools have == + if(!(type == "bool")) { + //Seperate the assignment from the variables + List assignmentList = SettingsAndHelperFunctions.StripStringArray(assignment.Split("="[0])); + name = assignmentList[0]; + value = ValueFactory.CreateValue(assignmentList[1], type); + + } else { + throw new NotImplementedException(); + } + } - void IVerb.ExecuteVerb() { + public void ExecuteVerb() { + drawer.SetVariable(name, value); } - string IVerb.GetDescription() { - throw new NotImplementedException(); + public string GetDescription() { + return "Declares the variable " + name; } } } \ No newline at end of file diff --git a/Advanced Software Engineering/Advanced Software Engineering/Verbs/Value/Expression.cs b/Advanced Software Engineering/Advanced Software Engineering/Verbs/Value/Expression.cs index 3ccc994..8f8558b 100644 --- a/Advanced Software Engineering/Advanced Software Engineering/Verbs/Value/Expression.cs +++ b/Advanced Software Engineering/Advanced Software Engineering/Verbs/Value/Expression.cs @@ -25,7 +25,7 @@ namespace Advanced_Software_Engineering.Verbs.Value { //Check for bad input if (operation > 3 && operation < 0) throw new Exception("Bad operation"); - if(variable1.) + } private IValue Evaluate() { @@ -103,18 +103,22 @@ namespace Advanced_Software_Engineering.Verbs.Value { } public bool ToBool() { + if (!evaluated) Evaluate(); return evaluatedValue.ToBool(); } public Color ToColor() { + if (!evaluated) Evaluate(); return evaluatedValue.ToColor(); } public double ToDouble() { + if (!evaluated) Evaluate(); return evaluatedValue.ToDouble(); } public int ToInt() { + if (!evaluated) Evaluate(); return evaluatedValue.ToInt(); } } diff --git a/Advanced Software Engineering/Advanced Software Engineering/Verbs/Value/ValueFactory.cs b/Advanced Software Engineering/Advanced Software Engineering/Verbs/Value/ValueFactory.cs index d58c0c5..5248332 100644 --- a/Advanced Software Engineering/Advanced Software Engineering/Verbs/Value/ValueFactory.cs +++ b/Advanced Software Engineering/Advanced Software Engineering/Verbs/Value/ValueFactory.cs @@ -25,9 +25,6 @@ namespace Advanced_Software_Engineering.Verbs.Value { case "bool": return new BoolValue(ValueHelper.ConvertToBool(value)); - case "expression": - return new Exception(ValueHelper.ConvertToExpression(value)); - default: throw new Exception("Unknown expected type: " + type.ToString()); } diff --git a/Advanced Software Engineering/Advanced Software Engineering/Verbs/Value/ValueHelper.cs b/Advanced Software Engineering/Advanced Software Engineering/Verbs/Value/ValueHelper.cs index 2662053..f033280 100644 --- a/Advanced Software Engineering/Advanced Software Engineering/Verbs/Value/ValueHelper.cs +++ b/Advanced Software Engineering/Advanced Software Engineering/Verbs/Value/ValueHelper.cs @@ -147,5 +147,9 @@ namespace Advanced_Software_Engineering.Verbs.Value { } throw new Exception("Could not convert " + text + " to any type"); } + + public static Exception ConvertToExpression(string expression) { + throw new NotImplementedException(); + } } } \ No newline at end of file