my ($min, $max) = @_;
return '' if not defined $min;
$_ &&= int($_ + .5) for $min, $max; # round halves up
- return $min || '-' if not defined $max or $min == $max;
+ return $min || '-' if !$max or $min == $max;
return "$min-$max";
}
sub showcost {
my ($row, $unit) = @_;
+ my $minmult = 100 / $unit->{energy}; # cost multiplier
+ my $maxmult = $unit->{upgraded}->{energy} &&
+ 100 / $unit->{upgraded}->{energy};
+
return join(' ',
- sprintf('cost %.0f%%', 100 * $row->{cost} / $unit->{energy}),
- !defined $row->{maint} ? () :
- sprintf('+%.1f%%/s', 100 * $row->{maint} / $unit->{energy}),
+ sprintf('cost %s%%',
+ showrange($row->{cost} * $minmult, $row->{cost} * $maxmult),
+ ),
+ !defined $row->{maint} ? () : sprintf('+%.1f%s%%/s',
+ $row->{maint} * $minmult,
+ !!$maxmult && sprintf('-%.1f', $row->{maint} * $maxmult),
+ ),
);
}