sc: cleanup row ordering code
authorMischa POSLAWSKY <perl@shiar.org>
Sat, 21 Apr 2018 18:21:26 +0000 (20:21 +0200)
committerMischa POSLAWSKY <perl@shiar.org>
Thu, 10 May 2018 14:49:06 +0000 (16:49 +0200)
sc.plp

diff --git a/sc.plp b/sc.plp
index a282ef4007ebc9e4f74afcd35e9e7fe76f154e91..3a7f36bd365da00c266a556d7a3c0035cb9551de 100644 (file)
--- a/sc.plp
+++ b/sc.plp
@@ -338,6 +338,7 @@ sub showrangeint {
                );
        }
 
+       my @rows = @{$units};
        my $grouped = 1;  # race headers
        if (exists $get{order}) {
                $grouped = 0;
@@ -346,12 +347,12 @@ sub showrangeint {
                        $_->{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(
@@ -362,14 +363,10 @@ sub showrangeint {
                                        * ($_->{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) {