SC2API
An API for AI for StarCraft II
sc2_client.h
Go to the documentation of this file.
1 
9 #pragma once
10 
11 #include <string>
12 #include <vector>
13 #include <cassert>
14 
15 #include "sc2api/sc2_typeenums.h"
16 
17 namespace sc2 {
18 
19 class ControlImp;
20 class Unit;
21 class ObservationInterface;
22 class QueryInterface;
23 class DebugInterface;
24 class ControlInterface;
25 class ControlImp;
26 
28 enum class ClientError {
29  ErrorSC2,
30  InvalidAbilityRemap,
31  InvalidResponse,
32  NoAbilitiesForTag,
33  ResponseNotConsumed,
34  ResponseMismatch,
35  ConnectionClosed,
36  SC2UnknownStatus,
37  SC2AppFailure,
38  SC2ProtocolError,
39  SC2ProtocolTimeout,
40  WrongGameVersion,
41 };
42 
44 class ClientEvents {
45 public:
46  virtual ~ClientEvents() {}
47 
49  virtual void OnGameFullStart() {}
50 
52  virtual void OnGameStart() {}
53 
55  virtual void OnGameEnd() {}
56 
59  virtual void OnStep() {}
60 
63  virtual void OnUnitDestroyed(const Unit*) {}
64 
67  virtual void OnNeutralUnitCreated(const Unit*) {}
68 
71  virtual void OnUnitCreated(const Unit*) {}
72 
78  virtual void OnUnitIdle(const Unit*) {}
79 
82  virtual void OnUpgradeCompleted(UpgradeID) {}
83 
85  // !the current step.
87  virtual void OnBuildingConstructionComplete(const Unit*) {}
88 
93  virtual void OnUnitDamaged(const Unit*, float /*health*/, float /*shields*/) {}
94 
96  virtual void OnNydusDetected() {}
97 
99  virtual void OnNuclearLaunchDetected() {}
100 
103  virtual void OnUnitEnterVision(const Unit*) {}
104 
106  virtual void OnError(const std::vector<ClientError>& /*client_errors*/, const std::vector<std::string>& /*protocol_errors*/ = {}) {}
107 };
108 
110 class Client : public ClientEvents {
111 public:
112  Client();
113  virtual ~Client();
114 
116  const ObservationInterface* Observation() const;
117 
119  QueryInterface* Query();
120 
122  DebugInterface* Debug();
123 
126  ControlInterface* Control();
127  const ControlInterface* Control() const;
128 
129  void Reset();
130 
131 private:
133  ControlImp* control_imp_;
134 };
135 
141 bool IsCarryingMinerals(const Unit& unit);
142 
148 bool IsCarryingVespene(const Unit& unit);
149 
150 struct IsVisible {
151  bool operator()(const Unit& unit);
152 };
153 
154 }
A set of common events a user can override in their derived bot or replay observer class...
Definition: sc2_client.h:44
virtual void OnUnitDamaged(const Unit *, float, float)
Definition: sc2_client.h:93
virtual void OnBuildingConstructionComplete(const Unit *)
Called when the unit in the previous step had a build progress less than 1.0 but is greater than or e...
Definition: sc2_client.h:87
A unit. Could be a structure, a worker or a military unit.
Definition: sc2_unit.h:70
virtual void OnError(const std::vector< ClientError > &, const std::vector< std::string > &={})
Called for various errors the library can encounter. See ClientError enum for possible errors...
Definition: sc2_client.h:106
Definition: sc2_interfaces.h:239
virtual void OnNydusDetected()
Called when a nydus is placed.
Definition: sc2_client.h:96
virtual void OnNuclearLaunchDetected()
Called when a nuclear launch is detected.
Definition: sc2_client.h:99
virtual void OnUnitDestroyed(const Unit *)
Definition: sc2_client.h:63
The base class for Agent and ReplayObserver.
Definition: sc2_client.h:110
Definition: sc2_action.h:9
ClientError
Definition: sc2_client.h:28
virtual void OnGameEnd()
Called when a game has ended.
Definition: sc2_client.h:55
A list of enums provided for your convenience.
bool IsCarryingMinerals(const Unit &unit)
virtual void OnNeutralUnitCreated(const Unit *)
Definition: sc2_client.h:67
bool IsCarryingVespene(const Unit &unit)
The ObservationInterface reflects the current state of the game. Guaranteed to be valid when OnGameSt...
Definition: sc2_interfaces.h:47
Definition: sc2_types.h:19
virtual void OnStep()
Definition: sc2_client.h:59
Definition: sc2_control_interfaces.h:16
virtual void OnGameFullStart()
Called when a game is started after a load. Fast restarting will not call this.
Definition: sc2_client.h:49
virtual void OnGameStart()
Called when a game is started or restarted.
Definition: sc2_client.h:52
virtual void OnUnitIdle(const Unit *)
Definition: sc2_client.h:78
virtual void OnUnitEnterVision(const Unit *)
Definition: sc2_client.h:103
Definition: sc2_interfaces.h:427
virtual void OnUnitCreated(const Unit *)
Definition: sc2_client.h:71
Definition: sc2_client.h:150
virtual void OnUpgradeCompleted(UpgradeID)
Definition: sc2_client.h:82