View Javadoc

1   /*
2    * To change this template, choose Tools | Templates
3    * and open the template in the editor.
4    */
5   
6   package cz.cuni.amis.pogamut.udk.communication.translator.observer.state;
7   
8   import cz.cuni.amis.fsm.FSMState;
9   import cz.cuni.amis.fsm.FSMTransition;
10  import cz.cuni.amis.fsm.IFSMState;
11  import cz.cuni.amis.pogamut.base.communication.messages.InfoMessage;
12  import cz.cuni.amis.pogamut.udk.communication.messages.gbinfomessages.MapList;
13  import cz.cuni.amis.pogamut.udk.communication.messages.gbinfomessages.MapListEnd;
14  import cz.cuni.amis.pogamut.udk.communication.messages.gbinfomessages.MapListStart;
15  import cz.cuni.amis.pogamut.udk.communication.messages.gbinfomessages.Player;
16  import cz.cuni.amis.pogamut.udk.communication.translator.TranslatorContext;
17  import cz.cuni.amis.pogamut.udk.communication.translator.observer.support.ObserverListState;
18  import cz.cuni.amis.pogamut.udk.communication.translator.shared.events.MapListObtained;
19  
20  /**
21   *
22   * @author ik
23   */
24  @FSMState(map={@FSMTransition(
25  					state=ObserverRunningState.class,
26  					symbol={MapListEnd.class},
27  					transition={})}
28  )
29  public class MapListState extends ObserverListState<MapList, TranslatorContext> {
30  
31  	public MapListState() {
32  		super(MapListStart.class, MapList.class, MapListEnd.class);
33  	}
34  
35  	@Override
36  	public void stateLeaving(TranslatorContext context,
37  			IFSMState<InfoMessage, TranslatorContext> toState, InfoMessage symbol) {
38  		super.stateLeaving(context, toState, symbol);
39  		context.getEventQueue().pushEvent(new MapListObtained(getList()));
40  		newList();
41  	}
42  	
43  	@Override
44  	protected void innerStateSymbol(TranslatorContext context,
45  			InfoMessage symbol) {
46  		super.innerStateSymbol(context, symbol);
47  		if (symbol instanceof Player) {
48  			context.getEventQueue().pushEvent((MapList)symbol);
49  		}
50  	}
51  
52  }
53