1 package cz.cuni.amis.pogamut.ut2004.communication.translator.bot.state;
2
3 import cz.cuni.amis.fsm.FSMState;
4 import cz.cuni.amis.fsm.FSMTransition;
5 import cz.cuni.amis.fsm.IFSMState;
6 import cz.cuni.amis.pogamut.base.communication.messages.InfoMessage;
7 import cz.cuni.amis.pogamut.base.communication.translator.event.IWorldChangeEvent;
8 import cz.cuni.amis.pogamut.ut2004.communication.messages.gbinfomessages.Mover;
9 import cz.cuni.amis.pogamut.ut2004.communication.messages.gbinfomessages.MoverListEnd;
10 import cz.cuni.amis.pogamut.ut2004.communication.messages.gbinfomessages.MoverListStart;
11 import cz.cuni.amis.pogamut.ut2004.communication.translator.TranslatorContext;
12 import cz.cuni.amis.pogamut.ut2004.communication.translator.bot.support.BotListState;
13 import cz.cuni.amis.pogamut.ut2004.communication.translator.shared.events.MoverListObtained;
14 import cz.cuni.amis.pogamut.ut2004.communication.translator.shared.events.MutatorListObtained;
15
16
17
18
19
20
21
22 @FSMState(map={
23 @FSMTransition(
24 state=HandshakeControllerState.class,
25 symbol={MoverListEnd.class},
26 transition={})
27 }
28 )
29 public class MoverListState extends BotListState<Mover, TranslatorContext>{
30
31 public MoverListState() {
32 super(MoverListStart.class, Mover.class, MoverListEnd.class);
33 }
34
35 @Override
36 public void stateEntering(TranslatorContext context, IFSMState<InfoMessage, TranslatorContext> fromState, InfoMessage symbol) {
37 super.restart(context);
38 super.stateEntering(context, fromState, symbol);
39 }
40
41 @Override
42 public void stateLeaving(TranslatorContext context, IFSMState<InfoMessage, TranslatorContext> toState, InfoMessage symbol) {
43 super.stateLeaving(context, toState, symbol);
44 long simTime =
45 (symbol instanceof IWorldChangeEvent ? ((IWorldChangeEvent)symbol).getSimTime() : 0);
46 context.getEventQueue().pushEvent(new MoverListObtained(getList(), simTime));
47 newList();
48 }
49
50 @Override
51 public void stateSymbol(TranslatorContext context, InfoMessage symbol) {
52 super.stateSymbol(context, symbol);
53 context.getEventQueue().pushEvent((Mover)symbol);
54 }
55
56 }