);
}
+ my @rows = @{$units};
my $grouped = 1; # race headers
if (exists $get{order}) {
$grouped = 0;
$_->{order} = (
$_->{pop}*16 + ($_->{size} // $_->{suit}) + $_->{cargo}/8
+ $_->{hp}/512 + $_->{min}/8192
- ) for @$units;
+ ) for @rows;
}
elsif ($get{order} eq 'cost') {
$_->{order} = (
$_->{gas}*1.5 + $_->{min} + $_->{pop}/8 + $_->{build}/256/8
- ) for @$units;
+ ) for @rows;
}
elsif ($get{order} eq 'attack') {
$_->{order} = $_->{hp} / 1024 + $_->{shield} / 1008 + max(
* ($_->{type} eq 'implosive' ? .96 : 1)
* ($_->{type} eq 'explosive' ? .98 : 1)
} @{ $_->{attack} }
- ) for @$units;
- }
- else {
- $units->[$_]->{order} = $_ for 0 .. $#$units;
+ ) for @rows;
}
+ @rows = sort {$a->{order} <=> $b->{order}} @rows if exists $rows[0]->{order};
}
- my @rows = @{$units};
- @rows = sort {$a->{order} <=> $b->{order}} @rows unless $grouped;
my ($race, $cat) = ('', '');
for (@rows) {