summaryrefslogtreecommitdiff
path: root/src/lua/include
diff options
context:
space:
mode:
Diffstat (limited to 'src/lua/include')
-rw-r--r--src/lua/include/bridge.hpp5
-rw-r--r--src/lua/include/property.hpp7
2 files changed, 11 insertions, 1 deletions
diff --git a/src/lua/include/bridge.hpp b/src/lua/include/bridge.hpp
index 26401d14..91153d67 100644
--- a/src/lua/include/bridge.hpp
+++ b/src/lua/include/bridge.hpp
@@ -24,7 +24,10 @@ class Bridge {
auto AddPropertyModule(
const std::string&,
- std::vector<std::pair<std::string, std::shared_ptr<Property>>>) -> void;
+ std::vector<
+ std::pair<std::string,
+ std::variant<LuaFunction, std::shared_ptr<Property>>>>)
+ -> void;
system_fsm::ServiceLocator& services() { return services_; }
PropertyBindings& bindings() { return bindings_; }
diff --git a/src/lua/include/property.hpp b/src/lua/include/property.hpp
index b6b4718f..60f9906a 100644
--- a/src/lua/include/property.hpp
+++ b/src/lua/include/property.hpp
@@ -16,6 +16,7 @@
namespace lua {
using LuaValue = std::variant<std::monostate, int, float, bool, std::string>;
+using LuaFunction = std::function<int(lua_State*)>;
class Property {
public:
@@ -42,6 +43,12 @@ class PropertyBindings {
PropertyBindings(lua_State&);
auto Register(lua_State*, Property*) -> void;
+ auto Register(lua_State*, LuaFunction) -> void;
+
+ auto GetFunction(size_t i) -> const LuaFunction&;
+
+ private:
+ std::vector<LuaFunction> functions_;
};
} // namespace lua