From: Filip Jares Date: Wed, 26 May 2010 15:01:03 +0000 (+0200) Subject: robofsm: add forgotten strategy_six_oranges.cc file X-Git-Tag: start2011~39^2~4^2 X-Git-Url: https://rtime.felk.cvut.cz/gitweb/eurobot/public.git/commitdiff_plain/1470458cc740c7440818e785dd9c0d3acb8d70f3 robofsm: add forgotten strategy_six_oranges.cc file i forgot it in previous commit --- diff --git a/src/robofsm/strategy_six_oranges.cc b/src/robofsm/strategy_six_oranges.cc new file mode 100644 index 00000000..7edbdf31 --- /dev/null +++ b/src/robofsm/strategy_six_oranges.cc @@ -0,0 +1,88 @@ +#include "common-states.h" +#include "robot.h" +#include "eb2010misc.h" + +static FSM_STATE_DECL(pick_our_oranges); + +FSM_STATE(start_six_oranges) +{ + switch (FSM_EVENT) { + case EV_ENTRY: + start_entry(); +#ifdef COMPETITION + printf("waiting for start\n"); + FSM_TIMER(1000); + break; +#endif + case EV_START: + start_go(); + FSM_TRANSITION(pick_our_oranges); + break; + case EV_TIMER: + FSM_TIMER(1000); + start_timer(); + break; + case EV_EXIT: + start_exit(); + break; + case EV_SWITCH_STRATEGY: + FSM_TRANSITION(start_opp_corn); + break; + default:; + } +} + + +#undef FSM_STATE_VISIBILITY +#define FSM_STATE_VISIBILITY static + +FSM_STATE_DECL(pick_rest_of_our_oranges); +FSM_STATE_DECL(unload_oranges); +FSM_STATE_DECL(pick_opp_oranges); +FSM_STATE_DECL(opp_corns); + +FSM_STATE(pick_our_oranges) +{ + switch (FSM_EVENT) { + case EV_ENTRY: SUBFSM_TRANSITION(approach_the_slope, new slope_approach_style(MINE, NEAR_PLAYGROUND_BOUNDARY)); break; + case EV_RETURN: FSM_TRANSITION(pick_rest_of_our_oranges); break; + default: break; + } +} + +FSM_STATE(pick_rest_of_our_oranges) +{ + switch (FSM_EVENT) { + case EV_ENTRY: SUBFSM_TRANSITION(approach_the_slope, new slope_approach_style(MINE, NEAR_PLAYGROUND_CENTER)); break; + case EV_RETURN: FSM_TRANSITION(unload_oranges); break; + default: break; + } +} + +FSM_STATE(unload_oranges) +{ + switch (FSM_EVENT) { + case EV_ENTRY: SUBFSM_TRANSITION(to_cntainer_and_unld, NULL); break; + /* FIXME: do something more meaningfull the next time */ + case EV_RETURN: FSM_TRANSITION(pick_opp_oranges); break; + default: break; + } +} + +FSM_STATE(pick_opp_oranges) +{ + switch (FSM_EVENT) { + case EV_ENTRY: SUBFSM_TRANSITION(approach_the_slope, new slope_approach_style(OPPONENTS, NEAR_PLAYGROUND_BOUNDARY)); break; + case EV_RETURN: FSM_TRANSITION(unload_oranges); break; + default: break; + } +} + +FSM_STATE(opp_corns) +{ + switch (FSM_EVENT) { + case EV_ENTRY: SUBFSM_TRANSITION(approach_next_corn, NULL); break; + case EV_RETURN: FSM_TRANSITION(opp_corns); break; + default: break; + } +}