View Javadoc

1   package cz.cuni.amis.pogamut.udk.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.udk.communication.messages.gbinfomessages.InitedMessage;
9   import cz.cuni.amis.pogamut.udk.communication.translator.TranslatorContext;
10  import cz.cuni.amis.pogamut.udk.communication.translator.TranslatorMessages;
11  import cz.cuni.amis.pogamut.udk.communication.translator.UnexpectedMessageException;
12  import cz.cuni.amis.pogamut.udk.communication.translator.bot.support.BotMessageExpectedState;
13  
14  /**
15   * Waits for InitedMessage message, switches to the FirstSpawnExpectedState.
16   * @author Jimmy
17   */
18  @FSMState(
19  			map={
20  				@FSMTransition(
21  					state=FirstSpawnExpectedState.class, 
22  					symbol={InitedMessage.class}, 
23  					transition={}
24  				)
25  			}
26  )
27  public class InitedMessageExpectedState extends BotMessageExpectedState<TranslatorContext>{
28  
29  	public InitedMessageExpectedState() {
30  		super(InitedMessage.class);
31  	}
32  	
33  	@Override
34  	public void stateEntering(TranslatorContext context,
35  			IFSMState<InfoMessage, TranslatorContext> fromState, InfoMessage symbol) {
36  		super.stateEntering(context, fromState, symbol);
37  	}
38  	
39  	@Override
40  	public void stateLeaving(TranslatorContext context, IFSMState<InfoMessage, TranslatorContext> toState, InfoMessage symbol) {
41  		super.stateLeaving(context, toState, symbol);
42  		if (!(symbol instanceof IWorldChangeEvent)) throw new UnexpectedMessageException(TranslatorMessages.messageNotWorldEvent(this, symbol), context.getLogger(), this);
43  		context.getEventQueue().pushEvent((IWorldChangeEvent)symbol);
44  	}
45  
46  }