@@ -58,6 +58,17 @@ namespace lse {
5858PluginManager::PluginManager () : ll::mod::ModManager(PluginManagerName) {}
5959PluginManager::~PluginManager () = default ;
6060
61+ void PluginManager::enableAllPlugins () {
62+ for (auto & mod : mods ()) {
63+ enableScriptPlugin (mod.getName ());
64+ }
65+ }
66+ void PluginManager::disableAllPlugins () {
67+ for (auto & mod : mods ()) {
68+ disableScriptPlugin (mod.getName ());
69+ }
70+ }
71+
6172ll::Expected<> PluginManager::load (ll::mod::Manifest manifest) {
6273 if (hasMod (manifest.name )) {
6374 return ll::makeStringError (" Plugin has already loaded" );
@@ -68,7 +79,7 @@ ll::Expected<> PluginManager::load(ll::mod::Manifest manifest) {
6879 return plugin->onLoad ().transform ([&, this ] { addMod (manifest.name , plugin); });
6980}
7081
71- ll::Expected<> PluginManager::enable (std::string_view name) {
82+ ll::Expected<> PluginManager::enableScriptPlugin (std::string_view name) {
7283 auto plugin = std::static_pointer_cast<ScriptPlugin>(getMod (name));
7384 if (!plugin) {
7485 return ll::makeStringError (" Plugin {0} not found" _tr (name));
@@ -249,7 +260,14 @@ ll::Expected<> PluginManager::enable(std::string_view name) {
249260 }
250261}
251262
252- ll::Expected<> PluginManager::disable (std::string_view name) {
263+ ll::Expected<> PluginManager::enable (std::string_view name) {
264+ if (ll::getGamingStatus () == ll::GamingStatus::Running) {
265+ return enableScriptPlugin (name);
266+ }
267+ return {};
268+ }
269+
270+ ll::Expected<> PluginManager::disableScriptPlugin (std::string_view name) {
253271 try {
254272 auto scriptEngine = EngineManager::getEngine (std::string (name));
255273
@@ -286,6 +304,8 @@ ll::Expected<> PluginManager::disable(std::string_view name) {
286304 }
287305}
288306
307+ ll::Expected<> PluginManager::disable (std::string_view name) { return disableScriptPlugin (name); }
308+
289309ll::Expected<> PluginManager::unload (std::string_view name) {
290310 if (auto res = std::static_pointer_cast<ScriptPlugin>(getMod (name))->onUnload (); !res) {
291311 return res;
0 commit comments