-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCondition.swift
64 lines (56 loc) · 1.65 KB
/
Condition.swift
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
//
// Behavior.swift
// PaletteKnife
//
// Created by JENNIFER MARY JACOBS on 7/22/16.
// Copyright © 2016 pixelmaid. All rights reserved.
//
import Foundation
class Condition:Observable<Float> {
var referenceA:Observable<Float>
var referenceB:Observable<Float>
var relational:String
init(a:Observable<Float>,b:Observable<Float>, relational:String){
self.referenceA = a
self.referenceB = b
self.relational = relational;
super.init(0);
}
func evaluate()->Bool{
switch (relational){
case "<":
let a = referenceA.get(nil)
let b = referenceB.get(nil)
return a < b;
case ">":
return referenceA.get(nil) > referenceB.get(nil);
case "==":
let a = referenceA.get(nil)
let b = referenceB.get(nil)
return a == b;
case "!=":
let a = referenceA.get(nil)
let b = referenceB.get(nil)
return a != b;
case "within":
let interval = self.referenceB as! Interval
let value = interval.get(nil);
if(value > 0){
if(referenceA.get(nil)>value){
interval.incrementIndex();
return true;
}
}
return false;
case "&&":
let a = (referenceA as! Condition).evaluate();
let b = (referenceB as! Condition).evaluate();
if(a && b){
return true;
}
return false;
default:
return false;
}
}
}