chiark / gitweb /
Show commod class in voyage plan too
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Fri, 13 Nov 2009 12:50:07 +0000 (12:50 +0000)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Fri, 13 Nov 2009 12:50:07 +0000 (12:50 +0000)
yarrg/web/docs
yarrg/web/routetrade

index 27ee3d5aae737ac5d1125b9b15c066a24cc2db28..5c058bdde9232372a7f7d066ccb4e7708d313c00 100755 (executable)
@@ -199,19 +199,29 @@ fact be possible.  In practice this is unlikely to be a problem!
 <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&nbsp;&nbsp;
 <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,
@@ -223,15 +233,15 @@ Fine pink cloth is under Cloth, commodity 14 of 55
 </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 &>
index 08bad334569ea32178ec8e6e7d3345bf4d8060e5..72e9bf7a8a96cf706e4557d6fd26cadfb2dfd2e2 100644 (file)
@@ -693,25 +693,31 @@ Generated by YARRG at <strong><%
                } 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;