1 package cz.cuni.amis.pogamut.defcon.consts;
2
3 import cz.cuni.amis.pogamut.defcon.base3d.worldview.object.DefConLocation;
4 import cz.cuni.amis.pogamut.defcon.communication.messages.infos.*;
5 import cz.cuni.amis.pogamut.defcon.communication.messages.infos.DefConEvent;
6 import cz.cuni.amis.pogamut.defcon.consts.state.*;
7
8 import java.util.HashMap;
9 import java.util.Map;
10
11 import javabot.JBot;
12
13 import javabot.JBot.EventData;
14
15
16
17
18
19
20
21 public enum Event {PING_SUB(JBot.EventPingSub), PING_CARRIER(JBot.EventPingCarrier),
22 NUKE_LAUNCH_SILO(JBot.EventNukeLaunchSilo), NUKE_LAUNCH_SUB(JBot.EventNukeLaunchSub),
23 HIT(JBot.EventHit), DESTROYED(JBot.EventDestroyed), PING_DETECTION(JBot.EventPingDetection),
24 CEASED_FIRE(JBot.EventCeasedFire), UNCEASED_FIRE(JBot.EventUnceasedFire),
25 SHARED_RADAR(JBot.EventSharedRadar), UNSHARED_RADAR(JBot.EventUnsharedRadar),
26 NEW_VOTE(JBot.EventNewVote), TEAM_VOTED(JBot.EventTeamVoted),
27 TEAM_RETRACTED_VOTE(JBot.EventTeamRetractedVote), VOTE_FINISHED_YES(JBot.EventVoteFinishedYes),
28 VOTE_FINISHED_NO(JBot.EventVoteFinishedNo);
29
30
31
32
33 private static Map<Integer, Event> enums = new HashMap<Integer, Event>();
34
35
36
37
38
39
40
41
42 public static Event getEnum(int eventId) {
43 return enums.get(eventId);
44 }
45
46 static {
47 for (Event item : Event.values()) {
48 enums.put(item.id, item);
49 }
50 }
51
52
53
54
55 public final int id;
56
57
58
59
60
61
62 private Event(int id) {
63 this.id = id;
64 }
65
66
67
68
69
70
71
72
73
74
75 public static DefConEvent getInstanceOfUnitTypeFromEventType(EventData data, double time) {
76 switch (Event.getEnum(data.m_eventType)) {
77 case SHARED_RADAR:return new SharedRadar(Event.getEnum(data.m_eventType),
78 data.m_causeObjectId, data.m_targetObjectId, UnitType.getEnum(data.m_unitType),
79 new DefConLocation(data.m_longitude, data.m_latitude), time);
80
81 case PING_DETECTION:return new PingDetection(Event.getEnum(data.m_eventType),
82 data.m_causeObjectId, data.m_targetObjectId, UnitType.getEnum(data.m_unitType),
83 new DefConLocation(data.m_longitude, data.m_latitude), time);
84
85 case HIT:return new Hit(Event.getEnum(data.m_eventType), data.m_causeObjectId,
86 data.m_targetObjectId, UnitType.getEnum(data.m_unitType),
87 new DefConLocation(data.m_longitude, data.m_latitude), time);
88
89 case NUKE_LAUNCH_SUB:return new NukeLaunchSub(Event.getEnum(data.m_eventType),
90 data.m_causeObjectId, data.m_targetObjectId, UnitType.getEnum(data.m_unitType),
91 new DefConLocation(data.m_longitude, data.m_latitude), time);
92
93 case VOTE_FINISHED_NO:return new VoteFinishedNo(Event.getEnum(data.m_eventType),
94 data.m_causeObjectId, data.m_targetObjectId, UnitType.getEnum(data.m_unitType),
95 new DefConLocation(data.m_longitude, data.m_latitude), time);
96
97 case NEW_VOTE:return new NewVote(Event.getEnum(data.m_eventType), data.m_causeObjectId,
98 data.m_targetObjectId, UnitType.getEnum(data.m_unitType),
99 new DefConLocation(data.m_longitude, data.m_latitude), time);
100
101 case UNSHARED_RADAR:return new UnsharedRadar(Event.getEnum(data.m_eventType),
102 data.m_causeObjectId, data.m_targetObjectId, UnitType.getEnum(data.m_unitType),
103 new DefConLocation(data.m_longitude, data.m_latitude), time);
104
105 case DESTROYED:return new Destroyed(Event.getEnum(data.m_eventType), data.m_causeObjectId,
106 data.m_targetObjectId, UnitType.getEnum(data.m_unitType),
107 new DefConLocation(data.m_longitude, data.m_latitude), time);
108
109 case TEAM_VOTED:return new TeamVoted(Event.getEnum(data.m_eventType), data.m_causeObjectId,
110 data.m_targetObjectId, UnitType.getEnum(data.m_unitType),
111 new DefConLocation(data.m_longitude, data.m_latitude), time);
112
113 case PING_SUB:return new PingSub(Event.getEnum(data.m_eventType), data.m_causeObjectId,
114 data.m_targetObjectId, UnitType.getEnum(data.m_unitType),
115 new DefConLocation(data.m_longitude, data.m_latitude), time);
116
117 case CEASED_FIRE:return new CeasedFire(Event.getEnum(data.m_eventType),
118 data.m_causeObjectId, data.m_targetObjectId, UnitType.getEnum(data.m_unitType),
119 new DefConLocation(data.m_longitude, data.m_latitude), time);
120
121 case PING_CARRIER:return new PingCarrier(Event.getEnum(data.m_eventType),
122 data.m_causeObjectId, data.m_targetObjectId, UnitType.getEnum(data.m_unitType),
123 new DefConLocation(data.m_longitude, data.m_latitude), time);
124
125 case VOTE_FINISHED_YES:return new VoteFinishedYes(Event.getEnum(data.m_eventType),
126 data.m_causeObjectId, data.m_targetObjectId, UnitType.getEnum(data.m_unitType),
127 new DefConLocation(data.m_longitude, data.m_latitude), time);
128
129 case TEAM_RETRACTED_VOTE:return new TeamRetractedVoted(Event.getEnum(data.m_eventType),
130 data.m_causeObjectId, data.m_targetObjectId, UnitType.getEnum(data.m_unitType),
131 new DefConLocation(data.m_longitude, data.m_latitude), time);
132
133 case UNCEASED_FIRE:return new UnceasedFire(Event.getEnum(data.m_eventType),
134 data.m_causeObjectId, data.m_targetObjectId, UnitType.getEnum(data.m_unitType),
135 new DefConLocation(data.m_longitude, data.m_latitude), time);
136
137 case NUKE_LAUNCH_SILO:return new NukeLaunchSilo(Event.getEnum(data.m_eventType),
138 data.m_causeObjectId, data.m_targetObjectId, UnitType.getEnum(data.m_unitType),
139 new DefConLocation(data.m_longitude, data.m_latitude), time);
140 }
141
142 return null;
143 }
144 }