+++ /dev/null
-#!/usr/bin/perl -w
-
-# This specific file is hereby placed in the public domain, or nearest
-# equivalent in law, by me, Ian Jackson. 5th July 2009.
-
-use IO::File;
-use strict (qw(vars));
-
-use Commods;
-
-our ($debug)= 0;
-
-$debug=1 if @ARGV;
-
-parse_pctb_commodmap();
-
-our %stallkinds= qw(A Apothecary
- D Distilling
- F Furnishing
- I Ironworking
- S Shipbuilding
- T Tailor
- W Weaving);
-
-sub getline ($) {
- my ($w)= @_;
- $!=0; my $l= <STDIN>; die $! unless defined $l;
- die $! if STDIN->error;
- die unless chomp $l;
- print "GOT FOR $w LINE [$l]\n"
- if $debug;
- return $l;
-}
-
-sub getint ($) {
- my ($w)= @_;
- my $b;
- my $t= tell STDIN; $t>=0 or die $!;
- my $r= read STDIN,$b,2; die $! if STDIN->error;
- die unless $r==2;
- my $v= scalar unpack "v", $b;
- printf "GOT AT 0x%x INT FOR %s VALUE %d 0x%x\n", $t, $w, $v, $v
- if $debug;
- return $v;
-}
-
-sub inmap($\@$) {
- my ($what,$ary,$ix) = @_;
- my $got= $ary->[$ix];
- return $got if defined $got;
- die "$what $ix ?";
-}
-
-
-printf "# Version: \"%s\"\n", getline("version");
-our $nstalls= getline("nstalls")+0;
-our @stalls;
-
-while (@stalls < $nstalls) {
- $_= getline("stall name ".(@stalls+1));
- if (s/\^([A-Z])$//) {
- my $kind= $1;
- my $sk= $stallkinds{$kind};
- die "kind $kind in $_ ?" unless defined $sk;
- $_ .= "'s $sk Stall";
- }
- push @stalls, $_;
-}
-unshift @stalls, undef;
-
-$|=1;
-
-foreach my $bs qw(Buy Sell) {
- my $alloffers_want= getint("Buy ncommods");
- my $alloffers_done=0;
- while ($alloffers_done < $alloffers_want) {
- my $commodix= getint("Buy $alloffers_done/$alloffers_want commodix");
- my $offers= getint("Buy $commodix offers");
- my $offernum;
- for ($offernum=0; $offernum<$offers; $offernum++) {
- my $stallix= getint("Buy $commodix $offernum stallix");
- my $price= getint("Buy $commodix $offernum price");
- my $qty= getint("Buy $commodix $offernum qty");
- printf("%s\t%s\t%s",
- $bs,
- inmap('commod',@pctb_commodmap,$commodix),
- inmap('stall',@stalls,$stallix)) or die $!;
- if ($bs eq 'Sell') { print "\t\t" or die $!; }
- printf("\t%d\t%d", $price, $qty) or die $!;
- if ($bs eq 'Buy') { print "\t\t" or die $!; }
- print "\n" or die $!;
- $alloffers_done++;
- die if $alloffers_done > $alloffers_want;
- }
- }
-}
-
-my $r= read STDIN,$b,1;
-STDIN->error and die $!;
-STDIN->eof or die;
-$b and die;
-
-
-
-
-#
-#
-#Version number (3 ascii digits) followed
-#by LF (i.e. 0x0A). Current version is\
-# 005
-#
-# 0000 30 30 35 0a 005.
-#
-## of shops/stalls (in ascii) + LF
-# 0000 31 0a 1.
-#
-#list of shop names in ascii (without the
-#possessive part and by specifying the \
-#shop type in an abbreviated way which is
-#mentioned below). The shop names are
-#separated \ by line feeds (0x0A). To
-#specify the shop type append the "^"
-#character and then \ one of the
-#following characters depending upon the
-#shop type:
-# Apothecary = A
-# Distillery = D
-# Furnisher = F
-# Iron Monger = I
-# Shipyard = S
-# Tailor = T
-# Weavery = W
-#
-# 0000 4f 6c 64 20 49 72 6f 6e 73 69 Ol d Ironsi
-# 0010 64 65 73 0a des.
-#
-## of buy offers (in binary)
-# 0010 05 00
-#
-#commodIndex offerCount buy 0/5
-# 0010 0a 00 01 00 Grog x 1
-#[shopIndex val amt]
-# 0010 01 00 1d 00 75 00 OI 29 qty 75
-#
-#commodIndex offerCount buy 1/5
-# 0020 0b 00 01 00 Fine x 1
-#[shopIndex val amt]... (all in binar\ y)
-# 0020 01 00 33 00 e9 03 OI 51 qty 0x3e9
-#
-#commodIndex offerCount buy 2/5
-# 0020 0c 00 01 00 Small shot x 1
-#[shopIndex val amt]
-# 0020 01 00 OI
-# 0030 0f 00 e9 03 15 qty 0x3e9
-#
-#commodIndex offerCount buy 3/5
-# 0030 0d 00 01 00 Medium shot x 1
-#[shopIndex val amt]
-# 0030 01 00 1c 00 e9 03 OI 28 qty 0x3e9
-#
-#commodIndex offerCount buy 4/5
-# 0030 0e 00 Large shot
-# 0040 01 00 x 1
-#[shopIndex val amt]
-# 0040 01 00 26 00 e9 03 OI 38 0x3e9
-#
-#
-## of sell offers (in binary)
-# 0040 04 00
-#
-#commodIndex offerCount sell 0/4
-# 0040 09 00 01 00 Swill x 1
-#[shopIndex val amt]
-# 0040 01 00 OI
-# 0050 17 00 e8 03 23 0x3e8
-#commodIndex offerCount sell 1/4
-# 0050 0a 00 01 00 Grog x 1
-#[shopIndex val amt]
-# 0050 01 00 1e 00 73 03 OI 30 qty 0x373
-#commodIndex offerCount sell 2/4
-# 0050 0c 00 Small shot
-# 0060 01 00 x 1
-#[shopIndex val amt]
-# 0060 01 00 10 00 07 00 OI 16 qty 7
-#commodIndex offerCount sell 3/4
-# 0060 0d 00 01 00 Medium shot x 1
-#[shopIndex val amt]
-# 0060 01 00 1e 00 OI 30
-# 0070 02 00 qty 2
-#