c5abccad
pfrison
PercTeacher inter...
|
1
2
3
4
|
import java.util.ArrayList;
public class ActionList {
private ArrayList<Action> actions;
|
04949080
pfrison
PercTeacher stabl...
|
5
|
private SerialCom serialCom;
|
c5abccad
pfrison
PercTeacher inter...
|
6
|
|
04949080
pfrison
PercTeacher stabl...
|
7
8
|
public ActionList(SerialCom serialCom) {
this.serialCom = serialCom;
|
c5abccad
pfrison
PercTeacher inter...
|
9
10
11
|
actions = new ArrayList<>();
actions.add(new Action());
}
|
04949080
pfrison
PercTeacher stabl...
|
12
|
public ActionList(int[] leftDeltaArray, int[] rightDeltaArray, long[] leftDelaiArray, long[] rightDelaiArray) {
|
c5abccad
pfrison
PercTeacher inter...
|
13
14
15
16
17
18
19
20
21
22
|
if(leftDelaiArray.length != rightDelaiArray.length
|| leftDelaiArray.length != leftDelaiArray.length
|| leftDelaiArray.length != rightDelaiArray.length)
throw new InvalidActionListArrays();
actions = new ArrayList<>();
for(int i=0; i<leftDeltaArray.length; i++)
actions.add(new Action(leftDeltaArray[i], rightDeltaArray[i], leftDelaiArray[i], rightDelaiArray[i]));
actions.add(new Action());
}
|
04949080
pfrison
PercTeacher stabl...
|
23
|
public void addToActionList(int i, int j, int step) {
|
c5abccad
pfrison
PercTeacher inter...
|
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
|
switch (j * 10 + i) {
case 00: //ACTION_LEFT_PLUS;
addToLastAction(step, 0);
break;
case 02: //ACTION_LEFT_MINUS;
addToLastAction(-step, 0);
break;
case 20: //ACTION_RIGHT_PLUS;
addToLastAction(0, step);
break;
case 22: //ACTION_RIGHT_MINUS;
addToLastAction(0, -step);
break;
case 10: //ACTION_FORWARD;
addToLastAction(step, step);
break;
case 12: //ACTION_BACKWARD;
addToLastAction(-step, -step);
break;
case 01: //ACTION_CLOCKWISE;
addToLastAction(step, -step);
break;
case 21: //ACTION_ANTI_CLOCKWISE;
addToLastAction(-step, step);
break;
default:
throw new InvalidInputException();
}
}
public void completeAction() {
if(!actions.get(actions.size() - 1).isEmpty())
actions.add(new Action());
}
public void completeActionAndAddPause(long delai) {
if(actions.get(actions.size() - 1).isEmpty())
actions.set(actions.size() - 1, new Action(0, 0, delai, delai));
else
actions.add(new Action(0, 0, delai, delai));
completeAction();
}
|
04949080
pfrison
PercTeacher stabl...
|
67
|
private void addToLastAction(int deltaL, int deltaR) {
|
c5abccad
pfrison
PercTeacher inter...
|
68
69
|
actions.get(actions.size() - 1).addDeltaL(deltaL);
actions.get(actions.size() - 1).addDeltaR(deltaR);
|
04949080
pfrison
PercTeacher stabl...
|
70
|
SerialCommands.sendDeltas(serialCom, deltaL, deltaR);
|
c5abccad
pfrison
PercTeacher inter...
|
71
72
73
74
75
|
}
public void revertLastAction() {
if(actions.size() <= 0)
return;
|
04949080
pfrison
PercTeacher stabl...
|
76
77
|
Action toRevert = null;
|
c5abccad
pfrison
PercTeacher inter...
|
78
79
|
if(actions.get(actions.size() - 1).isEmpty()) {
actions.remove(actions.size() - 1);
|
04949080
pfrison
PercTeacher stabl...
|
80
81
|
if(actions.size() != 0) {
toRevert = actions.get(actions.size() - 1);
|
c5abccad
pfrison
PercTeacher inter...
|
82
|
actions.set(actions.size() - 1, new Action());
|
04949080
pfrison
PercTeacher stabl...
|
83
|
}
|
c5abccad
pfrison
PercTeacher inter...
|
84
85
86
|
else
actions.add(new Action());
} else {
|
04949080
pfrison
PercTeacher stabl...
|
87
|
toRevert = actions.get(actions.size() - 1);
|
c5abccad
pfrison
PercTeacher inter...
|
88
89
|
actions.set(actions.size() - 1, new Action());
}
|
04949080
pfrison
PercTeacher stabl...
|
90
91
|
if(toRevert != null)
SerialCommands.sendDeltas(serialCom, -toRevert.getDeltaL(), -toRevert.getDeltaR());
|
c5abccad
pfrison
PercTeacher inter...
|
92
93
94
95
96
97
|
}
public String getLeftDeltaArray() {
String str = "{";
for(Action action : actions) {
if(!action.isEmpty())
|
04949080
pfrison
PercTeacher stabl...
|
98
|
str += String.valueOf(action.getDeltaL()) + ", ";
|
c5abccad
pfrison
PercTeacher inter...
|
99
100
101
102
103
104
105
106
|
}
str = str.substring(0, str.length() - 2) + "}";
return str;
}
public String getRightDeltaArray() {
String str = "{";
for(Action action : actions) {
if(!action.isEmpty())
|
04949080
pfrison
PercTeacher stabl...
|
107
|
str += String.valueOf(action.getDeltaR()) + ", ";
|
c5abccad
pfrison
PercTeacher inter...
|
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
|
}
str = str.substring(0, str.length() - 2) + "}";
return str;
}
public String getLeftDelaiArray() {
String str = "{";
for(Action action : actions) {
if(!action.isEmpty())
str += String.valueOf(action.getDeltaR()) + "L, ";
}
str = str.substring(0, str.length() - 2) + "}";
return str;
}
public String getRightDelaiArray() {
String str = "{";
for(Action action : actions) {
if(!action.isEmpty())
str += String.valueOf(action.getDeltaR()) + "L, ";
}
str = str.substring(0, str.length() - 2) + "}";
return str;
}
@Override
public String toString() {
String str = "";
for(Action action : actions)
str += action.toString() + "\n";
|
cd5544f2
pfrison
PercTeacher added...
|
136
|
str = str.substring(0, str.length() - 1); // remove last \n
|
c5abccad
pfrison
PercTeacher inter...
|
137
138
139
|
return str;
}
}
|