|
| 1 | +#include <inlines.h> |
| 2 | +#include <on-tick.h> |
| 3 | +#include <plugin.h> |
| 4 | +#include <modules/EventManager.h> |
| 5 | + |
| 6 | +extern DFHack::Plugin* plugin_self; |
| 7 | + |
| 8 | +namespace CSP { |
| 9 | + extern OnTick tick_it_master; |
| 10 | + extern void UnpauseEvent(bool full_scan); |
| 11 | +} |
| 12 | + |
| 13 | +void cancel(DFHack::color_ostream&, void*); |
| 14 | +void dig(DFHack::color_ostream&, void*); |
| 15 | +void resurrect(DFHack::color_ostream&, void*); |
| 16 | +void refresh(DFHack::color_ostream&, void*); |
| 17 | + |
| 18 | +EventManager::EventHandler cancelHandler(plugin_self, cancel, 0); |
| 19 | +EventManager::EventHandler digHandler(plugin_self, dig, 0); |
| 20 | +EventManager::EventHandler resurrectHandler(plugin_self, resurrect, 0); |
| 21 | +EventManager::EventHandler refreshHandler(plugin_self, refresh, 0); |
| 22 | + |
| 23 | +void cancel(DFHack::color_ostream&, void*) { |
| 24 | + CSP::tick_it_master.cancel_queued = false; |
| 25 | + CSP::active_job_manager.handle_cancellation(); |
| 26 | +} |
| 27 | + |
| 28 | +void resurrect(DFHack::color_ostream &out, void*) { |
| 29 | + CSP::tick_it_master.resurrect_queued = false; |
| 30 | + CSP::active_job_manager.handle_resurrect(out); |
| 31 | + if (CSP::active_job_manager.needs_resurrect_queued()) { |
| 32 | + EventManager::registerTick(resurrectHandler, 1); |
| 33 | + CSP::tick_it_master.resurrect_queued = true; |
| 34 | + } |
| 35 | +} |
| 36 | + |
| 37 | +void dig(DFHack::color_ostream &out, void*) { |
| 38 | + CSP::tick_it_master.dig_queued = false; |
| 39 | + if (!config.insta_dig) { |
| 40 | + CSP::dignow_queue.clear(); |
| 41 | + return; |
| 42 | + } |
| 43 | + TRACE(monitor).print(" -> evaluate dignow queue\n"); |
| 44 | + for (auto pos : CSP::dignow_queue) { |
| 45 | + dig_now(out, pos); |
| 46 | + ChannelManager::Get().erase(pos); |
| 47 | + CSP::active_job_manager.cancel(pos); |
| 48 | + } |
| 49 | + CSP::dignow_queue.clear(); |
| 50 | +} |
| 51 | + |
| 52 | +void refresh(DFHack::color_ostream&, void*) { |
| 53 | + CSP::UnpauseEvent(true); |
| 54 | + EventManager::registerTick(refreshHandler, config.refresh_freq); |
| 55 | +} |
0 commit comments