--- /dev/null
+<%doc>
+
+ This is part of the YARRG website. YARRG is a tool and website
+ for assisting players of Yohoho Puzzle Pirates.
+
+ Copyright (C) 2009 Ian Jackson <ijackson@chiark.greenend.org.uk>
+ Copyright (C) 2009 Clare Boothby
+
+ YARRG's client code etc. is covered by the ordinary GNU GPL (v3 or later).
+ The YARRG website is covered by the GNU Affero GPL v3 or later, which
+ basically means that every installation of the website will let you
+ download the source.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Affero General Public License as
+ published by the Free Software Foundation, either version 3 of the
+ License, or (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Affero General Public License for more details.
+
+ You should have received a copy of the GNU Affero General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+ Yohoho and Puzzle Pirates are probably trademarks of Three Rings and
+ are used without permission. This program is not endorsed or
+ sponsored by Three Rings.
+
+
+ This Mason component generates entry fields for route planning
+ advanced parameters (capacity limits, etc).
+
+ The results are returned in $routeparams:
+ ${ $routeparams->{EmsgRef} }
+ $routeparams->{LossPerLeaguePct}
+ $routeparams->{MaxMass}
+ $routeparams->{MaxVolume}
+ $routeparams->{MaxCapital}
+
+
+</%doc>
+<%args>
+$qa
+$dbh
+$routeparams
+</%args>
+
+<table><tr><td>
+
+Vessel or capacity:
+<&| qtextstring, qa => $qa, dbh => $dbh, prefix => 'cs',
+ thingstring => 'capacitystring', emsgstore => $routeparams->{EmsgRef},
+ helpref => 'capacity',
+ onresults => sub {
+ ($routeparams->{MaxMass}, $routeparams->{MaxVolume}) = @_;
+ }
+ &>
+ size=40
+</&>
+
+<td>
+
+
+
+<td>
+Expected losses:
+
+<&| qtextstring, qa => $qa, dbh => $dbh, prefix => 'll',
+ thingstring => 'lossperleague', emsgstore => $routeparams->{EmsgRef},
+ helpref => 'losses',
+ onresults => sub { ($routeparams->{LossPerLeaguePct})= @_; }
+ &>
+ size=9
+</&>
+
+</table>
+<table><tr>
+
+<td>Available capital:
+
+<&| qtextstring, qa => $qa, dbh => $dbh, prefix => 'ac',
+ thingstring => 'capitalstring', emsgstore => $routeparams->{EmsgRef},
+ helpref => 'capital',
+ onresults => sub { ($routeparams->{MaxCapital})= @_; }
+ &>
+ size=9
+</&>
+
+</table>
&>
%#---------- textboxes, user enters details as strings ----------
+% my $routeparams= { EmsgRef => \$emsg };
% if (!$qa->{Dropdowns}) {
<strong>Advanced options - you may leave these blank:</strong>
<p>
-<table><tr><td>
-Vessel or capacity:
-<&| qtextstring, qa => $qa, dbh => $dbh, prefix => 'cs',
- thingstring => 'capacitystring', emsgstore => \$emsg,
- helpref => 'capacity',
- onresults => sub { ($max_mass,$max_volume) = @_; }
- &>
- size=40
-</&>
-
-<td>
-
-
-
-<td>
-Expected losses:
-
-<&| qtextstring, qa => $qa, dbh => $dbh, prefix => 'll',
- thingstring => 'lossperleague', emsgstore => \$emsg,
- helpref => 'losses',
- onresults => sub { ($lossperleaguepct)= @_; }
- &>
- size=9
-</&>
-
-</table>
-<table><tr>
-
-<td>Available capital:
-
-<&| qtextstring, qa => $qa, dbh => $dbh, prefix => 'ac',
- thingstring => 'capitalstring', emsgstore => \$emsg,
- helpref => 'capital',
- onresults => sub { ($capital)= @_; }
- &>
- size=9
-</&>
-
-</table>
+<& enter_advrouteopts, qa=>$qa, dbh=>$dbh, routeparams=>$routeparams &>
% } #---------- end of dropdowns, now common middle of page code ----------
islandids => \@islandids,
archipelagoes => \@archipelagoes,
qa => $qa,
- max_mass => $max_mass,
- max_volume => $max_volume,
- lossperleaguepct => $lossperleaguepct,
- max_capital => $capital
+ routeparams => $routeparams
&>
% }
</form>
@islandids
@archipelagoes
$qa
-$max_mass
-$max_volume
-$lossperleaguepct
-$max_capital
+$routeparams
</%args>
<&| script &>
da_pageload= Date.now();
<%perl>
-my $loss_per_league= defined $lossperleaguepct ? $lossperleaguepct*0.01 : 1e-7;
+my $loss_per_league= defined $routeparams->{LossPerLeaguePct}
+ ? $routeparams->{LossPerLeaguePct}*0.01 : 1e-7;
my $loss_per_delay_slot= 1e-8;
my $now= time;
}
my $applylimit= sub {
- my ($mv, $max, $f2val) = @_;
+ my ($mv, $f2val) = @_;
+ my $max= $routeparams->{"Max".ucfirst $mv};
$max= 1e9 unless defined $max;
#print " DEFINED MAX $mv $max ";
$cplex .= "
" <= $max";
};
- $applylimit->('mass', $max_mass, sub { $_[0]{'unitmass'} *1e-3 });
- $applylimit->('volume', $max_volume, sub { $_[0]{'unitvolume'}*1e-3 });
- $applylimit->('capital',$max_capital,sub { $_[0]{'org_price'} });
+ $applylimit->('mass', sub { $_[0]{'unitmass'} *1e-3 });
+ $applylimit->('volume', sub { $_[0]{'unitvolume'}*1e-3 });
+ $applylimit->('capital', sub { $_[0]{'org_price'} });
$cplex.= "\n";
}
$totals .= sprintf "%g %s", ($max-$got), $units;
$delim= ', ';
};
- $domv->($max_mass, $sail_total[$i]{mass}, 'kg');
- $domv->($max_volume, $sail_total[$i]{volume}, 'l');
+ $domv->($routeparams->{MaxMass}, $sail_total[$i]{mass}, 'kg');
+ $domv->($routeparams->{MaxVolume}, $sail_total[$i]{volume}, 'l');
$totals .= ".\n";
}
$show_total_now->($totals);