1 package cz.cuni.amis.pogamut.usar2004.agent.module.nfo;
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.event.IWorldEventListener;
6 import cz.cuni.amis.pogamut.usar2004.agent.USAR2004Bot;
7 import cz.cuni.amis.pogamut.usar2004.communication.messages.usarinfomessages.NfoMessage;
8
9
10
11
12
13
14
15 public abstract class SuperNfo extends SensorModule<USAR2004Bot>
16 {
17 protected NfoMessageListener nfoListener;
18 protected NfoMessage lastMessage;
19
20
21
22
23
24
25
26
27
28 public SuperNfo(USAR2004Bot bot, String type)
29 {
30 super(bot);
31 nfoListener = new NfoMessageListener(worldView, type);
32 }
33
34 @Override
35 protected void cleanUp()
36 {
37 super.cleanUp();
38 lastMessage = null;
39 }
40
41
42
43
44
45
46 public Boolean isReady()
47 {
48 return (lastMessage != null);
49 }
50
51 private class NfoMessageListener implements IWorldEventListener<NfoMessage>
52 {
53 private String type = null;
54
55 @Override
56 public void notify(NfoMessage event)
57 {
58 if(isStartPoseMessage(event))
59 {
60 if(type.equalsIgnoreCase("StartPoses"))
61 {
62 lastMessage = event;
63 }
64 }
65 else
66 {
67 if(type.equalsIgnoreCase("MapInfo"))
68 {
69 lastMessage = event;
70 }
71 }
72
73
74
75
76
77
78
79
80
81
82
83
84 }
85
86 public NfoMessageListener(IWorldView worldView, String type)
87 {
88 this.type = type;
89 worldView.addEventListener(NfoMessage.class, this);
90 }
91
92
93
94
95
96
97
98
99 private boolean isStartPoseMessage(NfoMessage message)
100 {
101 if(message.getGameType() == null || "".equals(message.getGameType()))
102 {
103 return true;
104 }
105 return false;
106 }
107 }
108 }