OpenAstra
 
Loading...
Searching...
No Matches
module.h
1#ifndef MODULE_H
2#define MODULE_H
3
4#include "gameobject.h"
5#include "capabilitymanager.h"
6#include "commandmanager.h"
7
8#include "../utils/json.hpp"
9
10class ModuleManager;
11
12class Module
13 : public GameObject
14{
15public:
16 static constexpr char moduleCategory[] = "module";
17 static std::shared_ptr<GameObject> createFromDump( ObjectId id, const std::string& type );
18 static std::shared_ptr<Module> createFromTemplate(const nlohmann::json& config_data );
19
20public:
21 Module(ObjectId id, const std::string& type );
22 virtual ~Module();
23
24 virtual void tick(double delta_time_s, double current_time_s);
25
26 std::shared_ptr<ModuleManager> getManager();
27 std::unique_ptr<CommandManager> command_manager;
28 std::unique_ptr<CapabilityManager> capability_manager;
29
30private:
31 virtual void _finalizeUndump() final;
32};
33
34#endif // MODULE_H
GameObject(const std::string &category, ObjectId id, const std::string &type)
Create a GameObject object.
Definition gameobject.cpp:38
const std::string & type() const
return the type (ship_xxx, station_xxx, planet_xxx...)
Definition gameobject.h:213
Definition modulemanager.h:9
Definition gameid.hpp:9