chiark
/
gitweb
/
~yarrgweb
/
ypp-sc-tools.main.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix circular routes (including arbitrage complications)
[ypp-sc-tools.main.git]
/
yarrg
/
web
/
routetrade
diff --git
a/yarrg/web/routetrade
b/yarrg/web/routetrade
index 9fde77e7aa6783104b92fd80d636a0c0c45a970d..80fc2b13d5e8cf78f5ba1c61d0310e5de0280318 100644
(file)
--- a/
yarrg/web/routetrade
+++ b/
yarrg/web/routetrade
@@
-85,10
+85,12
@@
foreach my $src_i (0..$#islandids) {
if ($specific && !$confusing &&
# With a circular route, do not carry goods round the loop
if ($specific && !$confusing &&
# With a circular route, do not carry goods round the loop
- !($src_i==0 && $dst_i==$#islandids &&
+ !(($src_i==0 || $src_i==$#islandids) &&
+ $dst_i==$#islandids &&
$src_isle == $islandids[$dst_i])) {
if ($islandpair{$src_isle,$dst_isle}) {
$confusing= 1;
$src_isle == $islandids[$dst_i])) {
if ($islandpair{$src_isle,$dst_isle}) {
$confusing= 1;
+print "confusing $src_i $src_isle $dst_i $dst_isle\n";
} else {
$islandpair{$src_isle,$dst_isle}=
[ $src_i, $dst_i ];
} else {
$islandpair{$src_isle,$dst_isle}=
[ $src_i, $dst_i ];
@@
-580,6
+582,11
@@
Sail to <% $islandname |h %>
next if $f->{Suppress};
next unless $f->{"${od}_id"} == $islandids[$i];
next unless $f->{OptQty};
next if $f->{Suppress};
next unless $f->{"${od}_id"} == $islandids[$i];
next unless $f->{OptQty};
+ my $arbitrage= $f->{'org_id'} == $f->{'dst_id'};
+ my $loop= $islandids[0] == $islandids[-1] &&
+ ($i==0 || $i==$#islandids);
+ next if $loop and ($arbitrage ? $i :
+ !!$i == !!($od eq 'org'));
my $price= $f->{"${od}_price"};
my $stallname= $f->{"${od}_stallname"};
my $todo= \$flowlists{$od}{
my $price= $f->{"${od}_price"};
my $stallname= $f->{"${od}_stallname"};
my $todo= \$flowlists{$od}{
@@
-600,9
+607,7
@@
Sail to <% $islandname |h %>
$$todo->{Qty} += $f->{OptQty};
$$todo->{Total}= $$todo->{Price} * $$todo->{Qty};
$$todo->{Stalls}= $f->{"${od}Stalls"};
$$todo->{Qty} += $f->{OptQty};
$$todo->{Total}= $$todo->{Price} * $$todo->{Qty};
$$todo->{Stalls}= $f->{"${od}Stalls"};
- if ($f->{'org_id'} == $f->{'dst_id'}) {
- $$todo->{"${od}Arbitrage"}= 1;
- }
+ $$todo->{"${od}Arbitrage"}= 1 if $arbitrage;
}
}
}
}