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