#include #include #include "df/world.h" #include "Core.h" #include "Debug.h" #include "PluginManager.h" #include "modules/Persistence.h" #include "modules/World.h" using std::string; using std::vector; using namespace DFHack; DFHACK_PLUGIN("multidwarf"); DFHACK_PLUGIN_IS_ENABLED(is_enabled); REQUIRE_GLOBAL(world); namespace DFHack { DBG_DECLARE(multidwarf, status, DebugCategory::LDEBUG); DBG_DECLARE(multidwarf, onupdate, DebugCategory::LDEBUG); DBG_DECLARE(multidwarf, command, DebugCategory::LDEBUG); } static command_result command_callback1(color_ostream &out, vector ¶meters); DFhackCExport command_result plugin_init(color_ostream &out, std::vector &commands) { DEBUG(status,out).print("initializing %s\n", plugin_name); commands.push_back(PluginCommand( "multidwarf", "Short (~54 character) description of command.", command_callback1)); return CR_OK; } DFhackCExport command_result plugin_shutdown(color_ostream &out) { DEBUG(status,out).print("shutting down %s\n", plugin_name); return CR_OK; } DFhackCExport command_result plugin_enable(color_ostream &out, bool enable) { DEBUG(status,out).print("%s from the API\n", enable ? "enabled" : "disabled"); is_enabled = enable; return CR_OK; } DFhackCExport command_result plugin_onstatechange(color_ostream &out, state_change_event event) { switch (event) { case SC_UNKNOWN: DEBUG(status,out).print("game state changed: SC_UNKNOWN\n"); break; case SC_WORLD_LOADED: DEBUG(status,out).print("game state changed: SC_WORLD_LOADED\n"); break; case SC_WORLD_UNLOADED: DEBUG(status,out).print("game state changed: SC_WORLD_UNLOADED\n"); break; case SC_MAP_LOADED: DEBUG(status,out).print("game state changed: SC_MAP_LOADED\n"); break; case SC_MAP_UNLOADED: DEBUG(status,out).print("game state changed: SC_MAP_UNLOADED\n"); break; case SC_VIEWSCREEN_CHANGED: DEBUG(status,out).print("game state changed: SC_VIEWSCREEN_CHANGED\n"); break; case SC_CORE_INITIALIZED: DEBUG(status,out).print("game state changed: SC_CORE_INITIALIZED\n"); break; case SC_BEGIN_UNLOAD: DEBUG(status,out).print("game state changed: SC_BEGIN_UNLOAD\n"); break; case SC_PAUSED: DEBUG(status,out).print("game state changed: SC_PAUSED\n"); break; case SC_UNPAUSED: DEBUG(status,out).print("game state changed: SC_UNPAUSED\n"); break; } return CR_OK; } DFhackCExport command_result plugin_onupdate (color_ostream &out) { DEBUG(onupdate,out).print( "onupdate called (run 'debugfilter set info multidwarf onupdate' to stop" " seeing these messages)\n"); return CR_OK; } DFhackCExport command_result plugin_save_data (color_ostream &out) { DEBUG(status,out).print("save or unload is imminent; time to persist state\n"); return CR_OK; } DFhackCExport command_result plugin_load_data (color_ostream &out) { DEBUG(status,out).print("world is loading; time to load persisted state\n"); return CR_OK; } static command_result command_callback1(color_ostream &out, vector ¶meters) { DEBUG(command,out).print("%s command called with %zu parameters\n", plugin_name, parameters.size()); CoreSuspender suspend; return CR_OK; }