diff options
| author | Robert Heinrich | 2012-04-09 18:36:01 +0200 |
|---|---|---|
| committer | Robert Heinrich | 2012-04-09 18:36:01 +0200 |
| commit | 37f3056fdd08ad31621b0ff3a310c1bbee72b7fb (patch) | |
| tree | f6ec6d34daad0122f6d2bfdd8127800cf724705b /plugins/zone.cpp | |
| parent | 64a7168b834cefa3c1a0eb75328f847cca20e544 (diff) | |
| download | dfhack-37f3056fdd08ad31621b0ff3a310c1bbee72b7fb.tar.gz dfhack-37f3056fdd08ad31621b0ff3a310c1bbee72b7fb.tar.bz2 dfhack-37f3056fdd08ad31621b0ff3a310c1bbee72b7fb.tar.xz | |
autobutcher: fixed behaviour of keywords 'all' and 'new'. (didn't work properly with watch, unwatch and forget)
Diffstat (limited to 'plugins/zone.cpp')
| -rw-r--r-- | plugins/zone.cpp | 90 |
1 files changed, 59 insertions, 31 deletions
diff --git a/plugins/zone.cpp b/plugins/zone.cpp index f741f7ae..0038a707 100644 --- a/plugins/zone.cpp +++ b/plugins/zone.cpp @@ -2226,19 +2226,19 @@ command_result df_autobutcher(color_ostream &out, vector <string> & parameters) { parameters.erase(parameters.begin()); watch_race = true; - out << "Start watching race(s)." << endl; + out << "Start watching race(s): "; // << endl; } else if(p == "unwatch") { parameters.erase(parameters.begin()); unwatch_race = true; - out << "Stop watching race(s)." << endl; + out << "Stop watching race(s): "; // << endl; } else if(p == "forget") { parameters.erase(parameters.begin()); forget_race = true; - out << "Removing race(s) from watchlist." << endl; + out << "Removing race(s) from watchlist: "; // << endl; } else if(p == "target") { @@ -2261,7 +2261,7 @@ command_result df_autobutcher(color_ostream &out, vector <string> & parameters) ma >> target_ma; parameters.erase(parameters.begin(), parameters.begin()+5); change_target = true; - out << "Setting new target count for race(s):" << endl; + out << "Setting new target count for race(s): "; // << endl; } } else if(p == "autowatch") @@ -2406,7 +2406,7 @@ command_result df_autobutcher(color_ostream &out, vector <string> & parameters) out << endl; } - if(target_racenames.size() && target_racenames[0] == "all") + if(change_target && target_racenames.size() && target_racenames[0] == "all") { out << "Setting target count for all races on watchlist." << endl; for(size_t i=0; i<watched_races.size(); i++) @@ -2422,40 +2422,68 @@ command_result df_autobutcher(color_ostream &out, vector <string> & parameters) if(target_racenames.size() && (target_racenames[0] == "all" || target_racenames[0] == "new")) { - out << "Setting target count for the future." << endl; - default_fk = target_fk; - default_mk = target_mk; - default_fa = target_fa; - default_ma = target_ma; - if(config_autobutcher.isValid()) + if(change_target) { - config_autobutcher.ival(3) = default_fk; - config_autobutcher.ival(4) = default_mk; - config_autobutcher.ival(5) = default_fa; - config_autobutcher.ival(6) = default_ma; + out << "Setting target count for the future." << endl; + default_fk = target_fk; + default_mk = target_mk; + default_fa = target_fa; + default_ma = target_ma; + if(config_autobutcher.isValid()) + { + config_autobutcher.ival(3) = default_fk; + config_autobutcher.ival(4) = default_mk; + config_autobutcher.ival(5) = default_fa; + config_autobutcher.ival(6) = default_ma; + } + return CR_OK; + } + else if(target_racenames[0] == "new") + { + out << "The only valid usage of 'new' is in combination when setting a target count!" << endl; + + // hm, maybe instead of complaining start/stop autowatch instead? and get rid of the autowatch option? + if(unwatch_race) + out << "'unwatch new' makes no sense! Use 'noautowatch' instead." << endl; + else if(forget_race) + out << "'forget new' makes no sense, 'forget' is only for existing watchlist entries! Use 'noautowatch' instead." << endl; + else if(watch_race) + out << "'watch new' makes no sense! Use 'autowatch' instead." << endl; + return CR_WRONG_USAGE; } - return CR_OK; } - // map race names to ids - size_t num_races = df::global::world->raws.creatures.all.size(); - while(target_racenames.size()) + if(target_racenames.size() && target_racenames[0] == "all") { - bool found_race = false; - for(size_t i=0; i<num_races; i++) + // fill with race ids from watchlist + for(size_t i=0; i<watched_races.size(); i++) { - if(getRaceName(i) == target_racenames.back()) - { - target_raceids.push_back(i); - target_racenames.pop_back(); - found_race = true; - break; - } + WatchedRace * w = watched_races[i]; + target_raceids.push_back(w->raceId); } - if(!found_race) + } + else + { + // map race names from parameter list to ids + size_t num_races = df::global::world->raws.creatures.all.size(); + while(target_racenames.size()) { - out << "Race not found: " << target_racenames.back() << endl; - return CR_OK; + bool found_race = false; + for(size_t i=0; i<num_races; i++) + { + if(getRaceName(i) == target_racenames.back()) + { + target_raceids.push_back(i); + target_racenames.pop_back(); + found_race = true; + break; + } + } + if(!found_race) + { + out << "Race not found: " << target_racenames.back() << endl; + return CR_OK; + } } } |
