start working on event handlers

This commit is contained in:
Lion Kortlepel 2024-02-05 20:45:46 +01:00
parent 5468e5c854
commit 6af471f025
No known key found for this signature in database
GPG Key ID: 4322FF2B4C71259B
3 changed files with 14 additions and 0 deletions

View File

@ -10,6 +10,7 @@
#include <boost/date_time/posix_time/posix_time_duration.hpp>
#include <boost/thread/scoped_thread.hpp>
#include <boost/thread/synchronized_value.hpp>
#include <sol/forward.hpp>
#include <sol/variadic_args.hpp>
#include <spdlog/logger.h>
@ -93,6 +94,11 @@ private:
/// This asio context schedules all tasks. It's run in the m_thread thread.
boost::asio::io_context m_io;
/// Event handlers which are legacy-style (by name)
HashMap<std::string, std::string> m_event_handlers_named {};
/// Event handlers which are functions (v4 style)
HashMap<std::string, sol::protected_function> m_event_handlers {};
/// Main (and usually only) lua state of this plugin.
/// ONLY access this from the m_thread thread.
sol::state m_state;

View File

@ -131,6 +131,9 @@ Error LuaPlugin::initialize_libraries() {
glob["MP"]["GetPluginPath"] = [this] {
return std::filesystem::absolute(m_path).string();
};
glob["MP"]["RegisterEvent"] = [this] (const std::string& event_name, const std::string& handler) {
};
glob["MP"]["ScheduleCallRepeat"] = [this](size_t ms, sol::function fn, sol::variadic_args args) {
return l_mp_schedule_call_repeat(ms, fn, args);

View File

@ -170,6 +170,11 @@ int BeamMPServerMain(MainArguments Arguments) {
PluginManager PluginManager;
(void)PluginManager.add_plugin(Plugin::make_pointer<LuaPlugin>("Resources/Server/Test"));
PluginManager.trigger_event("onInit", std::make_shared<Value>(HashMap<std::string, Value> {
{ "big", "balls" },
{ "longer", "falls" },
}));
if (Application::Settings.HTTPServerEnabled) {
Http::Server::THttpServerInstance HttpServerInstance {};
}