From 3ba3c24b508268b339fd4e66e2a00a6bf75bbae9 Mon Sep 17 00:00:00 2001 From: Lukasz Baldyga Date: Sun, 29 Nov 2020 12:04:37 +0000 Subject: [PATCH] Improved the ComparisonValue to act more like BoolValue --- .../Verbs/Value/ValueTypes/ComparisonValue.cs | 22 +++++++++++-------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/Advanced Software Engineering/Advanced Software Engineering/Verbs/Value/ValueTypes/ComparisonValue.cs b/Advanced Software Engineering/Advanced Software Engineering/Verbs/Value/ValueTypes/ComparisonValue.cs index dfbe411..d5b6f23 100644 --- a/Advanced Software Engineering/Advanced Software Engineering/Verbs/Value/ValueTypes/ComparisonValue.cs +++ b/Advanced Software Engineering/Advanced Software Engineering/Verbs/Value/ValueTypes/ComparisonValue.cs @@ -31,42 +31,46 @@ namespace Advanced_Software_Engineering.Verbs.Value.ValueTypes { } public string GetOriginalType() { - return "comparison"; + return Evaluate().GetOriginalType(); } public bool isInitialised() { return true; } - public bool ToBool() { + private IValue Evaluate() { switch (op) { case "=": - return value1.ToBool() == value2.ToBool() && value1.ToDouble() == value2.ToDouble() && value1.ToInt() == value2.ToInt(); + return new BoolValue(value1.ToBool() == value2.ToBool() && value1.ToDouble() == value2.ToDouble() && value1.ToInt() == value2.ToInt()); case "!": - return value1.ToBool() != value2.ToBool() && value1.ToDouble() != value2.ToDouble() && value1.ToInt() != value2.ToInt(); + return new BoolValue(value1.ToBool() != value2.ToBool() && value1.ToDouble() != value2.ToDouble() && value1.ToInt() != value2.ToInt()); case ">": - return value1.ToDouble() > value2.ToDouble() && value1.ToInt() > value2.ToInt(); + return new BoolValue(value1.ToDouble() > value2.ToDouble() && value1.ToInt() > value2.ToInt()); case "<": - return value1.ToDouble() < value2.ToDouble() && value1.ToInt() < value2.ToInt(); + return new BoolValue(value1.ToDouble() < value2.ToDouble() && value1.ToInt() < value2.ToInt()); default: throw new Exception("Bad operator"); } } + public bool ToBool() { + return Evaluate().ToBool(); + } + public Color ToColor() { - throw new Exception("Cannot convert comparison to color"); + return Evaluate().ToColor(); } public double ToDouble() { - throw new Exception("Cannot convert comparison to double"); + return Evaluate().ToDouble(); } public int ToInt() { - throw new Exception("Cannot convert comparison to int"); + return Evaluate().ToInt(); } } } \ No newline at end of file