View Javadoc

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   * Contains all types of defcon events and supplies user with a factory method for each of them.
17   * GENERATED by EventFactoryGenerator.xslt so any modifications should go there!!!  
18   * 
19   * @author Radek 'Black_Hand' Pibil          
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       * Contains mapping from integer (defcon) unit type to UnitType enum. Used when
31       * translation from "int" to Event is needed, i.e., when {@link Event#getEnum(int)} is called.
32       */
33      private static Map<Integer, Event> enums = new HashMap<Integer, Event>();
34  
35      /**
36       * Returns appropriate Event for given integer.
37       *
38       * @param eventId integer (defcon) event type
39       *
40       * @return Event type
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       * Holds integer (defcon) event type of this event..type.
54       */
55      public final int id;
56  
57  /**
58     * Constructor for this enum.
59     *
60     * @param id integer (defcon) unittype
61     */
62      private Event(int id) {
63          this.id = id;
64      }
65  
66      /**
67       * Factory styled method, which provides you with an appropriate instance of event
68       * object based on the given EventData data.
69       *
70       * @param data event data
71       * @param time time of creation
72       *
73       * @return instantiated defcon event
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 }