1 package cz.cuni.amis.pogamut.udk.communication.translator.observer.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.translator.TranslatorContext;
17 import cz.cuni.amis.pogamut.udk.communication.translator.TranslatorMessages;
18 import cz.cuni.amis.pogamut.udk.communication.translator.UnexpectedMessageException;
19 import cz.cuni.amis.pogamut.udk.communication.translator.observer.support.AbstractObserverFSMState;
20 import cz.cuni.amis.pogamut.udk.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 ObserverRunningState extends AbstractObserverFSMState<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 context.getEventQueue().pushEvent(new MapPointListObtained(context.getNavPoints(), context.getItems()));
69 } else {
70 context.getEventQueue().pushEvent((IWorldChangeEvent) obj);
71 }
72 } else {
73 throw new UnexpectedMessageException(TranslatorMessages.messageNotWorldEvent(this, obj), context.getLogger(), this);
74 }
75
76 }
77
78 @Override
79 public void stateLeaving(TranslatorContext context, IFSMState<InfoMessage, TranslatorContext> arg1, InfoMessage symbol) {
80 }
81
82 @Override
83 public void init(TranslatorContext arg0) {
84 }
85
86 @Override
87 public void restart(TranslatorContext arg0) {
88 }
89
90 }