Thunderbots Project
Loading...
Searching...
No Matches
penalty_kick_play_fsm.h
1#pragma once
2
3#include "proto/parameters.pb.h"
4#include "shared/constants.h"
5#include "software/ai/hl/stp/play/play_fsm.h"
6#include "software/ai/hl/stp/tactic/halt/halt_tactic.h"
7#include "software/ai/hl/stp/tactic/move/move_tactic.h"
8#include "software/ai/hl/stp/tactic/penalty_kick/penalty_kick_tactic.h"
9#include "software/logger/logger.h"
10
11
13{
14 class SetupPositionState;
15 class PerformKickState;
16
18 {
19 };
20
21 DEFINE_PLAY_UPDATE_STRUCT_WITH_CONTROL_AND_COMMON_PARAMS
22
28 explicit PenaltyKickPlayFSM(TbotsProto::AiConfig ai_config);
29
35 void setupPosition(const Update& event);
36
42 void performKick(const Update& event);
43
51 bool setupPositionDone(const Update& event);
52
60 bool kickDone(const Update& event);
61
62 auto operator()()
63 {
64 using namespace boost::sml;
65
66 DEFINE_SML_STATE(SetupPositionState)
67 DEFINE_SML_STATE(PerformKickState)
68
69 DEFINE_SML_EVENT(Update)
70
71 DEFINE_SML_ACTION(setupPosition)
72 DEFINE_SML_ACTION(performKick)
73
74 DEFINE_SML_GUARD(setupPositionDone)
75 DEFINE_SML_GUARD(kickDone)
76
77 return make_transition_table(
78 // src_state + event [guard] / action = dest_state
79 *SetupPositionState_S + Update_E[!setupPositionDone_G] / setupPosition_A =
80 SetupPositionState_S,
81 SetupPositionState_S + Update_E[setupPositionDone_G] = PerformKickState_S,
82 PerformKickState_S + Update_E[!kickDone_G] / performKick_A,
83 PerformKickState_S + Update_E[kickDone_G] = X, X + Update_E = X);
84 }
85
86 private:
87 TbotsProto::AiConfig ai_config;
88 std::shared_ptr<PenaltyKickTactic> penalty_kick_tactic;
89 std::vector<std::shared_ptr<PenaltySetupTactic>> penalty_setup_tactics;
90};
Definition penalty_kick_play_fsm.h:18
Definition penalty_kick_play_fsm.h:13
void performKick(const Update &event)
Definition penalty_kick_play_fsm.cpp:10
bool kickDone(const Update &event)
Definition penalty_kick_play_fsm.cpp:67
void setupPosition(const Update &event)
Definition penalty_kick_play_fsm.cpp:17
bool setupPositionDone(const Update &event)
Definition penalty_kick_play_fsm.cpp:62