Thunderbots Project
Loading...
Searching...
No Matches
team.h
1#pragma once
2
3#include <cstdlib>
4#include <map>
5#include <optional>
6#include <vector>
7
8#include "software/time/timestamp.h"
9#include "software/world/robot.h"
10
14class Team
15{
16 public:
23 explicit Team(
24 const Duration& robot_expiry_buffer_duration = Duration::fromMilliseconds(50));
25
33 explicit Team(
34 const std::vector<Robot>& team_robots,
35 const Duration& robot_expiry_buffer_duration = Duration::fromMilliseconds(50));
36
42 explicit Team(
43 const TbotsProto::Team& team_proto,
44 const Duration& robot_expiry_buffer_duration = Duration::fromMilliseconds(50));
45
52 void updateRobots(const std::vector<Robot>& team_robots);
53
65 void updateState(const Team& new_team_data);
66
78
86 void removeRobotWithId(unsigned int robot_id);
87
94 void assignGoalie(RobotId new_goalie_id);
95
101 void clearGoalie();
102
108 size_t numRobots() const;
109
118
126 void setRobotExpiryBuffer(const Duration& new_robot_expiry_buffer_duration);
127
137 RobotId id, const std::set<RobotCapability>& new_unavailable_robot_capabilities);
138
148 std::optional<Robot> getRobotById(const unsigned int id) const;
149
157 std::optional<Robot> goalie() const;
158
166 std::optional<unsigned int> getGoalieId() const;
167
173 const std::vector<Robot>& getAllRobots() const;
174
180 std::vector<Robot> getAllRobotsExceptGoalie() const;
181
189 std::optional<Robot> getNearestRobot(const Point& ref_point) const;
190
199 static std::optional<Robot> getNearestRobot(const std::vector<Robot>& robots,
200 const Point& ref_point);
201
205 void clearAllRobots();
206
213 std::optional<Timestamp> timestamp() const;
214
222 bool operator==(const Team& other) const;
223
230 bool operator!=(const Team& other) const;
231
239
240 private:
249 void updateTimestamp(Timestamp timestamp);
250
256 Timestamp getMostRecentTimestampFromRobots();
257
258 // The robots on this team
259 std::vector<Robot> team_robots_;
260
261 // The robot id of the goalie for this team
262 std::optional<unsigned int> goalie_id_;
263
264 // The duration for which a Robot must not have been updated for before
265 // being removed from this team.
266 Duration robot_expiry_buffer_duration_;
267
268 Timestamp last_update_timestamp_;
269};
270
271enum class TeamType
272{
273 FRIENDLY,
274 ENEMY,
275};
Definition duration.h:12
static const Duration fromMilliseconds(double milliseconds)
Definition duration.cpp:18
Definition point.h:14
Definition team.h:15
std::optional< unsigned int > getGoalieId() const
Definition team.cpp:179
std::optional< Timestamp > timestamp() const
Definition team.cpp:272
void removeExpiredRobots(const Timestamp &timestamp)
Definition team.cpp:84
std::optional< Robot > getNearestRobot(const Point &ref_point) const
Definition team.cpp:205
void updateState(const Team &new_team_data)
Definition team.cpp:76
bool operator!=(const Team &other) const
Definition team.cpp:292
void clearGoalie()
Definition team.cpp:123
std::optional< Robot > goalie() const
Definition team.cpp:169
const std::vector< Robot > & getAllRobots() const
Definition team.cpp:184
void removeRobotWithId(unsigned int robot_id)
Definition team.cpp:107
void assignGoalie(RobotId new_goalie_id)
Definition team.cpp:118
size_t numRobots() const
Definition team.cpp:128
std::vector< Robot > getAllRobotsExceptGoalie() const
Definition team.cpp:189
Timestamp getMostRecentTimestamp() const
Definition team.cpp:236
void setRobotExpiryBuffer(const Duration &new_robot_expiry_buffer_duration)
Definition team.cpp:138
void clearAllRobots()
Definition team.cpp:231
const Duration & getRobotExpiryBufferDuration() const
Definition team.cpp:133
void setUnavailableRobotCapabilities(RobotId id, const std::set< RobotCapability > &new_unavailable_robot_capabilities)
Definition team.cpp:143
bool operator==(const Team &other) const
Definition team.cpp:285
std::optional< Robot > getRobotById(const unsigned int id) const
Definition team.cpp:156
void updateRobots(const std::vector< Robot > &team_robots)
Definition team.cpp:44
Definition timestamp.h:21