1 package cz.cuni.amis.pogamut.ut2004.agent.module.sensomotoric;
2
3 import cz.cuni.amis.pogamut.base.agent.module.SensorModule;
4 import cz.cuni.amis.pogamut.base.communication.worldview.IWorldView;
5 import cz.cuni.amis.pogamut.base.communication.worldview.object.IWorldObjectEvent;
6 import cz.cuni.amis.pogamut.base.communication.worldview.object.IWorldObjectEventListener;
7 import cz.cuni.amis.pogamut.base.communication.worldview.object.event.WorldObjectUpdatedEvent;
8 import cz.cuni.amis.pogamut.base.utils.logging.LogCategory;
9 import cz.cuni.amis.pogamut.base3d.worldview.object.Rotation;
10 import cz.cuni.amis.pogamut.ut2004.bot.IUT2004BotController;
11 import cz.cuni.amis.pogamut.ut2004.bot.impl.UT2004Bot;
12 import cz.cuni.amis.pogamut.ut2004.communication.messages.gbcommands.Configuration;
13 import cz.cuni.amis.pogamut.ut2004.communication.messages.gbcommands.Pick;
14 import cz.cuni.amis.pogamut.ut2004.communication.messages.gbinfomessages.ConfigChange;
15
16
17
18
19
20
21
22
23
24
25 public class AgentConfig extends SensorModule<UT2004Bot> {
26
27
28
29
30 public boolean isManualSpawn() {
31 if (lastConfig == null) return false;
32 return lastConfig.isManualSpawn();
33 }
34
35
36
37
38
39
40
41
42 public void setManualSpawn(boolean state) {
43 bot.getAct().act(new Configuration().setManualSpawn(state));
44 }
45
46
47
48
49
50 public boolean isAutoTrace() {
51 if (lastConfig == null) return false;
52 return lastConfig.isAutoTrace();
53 }
54
55
56
57
58 public void setAutoTrace(boolean state) {
59 bot.getAct().act(new Configuration().setAutoTrace(state));
60 }
61
62
63
64
65 public String getName() {
66 if (lastConfig == null) return "unknown yet";
67 return lastConfig.getName();
68 }
69
70
71
72
73 public void setName(String newName) {
74 bot.getAct().act(new Configuration().setName(newName));
75 bot.getComponentId().getName().setFlag(newName);
76 }
77
78
79
80
81
82 public double getSpeedMultiplier() {
83 if (lastConfig == null) return -1;
84 return lastConfig.getSpeedMultiplier();
85 }
86
87
88
89
90 public void setSpeedMultiplier(double value) {
91 if (value < 0.1) value = 0.1;
92 else if (value > 2) value = 2;
93 bot.getAct().act(new Configuration().setSpeedMultiplier(value));
94 }
95
96
97
98
99 public boolean isInvulnerable() {
100 if (lastConfig == null) return false;
101 return lastConfig.isInvulnerable();
102 }
103
104
105
106
107
108
109 public void setInvulnerability(boolean state) {
110 bot.getAct().act(new Configuration().setInvulnerable(state));
111 }
112
113
114
115
116
117 public double getVisionTime() {
118 if (lastConfig == null) return -1;
119 return lastConfig.getVisionTime();
120 }
121
122
123
124
125
126 public void setVisionTime(double value) {
127 if (value < 0.1) value = 0.1;
128 else if (value > 2) value = 2;
129 bot.getAct().act(new Configuration().setVisionTime(value));
130 }
131
132
133
134
135
136 public boolean isShowDebug() {
137 if (lastConfig == null) return false;
138 return lastConfig.isShowDebug();
139 }
140
141
142
143
144
145 public void setShowDebug(boolean state) {
146 bot.getAct().act(new Configuration().setShowDebug(state));
147 }
148
149
150
151
152
153 public boolean isShowFocalPoint() {
154 if (lastConfig == null) return false;
155 return lastConfig.isShowFocalPoint();
156 }
157
158
159
160
161
162 public void setShowFocalPoint(boolean state) {
163 bot.getAct().act(new Configuration().setShowFocalPoint(state));
164 }
165
166
167
168
169
170 public boolean isDrawTraceLines() {
171 if (lastConfig == null) return false;
172 return lastConfig.isDrawTraceLines();
173 }
174
175
176
177
178
179 public void setDrawTraceLines(boolean state) {
180 bot.getAct().act(new Configuration().setDrawTraceLines(state));
181 }
182
183
184
185
186
187 public boolean isSynchronousBatchExported() {
188 if (lastConfig == null) return false;
189 return !lastConfig.isSynchronousOff();
190 }
191
192
193
194
195
196 public void setSynchronousBatchExport(boolean state) {
197 bot.getAct().act(new Configuration().setSynchronousOff(!state));
198 }
199
200
201
202
203
204 public boolean isAutoPickup() {
205 if (lastConfig == null) return false;
206 return !lastConfig.isAutoPickupOff();
207 }
208
209
210
211
212
213 public void setAutoPickup(boolean state) {
214 bot.getAct().act(new Configuration().setAutoPickupOff(!state));
215 }
216
217
218
219
220
221 public Rotation getRotationSpeed() {
222 if (lastConfig == null) return null;
223 return lastConfig.getRotationRate();
224 }
225
226
227
228
229
230 public void setRotationHorizontalSpeed(double speed) {
231 Rotation actual = getRotationSpeed();
232 if (actual == null) return;
233 actual = new Rotation(actual).setYaw(speed);
234 bot.getAct().act(new Configuration().setRotationRate(actual));
235 }
236
237
238
239
240
241 public void setRotationVerticalSpeed(double speed) {
242 Rotation actual = getRotationSpeed();
243 if (actual == null) return;
244 actual = new Rotation(actual).setPitch(speed);
245 bot.getAct().act(new Configuration().setRotationRate(actual));
246 }
247
248
249
250
251
252 public void setRotationSpeed(Rotation rotationSpeeds) {
253 bot.getAct().act(new Configuration().setRotationRate(rotationSpeeds));
254 }
255
256
257
258
259
260 public ConfigChange getConfig() {
261 return lastConfig;
262 }
263
264
265
266
267
268
269 private class ConfigChangeListener implements IWorldObjectEventListener<ConfigChange, IWorldObjectEvent<ConfigChange>>
270 {
271 private IWorldView worldView;
272
273
274
275
276
277 public ConfigChangeListener(IWorldView worldView)
278 {
279 worldView.addObjectListener(ConfigChange.class, WorldObjectUpdatedEvent.class, this);
280 this.worldView = worldView;
281 }
282
283 @Override
284 public void notify(IWorldObjectEvent<ConfigChange> event) {
285 lastConfig = event.getObject();
286 }
287 }
288
289
290 private ConfigChangeListener configChangeListener;
291
292 private ConfigChange lastConfig = null;
293
294 private UT2004Bot bot;
295
296
297
298
299
300
301
302
303 public AgentConfig(UT2004Bot bot) {
304 this(bot, null);
305 }
306
307
308
309
310
311
312 public AgentConfig(UT2004Bot bot, LogCategory moduleLog) {
313 super(bot, moduleLog);
314 this.bot = bot;
315 configChangeListener = new ConfigChangeListener(bot.getWorldView());
316
317 cleanUp();
318 }
319
320 @Override
321 protected void cleanUp() {
322 super.cleanUp();
323 lastConfig = null;
324 }
325
326
327 }