diff --git a/plugins/autoSyndrome.cpp b/plugins/autoSyndrome.cpp index 5a433e01d..3a6fecc2a 100644 --- a/plugins/autoSyndrome.cpp +++ b/plugins/autoSyndrome.cpp @@ -38,7 +38,7 @@ using namespace std; using namespace DFHack; -bool enabled = true; +static bool enabled = false; DFHACK_PLUGIN("autoSyndrome"); @@ -57,8 +57,8 @@ DFhackCExport command_result plugin_init(color_ostream& out, vector& parameters); + DFhackCExport command_result plugin_init ( color_ostream &out, std::vector &commands) { - EventManager::EventHandler syndrome(syndromeHandler, 1); - EventManager::registerListener(EventManager::EventType::SYNDROME, syndrome, plugin_self); + commands.push_back(PluginCommand("syndromeTrigger", "Run commands and enable true transformations, configured by the raw files.\n", &syndromeTrigger, false, + "syndromeTrigger:\n" + " syndromeTrigger 0 //disable\n" + " syndromeTrigger 1 //enable\n" + " syndromeTrigger disable //disable\n" + " syndromeTrigger enable //enable\n" + "\n" + "See Readme.rst for details.\n" + )); return CR_OK; } +command_result syndromeTrigger(color_ostream& out, vector& parameters) { + if ( parameters.size() > 1 ) + return CR_WRONG_USAGE; + + bool wasEnabled = enabled; + if ( parameters.size() == 1 ) { + if ( parameters[0] == "enable" ) { + enabled = true; + } else if ( parameters[0] == "disable" ) { + enabled = false; + } else { + int32_t a = atoi(parameters[0].c_str()); + if ( a < 0 || a > 1 ) + return CR_WRONG_USAGE; + + enabled = (bool)a; + } + } + + out.print("syndromeTrigger is %s\n", enabled ? "enabled" : "disabled"); + if ( enabled == wasEnabled ) + return CR_OK; + + EventManager::unregisterAll(plugin_self); + if ( enabled ) { + EventManager::EventHandler handle(syndromeHandler, 1); + EventManager::registerListener(EventManager::EventType::SYNDROME, handle, plugin_self); + } + return CR_OK; + +} + void syndromeHandler(color_ostream& out, void* ptr) { EventManager::SyndromeData* data = (EventManager::SyndromeData*)ptr;