Thunderbots Project
Loading...
Searching...
No Matches
threaded_ai.h
1#pragma once
2
3#include <mutex>
4
5#include "proto/parameters.pb.h"
6#include "proto/play.pb.h"
7#include "proto/play_info_msg.pb.h"
8#include "proto/tactic.pb.h"
9#include "proto/tbots_software_msgs.pb.h"
10#include "software/ai/ai.h"
11#include "software/multithreading/first_in_first_out_threaded_observer.h"
12#include "software/multithreading/subject.hpp"
13#include "software/world/world.h"
14
21 public FirstInFirstOutThreadedObserver<TbotsProto::ThunderbotsConfig>,
22 public Subject<TbotsProto::PrimitiveSet>,
23 public Subject<TbotsProto::PlayInfo>
24{
25 public:
26 ThreadedAi() = delete;
27
33 explicit ThreadedAi(const TbotsProto::AiConfig& ai_config);
34
40 void overridePlay(TbotsProto::Play play_proto);
41
47 void overrideTactics(
48 TbotsProto::AssignedTacticPlayControlParams assigned_tactic_play_control_params);
49
50 private:
51 void onValueReceived(World world) override;
52 void onValueReceived(TbotsProto::ThunderbotsConfig config) override;
53
59 void runAiAndSendPrimitives(const WorldPtr& world_ptr);
60
61 Ai ai;
62 TbotsProto::AiConfig ai_config;
63 TbotsProto::AiControlConfig ai_control_config;
64 std::mutex ai_mutex;
65};
Definition ai.h:15
Definition first_in_first_out_threaded_observer.h:17
Definition subject.hpp:18
Definition threaded_ai.h:24
void overridePlay(TbotsProto::Play play_proto)
Definition threaded_ai.cpp:23
void overrideTactics(TbotsProto::AssignedTacticPlayControlParams assigned_tactic_play_control_params)
Definition threaded_ai.cpp:29
Definition world.h:23