Thunderbots Project
Loading...
Searching...
No Matches
penalty_kick_enemy_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/goalie/goalie_tactic.h"
7#include "software/ai/hl/stp/tactic/move/move_tactic.h"
8#include "software/logger/logger.h"
9
11{
12 class SetupPositionState;
13 class DefendKickState;
14
16 {
17 // The goalie tactic common to all plays
18 std::shared_ptr<GoalieTactic> goalie_tactic;
19 };
20
21 DEFINE_PLAY_UPDATE_STRUCT_WITH_CONTROL_AND_COMMON_PARAMS
22
28 explicit PenaltyKickEnemyPlayFSM(TbotsProto::AiConfig ai_config);
29
35 void setupPosition(const Update& event);
36
42 void defendKick(const Update& event);
43
52 bool setupPositionDone(const Update& event);
53
54 auto operator()()
55 {
56 using namespace boost::sml;
57
58 DEFINE_SML_STATE(SetupPositionState)
59 DEFINE_SML_STATE(DefendKickState)
60
61 DEFINE_SML_EVENT(Update)
62
63 DEFINE_SML_ACTION(setupPosition)
64 DEFINE_SML_ACTION(defendKick)
65
66 DEFINE_SML_GUARD(setupPositionDone)
67
68 return make_transition_table(
69 // src_state + event [guard] / action = dest_state
70 *SetupPositionState_S + Update_E[!setupPositionDone_G] / setupPosition_A =
71 SetupPositionState_S,
72 SetupPositionState_S + Update_E[setupPositionDone_G] / defendKick_A =
73 DefendKickState_S,
74 DefendKickState_S + Update_E / defendKick_A, X + Update_E = X);
75 }
76
77 private:
78 TbotsProto::AiConfig ai_config;
79 std::vector<std::shared_ptr<MoveTactic>> move_tactics;
80};
Definition penalty_kick_enemy_play_fsm.h:16
Definition penalty_kick_enemy_play_fsm.h:11
void setupPosition(const Update &event)
Definition penalty_kick_enemy_play_fsm.cpp:8
bool setupPositionDone(const Update &event)
Definition penalty_kick_enemy_play_fsm.cpp:46
void defendKick(const Update &event)
Definition penalty_kick_enemy_play_fsm.cpp:40