#ifndef SCRIPT_SYSTEM_H_FD8A95B3 #define SCRIPT_SYSTEM_H_FD8A95B3 #include #include #include #include #include #include "system.h" class Game; class ScriptSystem : public System { public: static constexpr SystemKey Key = SystemKey::Script; explicit ScriptSystem(Game& game); void tick(double dt) override; void destroySprite(int spriteId) override; bool mapHasScript(std::string mapName, std::string scriptName); void runScript(std::string mapName, std::string scriptName, int linkedSprite = -1); void runDebugScript(std::string script); private: void loadMapScripts(std::string mapName); struct Script { std::unique_ptr runner; std::unique_ptr callable; std::string debugInfo; int linkedSprite = -1; }; Game& game_; sol::state engine_; std::list