14 class StealAndChipState;
21 std::optional<EnemyThreat> enemy_threat;
26 double shadow_distance;
29 DEFINE_TACTIC_UPDATE_STRUCT_WITH_CONTROL_AND_COMMON_PARAMS
34 static constexpr double YEET_CHIP_DISTANCE_METERS = 2.0;
46 const double &shadow_distance);
60 const Team &friendlyTeam,
const Team &enemyTeam,
61 const Robot &shadowee,
const double &shadow_distance);
87 boost::sml::back::process<MoveFSM::Update> processEvent);
100 using namespace boost::sml;
103 DEFINE_SML_STATE(BlockPassState)
104 DEFINE_SML_STATE(StealAndChipState)
105 DEFINE_SML_EVENT(Update)
112 return make_transition_table(
114 *MoveFSM_S + Update_E[!enemyThreatHasBall_G] / blockPass_A = BlockPassState_S,
115 MoveFSM_S + Update_E / blockShot_A, MoveFSM_S = StealAndChipState_S,
116 BlockPassState_S + Update_E[!enemyThreatHasBall_G] / blockPass_A,
117 BlockPassState_S + Update_E[enemyThreatHasBall_G] / blockShot_A = MoveFSM_S,
118 StealAndChipState_S + Update_E[enemyThreatHasBall_G] / stealAndChip_A,
119 StealAndChipState_S + Update_E[!enemyThreatHasBall_G] / blockPass_A = X,
120 X + Update_E[!enemyThreatHasBall_G] / blockPass_A = BlockPassState_S,
121 X + Update_E[enemyThreatHasBall_G] / blockShot_A = MoveFSM_S,
122 X + Update_E / SET_STOP_PRIMITIVE_ACTION = X);
static Point findBlockShotPoint(const Robot &robot, const Field &field, const Team &friendlyTeam, const Team &enemyTeam, const Robot &shadowee, const double &shadow_distance)
Definition shadow_enemy_fsm.cpp:14
static Point findBlockPassPoint(const Point &ball_position, const Robot &shadowee, const double &shadow_distance)
Definition shadow_enemy_fsm.cpp:5