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 "simulation2/helpers/Player.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. | |||||
struct ScenarioConfig { | |||||
bool saveReplay; | |||||
Done Inline ActionsProbably don't need that anymore Stan: Probably don't need that anymore | |||||
player_id_t playerID; | |||||
std::string content; | |||||
}; | |||||
struct Command { | |||||
int playerID; | |||||
Done Inline Actionsorder alphabetically, + newline bewteen special stl headers Stan: order alphabetically, + newline bewteen special stl headers | |||||
std::string json_cmd; | |||||
}; | |||||
enum GameMessageType { Reset, Commands }; | |||||
struct GameMessage { | |||||
GameMessageType type; | |||||
std::vector<Command> commands; | |||||
}; | |||||
extern void EndGame(); | |||||
struct mg_context; | |||||
const static std::string EMPTY_STATE; | |||||
class RLInterface | |||||
{ | |||||
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. | |||||
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(const char* server_address); | |||||
std::string SendGameMessage(const GameMessage msg); | |||||
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… | |||||
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; | |||||
bool m_NeedsGameState = false; | |||||
mutable std::mutex m_lock; | |||||
std::mutex m_msgLock; | |||||
std::condition_variable m_msgApplied; | |||||
ScenarioConfig m_ScenarioConfig; | |||||
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. | |||||
}; | |||||
extern RLInterface* g_RLInterface; | |||||
#endif // INCLUDED_RLINTERFACE | |||||
Done Inline ActionsIs this one used? Stan: Is this one used? | |||||
Done Inline ActionsNope. Good catch. irishninja: Nope. Good catch. |
I think the std headers go below the game ones