1 package cz.cuni.amis.pogamut.udk.communication.translator.server.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.Player;
8 import cz.cuni.amis.pogamut.udk.communication.messages.gbinfomessages.PlayerListEnd;
9 import cz.cuni.amis.pogamut.udk.communication.messages.gbinfomessages.PlayerListStart;
10 import cz.cuni.amis.pogamut.udk.communication.translator.TranslatorContext;
11 import cz.cuni.amis.pogamut.udk.communication.translator.server.support.ServerListState;
12 import cz.cuni.amis.pogamut.udk.communication.translator.shared.events.PlayerListObtained;
13
14
15
16
17
18
19
20
21
22 @FSMState(map={@FSMTransition(
23 state = ServerRunningState.class,
24 symbol={PlayerListEnd.class},
25 transition={})}
26 )
27 public class PlayerListState extends ServerListState<Player, TranslatorContext> {
28
29 public PlayerListState() {
30 super(PlayerListStart.class, Player.class, PlayerListEnd.class);
31 }
32
33 @Override
34 protected void innerStateSymbol(TranslatorContext context,
35 InfoMessage symbol) {
36
37 super.innerStateSymbol(context, symbol);
38 if (symbol instanceof Player) {
39 context.getEventQueue().pushEvent((Player)symbol);
40 }
41 }
42
43 @Override
44 public void stateLeaving(TranslatorContext context,
45 IFSMState<InfoMessage, TranslatorContext> toState, InfoMessage symbol) {
46 super.stateLeaving(context, toState, symbol);
47 context.getEventQueue().pushEvent(new PlayerListObtained(getList()));
48 newList();
49 }
50
51 }