forked from Kolyah35/minecraft-pe-0.6.1
update
This commit is contained in:
@@ -2,19 +2,48 @@
|
||||
#include <unordered_map>
|
||||
#include <sol/sol.hpp>
|
||||
#include <vector>
|
||||
#include <plugins/LuaServer.hpp>
|
||||
|
||||
class Level;
|
||||
class Minecraft;
|
||||
|
||||
class PluginsManager {
|
||||
public:
|
||||
PluginsManager(Level& level);
|
||||
static inline PluginsManager& get() {
|
||||
static PluginsManager inst;
|
||||
return inst;
|
||||
}
|
||||
|
||||
void init(Minecraft& minecraft);
|
||||
|
||||
void registerTypes();
|
||||
|
||||
void subscribe(std::string event, sol::function function);
|
||||
void loadPlugins();
|
||||
|
||||
// @ai @note maybe we should rewrite it...
|
||||
// problem that i dont know how to pass args in sol::function dynamically
|
||||
// so i used ai
|
||||
// sry :(
|
||||
template<typename... Args>
|
||||
void emit(std::string event, Args&&... args) {
|
||||
auto it = m_callbacks.find(event);
|
||||
|
||||
if (it == m_callbacks.end()) return;
|
||||
|
||||
for (auto& callback : it->second) {
|
||||
sol::protected_function_result result = callback(std::forward<Args>(args)...);
|
||||
|
||||
if (!result.valid()) {
|
||||
sol::error err = result;
|
||||
std::cout << err.what() << std::endl;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Minecraft* getMinecraft() { return m_minecraft; }
|
||||
private:
|
||||
std::unordered_map<std::string, std::vector<sol::function>> m_callbacks;
|
||||
|
||||
LuaServer m_srv;
|
||||
sol::state m_lua;
|
||||
Level& m_level;
|
||||
Minecraft* m_minecraft;
|
||||
};
|
||||
Reference in New Issue
Block a user