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.ut2004.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.base.communication.translator.event.IWorldChangeEvent;
13  import cz.cuni.amis.pogamut.ut2004.communication.messages.gbinfomessages.MapList;
14  import cz.cuni.amis.pogamut.ut2004.communication.messages.gbinfomessages.MapListEnd;
15  import cz.cuni.amis.pogamut.ut2004.communication.messages.gbinfomessages.MapListStart;
16  import cz.cuni.amis.pogamut.ut2004.communication.messages.gbinfomessages.Player;
17  import cz.cuni.amis.pogamut.ut2004.communication.translator.TranslatorContext;
18  import cz.cuni.amis.pogamut.ut2004.communication.translator.observer.support.ObserverListState;
19  import cz.cuni.amis.pogamut.ut2004.communication.translator.shared.events.MapListObtained;
20  
21  /**
22   *
23   * @author ik
24   */
25  @FSMState(map={@FSMTransition(
26  					state=ObserverRunningState.class,
27  					symbol={MapListEnd.class},
28  					transition={})}
29  )
30  public class MapListState extends ObserverListState<MapList, TranslatorContext> {
31  
32  	public MapListState() {
33  		super(MapListStart.class, MapList.class, MapListEnd.class);
34  	}
35  
36  	@Override
37  	public void stateLeaving(TranslatorContext context,
38  			IFSMState<InfoMessage, TranslatorContext> toState, InfoMessage symbol) {
39  		super.stateLeaving(context, toState, symbol);
40  		long simTime = 
41  			(symbol instanceof IWorldChangeEvent ? ((IWorldChangeEvent)symbol).getSimTime() : 0);
42  		context.getEventQueue().pushEvent(new MapListObtained(getList(), simTime));
43  		newList();
44  	}
45  	
46  	@Override
47  	protected void innerStateSymbol(TranslatorContext context,
48  			InfoMessage symbol) {
49  		super.innerStateSymbol(context, symbol);
50  		if (symbol instanceof Player) {
51  			context.getEventQueue().pushEvent((MapList)symbol);
52  		}
53  	}
54  
55  }
56