]> ruin.nu Git - ndwebbie.git/commitdiff
initial implementation of def mission tracking
authorMichael Andreen <harv@ruin.nu>
Sun, 21 Jan 2007 17:26:59 +0000 (17:26 +0000)
committerMichael Andreen <harv@ruin.nu>
Sun, 21 Jan 2007 17:26:59 +0000 (17:26 +0000)
ND/Web/Pages/Calls.pm
ND/Web/Pages/LaunchConfirmation.pm
templates/calls.tmpl

index 526d4903327b4e59d6100251c1330423aefa7355..c9a51f7acf00479ac2ac0ba3a876ca56c0186584 100644 (file)
@@ -40,7 +40,7 @@ sub render_body {
        my $call;
        if (defined param('call') && param('call') =~ /^(\d+)$/){
                my $query = $DBH->prepare(q{
-                       SELECT c.id, coords(p.x,p.y,p.z), c.landing_tick, c.info, covered, open, dc.username AS dc, u.defense_points,c.member
+                       SELECT c.id, coords(p.x,p.y,p.z), c.landing_tick, c.info, covered, open, dc.username AS dc, u.defense_points,c.member,u.planet
                        FROM calls c 
                        JOIN users u ON c.member = u.uid
                        LEFT OUTER JOIN users dc ON c.dc = dc.uid
@@ -161,6 +161,28 @@ sub render_body {
                }
                $BODY->param(Fleets => \@fleets);
 
+
+               $fleets = $DBH->prepare(q{
+                       SELECT username, id FROM fleets f JOIN users u USING (uid) WHERE target = $1 and landing_tick = $2
+                       AND back = landing_tick + eta - 1
+                       });
+               $fleets->execute($call->{planet},$call->{landing_tick}) or $ND::ERROR .= p $DBH->errstr;
+               my @defenders;
+               $i = 0;
+               while (my $fleet = $fleets->fetchrow_hashref){
+                       $ships->execute($fleet->{id});
+                       my @ships;
+                       while (my $ship = $ships->fetchrow_hashref){
+                               $i++;
+                               $ship->{ODD} = $i % 2;
+                               push @ships,$ship;
+                       }
+                       $fleet->{Ships} = \@ships;
+                       delete $fleet->{id};
+                       push @defenders, $fleet;
+               }
+               $BODY->param(Defenders => \@defenders);
+
                my $attackers = $DBH->prepare(q{
                        SELECT coords(p.x,p.y,p.z), p.planet_status, p.race,i.eta,i.amount,i.fleet,i.shiptype,p.relationship,p.alliance,i.id
                        FROM incomings i
index 79ce12fbb2cb6e50d02932abe069eacde3dbbae7..206f7fe4d4b07a6b0c649f9d8e732c625b14c625 100644 (file)
@@ -47,7 +47,8 @@ sub render_body {
                        JOIN raids r ON t.raid = r.id
                        WHERE c.uid = ? AND r.tick+c.wave-1 = ? AND t.planet = ?
                        AND r.open AND not r.removed});
-               my $finddefensetarget = $DBH->prepare(q{SELECT NULL});
+               my $finddefensetarget = $DBH->prepare(q{SELECT c.id FROM calls c JOIN users u ON c.member = u.uid WHERE u.planet = $1 AND c.landing_tick = $2});
+               my $informDefChannel = $DBH->prepare(q{INSERT INTO defense_requests (uid,message) VALUES (?,?)});
                my $addattackpoint = $DBH->prepare('UPDATE users SET attack_points = attack_points + 1 WHERE uid = ?');
                my $launchedtarget = $DBH->prepare('UPDATE raid_claims SET launched = True WHERE uid = ? AND target = ? AND wave = ?');
                my $addfleet = $DBH->prepare(qq{INSERT INTO fleets (uid,target,mission,landing_tick,fleet,eta,back) VALUES (?,?,?,?,(SELECT max(fleet)+1 from fleets WHERE uid = ?),?,?)});
@@ -85,14 +86,15 @@ sub render_body {
                        my $findtarget = $finddefensetarget;
                        if ($mission eq 'Attack'){
                                $findtarget = $findattacktarget;
+                               $findtarget->execute($ND::UID,$tick,$planet_id) or $ND::ERROR .= p $DBH->errstr;;
                        }elsif ($mission eq 'Defend'){
                                $findtarget = $finddefensetarget;
+                               $findtarget->execute($planet_id,$tick) or $ND::ERROR .= p $DBH->errstr;;
                        }
 
-                       $findtarget->execute($ND::UID,$tick,$planet_id) or $ND::ERROR .= p $DBH->errstr;;
 
                        if ($findtarget->rows == 0){
-                               $mission{Warning} = "YOU DON'T HAVE A TARGET WITH THAT LANDING TICK";
+                               $mission{Warning} = p b 'No matching target!';
                        }elsif ($mission eq 'Attack'){
                                my $claim = $findtarget->fetchrow_hashref;
                                if ($claim->{launched}){
@@ -103,6 +105,9 @@ sub render_body {
                                        $mission{Warning} = "OK:$claim->{target},$claim->{wave},$claim->{launched}";
                                        log_message $ND::UID,"Gave attack point for confirmation on $mission mission to $x:$y:$z, landing tick $tick";
                                }
+                       }elsif ($mission eq 'Defend'){
+                               my $call = $findtarget->fetchrow_hashref;
+                               $informDefChannel->execute($ND::UID,"Def mission sent to call $call->{id} ($x:$y:$z tick $tick)  https://nd.ruin.nu/calls?call=$call->{id}") or $ND::ERROR .= p $DBH->errstr;
                        }
 
                        $addfleet->execute($ND::UID,$planet_id,$mission,$tick,$ND::UID,$eta,$tick+$eta-1) or $error .= '<p>'.$DBH->errstr.'</p>';
index 9fbbe6c83840bd5239c3556d32b543f7f3cbb5ed..32a764bdb8869362356976184175aeba8609d91b 100644 (file)
        </div>
        </TMPL_LOOP Fleets>
        </fieldset>
+       <fieldset><legend>Defenders</legend>
+       <TMPL_LOOP Defenders>
+       <div class="leftinfo">
+               <p>Member: <TMPL_VAR NAME=Username></p>
+               <table>
+                       <tr><th>Ship</th><th>Amount</th></tr>
+                       <TMPL_LOOP Ships>
+                               <tr class="<TMPL_IF ODD>odd<TMPL_ELSE>even</TMPL_IF>">
+                                       <td><TMPL_VAR NAME=Ship></td><td><TMPL_VAR NAME=Amount></td>
+                               </tr>
+                       </TMPL_LOOP>
+               </table>
+       </div>
+       </TMPL_LOOP>
+       </fieldset>
        <p>Userful information. Change?<input type="checkbox" name="cinfo"/></p>
        <textarea rows="15" cols="80" name="info"><TMPL_VAR NAME=Info></textarea>
        <p>