10#include <unordered_map>
17#include <xtensor/xarray.hpp>
19#include <opencv2/core/mat.hpp>
25 std::chrono::high_resolution_clock::time_point now;
26 std::chrono::high_resolution_clock::time_point _update_next;
27 std::chrono::high_resolution_clock::time_point _stats_next;
29 std::chrono::nanoseconds _update_interval{};
31 uint32_t _update_delta = 0;
45 std::unique_ptr<BaseGUI>
gui;
48 explicit Game(
const std::string& map_file);
65 xt::xarray<double, xt::layout_type::row_major>
state;
129 uint32_t
getId()
const;
169 virtual const cv::Mat&
_render()
const;
Unit * getUnitByNameID(const std::string &nameID)
Definition: Game.cpp:224
uint32_t episode
Game Episode.
Definition: Game.h:88
long getTicksModifier() const
Definition: Game.cpp:263
Unit & getUnit(int idx)
Get a Unit via index.
Definition: Game.cpp:218
virtual void _update()
Definition: Game.cpp:330
virtual void _onUnitCreate(const Unit &unit) const
Definition: Game.cpp:276
void stop()
Definition: Game.cpp:77
virtual void _reset()
Definition: Game.cpp:331
virtual void _onResourceDepleted(const Tile &tile, const Unit &unit) const
Definition: Game.cpp:309
uint32_t getWidth() const
Definition: Game.cpp:233
void reset()
Definition: Game.cpp:81
bool terminal
Game terminal flag.
Definition: Game.h:99
void start()
Definition: Game.cpp:72
std::vector< Player > players
List of Players inside the game session.
Definition: Game.h:74
std::unordered_map< std::string, Unit * > unitsNameMap
Definition: Game.h:79
std::unique_ptr< BaseGUI > gui
GUI Pointer.
Definition: Game.h:45
uint32_t getEpisode() const
Definition: Game.cpp:251
void caption()
Print the Game Statistics.
Definition: Game.cpp:141
virtual void _onEpisodeEnd() const
Definition: Game.cpp:286
bool isTerminal()
Definition: Game.cpp:166
StateManager stateManager
Game State Manager.
Definition: Game.h:71
const cv::Mat renderPlaceholder
empty opencv container in case of no GUI
Definition: Game.h:209
Tilemap tilemap
Game Tilemap (Order 3)
Definition: Game.h:68
virtual void _caption() const
Definition: Game.cpp:329
virtual void _onUnitDestroy(const Unit &unit) const
Definition: Game.cpp:290
Player * selectedPlayer
Selected player.
Definition: Game.h:102
virtual void update()
Game Update Function.
Definition: Game.cpp:111
Player & addPlayer()
Definition: Game.cpp:193
uint32_t getHeight() const
Definition: Game.cpp:237
void insertPlayer(Player &player)
Definition: Game.cpp:206
xt::xarray< double, xt::layout_type::row_major > state
Game state (Order 2)
Definition: Game.h:65
Game(const std::string &map_file)
Game Constructor.
Definition: Game.cpp:12
virtual void _onUnitAttack(const Unit &unit) const
Definition: Game.cpp:314
uint32_t max_fps
Game Max FPS.
Definition: Game.h:91
virtual const cv::Mat & _render() const
Game Render implementation.
Definition: Game.cpp:322
void setSelectedPlayer(Player &player)
Set selected player.
Definition: Game.cpp:271
virtual void _onResourceGather(const Tile &tile, const Unit &unit) const
Definition: Game.cpp:302
uint64_t ticks
Game Episode Ticks.
Definition: Game.h:85
uint64_t getTicks() const
Definition: Game.cpp:255
Map map
Const Map (Order 1)
Definition: Game.h:62
uint32_t getId() const
Definition: Game.cpp:267
virtual void _onTileChange(const Tile &) const
Definition: Game.cpp:295
uint64_t getGameDuration() const
Definition: Game.cpp:259
std::vector< Unit > units
List of Units inside the game session.
Definition: Game.h:77
uint32_t getMaxFPS() const
Definition: Game.cpp:241
uint32_t getFPS() const
Definition: Game.cpp:247
uint32_t currentFPS
Game Current FPS.
Definition: Game.h:95
const Config config
Definition: Game.h:59
void setMaxFPS(int fps_)
Set the Game FPS.
Definition: Game.cpp:61
virtual void _onEpisodeStart() const
Definition: Game.cpp:282
void tick()
Game Tick Function.
Definition: Game.cpp:155
const cv::Mat & render()
Game Render Function.
Definition: Game.cpp:136
Definition: StateManager.h:15