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.udk.communication.messages.gbinfomessages.GameInfo;
8   import cz.cuni.amis.pogamut.udk.communication.messages.gbinfomessages.HandShakeEnd;
9   import cz.cuni.amis.pogamut.udk.communication.messages.gbinfomessages.ItemCategoryStart;
10  import cz.cuni.amis.pogamut.udk.communication.messages.gbinfomessages.ItemListStart;
11  import cz.cuni.amis.pogamut.udk.communication.messages.gbinfomessages.MoverListStart;
12  import cz.cuni.amis.pogamut.udk.communication.messages.gbinfomessages.MutatorListStart;
13  import cz.cuni.amis.pogamut.udk.communication.messages.gbinfomessages.NavPointListStart;
14  import cz.cuni.amis.pogamut.udk.communication.messages.gbinfomessages.PlayerListStart;
15  import cz.cuni.amis.pogamut.udk.communication.messages.gbinfomessages.VehicleListStart;
16  import cz.cuni.amis.pogamut.udk.communication.translator.TranslatorContext;
17  import cz.cuni.amis.pogamut.udk.communication.translator.bot.support.AbstractBotFSMState;
18  import cz.cuni.amis.pogamut.udk.communication.translator.bot.transition.HandshakeEndTransition;
19  import cz.cuni.amis.pogamut.udk.communication.translator.shared.transition.InitRequestedTransition;
20  
21  /**
22   * This state is introduced because start/end messages of the list of item categories, mutators, navpoints and players.
23   * Without this state we would have difficulties with switching between MutatorListState -> PlayerListState -> etc...<p>
24   * As there is always: ... list ... END_MSG NEW_START_MSG ... list ... the problem lies withing END_MSG and NEW_START_MSG.
25   * On END_MSG we will switch to this state and on NEW_START_MSG we will switch to the state that will handle appropriate
26   * incoming list.
27   */
28  @FSMState(
29  			map={							
30  				@FSMTransition(
31  					state=ItemCategoryState.class, 
32  					symbol={ItemCategoryStart.class}, 
33  					transition={}
34  				),				
35  				@FSMTransition(
36  					state=MutatorListState.class, 
37  					symbol={MutatorListStart.class}, 
38  					transition={}
39  				),
40  				@FSMTransition(
41  					state=MoverListState.class,
42  					symbol={MoverListStart.class},
43  					transition={}
44  				),
45  				@FSMTransition(
46  					state = NavPointListState.class, 
47  					symbol = { NavPointListStart.class }, 
48  					transition = {}
49  				),
50  				@FSMTransition(
51  					state = ItemListState.class,
52  					symbol = { ItemListStart.class },
53  					transition = {}
54  				),
55  				@FSMTransition(
56  						state = PlayerListState.class, 
57  						symbol = { PlayerListStart.class }, 
58  						transition = {}
59  				),
60  				@FSMTransition(
61  						state = VehicleListState.class,
62  						symbol = { VehicleListStart.class },
63  						transition = {}
64  				),				
65  				@FSMTransition(
66  						state = ConfigureMessageExpectedState.class,
67  						symbol = { HandShakeEnd.class },
68  						transition = {HandshakeEndTransition.class, InitRequestedTransition.class}
69  				)
70  			}
71  		 )
72  public class HandshakeControllerState extends AbstractBotFSMState<InfoMessage, TranslatorContext>{
73  
74  	@Override
75  	public void init(TranslatorContext context) {
76  	}
77  
78  	@Override
79  	public void restart(TranslatorContext context) {
80  	}
81  
82  	@Override
83  	public void stateEntering(TranslatorContext context,
84  			IFSMState<InfoMessage, TranslatorContext> fromState,
85  			InfoMessage symbol) {		
86  	}
87  
88  	@Override
89  	public void stateLeaving(TranslatorContext context,
90  			IFSMState<InfoMessage, TranslatorContext> toState, InfoMessage symbol) {		
91  	}
92  
93  	@Override
94  	public void stateSymbol(TranslatorContext context, InfoMessage symbol) {
95  		if (symbol instanceof GameInfo) {
96  			context.getEventQueue().pushEvent((GameInfo)symbol);
97  			return;
98  		}
99  	}
100 
101 }