MCPcopy Create free account
hub / github.com/DFHack/dfhack / channel_safely

Function channel_safely

plugins/channel-safely/channel-safely-plugin.cpp:583–673  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

581}
582
583command_result channel_safely(color_ostream &out, std::vector<std::string> &parameters) {
584 if (!Core::getInstance().isMapLoaded() || !World::IsSiteLoaded()) {
585 outs without a loaded fort.\n", plugin_name);
586 return CR_FAILURE;
587 }
588
589 if (!parameters.empty()) {
590 if (parameters[0] == "runonce") {
591 CSP::UnpauseEvent(true);
592 return DFHack::CR_OK;
593 } else if (parameters[0] == "rebuild") {
594 ChannelManager::Get().destroy_groups();
595 ChannelManager::Get().build_groups(true);
596 }
597 if (parameters.size() >= 2 && parameters.size() <= 3) {
598 bool state = false;
599 bool set = false;
600 if (parameters[0] == "enable") {
601 state = true;
602 } else if (parameters[0] == "disable") {
603 state = false;
604 } else if (parameters[0] == "set") {
605 set = true;
606 } else {
607 return DFHack::CR_WRONG_USAGE;
608 }
609 try {
610 if(parameters[1] == "monitoring"){
611 if (state != config.monitoring) {
612 config.monitoring = state;
613 // if this is a fresh start
614 if (state && !config.resurrect) {
615 // we need a fresh start
616 CSP::active_workers.clear();
617 }
618 }
619 } else if (parameters[1] == "risk-averse") {
620 config.riskaverse = state;
621 } else if (parameters[1] == "require-vision") {
622 config.require_vision = state;
623 } else if (parameters[1] == "insta-dig") {
624 //config.insta_dig = state;
625 config.insta_dig = false;
626 } else if (parameters[1] == "resurrect") {
627 if (state != config.resurrect) {
628 config.resurrect = state;
629 // if this is a fresh start
630 if (state && !config.monitoring) {
631 // we need a fresh start
632 CSP::active_workers.clear();
633 }
634 }
635 } else if (parameters[1] == "refresh-freq" && set && parameters.size() == 3) {
636 config.refresh_freq = std::abs(std::stol(parameters[2]));
637 } else if (parameters[1] == "monitor-freq" && set && parameters.size() == 3) {
638 config.monitor_freq = std::abs(std::stol(parameters[2]));
639 } else if (parameters[1] == "ignore-threshold" && set && parameters.size() == 3) {
640 config.ignore_threshold = std::abs(std::stol(parameters[2]));

Callers 1

Calls 9

UnpauseEventFunction · 0.85
SaveSettingsFunction · 0.85
destroy_groupsMethod · 0.80
build_groupsMethod · 0.80
emptyMethod · 0.45
sizeMethod · 0.45
clearMethod · 0.45
whatMethod · 0.45
printMethod · 0.45

Tested by

no test coverage detected