public int IntValue() { switch (Type) { case BurikoValueType.Int: case BurikoValueType.Bool: return(valueInt); case BurikoValueType.String: if (int.TryParse(valueString, out int result)) { return(result); } throw new Exception("BurikoValue: Cannot parse type string into type int."); case BurikoValueType.Variable: { IBurikoObject memory = BurikoMemory.Instance.GetMemory(valueReference.Property); return(memory.IntValue(valueReference)); } case BurikoValueType.Operation: return(valueVariable.IntValue()); case BurikoValueType.Null: return(0); default: throw new NotImplementedException($"BurikoValue: Cannot cast type {Type} into type Int."); } }
private static int PerformMath(BurikoMathType type, BurikoVariable a, BurikoVariable b) { int num = a.IntValue(); int num2 = b.IntValue(); switch (type) { case BurikoMathType.Equals: return((num == num2) ? 1 : 0); case BurikoMathType.Add: return(num + num2); case BurikoMathType.Divide: return(num / num2); case BurikoMathType.Multiply: return(num * num2); case BurikoMathType.Subtract: return(num - num2); case BurikoMathType.GreaterThan: return((num > num2) ? 1 : 0); case BurikoMathType.GreaterThanOrEquals: return((num >= num2) ? 1 : 0); case BurikoMathType.LessThan: return((num < num2) ? 1 : 0); case BurikoMathType.LessThanOrEquals: return((num <= num2) ? 1 : 0); case BurikoMathType.Modulus: return(num % num2); case BurikoMathType.NotEquals: return((num != num2) ? 1 : 0); case BurikoMathType.And: return((num != 0 && num2 != 0) ? 1 : 0); case BurikoMathType.Or: return((num != 0 || num2 != 0) ? 1 : 0); default: throw new Exception("Cannot find a handler for math type " + type); } }