#pragma once #include #include namespace ZL { class Location; class Inventory; class ScriptEngine { public: ScriptEngine(); ~ScriptEngine(); // Must be called once, after the Game's NPCs are ready. void init(Location* game, Inventory* inventory); // Execute a Lua script file. Logs errors to stderr. void runScript(const std::string& path); void callItemPickupCallback(const std::string& objectName); void callActivateFunction(const std::string& functionName); void callNpcInteractCallback(int npcIndex); private: struct Impl; std::unique_ptr impl; }; } // namespace ZL