# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
#**************************************************************************/
-package ND::Web::Pages::Raids;
+package NDWeb::Pages::Raids;
use strict;
use warnings;
use ND::Include;
use POSIX;
use CGI qw/:standard/;
-use ND::Web::Include;
+use NDWeb::Include;
-use base qw/ND::Web::XMLPage/;
+use base qw/NDWeb::XMLPage/;
-$ND::Web::Page::PAGES{raids} = __PACKAGE__;
+$NDWeb::Page::PAGES{raids} = __PACKAGE__;
sub process {
my $self = shift;
}
$BODY->param(Message => parseMarkup($raid->{message}));
$BODY->param(LandingTick => $raid->{tick});
- my $targetquery = $DBH->prepare(qq{SELECT r.id, r.planet, size, score, value, p.x,p.y,p.z, race, p.value - p.size*200 -coalesce(c.metal+c.crystal+c.eonium,0)/150 - coalesce(c.structures,(SELECT avg(structures) FROM covop_targets)::int)*1500 AS fleetvalue,(c.metal+c.crystal+c.eonium)/100 AS resvalue, comment
+ my $targetquery = $DBH->prepare(qq{SELECT r.id, r.planet, size, score, value
+ , p.x,p.y,p.z, race
+ , p.value - p.size*200 -
+ COALESCE(ps.metal+ps.crystal+ps.eonium,0)/150 -
+ COALESCE(ss.total ,(SELECT
+ COALESCE(avg(total),0) FROM
+ structure_scans)::int)*1500 AS fleetvalue
+ ,(metal+crystal+eonium)/100 AS resvalue, comment
FROM current_planet_stats p
JOIN raid_targets r ON p.id = r.planet
- LEFT OUTER JOIN covop_targets c ON p.id = c.planet
+ LEFT OUTER JOIN planet_scans ps ON p.id = ps.planet
+ LEFT OUTER JOIN structure_scans ss ON p.id = ss.planet
WHERE r.raid = ?
$noingal
ORDER BY size});
$target{Id} = $target->{id};
$target{Race} = $target->{race};
my $num = pow(10,length($target->{score})-2);
- $target{Score} = ceil($target->{score}/$num)*$num;
+ $target{Score} = "Hidden"; #ceil($target->{score}/$num)*$num;
$num = pow(10,length($target->{value})-2);
- $target{Value} = ceil($target->{value}/$num)*$num;
+ $target{Value} = "Hidden"; #ceil($target->{value}/$num)*$num;
$num = pow(10,length($target->{size})-2);
$target{Size} = floor($target->{size}/$num)*$num;
$num = pow(10,length($target->{fleetvalue})-2);
}
$target{comment} = parseMarkup($target->{comment}) if ($target->{comment});
- my $scans = $DBH->prepare(q{SELECT DISTINCT ON (type) type, tick, scan FROM scans
- WHERE planet = ? AND type ~ 'Unit|Planet|Advanced Unit|.* Analysis' AND tick + 24 > tick() AND scan is not null
- GROUP BY type, tick, scan ORDER BY type ,tick DESC});
- $scans->execute($target->{planet});
- my %scans;
- while (my $scan = $scans->fetchrow_hashref){
- $scans{$scan->{type}} = $scan;
- }
-
- my @scans;
- for my $type ('Planet','Unit','Advanced Unit','Surface Analysis','Technology Analysis'){
- next unless exists $scans{$type};
- my $scan = $scans{$type};
- if ($self->{TICK} - $scan->{tick} > 5){
- $scan->{scan} =~ s{<table( cellpadding="\d+")?>}{<table class="old">};
+ my $unitscans = $DBH->prepare(q{
+ SELECT DISTINCT ON (name) i.id,i.name, i.tick, i.amount
+ FROM fleets i
+ WHERE i.uid = -1
+ AND i.sender = ?
+ AND i.mission = 'Full fleet'
+ GROUP BY i.id,i.tick,i.name,i.amount
+ ORDER BY name,i.tick DESC
+ });
+ $unitscans->execute($target->{planet}) or warn $DBH->errstr;
+ my $ships = $DBH->prepare(q{SELECT ship,amount FROM fleet_ships
+ WHERE id = ? ORDER BY num
+ });
+ my @missions;
+ while (my $mission = $unitscans->fetchrow_hashref){
+ my @ships;
+ $ships->execute($mission->{id});
+ while (my $ship = $ships->fetchrow_hashref){
+ push @ships,$ship;
}
- if ($type eq 'Planet'){
- $target{PlanetScan} = $scan->{scan};
- next;
- }
- push @scans,{Scan => $scan->{scan}};
+ push @ships, {ship => 'No', amount => 'ships'} if @ships == 0;
+ $mission->{ships} = \@ships;
+ $mission->{amount} =~ s/(^[-+]?\d+?(?=(?>(?:\d{3})+)(?!\d))|\G\d{3}(?=\d))/$1,/g; #Add comma for ever 3 digits, i.e. 1000 => 1,000
+ delete $mission->{id};
+ push @missions,$mission;
}
- $target{Scans} = \@scans;
+ $target{missions} = \@missions;
+ my $query = $DBH->prepare(q{SELECT DISTINCT ON(rid) tick,category,name,amount
+ FROM planet_data pd JOIN planet_data_types pdt ON pd.rid = pdt.id
+ WHERE pd.id = $1 AND rid in (1,2,3,4,5,6,9,10,14,15,16,17,18)
+ ORDER BY rid,tick DESC
+ });
+ $query->execute($target->{planet});
+ while (my $data = $query->fetchrow_hashref){
+ $data->{amount} =~ s/(^[-+]?\d+?(?=(?>(?:\d{3})+)(?!\d))|\G\d{3}(?=\d))/$1,/g; #Add comma for ever 3 digits, i.e. 1000 => 1,000
+ $target{$data->{category}.$data->{name}} = $data->{amount};
+ }
my @roids;
my @claims;
$size -= $roids;
my $xp = 0;
if ($planet){
- $xp = pa_xp($roids,$planet->{score},$planet->{value},$target{Score},$target{Value});
+ $xp = pa_xp($roids,$planet->{score},$planet->{value},$target->{score},$target->{value});
}
push @roids,{Wave => $i, Roids => $roids, XP => $xp};
if ($self->{AJAX}){