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