Cleaned up utils::apply_modifier a bit
This commit is contained in:
parent
0ca8227959
commit
c5ba6f01a8
1 changed files with 13 additions and 6 deletions
|
@ -412,18 +412,25 @@ std::pair<string_view, string_view> vertical_split(const std::string& val)
|
|||
}
|
||||
|
||||
// Modify a number by string representing integer difference, or optionally %
|
||||
int apply_modifier( const int number, const std::string &amount, const int minimum ) {
|
||||
// wassert( amount.empty() == false );
|
||||
int apply_modifier(const int number, const std::string& amount, const int minimum)
|
||||
{
|
||||
int value = 0;
|
||||
|
||||
try {
|
||||
value = std::stoi(amount);
|
||||
} catch(const std::invalid_argument&) {}
|
||||
if(amount[amount.size()-1] == '%') {
|
||||
} catch(const std::invalid_argument&) {
|
||||
}
|
||||
|
||||
if(amount.back() == '%') {
|
||||
value = div100rounded(number * value);
|
||||
}
|
||||
|
||||
value += number;
|
||||
if (( minimum > 0 ) && ( value < minimum ))
|
||||
value = minimum;
|
||||
|
||||
if(minimum > 0 && value < minimum) {
|
||||
value = minimum;
|
||||
}
|
||||
|
||||
return value;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue