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.Spawn;
9   import cz.cuni.amis.pogamut.ut2004.communication.translator.TranslatorContext;
10  import cz.cuni.amis.pogamut.ut2004.communication.translator.TranslatorMessages;
11  import cz.cuni.amis.pogamut.ut2004.communication.translator.UnexpectedMessageException;
12  import cz.cuni.amis.pogamut.ut2004.communication.translator.bot.support.AbstractBotFSMState;
13  import java.util.logging.Level;
14  
15  /**
16   * Represent state where the bot is dead and can't accept any messages except Spawn!
17   * @author Jimmy
18   */
19  @FSMState(map = { 
20  				@FSMTransition(
21  						state = BotAliveState.class, 
22  						symbol = {Spawn.class }, 
23  						transition = {}
24  				)
25  			}
26  )
27  public class BotDeadState extends AbstractBotFSMState<InfoMessage, TranslatorContext> {
28  
29      public void stateEntering(TranslatorContext arg0, IFSMState<InfoMessage, TranslatorContext> arg1, InfoMessage arg2) {
30      	if (arg0.getLogger().isLoggable(Level.WARNING)) arg0.getLogger().warning("Bot switched to DEAD STATE.");
31      }
32  
33      public void stateSymbol(TranslatorContext context, InfoMessage symbol) {
34  	    if (context.getLogger().isLoggable(Level.WARNING)) context.getLogger().warning(TranslatorMessages.unprocessedMessage(this, symbol));
35      }
36  
37      public void stateLeaving(TranslatorContext arg0, IFSMState<InfoMessage, TranslatorContext> arg1, InfoMessage arg2) {
38      	if (!(arg2 instanceof Spawn)) throw new UnexpectedMessageException(TranslatorMessages.unexpectedMessage(this, arg2, Spawn.class), arg0.getLogger(), this);
39      	if (!(arg2 instanceof IWorldChangeEvent)) throw new UnexpectedMessageException(TranslatorMessages.messageNotWorldEvent(this, arg2), arg0.getLogger(), this);
40      	arg0.getEventQueue().pushEvent((IWorldChangeEvent) arg2);
41      }
42  
43      public void init(TranslatorContext arg0) {
44  
45      }
46  
47      public void restart(TranslatorContext arg0) {
48  
49      }
50      
51  }