X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~yarrgweb/git?p=ypp-sc-tools.web-live.git;a=blobdiff_plain;f=pctb%2Fdecode-pctb-marketdata;fp=pctb%2Fdecode-pctb-marketdata;h=0000000000000000000000000000000000000000;hp=f7af70dbf200104883e6b9ce392bd45ca5dd9773;hb=c68fb80a6bbf7acbcac4b2cb2143f5fea745cd2b;hpb=b9cce976550d000f15e5a8f2b690740bdae1e468 diff --git a/pctb/decode-pctb-marketdata b/pctb/decode-pctb-marketdata deleted file mode 100755 index f7af70d..0000000 --- a/pctb/decode-pctb-marketdata +++ /dev/null @@ -1,190 +0,0 @@ -#!/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= ; 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 -#