Thunderbots Project
Loading...
Searching...
No Matches
tactic.h
1#pragma once
2
3#include "software/ai/hl/stp/tactic/primitive.h"
4#include "software/ai/hl/stp/tactic/tactic_fsm.h"
5#include "software/ai/hl/stp/tactic/tactic_visitor.h"
6#include "software/ai/hl/stp/tactic/transition_conditions.h"
7#include "software/world/world.h"
8
15#define COPY_TACTIC(new_class, parent_class) \
16 class new_class : public parent_class \
17 { \
18 using parent_class::parent_class; \
19 \
20 void accept(TacticVisitor &visitor) const \
21 { \
22 visitor.visit(*this); \
23 } \
24 };
25
38class Tactic
39{
40 public:
46 explicit Tactic(const std::set<RobotCapability> &capability_reqs_);
47
48 Tactic() = delete;
49
55 virtual bool done() const = 0;
56
62 virtual std::string getFSMState() const = 0;
63
69 const std::set<RobotCapability> &robotCapabilityRequirements() const;
70
76 std::set<RobotCapability> &mutableRobotCapabilityRequirements();
77
84 void setLastExecutionRobot(std::optional<RobotId> last_execution_robot);
85
93 std::map<RobotId, std::shared_ptr<Primitive>> get(const WorldPtr &world_ptr);
94
100 virtual void accept(TacticVisitor &visitor) const = 0;
101
102 virtual ~Tactic() = default;
103
104 protected:
105 std::optional<RobotId> last_execution_robot;
106
107 private:
108 std::shared_ptr<Primitive> primitive;
109
116 virtual void updatePrimitive(const TacticUpdate &tactic_update, bool reset_fsm) = 0;
117
118 // robot capability requirements
119 std::set<RobotCapability> capability_reqs;
120};
Definition tactic_visitor.h:39
Definition tactic.h:39
std::map< RobotId, std::shared_ptr< Primitive > > get(const WorldPtr &world_ptr)
Definition tactic.cpp:30
void setLastExecutionRobot(std::optional< RobotId > last_execution_robot)
Definition tactic.cpp:25
std::set< RobotCapability > & mutableRobotCapabilityRequirements()
Definition tactic.cpp:20
virtual void accept(TacticVisitor &visitor) const =0
virtual bool done() const =0
const std::set< RobotCapability > & robotCapabilityRequirements() const
Definition tactic.cpp:15
virtual std::string getFSMState() const =0
Definition tactic_fsm.h:16