]> rtime.felk.cvut.cz Git - eurobot/public.git/blob - src/robofsm/obsolete/2010/strategy_12_oranges.cc
Merge branch 'maint-demo'
[eurobot/public.git] / src / robofsm / obsolete / 2010 / strategy_12_oranges.cc
1 #include "common-states.h"
2 #include "robot.h"
3 #include "eb2010misc.h"
4 #include <ul_log.h>
5
6 UL_LOG_CUST(ulogd_strategy_12_oranges); /* Log domain name = ulogd + name of the file */
7
8 static FSM_STATE_DECL(pick_our_oranges);
9
10 FSM_STATE(start_12_oranges)
11 {
12         switch (FSM_EVENT) {
13                 case EV_ENTRY:
14                         start_entry();
15 #ifdef COMPETITION
16                         ul_logmsg("waiting for start\n");
17                         FSM_TIMER(1000);
18                         break;
19 #endif
20                 case EV_START:
21                         start_go();
22                         FSM_TRANSITION(pick_our_oranges);
23                         break;
24                 case EV_TIMER:
25                         FSM_TIMER(1000);
26                         start_timer();
27                         break;
28                 case EV_EXIT:
29                         start_exit();
30                         break;
31                 case EV_SWITCH_STRATEGY:
32                         FSM_TRANSITION(start_opp_corn);
33                         break;
34                 default:;
35         }
36 }
37
38
39 #undef FSM_STATE_VISIBILITY
40 #define FSM_STATE_VISIBILITY static
41
42 FSM_STATE_DECL(pick_rest_of_our_oranges);
43 FSM_STATE_DECL(unload_oranges);
44 FSM_STATE_DECL(pick_opp_oranges);
45 FSM_STATE_DECL(opp_corns);
46
47 FSM_STATE(pick_our_oranges)
48 {
49         switch (FSM_EVENT) {
50         case EV_ENTRY:  SUBFSM_TRANSITION(approach_the_slope, new slope_approach_style(MINE, NEAR_PLAYGROUND_BOUNDARY)); break;
51         case EV_RETURN: FSM_TRANSITION(pick_rest_of_our_oranges); break;
52         default: break;
53         }
54 }
55
56 FSM_STATE(pick_rest_of_our_oranges)
57 {
58         switch (FSM_EVENT) {
59         case EV_ENTRY:  SUBFSM_TRANSITION(approach_the_slope, new slope_approach_style(MINE, NEAR_PLAYGROUND_CENTER)); break;
60         case EV_RETURN: FSM_TRANSITION(unload_oranges); break;
61         default: break;
62         }
63 }
64
65 FSM_STATE(unload_oranges)
66 {
67         switch (FSM_EVENT) {
68         case EV_ENTRY:  SUBFSM_TRANSITION(to_cntainer_and_unld, NULL); break;
69         case EV_RETURN: FSM_TRANSITION(pick_opp_oranges); break;
70         default: break;
71         }
72 }
73
74 FSM_STATE_DECL(pick_rest_of_opp_oranges);
75 FSM_STATE(pick_opp_oranges)
76 {
77         switch (FSM_EVENT) {
78         case EV_ENTRY:  SUBFSM_TRANSITION(approach_the_slope, new slope_approach_style(OPPONENTS, NEAR_PLAYGROUND_BOUNDARY)); break;
79         case EV_RETURN: FSM_TRANSITION(pick_rest_of_opp_oranges); break;
80         default: break;
81         }
82 }
83
84 FSM_STATE_DECL(unload_opp_oranges);
85 FSM_STATE(pick_rest_of_opp_oranges)
86 {
87         switch (FSM_EVENT) {
88         case EV_ENTRY:  SUBFSM_TRANSITION(approach_the_slope, new slope_approach_style(OPPONENTS, NEAR_PLAYGROUND_CENTER)); break;
89         case EV_RETURN: FSM_TRANSITION(unload_opp_oranges); break;
90         default: break;
91         }
92 }
93
94 FSM_STATE(unload_opp_oranges)
95 {
96         switch (FSM_EVENT) {
97         case EV_ENTRY:  SUBFSM_TRANSITION(to_cntainer_and_unld, NULL); break;
98         case EV_RETURN: FSM_TRANSITION(opp_corns); break;
99         default: break;
100         }
101 }
102
103 FSM_STATE(opp_corns)
104 {
105         switch (FSM_EVENT) {
106         case EV_ENTRY:  SUBFSM_TRANSITION(approach_next_corn, NULL); break;
107         case EV_RETURN: FSM_TRANSITION(opp_corns); break;
108         default: break;
109         }
110 }