Changeset View
Standalone View
source/rlinterface/RLInterface.h
- This file was added.
/* Copyright (C) 2020 Wildfire Games. | |||||
* This file is part of 0 A.D. | |||||
* | |||||
* 0 A.D. is free software: you can redistribute it and/or modify | |||||
* it under the terms of the GNU General Public License as published by | |||||
* the Free Software Foundation, either version 2 of the License, or | |||||
* (at your option) any later version. | |||||
* | |||||
* 0 A.D. is distributed in the hope that it will be useful, | |||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | |||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||||
* GNU General Public License for more details. | |||||
* | |||||
* You should have received a copy of the GNU General Public License | |||||
* along with 0 A.D. If not, see <http://www.gnu.org/licenses/>. | |||||
*/ | |||||
#ifndef INCLUDED_RLINTERFACE | |||||
#define INCLUDED_RLINTERFACE | |||||
#include "lib/precompiled.h" | |||||
Stan: I think the std headers go below the game ones | |||||
Done Inline Actionsupdated for the next update to the revision. irishninja: updated for the next update to the revision. | |||||
#include "gui/GUIManager.h" | |||||
#include "ps/Game.h" | |||||
#include "ps/GameSetup/GameSetup.h" | |||||
Done Inline ActionsProbably don't need that anymore Stan: Probably don't need that anymore | |||||
#include "ps/Loader.h" | |||||
#include "ps/ThreadUtil.h" | |||||
#include "ps/VideoMode.h" | |||||
#include "simulation2/components/ICmpAIInterface.h" | |||||
#include "simulation2/components/ICmpTemplateManager.h" | |||||
Done Inline Actionsorder alphabetically, + newline bewteen special stl headers Stan: order alphabetically, + newline bewteen special stl headers | |||||
#include "simulation2/Simulation2.h" | |||||
#include "simulation2/system/TurnManager.h" | |||||
#include <condition_variable> | |||||
#include <mutex> | |||||
#include <queue> | |||||
#include <tuple> | |||||
struct ScenarioConfig { | |||||
bool saveReplay; | |||||
player_id_t playerID; | |||||
std::string content; | |||||
}; | |||||
struct Command { | |||||
int playerID; | |||||
std::string json_cmd; | |||||
}; | |||||
Not Done Inline ActionsAnything you can forward declare here ? Stan: Anything you can forward declare here ? | |||||
Done Inline ActionsStill accurate :) Usually <> libs are below. Stan: Still accurate :)
Usually <> libs are below. | |||||
enum GameMessageType { Reset, Commands }; | |||||
struct GameMessage { | |||||
GameMessageType type; | |||||
std::vector<Command> commands; | |||||
}; | |||||
extern void EndGame(); | |||||
Not Done Inline ActionsI don't think you're using the above classes anywhere else, so you should inline them in the Class imo. And we dislike using declarations, it doesn't hurt that much to put explicit types. wraitii: I don't think you're using the above classes anywhere else, so you should inline them in the… | |||||
struct mg_context; | |||||
class RLInterface | |||||
{ | |||||
public: | |||||
std::string Step(const std::vector<Command> commands); | |||||
std::string Reset(const ScenarioConfig* scenario); | |||||
std::vector<std::string> GetTemplates(const std::vector<std::string> names) const; | |||||
void EnableHTTP(char* server_address); | |||||
std::string SendGameMessage(const GameMessage msg); | |||||
Done Inline ActionsI guess it's pretty straightforward, but if you want to add such comments you can use the doxygen style :) Stan: I guess it's pretty straightforward, but if you want to add such comments you can use the… | |||||
Done Inline ActionsGood point. I can update it irishninja: Good point. I can update it | |||||
Done Inline ActionsStill missing :) Stan: Still missing :) | |||||
Done Inline ActionsAh, yeah it is missing. I figured that the comment wasn't adding that much and just removed it. If you would like a comment instead, I can certainly add one. irishninja: Ah, yeah it is missing. I figured that the comment wasn't adding that much and just removed it. | |||||
bool TryGetGameMessage(GameMessage& msg); | |||||
void TryApplyMessage(); | |||||
std::string GetGameState(); | |||||
bool IsGameRunning(); | |||||
private: | |||||
mg_context* m_MgContext = nullptr; | |||||
const GameMessage* m_GameMessage = nullptr; | |||||
std::string m_GameState; | |||||
Done Inline ActionsIs this one used? Stan: Is this one used? | |||||
Done Inline ActionsNope. Good catch. irishninja: Nope. Good catch. | |||||
bool m_NeedsGameState = false; | |||||
mutable std::mutex m_lock; | |||||
std::mutex m_msgLock; | |||||
std::condition_variable m_msgApplied; | |||||
ScenarioConfig m_ScenarioConfig; | |||||
}; | |||||
#endif // INCLUDED_RLINTERFACE |
I think the std headers go below the game ones