summaryrefslogtreecommitdiff
path: root/library/PluginManager.cpp
diff options
context:
space:
mode:
authorPetr Mrázek2011-06-27 02:13:01 +0200
committerPetr Mrázek2011-06-27 02:13:01 +0200
commit00ddb45dbdeaa1765b0433903f7e48078417dbe5 (patch)
treed642e8bde83f169ef84237dd77158b0d1dd11ef0 /library/PluginManager.cpp
parent722531f590a9f099b671c641d4c5afe3a2658b20 (diff)
downloaddfhack-00ddb45dbdeaa1765b0433903f7e48078417dbe5.tar.gz
dfhack-00ddb45dbdeaa1765b0433903f7e48078417dbe5.tar.bz2
dfhack-00ddb45dbdeaa1765b0433903f7e48078417dbe5.tar.xz
Added optional plugin_onupdate function, called each Core update.
Diffstat (limited to 'library/PluginManager.cpp')
-rw-r--r--library/PluginManager.cpp14
1 files changed, 14 insertions, 0 deletions
diff --git a/library/PluginManager.cpp b/library/PluginManager.cpp
index 072c6bae..bde021ba 100644
--- a/library/PluginManager.cpp
+++ b/library/PluginManager.cpp
@@ -76,6 +76,7 @@ Plugin::Plugin(Core * core, const std::string & file)
plugin_init = 0;
plugin_shutdown = 0;
plugin_status = 0;
+ plugin_onupdate = 0;
loaded = false;
DFLibrary * plug = OpenPlugin(file.c_str());
if(!plug)
@@ -98,6 +99,7 @@ Plugin::Plugin(Core * core, const std::string & file)
return;
}
plugin_status = (command_result (*)(Core *, std::string &)) LookupPlugin(plug, "plugin_status");
+ plugin_onupdate = (command_result (*)(Core *)) LookupPlugin(plug, "plugin_onupdate");
plugin_shutdown = (command_result (*)(Core *)) LookupPlugin(plug, "plugin_shutdown");
name = _PlugName();
plugin_lib = plug;
@@ -187,3 +189,15 @@ command_result PluginManager::InvokeCommand( std::string & command, std::vector
}
return CR_NOT_IMPLEMENTED;
}
+
+void PluginManager::OnUpdate( void )
+{
+ Core * c = &Core::getInstance();
+ for(int i = 0; i < all_plugins.size(); i++)
+ {
+ if(all_plugins[i]->plugin_onupdate)
+ {
+ all_plugins[i]->plugin_onupdate(c);
+ }
+ }
+}