]> rtime.felk.cvut.cz Git - eurobot/public.git/blob - src/robofsm/strategy_pick_center_figure.cc
robofsm: Add pick center figure strategy.
[eurobot/public.git] / src / robofsm / strategy_pick_center_figure.cc
1 #include "common-states.h"
2 #include "robot.h"
3 #include <ul_log.h>
4
5 UL_LOG_CUST(ulogd_strategy_pick_center_figure); /* Log domain name = ulogd + name of the file */
6
7 static FSM_STATE_DECL(pick_center_figure);
8
9 FSM_STATE(start_pick_center_figure)
10 {
11         switch (FSM_EVENT) {
12                 case EV_ENTRY:
13                         start_entry();
14 //#ifdef COMPETITION
15                         ul_logmsg("waiting for start\n");
16                         FSM_TIMER(1000);
17                         break;
18 //#endif
19                 case EV_START:
20                         start_go();
21                         FSM_TRANSITION(pick_center_figure);
22                         break;
23                 case EV_TIMER:
24                         FSM_TIMER(1000);
25                         start_timer();
26                         break;
27                 case EV_EXIT:
28                         start_exit();
29                         break;
30                 case EV_SWITCH_STRATEGY:
31                         FSM_TRANSITION(start_bonus_tower);
32                         break;
33                 default:;
34         }
35 }
36
37
38 #undef FSM_STATE_VISIBILITY
39 #define FSM_STATE_VISIBILITY static
40
41 FSM_STATE_DECL(pick_center_figure);
42 FSM_STATE_DECL(move_around_opp_squares);
43 FSM_STATE_DECL(pick_opp_bonus_figure);
44
45 FSM_STATE(pick_center_figure)
46 {
47         switch (FSM_EVENT) {
48         case EV_ENTRY:
49                 SUBFSM_TRANSITION(approach_center_figure, NULL);
50                 break;
51         case EV_RETURN:
52                 FSM_TRANSITION(move_around_opp_squares);
53         default: break;
54         }
55 }
56
57 FSM_STATE(move_around_opp_squares)
58 {
59         switch (FSM_EVENT) {
60         case EV_ENTRY:
61                 SUBFSM_TRANSITION(move_around, NULL);
62                 break;
63         case EV_RETURN:
64                 FSM_TRANSITION(pick_opp_bonus_figure);
65                 break;
66         default: break;
67         }
68 }
69
70 FSM_STATE(pick_opp_bonus_figure)
71 {
72         switch (FSM_EVENT) {
73         case EV_ENTRY:
74                 SUBFSM_TRANSITION(approach_opp_bonus_figure, NULL);
75                 break;
76         case EV_RETURN:
77                 break;
78         default: break;
79         }
80 }