Private
Public Access
Updated VerbFactory to allow IValue to be used universally
This commit is contained in:
1 parent
4cad6bc79b
commit
4899fbf9c8
1 file changed
+62
-60
@@ -1,6 +1,7 @@
|
|||||||
using Advanced_Software_Engineering.Verbs.DrawingVerbs;
|
using Advanced_Software_Engineering.Verbs.DrawingVerbs;
|
||||||
using Advanced_Software_Engineering.Verbs.Value;
|
using Advanced_Software_Engineering.Verbs.Value;
|
||||||
using Advanced_Software_Engineering.Verbs.Value.ValueObjects;
|
using Advanced_Software_Engineering.Verbs.Value.ValueObjects;
|
||||||
|
using Advanced_Software_Engineering.Verbs.Value.ValueTypes;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
@@ -27,9 +28,30 @@ namespace Advanced_Software_Engineering {
|
|||||||
if (!commandAndParameters.Keys.Contains("command")) throw new Exception("There is no command to process");
|
if (!commandAndParameters.Keys.Contains("command")) throw new Exception("There is no command to process");
|
||||||
|
|
||||||
string command = commandAndParameters["command"][0];
|
string command = commandAndParameters["command"][0];
|
||||||
string[] parameters = commandAndParameters.Keys.Contains("parameters") ? commandAndParameters["parameters"] : new string[] { };
|
|
||||||
int parameterLength = parameters.Length;
|
|
||||||
|
|
||||||
|
//process declarations first
|
||||||
|
|
||||||
|
if(commandAndParameters.ContainsKey("parameters"))
|
||||||
|
|
||||||
|
switch (command) {
|
||||||
|
case "int":
|
||||||
|
case "double":
|
||||||
|
case "bool":
|
||||||
|
case "color":
|
||||||
|
if (commandAndParameters["parameters"].Length == 1) {
|
||||||
|
return new DeclareVariable(drawer, command, commandAndParameters["parameters"][0]);
|
||||||
|
} else throw new Exception(command + "s need to be initialised");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
List<IValue> parameters = new List<IValue>();
|
||||||
|
if( commandAndParameters.ContainsKey("parameters") ) foreach(string parameter in commandAndParameters["parameters"]) {
|
||||||
|
parameters.Add(ValueFactory.CreateValue(drawer, parameter));
|
||||||
|
}
|
||||||
|
int parameterLength = parameters.Count;
|
||||||
|
|
||||||
|
|
||||||
|
//process drawing commands and extras second
|
||||||
switch (command) {
|
switch (command) {
|
||||||
//Drawing commands
|
//Drawing commands
|
||||||
case "move":
|
case "move":
|
||||||
@@ -44,85 +66,70 @@ namespace Advanced_Software_Engineering {
|
|||||||
case "lineto":
|
case "lineto":
|
||||||
//Check parameters
|
//Check parameters
|
||||||
if (parameterLength == 2) {
|
if (parameterLength == 2) {
|
||||||
return new DrawTo(drawer, new PointValue(ValueFactory.CreateValue(drawer, parameters[0]), ValueFactory.CreateValue(drawer, parameters[1])));
|
return new DrawTo(drawer, new PointValue(parameters[0], parameters[1]));
|
||||||
} else throw new Exception(command + " has an incorrect number of parameters");
|
} else throw new Exception(command + " has an incorrect number of parameters");
|
||||||
|
|
||||||
case "regularpolygon":
|
case "regularpolygon":
|
||||||
case "rp":
|
case "rp":
|
||||||
//Check parameters
|
//Check parameters
|
||||||
if (parameterLength == 2) {
|
if (parameterLength == 2) {
|
||||||
return new
|
return new RegularPolygon(drawer, parameters[0], parameters[1], new IntValue(0), new BoolValue(true) );
|
||||||
RegularPolygon(drawer,
|
|
||||||
ValueHelper.ConvertToInt(parameters[0]),
|
|
||||||
ValueHelper.ConvertToDouble(parameters[1])
|
|
||||||
);
|
|
||||||
} else if (parameterLength == 3) {
|
} else if (parameterLength == 3) {
|
||||||
return new RegularPolygon(drawer,
|
return new RegularPolygon(drawer, parameters[0], parameters[1], parameters[2], new BoolValue(true));
|
||||||
ValueHelper.ConvertToInt(parameters[0]),
|
|
||||||
ValueHelper.ConvertToDouble(parameters[1]),
|
|
||||||
ValueHelper.ConvertToDouble(parameters[2])
|
|
||||||
);
|
|
||||||
} else throw new Exception(command + " has an incorrect number of parameters");
|
} else throw new Exception(command + " has an incorrect number of parameters");
|
||||||
|
|
||||||
case "square":
|
case "square":
|
||||||
//Check parameters
|
//Check parameters
|
||||||
if (parameterLength == 1) {
|
if (parameterLength == 1) {
|
||||||
return new
|
return new
|
||||||
Square(drawer,
|
Square(drawer,parameters[0]);
|
||||||
ValueHelper.ConvertToDouble(parameters[0])
|
|
||||||
);
|
|
||||||
} else if (parameterLength == 2) {
|
} else if (parameterLength == 2) {
|
||||||
return new Square(drawer,
|
return new Square(drawer, parameters[0], parameters[1]);
|
||||||
ValueHelper.ConvertToDouble(parameters[0]),
|
|
||||||
ValueHelper.ConvertToDouble(parameters[1])
|
|
||||||
);
|
|
||||||
} else throw new Exception(command + " has an incorrect number of parameters");
|
} else throw new Exception(command + " has an incorrect number of parameters");
|
||||||
|
|
||||||
case "quadrilateral":
|
case "quadrilateral":
|
||||||
//Check parameters
|
//Check parameters
|
||||||
if (parameterLength == 8) {
|
if (parameterLength == 8) {
|
||||||
return new Quadrilateral(drawer,
|
return new Quadrilateral(drawer,
|
||||||
ValueHelper.ConvertToPoint(parameters[0], parameters[1]),
|
new PointValue(parameters[0], parameters[1]),
|
||||||
ValueHelper.ConvertToPoint(parameters[2], parameters[3]),
|
new PointValue(parameters[2], parameters[3]),
|
||||||
ValueHelper.ConvertToPoint(parameters[4], parameters[5]),
|
new PointValue(parameters[4], parameters[5]),
|
||||||
ValueHelper.ConvertToPoint(parameters[6], parameters[7])
|
new PointValue(parameters[6], parameters[7])
|
||||||
);
|
);
|
||||||
} else throw new Exception(command + " has an incorrect number of parameters");
|
} else throw new Exception(command + " has an incorrect number of parameters");
|
||||||
|
|
||||||
case "rectangle":
|
case "rectangle":
|
||||||
//Check parameters
|
//Check parameters
|
||||||
if (parameterLength == 2) {
|
if (parameterLength == 2) {
|
||||||
return new Rectangle(drawer,
|
return new Rectangle(drawer, parameters[0], parameters[2]);
|
||||||
ValueHelper.ConvertToDouble(parameters[0]),
|
|
||||||
ValueHelper.ConvertToDouble(parameters[1])
|
|
||||||
);
|
|
||||||
} else if (parameterLength == 8) {
|
} else if (parameterLength == 8) {
|
||||||
return new Quadrilateral(drawer,
|
return new Quadrilateral(drawer,
|
||||||
ValueHelper.ConvertToPoint(parameters[0], parameters[1]),
|
new PointValue(parameters[0], parameters[1]),
|
||||||
ValueHelper.ConvertToPoint(parameters[2], parameters[3]),
|
new PointValue(parameters[2], parameters[3]),
|
||||||
ValueHelper.ConvertToPoint(parameters[4], parameters[5]),
|
new PointValue(parameters[4], parameters[5]),
|
||||||
ValueHelper.ConvertToPoint(parameters[6], parameters[7])
|
new PointValue(parameters[6], parameters[7])
|
||||||
);
|
);
|
||||||
} else throw new Exception(command + " has an incorrect number of parameters");
|
} else throw new Exception(command + " has an incorrect number of parameters");
|
||||||
|
|
||||||
case "circle":
|
case "circle":
|
||||||
//Check parameters
|
//Check parameters
|
||||||
if (parameterLength == 1) {
|
if (parameterLength == 1) {
|
||||||
return new Circle(drawer, ValueFactory.CreateValue(drawer, parameters[0]));
|
return new Circle(drawer, parameters[0]);
|
||||||
} else throw new Exception(command + " has an incorrect number of parameters");
|
} else throw new Exception(command + " has an incorrect number of parameters");
|
||||||
|
|
||||||
case "triangle":
|
case "triangle":
|
||||||
//Check parameters
|
//Check parameters
|
||||||
if (parameterLength == 1) {
|
if (parameterLength == 1) {
|
||||||
return new
|
return new
|
||||||
Triangle(drawer,
|
Triangle(drawer, parameters[0]);
|
||||||
ValueHelper.ConvertToDouble(parameters[0])
|
|
||||||
);
|
|
||||||
} else if (parameterLength == 2) {
|
} else if (parameterLength == 2) {
|
||||||
return new
|
return new
|
||||||
Triangle(drawer,
|
Triangle(drawer, parameters[0], parameters[1]);
|
||||||
ValueHelper.ConvertToDouble(parameters[0]),
|
|
||||||
ValueHelper.ConvertToDouble(parameters[1])
|
|
||||||
);
|
|
||||||
} else if (parameterLength == 6) {
|
} else if (parameterLength == 6) {
|
||||||
return new Triangle(drawer,
|
return new Triangle(drawer,
|
||||||
ValueHelper.ConvertToPoint(parameters[0], parameters[1]),
|
new PointValue(parameters[0], parameters[1]),
|
||||||
ValueHelper.ConvertToPoint(parameters[2], parameters[3]),
|
new PointValue(parameters[2], parameters[3]),
|
||||||
ValueHelper.ConvertToPoint(parameters[4], parameters[5])
|
new PointValue(parameters[4], parameters[5])
|
||||||
);
|
);
|
||||||
} else throw new Exception(command + " has an incorrect number of parameters");
|
} else throw new Exception(command + " has an incorrect number of parameters");
|
||||||
|
|
||||||
@@ -154,28 +161,23 @@ namespace Advanced_Software_Engineering {
|
|||||||
|
|
||||||
case "pen":
|
case "pen":
|
||||||
if (parameterLength == 1) {
|
if (parameterLength == 1) {
|
||||||
return new PenColor(drawer, ValueFactory.CreateValue(drawer, parameters[0]));
|
return new PenColor(drawer, parameters[0]);
|
||||||
} else if (parameterLength == 3) {
|
} else if (parameterLength == 3) {
|
||||||
return new PenColor(drawer, ValueFactory.CreateValue(drawer, parameters[0], parameters[1], parameters[2], "color"));
|
return new PenColor(drawer, new ColorValue(parameters[0], parameters[1], parameters[2]));
|
||||||
} else if (parameterLength == 4) {
|
} else if (parameterLength == 4) {
|
||||||
return new PenColor(drawer, ValueFactory.CreateValue(drawer, parameters[0], parameters[1], parameters[2], parameters[3], "color"));
|
return new PenColor(drawer, new ColorValue(parameters[0], parameters[1], parameters[2], parameters[3]));
|
||||||
} else throw new Exception(command + " has an incorrect number of parameters");
|
|
||||||
case "fill":
|
|
||||||
if (parameterLength == 1) {
|
|
||||||
return new FillColor(drawer, ValueFactory.CreateValue(drawer, parameters[0]));
|
|
||||||
} else if (parameterLength == 3) {
|
|
||||||
return new FillColor(drawer, ValueFactory.CreateValue(drawer, parameters[0], parameters[1], parameters[2], "color"));
|
|
||||||
} else if (parameterLength == 4) {
|
|
||||||
return new FillColor(drawer, ValueFactory.CreateValue(drawer, parameters[0], parameters[1], parameters[2], parameters[3], "color"));
|
|
||||||
} else throw new Exception(command + " has an incorrect number of parameters");
|
} else throw new Exception(command + " has an incorrect number of parameters");
|
||||||
|
|
||||||
case "int":
|
case "fill":
|
||||||
case "double":
|
|
||||||
case "bool":
|
|
||||||
case "color":
|
|
||||||
if (parameterLength == 1) {
|
if (parameterLength == 1) {
|
||||||
return new DeclareVariable(drawer, command, parameters[0]);
|
return new FillColor(drawer, parameters[0]);
|
||||||
} else throw new Exception(command + "s need to be initialised");
|
} else if (parameterLength == 3) {
|
||||||
|
return new FillColor(drawer, new ColorValue(parameters[0], parameters[1], parameters[2], new IntValue(255)));
|
||||||
|
} else if (parameterLength == 4) {
|
||||||
|
return new FillColor(drawer, new ColorValue(parameters[0], parameters[1], parameters[2], parameters[3]));
|
||||||
|
} else throw new Exception(command + " has an incorrect number of parameters");
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
default:
|
default:
|
||||||
//assignment
|
//assignment
|
||||||
|
|||||||
Reference in new issue
Block a user