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.PlayerJoinsGame;
8 import cz.cuni.amis.pogamut.udk.communication.messages.gbinfomessages.PlayerKilled;
9 import cz.cuni.amis.pogamut.udk.communication.messages.gbinfomessages.PlayerLeft;
10 import cz.cuni.amis.pogamut.udk.communication.messages.gbinfomessages.Spawn;
11 import cz.cuni.amis.pogamut.udk.communication.translator.TranslatorContext;
12 import cz.cuni.amis.pogamut.udk.communication.translator.bot.support.AbstractBotFSMState;
13 import cz.cuni.amis.pogamut.udk.communication.translator.shared.events.BotFirstSpawned;
14
15
16
17
18
19
20 @FSMState(map = {
21 @FSMTransition(
22 state = BotAliveState.class,
23 symbol = { Spawn.class },
24 transition = {}
25 )
26 }
27 )
28 public class FirstSpawnExpectedState extends AbstractBotFSMState<InfoMessage, TranslatorContext> {
29
30 @Override
31 public void init(TranslatorContext context) {
32 }
33
34 @Override
35 public void restart(TranslatorContext context) {
36 }
37
38 @Override
39 public void stateEntering(TranslatorContext context,
40 IFSMState<InfoMessage, TranslatorContext> fromState,
41 InfoMessage symbol) {
42 }
43
44 @Override
45 public void stateLeaving(TranslatorContext context,
46 IFSMState<InfoMessage, TranslatorContext> toState, InfoMessage symbol) {
47 context.getEventQueue().pushEvent(new BotFirstSpawned());
48 context.getEventQueue().pushEvent((Spawn)symbol);
49 }
50
51 @Override
52 public void stateSymbol(TranslatorContext context, InfoMessage symbol) {
53 if (symbol instanceof PlayerKilled) context.getEventQueue().pushEvent((PlayerKilled)symbol);
54 else if (symbol instanceof PlayerLeft) context.getEventQueue().pushEvent((PlayerLeft)symbol);
55 else context.getEventQueue().pushEvent((PlayerJoinsGame)symbol);
56 }
57
58 }