diff options
Diffstat (limited to 'src/script_system.h')
-rw-r--r-- | src/script_system.h | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/src/script_system.h b/src/script_system.h new file mode 100644 index 0000000..2832576 --- /dev/null +++ b/src/script_system.h | |||
@@ -0,0 +1,32 @@ | |||
1 | #ifndef SCRIPT_SYSTEM_H_FD8A95B3 | ||
2 | #define SCRIPT_SYSTEM_H_FD8A95B3 | ||
3 | |||
4 | #include <sol/sol.hpp> | ||
5 | #include <memory> | ||
6 | #include <set> | ||
7 | #include <string> | ||
8 | #include "system.h" | ||
9 | |||
10 | class Game; | ||
11 | |||
12 | class ScriptSystem : public System { | ||
13 | public: | ||
14 | |||
15 | static constexpr SystemKey Key = SystemKey::Script; | ||
16 | |||
17 | explicit ScriptSystem(Game& game); | ||
18 | |||
19 | void tick(double dt) override; | ||
20 | |||
21 | void runScript(std::string name); | ||
22 | |||
23 | private: | ||
24 | |||
25 | Game& game_; | ||
26 | sol::state engine_; | ||
27 | std::unique_ptr<sol::thread> runner_; | ||
28 | std::unique_ptr<sol::coroutine> callable_; | ||
29 | std::set<std::string> loadedScripts_; | ||
30 | }; | ||
31 | |||
32 | #endif /* end of include guard: SCRIPT_SYSTEM_H_FD8A95B3 */ | ||