30 class SetupPositionState;
32 class AttemptPassState;
40 DEFINE_PLAY_UPDATE_STRUCT_WITH_CONTROL_AND_COMMON_PARAMS
77 const WorldPtr world,
unsigned int num_tactics,
78 const std::vector<Point>& existing_receiver_positions = {},
79 const std::optional<Point>& pass_origin_override = std::nullopt);
97 PriorityTacticVector& tactics_to_run,
const Update& event,
98 int ideal_num_receivers,
int num_tactics_already_assigned,
99 const std::vector<Point>& existing_receiver_positions = {},
100 const std::optional<Point>& pass_origin_override = std::nullopt);
209 using namespace boost::sml;
211 DEFINE_SML_STATE(SetupPositionState)
212 DEFINE_SML_STATE(ShootState)
213 DEFINE_SML_STATE(AttemptPassState)
214 DEFINE_SML_STATE(PassState)
215 DEFINE_SML_STATE(ChipState)
217 DEFINE_SML_EVENT(Update)
235 return make_transition_table(
238 *SetupPositionState_S + Update_E[!setupDone_G] / setupPosition_A =
239 SetupPositionState_S,
242 SetupPositionState_S + Update_E[shotFound_G] = ShootState_S,
243 ShootState_S + Update_E[!shotDone_G] / shootBall_A = ShootState_S,
244 ShootState_S + Update_E[shotDone_G] = X,
247 SetupPositionState_S + Update_E / startLookingForPass_A = AttemptPassState_S,
250 AttemptPassState_S + Update_E[timeExpired_G] = ChipState_S,
253 AttemptPassState_S + Update_E[!passFound_G] / lookForPass_A =
255 AttemptPassState_S + Update_E[passFound_G] = PassState_S,
257 PassState_S + Update_E[shouldAbortPass_G] = AttemptPassState_S,
258 PassState_S + Update_E[!passDone_G] / passBall_A = PassState_S,
259 PassState_S + Update_E[passDone_G] = X,
261 ChipState_S + Update_E[!chipDone_G] / chipBall_A = ChipState_S,
262 ChipState_S + Update_E[chipDone_G] = X);
266 TbotsProto::AiConfig ai_config;
267 std::optional<Shot> shot;
268 std::shared_ptr<MoveTactic> align_to_ball_tactic;
269 std::shared_ptr<KickTactic> shoot_tactic;
270 std::shared_ptr<ChipTactic> chip_tactic;
271 std::shared_ptr<KickTactic> passer_tactic;
272 std::shared_ptr<ReceiverTactic> receiver_tactic;
273 std::vector<std::shared_ptr<MoveTactic>> receiver_positioning_tactics;
274 std::shared_ptr<DefensePlay> defense_play;
void setReceiverAndDefenderTactics(PriorityTacticVector &tactics_to_run, const Update &event, int ideal_num_receivers, int num_tactics_already_assigned, const std::vector< Point > &existing_receiver_positions={}, const std::optional< Point > &pass_origin_override=std::nullopt)
Definition free_kick_play_fsm.cpp:78
void updateReceiverPositioningTactics(const WorldPtr world, unsigned int num_tactics, const std::vector< Point > &existing_receiver_positions={}, const std::optional< Point > &pass_origin_override=std::nullopt)
Definition free_kick_play_fsm.cpp:44