View Javadoc

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   * Takes care of the mover list. It stores them inside a List object and when END message comes it sends
19   * them to the world view via MoverListObtained event.
20   * @author Knight
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  }