diff --git a/Advanced Software Engineering/Advanced Software Engineering/Verbs/DrawingVerbs/Circle.cs b/Advanced Software Engineering/Advanced Software Engineering/Verbs/DrawingVerbs/Circle.cs
index e6449e9..86906e7 100644
--- a/Advanced Software Engineering/Advanced Software Engineering/Verbs/DrawingVerbs/Circle.cs
+++ b/Advanced Software Engineering/Advanced Software Engineering/Verbs/DrawingVerbs/Circle.cs
@@ -1,18 +1,20 @@
-namespace Advanced_Software_Engineering.Verbs.DrawingVerbs {
+using Advanced_Software_Engineering.Verbs.Value;
+
+namespace Advanced_Software_Engineering.Verbs.DrawingVerbs {
///
/// Circle IVerb class.
///
public class Circle : IVerb {
private readonly Drawer drawer;
- private readonly double scale;
+ private readonly IValue scale;
///
/// Circle constructor creates the Circle IVerb.
///
/// drawer
/// scale of the circle
- public Circle(Drawer drawer, double scale) {
+ public Circle(Drawer drawer, IValue scale) {
this.drawer = drawer;
this.scale = scale;
}
@@ -21,6 +23,7 @@
/// Execute the Circle IVerb, which is to draw a circle with the drawer.
///
public void ExecuteVerb() {
+ double scale = this.scale.ToDouble();
drawer.DrawCircle(scale);
}
@@ -29,7 +32,7 @@
///
///
public string GetDescription() {
- return "Draws a circle radius " + scale.ToString() + ", with origin of the pen";
+ return "Draws a circle with a certain radius, with origin of the pen";
}
}
}
\ No newline at end of file
diff --git a/Advanced Software Engineering/Advanced Software Engineering/Verbs/DrawingVerbs/DrawTo.cs b/Advanced Software Engineering/Advanced Software Engineering/Verbs/DrawingVerbs/DrawTo.cs
index 678ea6d..7936b42 100644
--- a/Advanced Software Engineering/Advanced Software Engineering/Verbs/DrawingVerbs/DrawTo.cs
+++ b/Advanced Software Engineering/Advanced Software Engineering/Verbs/DrawingVerbs/DrawTo.cs
@@ -1,4 +1,5 @@
-using System.Drawing;
+using Advanced_Software_Engineering.Verbs.Value;
+using System.Drawing;
namespace Advanced_Software_Engineering.Verbs.DrawingVerbs {
@@ -7,7 +8,8 @@ namespace Advanced_Software_Engineering.Verbs.DrawingVerbs {
///
public class DrawTo : IVerb {
private readonly Drawer drawer;
- private readonly Point moveToPoint;
+ private readonly IValue moveToPointX;
+ private readonly IValue moveToPointY;
///
/// Creates the DrawTo intstance
@@ -15,16 +17,17 @@ namespace Advanced_Software_Engineering.Verbs.DrawingVerbs {
/// drawer
/// X position to move to
/// Y position to move to
- public DrawTo(Drawer drawer, int x, int y) {
+ public DrawTo(Drawer drawer, IValue x, IValue y) {
this.drawer = drawer;
- moveToPoint = new Point(x, y);
+ moveToPointX = x;
+ moveToPointY = y;
}
///
/// Draws the line
///
public void ExecuteVerb() {
- drawer.DrawLine(moveToPoint);
+ drawer.DrawLine(new Point(moveToPointX.ToInt(), moveToPointY.ToInt()));
}
///
@@ -32,7 +35,7 @@ namespace Advanced_Software_Engineering.Verbs.DrawingVerbs {
///
///
public string GetDescription() {
- return "Draw line " + moveToPoint.X + ", " + moveToPoint.Y;
+ return "Draws a line";
}
}
}
\ No newline at end of file
diff --git a/Advanced Software Engineering/Advanced Software Engineering/Verbs/DrawingVerbs/FillColor.cs b/Advanced Software Engineering/Advanced Software Engineering/Verbs/DrawingVerbs/FillColor.cs
index 6b0d61b..09047d5 100644
--- a/Advanced Software Engineering/Advanced Software Engineering/Verbs/DrawingVerbs/FillColor.cs
+++ b/Advanced Software Engineering/Advanced Software Engineering/Verbs/DrawingVerbs/FillColor.cs
@@ -1,4 +1,5 @@
-using System.Drawing;
+using Advanced_Software_Engineering.Verbs.Value;
+using System.Drawing;
namespace Advanced_Software_Engineering.Verbs.DrawingVerbs {
@@ -7,14 +8,14 @@ namespace Advanced_Software_Engineering.Verbs.DrawingVerbs {
///
public class FillColor : IVerb {
private readonly Drawer drawer;
- private readonly Color color;
+ private readonly IValue color;
///
/// Create the FillColor instance
///
/// drawer
/// The color of the fill
- public FillColor(Drawer drawer, Color color) {
+ public FillColor(Drawer drawer, IValue color) {
this.drawer = drawer;
this.color = color;
}
@@ -23,7 +24,7 @@ namespace Advanced_Software_Engineering.Verbs.DrawingVerbs {
/// Set the fill color
///
public void ExecuteVerb() {
- drawer.SetFillColor(color);
+ drawer.SetFillColor(color.ToColor());
}
///
@@ -31,7 +32,7 @@ namespace Advanced_Software_Engineering.Verbs.DrawingVerbs {
///
/// Description of the fill color
public string GetDescription() {
- return "Set fill color to: " + color.ToString();
+ return "Set fill color to the specified color";
}
}
}
\ No newline at end of file
diff --git a/Advanced Software Engineering/Advanced Software Engineering/Verbs/DrawingVerbs/PenColor.cs b/Advanced Software Engineering/Advanced Software Engineering/Verbs/DrawingVerbs/PenColor.cs
index 777a488..bbe5eb4 100644
--- a/Advanced Software Engineering/Advanced Software Engineering/Verbs/DrawingVerbs/PenColor.cs
+++ b/Advanced Software Engineering/Advanced Software Engineering/Verbs/DrawingVerbs/PenColor.cs
@@ -1,4 +1,5 @@
-using System.Drawing;
+using Advanced_Software_Engineering.Verbs.Value;
+using System.Drawing;
namespace Advanced_Software_Engineering.Verbs.DrawingVerbs {
@@ -7,14 +8,14 @@ namespace Advanced_Software_Engineering.Verbs.DrawingVerbs {
///
public class PenColor : IVerb {
private readonly Drawer drawer;
- private readonly Color color;
+ private readonly IValue color;
///
/// Creates a PenColor instance
///
/// drawer
/// Pen color
- public PenColor(Drawer drawer, Color color) {
+ public PenColor(Drawer drawer, IValue color) {
this.drawer = drawer;
this.color = color;
}
@@ -23,7 +24,7 @@ namespace Advanced_Software_Engineering.Verbs.DrawingVerbs {
/// Sets the pen color
///
public void ExecuteVerb() {
- drawer.SetPenColor(color);
+ drawer.SetPenColor(color.ToColor());
}
///
@@ -31,7 +32,7 @@ namespace Advanced_Software_Engineering.Verbs.DrawingVerbs {
///
/// The description pen color
public string GetDescription() {
- return "Set pen color to: " + color.ToString();
+ return "Set pen color";
}
}
}
\ No newline at end of file
diff --git a/Advanced Software Engineering/Advanced Software Engineering/Verbs/Value/ValueTypes/ExpressionValue.cs b/Advanced Software Engineering/Advanced Software Engineering/Verbs/Value/ValueTypes/ExpressionValue.cs
index 9ecd242..7cd6084 100644
--- a/Advanced Software Engineering/Advanced Software Engineering/Verbs/Value/ValueTypes/ExpressionValue.cs
+++ b/Advanced Software Engineering/Advanced Software Engineering/Verbs/Value/ValueTypes/ExpressionValue.cs
@@ -10,14 +10,14 @@ namespace Advanced_Software_Engineering.Verbs.Value {
private const int DIVIDE = 3;
private Drawer drawer;
- private string variable1;
- private string variable2;
+ private IValue variable1;
+ private IValue variable2;
private int operation;
private bool evaluated = false;
private IValue evaluatedValue;
- public ExpressionValue(Drawer drawer, string variable1, string variable2, int operation) {
+ public ExpressionValue(Drawer drawer, IValue variable1, IValue variable2, int operation) {
this.drawer = drawer;
this.variable1 = variable1;
this.variable2 = variable2;
@@ -30,35 +30,33 @@ namespace Advanced_Software_Engineering.Verbs.Value {
private IValue Evaluate() {
if (evaluated) return evaluatedValue;
- IValue value1 = drawer.GetVariable(variable1);
- IValue value2 = drawer.GetVariable(variable2);
- string value1type = value1.GetOriginalType();
+ string outputType = variable1.GetOriginalType();
- switch (value1type) {
+ switch (outputType) {
case "bool":
//operations as standard for bool expressions eg
// (a + b) => a or b, (a * b) => a and b, (a ^ b) => a xor b
- if (operation == ADD) evaluatedValue = ValueFactory.CreateValue(value1.ToBool() || value2.ToBool());
- else if (operation == SUBTRACT) evaluatedValue = ValueFactory.CreateValue(value1.ToBool() ^ value2.ToBool());
- else if (operation == MULTIPLY) evaluatedValue = ValueFactory.CreateValue(value1.ToBool() && value2.ToBool());
+ if (operation == ADD) evaluatedValue = ValueFactory.CreateValue(variable1.ToBool() || variable1.ToBool());
+ else if (operation == SUBTRACT) evaluatedValue = ValueFactory.CreateValue(variable1.ToBool() ^ variable1.ToBool());
+ else if (operation == MULTIPLY) evaluatedValue = ValueFactory.CreateValue(variable1.ToBool() && variable1.ToBool());
else if (operation == DIVIDE) throw new Exception("Bool cannot be divided");
else throw new Exception("Bad operation");
break;
case "int":
- if (operation == ADD) evaluatedValue = ValueFactory.CreateValue(value1.ToInt() + value2.ToInt());
- else if (operation == SUBTRACT) evaluatedValue = ValueFactory.CreateValue(value1.ToInt() - value2.ToInt());
- else if (operation == MULTIPLY) evaluatedValue = ValueFactory.CreateValue(value1.ToInt() * value2.ToInt());
- else if (operation == DIVIDE) evaluatedValue = ValueFactory.CreateValue(value1.ToInt() / value2.ToInt());
+ if (operation == ADD) evaluatedValue = ValueFactory.CreateValue(variable1.ToInt() + variable1.ToInt());
+ else if (operation == SUBTRACT) evaluatedValue = ValueFactory.CreateValue(variable1.ToInt() - variable1.ToInt());
+ else if (operation == MULTIPLY) evaluatedValue = ValueFactory.CreateValue(variable1.ToInt() * variable1.ToInt());
+ else if (operation == DIVIDE) evaluatedValue = ValueFactory.CreateValue(variable1.ToInt() / variable1.ToInt());
else throw new Exception("Bad operation");
break;
case "double":
- if (operation == ADD) evaluatedValue = ValueFactory.CreateValue(value1.ToDouble() + value2.ToDouble());
- else if (operation == SUBTRACT) evaluatedValue = ValueFactory.CreateValue(value1.ToDouble() - value2.ToDouble());
- else if (operation == MULTIPLY) evaluatedValue = ValueFactory.CreateValue(value1.ToDouble() * value2.ToDouble());
- else if (operation == DIVIDE) evaluatedValue = ValueFactory.CreateValue(value1.ToDouble() / value2.ToDouble());
+ if (operation == ADD) evaluatedValue = ValueFactory.CreateValue(variable1.ToDouble() + variable1.ToDouble());
+ else if (operation == SUBTRACT) evaluatedValue = ValueFactory.CreateValue(variable1.ToDouble() - variable1.ToDouble());
+ else if (operation == MULTIPLY) evaluatedValue = ValueFactory.CreateValue(variable1.ToDouble() * variable1.ToDouble());
+ else if (operation == DIVIDE) evaluatedValue = ValueFactory.CreateValue(variable1.ToDouble() / variable1.ToDouble());
else throw new Exception("Bad operation");
break;