diff options
| author | Jared Adams | 2012-04-21 11:26:40 -0600 |
|---|---|---|
| committer | Jared Adams | 2012-04-21 11:26:40 -0600 |
| commit | 567b3e2a52a3be8949c4536cff15e68b55f87fc6 (patch) | |
| tree | 742f25bf8953b60ef2d44e5eadee332339e1d002 /plugins/Brushes.h | |
| parent | 52138d8998e38b6af550749ac7fd226a7bd86edd (diff) | |
| download | dfhack-567b3e2a52a3be8949c4536cff15e68b55f87fc6.tar.gz dfhack-567b3e2a52a3be8949c4536cff15e68b55f87fc6.tar.bz2 dfhack-567b3e2a52a3be8949c4536cff15e68b55f87fc6.tar.xz | |
Fix range on tiletypes and make it saner for both plugins.
Diffstat (limited to 'plugins/Brushes.h')
| -rw-r--r-- | plugins/Brushes.h | 63 |
1 files changed, 44 insertions, 19 deletions
diff --git a/plugins/Brushes.h b/plugins/Brushes.h index 39f1614b..7cbc73da 100644 --- a/plugins/Brushes.h +++ b/plugins/Brushes.h @@ -197,47 +197,72 @@ private: }; command_result parseRectangle(color_ostream & out, + vector<string> & input, int start, int end, int & width, int & height, int & zLevels, - int oldWidth, int oldHeight, int oldZLevels, bool hasConsole = true) { - out << "Parse:" << endl - << "\tW:" << width << " - " << oldWidth << endl - << "\tW:" << height << " - " << oldHeight << endl - << "\tW:" << zLevels << " - " << oldZLevels << endl - << "Console: " << hasConsole << endl; - if (width < 1 || height < 1) { + int newWidth = 0, newHeight = 0, newZLevels = 1; + // z is different so 'range w h' won't ask for it. + + if (end > start + 1) + { + newWidth = atoi(input[start++].c_str()); + newHeight = atoi(input[start++].c_str()); + } + + if (end > start) { + newZLevels = atoi(input[start++].c_str()); + } + + string command = ""; + std::stringstream str; + CommandHistory hist; + + if (newWidth < 1) { if (hasConsole) { - string command = ""; - std::stringstream str; Console &con = static_cast<Console&>(out); - CommandHistory hist; str.str(""); - str << "Set range width <" << oldWidth << "> "; + str << "Set range width <" << width << "> "; con.lineedit(str.str(), command, hist); hist.add(command); - width = command == "" ? oldWidth : atoi(command.c_str()); + newWidth = command == "" ? width : atoi(command.c_str()); + } else { + return CR_WRONG_USAGE; + } + } + + if (newHeight < 1) { + if (hasConsole) { + Console &con = static_cast<Console&>(out); str.str(""); - str << "Set range height <" << oldHeight << "> "; + str << "Set range height <" << height << "> "; con.lineedit(str.str(), command, hist); hist.add(command); - height = command == "" ? oldHeight : atoi(command.c_str()); + newHeight = command == "" ? height : atoi(command.c_str()); + } else { + return CR_WRONG_USAGE; + } + } + + if (newZLevels < 1) { + if (hasConsole) { + Console &con = static_cast<Console&>(out); str.str(""); - str << "Set range z-levels <" << oldZLevels << "> "; + str << "Set range z-levels <" << zLevels << "> "; con.lineedit(str.str(), command, hist); hist.add(command); - zLevels = command == "" ? oldZLevels : atoi(command.c_str()); + newZLevels = command == "" ? zLevels : atoi(command.c_str()); } else { return CR_WRONG_USAGE; } } - width = width < 1? 1 : width; - height = height < 1? 1 : height; - zLevels = zLevels < 1? 1 : zLevels; + width = newWidth < 1? 1 : newWidth; + height = newHeight < 1? 1 : newHeight; + zLevels = newZLevels < 1? 1 : zLevels; return CR_OK; } |
