<h3><a name="posinclass">Locating commodities in the YPP client UI</a></h3>
In the Voyage Trading Plan, YARRG indicates after the commodity name
-where in the YPP commodity UI each commodity can be found. This is
-done by showing one of the following indications in the table:
-<blockquote>
- TT, T, M, B, BB
-</blockquote>
+where in the YPP commodity UI each commodity can be found. First
+comes the initial letter of the category:
+% my $dbh= dbw_connect('Midnight');
+% my $getclasses= $dbh->prepare(
+% "SELECT commodclass FROM commodclasses ORDER BY commodclass");
+% $getclasses->execute();
+<%
+ join '; ', map { $_->[0] =~ m/^./ or die; "<strong>$&</strong>$'" }
+ @{ $getclasses->fetchall_arrayref() }
+%>.
+<p>
+Then, if applicable, follows one of the following indications:
+<% join ', ', map { "<strong>$_</strong>" } qw(tt t m b bb) %>
indicating whether the commodity is in the top, 2nd, middle,
2nd-to-last or bottom fifth of the list of commodities of the same
-class, respectively. For example,
+class, respectively.
+<p>
+For example,
<blockquote>
<table><tr>
<td>Fine pink cloth
<td><div class=mouseover
- title="Fine pink cloth is under Cloth, commodity 14 of 55">T</div>
+ title="Fine pink cloth is under Cloth, commodity 14 of 55">C t</div>
</table>
</blockquote>
indicates that Fine pink cloth can be found under Cloth,
</blockquote>
<p>
-Note that the exact location of the commodity may vary because the
-system only considers the list of all possible commodities, not the
-list of actual offers at the island in question.
+The position indicator (tt, t, etc.) isn't shown for very small
+categories.
+
+The exact location of the commodity in the actual game
+client may vary because YARRG only considers the list of all possible
+commodities, not the list of actual offers at the island in question.
-<p>
Also, not all commodities are always completely categorised or
-ordered; we are working to add the additional data. Uncategorised or
-unordered commodities don't have a position indicator (TT, T etc.)
-next to them.
+ordered; we are working to add the additional data
</div>
<& footer &>
} unless $$todo;
$$todo->{'commodname'}= $f->{'commodname'};
$$todo->{'posinclass'}= '';
- if ($f->{'posinclass'}) {
- my $findclass= $dbh->prepare(<<END);
+ my $incl= $f->{'posinclass'};
+
+ my $findclass= $dbh->prepare(<<END);
SELECT commodclass, maxposinclass FROM commodclasses WHERE commodclassid = ?
END
- $findclass->execute($f->{'commodclassid'});
- my $classinfo= $findclass->fetchrow_hashref();
- if ($classinfo->{'maxposinclass'} >= 8) {
+ $findclass->execute($f->{'commodclassid'});
+ my $classinfo= $findclass->fetchrow_hashref();
+ if ($classinfo) {
+ my $clname= $classinfo->{'commodclass'};
+ my $desc= encode_entities(sprintf "%s is under %s",
+ $f->{'commodname'}, $clname);
+ my $abbrev= substr($clname,0,1);
+ if ($incl) {
my $maxpic= $classinfo->{'maxposinclass'};
- my $inpic= $f->{'posinclass'};
- my @tmbs= qw(TT T M B BB);
- my $tmbi= ($inpic+0.5)*$#tmbs/$maxpic;
- my $desc= (sprintf "%s is under %s,".
- " commodity %d of %d",
- $f->{'commodname'},
- $classinfo->{'commodclass'},
- $inpic, $maxpic);
- $$todo->{'posinclass'}=
- "<div class=mouseover title=\"$desc\">$tmbs[$tmbi]</div>";
+ $desc.= (sprintf ", commodity %d of %d",
+ $incl, $maxpic);
+ if ($classinfo->{'maxposinclass'} >= 8) {
+ my @tmbs= qw(tt t m b bb);
+ my $tmbi= ($incl+0.5)*$#tmbs/$maxpic;
+ $abbrev.= " ".$tmbs[$tmbi];
+ }
}
+ $$todo->{'posinclass'}=
+ "<div class=mouseover title=\"$desc\">"
+ .$abbrev."</div>";
}
$$todo->{'stallname'}= $stallname;
$$todo->{Price}= $price;