]> ruin.nu Git - ndwebbie.git/commitdiff
Calc alert and show government on cov op page
authorMichael Andreen <harv@ruin.nu>
Mon, 7 Apr 2008 21:03:38 +0000 (23:03 +0200)
committerMichael Andreen <harv@ruin.nu>
Mon, 7 Apr 2008 21:03:38 +0000 (23:03 +0200)
NDWeb/Pages/CovOp.pm
database/covops2.sql [new file with mode: 0644]
templates/covop.tmpl

index ce6a417f17881bd22935a5a93070a7d142d7fa09..16a429bc06304b845518dd26647cf1d827dd5607 100644 (file)
@@ -46,7 +46,7 @@ sub render_body {
        $show = '' if defined param('show') && param('show') eq 'all';
        if (defined param('covop') && param('covop') =~ /^(\d+)$/){
                my $update = $DBH->prepare(q{INSERT INTO covop_attacks (uid,id,tick) VALUES(?,?,tick())});
-               $update->execute($ND::UID,$1);
+               $update->execute($ND::UID,$1) or warn $DBH->errstr;
        }
 
        my $list = '';
@@ -58,18 +58,20 @@ sub render_body {
        }else{
                $where = qq{AND MaxResHack > 130000
                $show
-               ORDER BY COALESCE(seccents::float/structures*100,0) ASC,MaxResHack DESC,metal+crystal+eonium DESC};
+               ORDER BY minalert ASC,MaxResHack DESC};
        }
        $BODY->param(List => $list);
 
        my $query = $DBH->prepare(qq{SELECT id, coords, metal, crystal, eonium
-               , seccents::float/structures*100 AS seccents, distorters
+               , covop_alert(seccents,structures,gov,0) AS minalert 
+               , covop_alert(seccents,structures,gov,50) AS maxalert 
+               , distorters,gov
                , MaxResHack,co.tick AS lastcovop
                FROM (SELECT p.id,coords(x,y,z), metal,crystal,eonium,
-                       seccents,NULLIF(ss.total,0) AS structures,distorters
+                       seccents,NULLIF(ss.total::integer,0) AS structures,distorters
                        ,max_bank_hack(metal,crystal,eonium,p.value
                                ,(SELECT value FROM current_planet_stats WHERE id = ?)) AS MaxResHack
-                       , planet_status, relationship
+                       , planet_status, relationship,gov
                        FROM current_planet_stats p
                                LEFT OUTER JOIN planet_scans ps ON p.id = ps.planet
                                LEFT OUTER JOIN structure_scans ss ON p.id = ss.planet
@@ -77,8 +79,8 @@ sub render_body {
                        LEFT OUTER JOIN (SELECT id,max(tick) AS tick FROM covop_attacks GROUP BY id) co USING (id)
                WHERE (metal IS NOT NULL OR seccents IS NOT NULL)
                $where
-       });
-       $query->execute($self->{PLANET});
+       }) or warn $DBH->errstr;
+       $query->execute($self->{PLANET}) or warn $DBH->errstr;
 
        my @targets;
        while (my $target = $query->fetchrow_hashref){
diff --git a/database/covops2.sql b/database/covops2.sql
new file mode 100644 (file)
index 0000000..9c3eed3
--- /dev/null
@@ -0,0 +1,11 @@
+CREATE OR REPLACE FUNCTION covop_alert(secs integer, strucs integer, gov governments, population integer) RETURNS integer
+    AS $_$
+       SELECT (70*(1.0+LEAST(COALESCE($1::float/$2,$4),0.30)*2 +
+               (CASE $3 
+                       WHEN 'Dic' THEN 0.20
+                       WHEN 'Feu' THEN -0.20
+                       WHEN 'Uni' THEN -0.10
+                       ELSE 0
+               END) + $4/100.0))::integer;
+$_$
+    LANGUAGE sql IMMUTABLE;
index 8c7ec877169e1eeafb3293f1bf55c9f495404324..2a80247818c8b96e54d36cb95ab9fb03d5a6ad41 100644 (file)
@@ -1,6 +1,6 @@
 <table>
        <tr>
-       <th>Coords</th><th>Metal</th><th>Crystal</th><th>Eonium</th><th>% Sec Centres</th><th>Dists</th><th>Max (15 agents)</th><th>Last covop (tick)</th>
+       <th>Coords</th><th>Metal</th><th>Crystal</th><th>Eonium</th><th>Gov</th><th>Alert</th><th>Dists</th><th>Max (15 agents)</th><th>Last covop (tick)</th>
        </tr>
        <TMPL_LOOP Targets>
        <tr align="center" class="<TMPL_IF __odd__>odd<TMPL_ELSE>even</TMPL_IF>">
@@ -8,7 +8,8 @@
        <td><TMPL_VAR NAME=Metal></td>
        <td><TMPL_VAR NAME=Crystal></td>
        <td><TMPL_VAR NAME=Eonium></td>
-       <td><TMPL_VAR NAME=SecCents></td>
+       <td><TMPL_VAR NAME=Gov></td>
+       <td><TMPL_VAR NAME=MinAlert> - <TMPL_VAR NAME=MaxAlert></td>
        <td><TMPL_VAR NAME=Distorters></td>
        <td><TMPL_VAR NAME=MaxResHack></td>
        <td><TMPL_VAR NAME=LastCovOp></td>