View Javadoc

1   package cz.cuni.amis.pogamut.ut2004.hideandseek.bot;
2   
3   import cz.cuni.amis.pogamut.base.communication.worldview.IWorldView;
4   import cz.cuni.amis.pogamut.base.communication.worldview.event.IWorldEventListener;
5   import cz.cuni.amis.pogamut.ut2004.communication.messages.gbinfomessages.ControlMessage;
6   import cz.cuni.amis.pogamut.ut2004.hideandseek.protocol.HSMessagesTranslator;
7   import cz.cuni.amis.pogamut.ut2004.hideandseek.protocol.messages.HSAssignSeeker;
8   import cz.cuni.amis.pogamut.ut2004.hideandseek.protocol.messages.HSBotStateChanged;
9   import cz.cuni.amis.pogamut.ut2004.hideandseek.protocol.messages.HSGameEnd;
10  import cz.cuni.amis.pogamut.ut2004.hideandseek.protocol.messages.HSGameStart;
11  import cz.cuni.amis.pogamut.ut2004.hideandseek.protocol.messages.HSMessage;
12  import cz.cuni.amis.pogamut.ut2004.hideandseek.protocol.messages.HSPlayerScoreChanged;
13  import cz.cuni.amis.pogamut.ut2004.hideandseek.protocol.messages.HSRoundEnd;
14  import cz.cuni.amis.pogamut.ut2004.hideandseek.protocol.messages.HSRoundStart;
15  import cz.cuni.amis.pogamut.ut2004.hideandseek.protocol.messages.HSRoundState;
16  import cz.cuni.amis.pogamut.ut2004.hideandseek.protocol.messages.HSRunnerCaptured;
17  import cz.cuni.amis.pogamut.ut2004.hideandseek.protocol.messages.HSRunnerFouled;
18  import cz.cuni.amis.pogamut.ut2004.hideandseek.protocol.messages.HSRunnerSafe;
19  import cz.cuni.amis.pogamut.ut2004.hideandseek.protocol.messages.HSRunnerSpotted;
20  import cz.cuni.amis.pogamut.ut2004.hideandseek.protocol.messages.HSRunnerSurvived;
21  
22  /**
23   * HideAndSeekEvents
24   * <p><p>
25   * 
26   * Listens to {@link IWorldView} for {@link HSMessage} descendant events (note that {@link HSMessagesTranslator} must be enabled from the outside to translate
27   * {@link ControlMessage} into {@link HSMessage}s).
28   * <p><p>
29   * 
30   * Intended to be subclass and appropriate methods {@link #hsGameStart(HSGameStart)}, {@link #hsGameEnd(HSGameEnd)}, {@link #hsRoundEnd(HSPlayerImmunity)},
31   * {@link #hsPlayerScoreChanged(HSPlayerScoreChanged)}, {@link #hsRunnerCaptured(HSPlayerStatusChanged)} overridden.
32   * <p><p>  
33   * 
34   * Default state: DISABLED, must be {@link #enableHSEvents()}ed manually in order to translate {@link HSMessage} events into method calls.
35   * 
36   * @author Jimmy
37   */
38  public class HSEvents {
39  	
40  	protected boolean enabled = false;
41  
42  	protected IWorldView worldView;
43  	
44  	protected IWorldEventListener<HSAssignSeeker> hsAssignSeekerListener = new IWorldEventListener<HSAssignSeeker>() {
45  
46  		@Override
47  		public void notify(HSAssignSeeker event) {
48  			hsAssignSeeker(event);
49  		}
50  		
51  	};
52  	
53  	protected IWorldEventListener<HSBotStateChanged> hsBotStateChangedListener = new IWorldEventListener<HSBotStateChanged>() {
54  
55  		@Override
56  		public void notify(HSBotStateChanged event) {
57  			hsBotStateChanged(event);
58  		}
59  		
60  	};
61  	
62  	protected IWorldEventListener<HSGameEnd> hsGameEndListener = new IWorldEventListener<HSGameEnd>() {
63  
64  		@Override
65  		public void notify(HSGameEnd event) {
66  			hsGameEnd(event);
67  		}
68  		
69  	};
70  	
71  	protected IWorldEventListener<HSGameStart> hsGameStartListener = new IWorldEventListener<HSGameStart>() {
72  
73  		@Override
74  		public void notify(HSGameStart event) {
75  			hsGameStart(event);
76  		}
77  		
78  	};
79  	
80  	protected IWorldEventListener<HSPlayerScoreChanged> hsPlayerScoreChangedListener = new IWorldEventListener<HSPlayerScoreChanged>() {
81  
82  		@Override
83  		public void notify(HSPlayerScoreChanged event) {
84  			hsPlayerScoreChanged(event);
85  		}
86  		
87  	};
88  
89  	
90  	protected IWorldEventListener<HSRoundEnd> hsRoundEndListener = new IWorldEventListener<HSRoundEnd>() {
91  
92  		@Override
93  		public void notify(HSRoundEnd event) {
94  			hsRoundEnd(event);
95  		}
96  		
97  	};
98  	
99  	protected IWorldEventListener<HSRoundStart> hsRoundStartListener = new IWorldEventListener<HSRoundStart>() {
100 
101 		@Override
102 		public void notify(HSRoundStart event) {
103 			hsRoundStart(event);
104 		}
105 		
106 	};
107 	
108 	protected IWorldEventListener<HSRoundState> hsRoundStateListener = new IWorldEventListener<HSRoundState>() {
109 
110 		@Override
111 		public void notify(HSRoundState event) {
112 			hsRoundState(event);
113 		}
114 		
115 	};
116 	
117 	protected IWorldEventListener<HSRunnerCaptured> hsRunnerCapturedListener = new IWorldEventListener<HSRunnerCaptured>() {
118 
119 		@Override
120 		public void notify(HSRunnerCaptured event) {
121 			hsRunnerCaptured(event);
122 		}
123 		
124 	};
125 
126 	protected IWorldEventListener<HSRunnerFouled> hsRunnerFouledListener = new IWorldEventListener<HSRunnerFouled>() {
127 
128 		@Override
129 		public void notify(HSRunnerFouled event) {
130 			hsRunnerFouled(event);
131 		}
132 		
133 	};
134 	
135 	protected IWorldEventListener<HSRunnerSafe> hsRunnerSafeListener = new IWorldEventListener<HSRunnerSafe>() {
136 
137 		@Override
138 		public void notify(HSRunnerSafe event) {
139 			hsRunnerSafe(event);
140 		}
141 		
142 	};
143 	
144 	protected IWorldEventListener<HSRunnerSpotted> hsRunnerSpottedListener = new IWorldEventListener<HSRunnerSpotted>() {
145 
146 		@Override
147 		public void notify(HSRunnerSpotted event) {
148 			hsRunnerSpotted(event);
149 		}
150 		
151 	};
152 	
153 	protected IWorldEventListener<HSRunnerSurvived> hsRunnerSurvivedListener = new IWorldEventListener<HSRunnerSurvived>() {
154 
155 		@Override
156 		public void notify(HSRunnerSurvived event) {
157 			hsRunnerSurvived(event);
158 		}
159 		
160 	};
161 
162 	public HSEvents(IWorldView worldView) {
163 		this.worldView = worldView;
164 	}
165 	
166 	public void enableHSEvents() {
167 		if (enabled) return;
168 		enabled = true;
169 		
170 		worldView.addEventListener(HSAssignSeeker.class, hsAssignSeekerListener);
171 		worldView.addEventListener(HSBotStateChanged.class, hsBotStateChangedListener);
172 		worldView.addEventListener(HSGameStart.class, hsGameStartListener);
173 		worldView.addEventListener(HSGameEnd.class, hsGameEndListener);
174 		worldView.addEventListener(HSPlayerScoreChanged.class, hsPlayerScoreChangedListener);
175 		worldView.addEventListener(HSRoundEnd.class, hsRoundEndListener);
176 		worldView.addEventListener(HSRoundStart.class, hsRoundStartListener);		
177 		worldView.addEventListener(HSRoundState.class, hsRoundStateListener);
178 		worldView.addEventListener(HSRunnerCaptured.class, hsRunnerCapturedListener);		
179 		worldView.addEventListener(HSRunnerFouled.class, hsRunnerFouledListener);
180 		worldView.addEventListener(HSRunnerSafe.class, hsRunnerSafeListener);
181 		worldView.addEventListener(HSRunnerSpotted.class, hsRunnerSpottedListener);
182 		worldView.addEventListener(HSRunnerSurvived.class, hsRunnerSurvivedListener);		
183 	}
184 	
185 	public void disableTagEvents() {
186 		if (!enabled) return;
187 		enabled = false;
188 		
189 		worldView.removeEventListener(HSAssignSeeker.class, hsAssignSeekerListener);
190 		worldView.removeEventListener(HSGameStart.class, hsGameStartListener);
191 		worldView.removeEventListener(HSGameEnd.class, hsGameEndListener);
192 		worldView.removeEventListener(HSPlayerScoreChanged.class, hsPlayerScoreChangedListener);
193 		worldView.removeEventListener(HSRoundEnd.class, hsRoundEndListener);
194 		worldView.removeEventListener(HSRoundStart.class, hsRoundStartListener);		
195 		worldView.removeEventListener(HSRoundState.class, hsRoundStateListener);
196 		worldView.removeEventListener(HSRunnerCaptured.class, hsRunnerCapturedListener);		
197 		worldView.removeEventListener(HSRunnerFouled.class, hsRunnerFouledListener);
198 		worldView.removeEventListener(HSRunnerSafe.class, hsRunnerSafeListener);
199 		worldView.removeEventListener(HSRunnerSpotted.class, hsRunnerSpottedListener);
200 		worldView.removeEventListener(HSRunnerSurvived.class, hsRunnerSurvivedListener);
201 	}
202 	
203 	// ================
204 	// EVENTS TO HANDLE
205 	// ================
206 	
207 	public void hsAssignSeeker(HSAssignSeeker event) {		
208 	}
209 	
210 	public void hsBotStateChanged(HSBotStateChanged event) {		
211 	}
212 	
213 	public void hsGameEnd(HSGameEnd event) {
214 	}
215 	
216 	public void hsGameStart(HSGameStart event) {
217 	}
218 	
219 	public void hsPlayerScoreChanged(HSPlayerScoreChanged event) {
220 	}
221 	
222 	public void hsRoundEnd(HSRoundEnd event) {
223 	}
224 	
225 	public void hsRoundStart(HSRoundStart event) {
226 	}
227 	
228 	public void hsRoundState(HSRoundState event) {
229 	}
230 	
231 	public void hsRunnerCaptured(HSRunnerCaptured event) {
232 	}
233 	
234 	public void hsRunnerFouled(HSRunnerFouled event) {
235 	}
236 	
237 	public void hsRunnerSafe(HSRunnerSafe event) {
238 	}
239 	
240 	public void hsRunnerSpotted(HSRunnerSpotted event) {
241 	}
242 	
243 	public void hsRunnerSurvived(HSRunnerSurvived event) {
244 	}
245 	
246 	
247 }