1 package cz.cuni.amis.pogamut.udk.communication.translator.server.state;
2
3
4 import cz.cuni.amis.fsm.FSMState;
5 import cz.cuni.amis.fsm.FSMTransition;
6 import cz.cuni.amis.fsm.IFSMState;
7 import cz.cuni.amis.pogamut.base.communication.messages.InfoMessage;
8 import cz.cuni.amis.pogamut.base.communication.translator.event.IWorldChangeEvent;
9 import cz.cuni.amis.pogamut.udk.communication.messages.gbinfomessages.HandShakeEnd;
10 import cz.cuni.amis.pogamut.udk.communication.messages.gbinfomessages.ItemCategoryStart;
11 import cz.cuni.amis.pogamut.udk.communication.messages.gbinfomessages.ItemListStart;
12 import cz.cuni.amis.pogamut.udk.communication.messages.gbinfomessages.MapListStart;
13 import cz.cuni.amis.pogamut.udk.communication.messages.gbinfomessages.MutatorListStart;
14 import cz.cuni.amis.pogamut.udk.communication.messages.gbinfomessages.NavPointListStart;
15 import cz.cuni.amis.pogamut.udk.communication.messages.gbinfomessages.PlayerListStart;
16 import cz.cuni.amis.pogamut.udk.communication.messages.gbinfomessages.VehicleListStart;
17 import cz.cuni.amis.pogamut.udk.communication.translator.TranslatorContext;
18 import cz.cuni.amis.pogamut.udk.communication.translator.TranslatorMessages;
19 import cz.cuni.amis.pogamut.udk.communication.translator.UnexpectedMessageException;
20 import cz.cuni.amis.pogamut.udk.communication.translator.server.support.AbstractServerFSMState;
21 import cz.cuni.amis.pogamut.udk.communication.translator.shared.events.MapPointListObtained;
22
23
24
25
26
27 @FSMState(map = {
28 @FSMTransition(
29 state=ItemCategoryState.class,
30 symbol={ItemCategoryStart.class},
31 transition={}
32 ),
33 @FSMTransition(
34 state=MutatorListState.class,
35 symbol={MutatorListStart.class},
36 transition={}),
37 @FSMTransition(
38 state = NavPointListState.class,
39 symbol = { NavPointListStart.class },
40 transition = {}
41 ),
42 @FSMTransition(
43 state = ItemListState.class,
44 symbol = { ItemListStart.class },
45 transition = {}
46 ),
47 @FSMTransition(
48 state = PlayerListState.class,
49 symbol = { PlayerListStart.class },
50 transition = {}
51 ),
52 @FSMTransition(
53 state = MapListState.class,
54 symbol = { MapListStart.class },
55 transition = {}
56 ),
57 @FSMTransition(
58 state = VehicleListState.class,
59 symbol = { VehicleListStart.class },
60 transition = {}
61 )
62 }
63 )
64 public class ServerRunningState extends AbstractServerFSMState<InfoMessage, TranslatorContext> {
65
66 @Override
67 public void stateEntering(TranslatorContext context, IFSMState<InfoMessage, TranslatorContext> arg1, InfoMessage arg2) {
68 }
69
70 @Override
71 protected void innerStateSymbol(TranslatorContext context, InfoMessage obj) {
72 if (obj instanceof IWorldChangeEvent) {
73 if (obj instanceof HandShakeEnd) {
74 context.getEventQueue().pushEvent(new MapPointListObtained(context.getNavPoints(), context.getItems()));
75 } else {
76 context.getEventQueue().pushEvent((IWorldChangeEvent) obj);
77 }
78 } else {
79 throw new UnexpectedMessageException(TranslatorMessages.messageNotWorldEvent(this, obj), context.getLogger(), this);
80 }
81
82 }
83
84 @Override
85 public void stateLeaving(TranslatorContext context, IFSMState<InfoMessage, TranslatorContext> arg1, InfoMessage symbol) {
86 }
87
88 @Override
89 public void init(TranslatorContext arg0) {
90 }
91
92 @Override
93 public void restart(TranslatorContext arg0) {
94 }
95
96 }