-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathComSystem.java
More file actions
67 lines (53 loc) · 1.46 KB
/
ComSystem.java
File metadata and controls
67 lines (53 loc) · 1.46 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
package team022;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.function.Function;
import battlecode.common.*;
public class ComSystem {
RobotController rc;
ArrayList<Signal> AnsweringMachine;
ArrayList<messageHandler> handlers;
class messageHandler{
byte flag;
Function handler;
public messageHandler(byte flag, Function handler){
this.flag = flag;
this.handler = handler;
}
}
public ComSystem(RobotController rcin) {
rc = rcin;
AnsweringMachine = new ArrayList<Signal>();
}
public static int mapToInt(MapLocation toConvert){
int x = toConvert.x;
int y = toConvert.y & 0xFFFF;
int newInt = ((int)x)<<16 | y;
return newInt;
}
public static MapLocation intToMap(int toConvert){
short x = (short) (toConvert >>> 16 & 0xFFFF);
short y = (short) (toConvert & 0xFFFF);
return new MapLocation(x, y);
}
public static boolean checkFlag(Signal message, byte flag){
return (message.getMessage()[0] & 0xFF) == flag;
}
public void readAllMessages(){
AnsweringMachine.addAll(Arrays.asList(rc.emptySignalQueue()));
}
public void addHandler(byte flag, Function handler){
handlers.add(new messageHandler(flag, handler));
}
public static byte getFlag(Signal message){
if(message.getMessage() == null) return (byte) 0xFF;
return (byte)( message.getMessage()[0] & 0xFF);
}
public void removeHandler(byte flag){
for(messageHandler h : handlers){
if(h.flag == flag){
handlers.remove(h);
}
}
}
}