Pyrogenesis HEAD
Pyrogenesis, a RTS Engine
ICmpAIManager.h
Go to the documentation of this file.
1/* Copyright (C) 2017 Wildfire Games.
2 * This file is part of 0 A.D.
3 *
4 * 0 A.D. is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation, either version 2 of the License, or
7 * (at your option) any later version.
8 *
9 * 0 A.D. is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
13 *
14 * You should have received a copy of the GNU General Public License
15 * along with 0 A.D. If not, see <http://www.gnu.org/licenses/>.
16 */
17
18#ifndef INCLUDED_ICMPAIMANAGER
19#define INCLUDED_ICMPAIMANAGER
20
22
24
26{
27public:
28 /**
29 * Add a new AI player into the world, based on the AI script identified
30 * by @p id (corresponding to a subdirectory in simulation/ai/),
31 * to control player @p player.
32 */
33 virtual void AddPlayer(const std::wstring& id, player_id_t player, uint8_t difficulty, const std::wstring&) = 0;
34 virtual void SetRNGSeed(uint32_t seed) = 0;
35 virtual void TryLoadSharedComponent() = 0;
36 virtual void RunGamestateInit() = 0;
37
38 /**
39 * Call this at the end of a turn, to trigger AI computation which will be
40 * ready for the next turn.
41 */
42 virtual void StartComputation() = 0;
43
44 /**
45 * Call this at the start of a turn, to push the computed AI commands into
46 * the command queue.
47 */
48 virtual void PushCommands() = 0;
49
50 /**
51 * Returns a vector of {"id":"value-for-AddPlayer", "name":"Human readable name"}
52 * objects, based on all the available AI scripts.
53 */
54 static JS::Value GetAIs(const ScriptInterface& scriptInterface);
55
56 DECLARE_INTERFACE_TYPE(AIManager)
57};
58
59#endif // INCLUDED_ICMPAIMANAGER
#define DECLARE_INTERFACE_TYPE(iname)
Definition: Interface.h:23
int32_t player_id_t
valid player IDs are non-negative (see ICmpOwnership)
Definition: Player.h:24
Definition: ICmpAIManager.h:26
static JS::Value GetAIs(const ScriptInterface &scriptInterface)
Returns a vector of {"id":"value-for-AddPlayer", "name":"Human readable name"} objects,...
Definition: ICmpAIManager.cpp:86
virtual void PushCommands()=0
Call this at the start of a turn, to push the computed AI commands into the command queue.
virtual void StartComputation()=0
Call this at the end of a turn, to trigger AI computation which will be ready for the next turn.
virtual void TryLoadSharedComponent()=0
virtual void AddPlayer(const std::wstring &id, player_id_t player, uint8_t difficulty, const std::wstring &)=0
Add a new AI player into the world, based on the AI script identified by id (corresponding to a subdi...
virtual void SetRNGSeed(uint32_t seed)=0
virtual void RunGamestateInit()=0
Definition: IComponent.h:33
Abstraction around a SpiderMonkey JS::Realm.
Definition: ScriptInterface.h:72
unsigned int uint32_t
Definition: wposix_types.h:53
unsigned char uint8_t
Definition: wposix_types.h:51