-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathEventManager.pde
More file actions
126 lines (123 loc) · 3.01 KB
/
EventManager.pde
File metadata and controls
126 lines (123 loc) · 3.01 KB
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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
public static enum EventType {
DEFAULT_EDGE,
CODE,
PROCESSING,
VISITED,
ADD_NODE,
ADD_STATE,
REMOVE_NODE,
SHOW_RESULT,
QUEUED
}
public class Event {
private InteractiveElement element;
private EventType eventType;
private int lineOfCode, distance;
Event(InteractiveElement element, EventType eventType) {
this.element = element;
this.eventType = eventType;
lineOfCode = -1;
}
Event(int distance, InteractiveElement element, EventType eventType) {
this.distance = distance;
this.element = element;
this.eventType = eventType;
lineOfCode = -1;
}
Event(int lineOfCode, EventType eventType) {
element = null;
this.eventType = eventType;
this.lineOfCode = lineOfCode;
}
InteractiveElement getElement() {
return element;
}
EventType getEventType() {
return eventType;
}
int getDistance() {
return distance;
}
}
public class EventManager {
private boolean pause;
private LinkedList<Event> queueEvent;
private DataStructureInteractive dataStructureInteractive;
private Solver solver;
private ResultInteractive resultInteractive;
int time;
EventManager(ResultInteractive resultInteractive) {
this.resultInteractive = resultInteractive;
reset();
}
public void reset() {
pause = false;
resultInteractive.reset();
queueEvent = new LinkedList<Event>();
time = Utility.TIME_BETWEEN_EVENTS;
}
public void addEvent(Event event) {
queueEvent.add(event);
}
public void setDataStructure(DataStructureInteractive newDataStructureInteractive) {
dataStructureInteractive = newDataStructureInteractive;
}
public void setSolver( Solver solver ) {
this.solver = solver;
}
public void setPause( ) {
pause = !pause;
}
public void processEvent() {
if( queueEvent.size() == 0 || pause == true ) {
return ;
}
if( time > 0 ) {
time--;
return ;
}
time = Utility.TIME_BETWEEN_EVENTS;
Event event = queueEvent.poll();
switch(event.getEventType()) {
case DEFAULT_EDGE: {
event.getElement().setColor(Utility.DEFAULT_EDGE_COLOR);
break;
}
case PROCESSING: {
event.getElement().setColor(Utility.PROCESSING_COLOR);
break;
}
case VISITED: {
event.getElement().setColor(Utility.VISITED_COLOR);
break;
}
case REMOVE_NODE: {
dataStructureInteractive.remove();
break;
}
case ADD_NODE: {
dataStructureInteractive.add((Node)event.getElement());
break;
}
case ADD_STATE: {
dataStructureInteractive.add(new State(event.getDistance(),(Node)event.getElement()));
break;
}
case QUEUED: {
event.getElement().setColor(Utility.QUEUED_COLOR);
break;
}
case CODE: {
solver.setCurrentLine(event.lineOfCode);
break;
}
case SHOW_RESULT: {
resultInteractive.addResult((Node)event.getElement());
break;
}
default: {
break;
}
}
}
}