From 208ca9059b4d502497799a627c7b4541de1a4101 Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Mon, 7 Sep 2009 17:55:53 +0100 Subject: [PATCH] Vessel capacities --- yarrg/Commods.pm | 23 +++++++++++++++++++++++ yarrg/db-idempotent-populate | 25 +++++++++++++++++++++++++ yarrg/source-info.txt | 18 ++++++++++++++++++ 3 files changed, 66 insertions(+) diff --git a/yarrg/Commods.pm b/yarrg/Commods.pm index 860510e..3ecb804 100644 --- a/yarrg/Commods.pm +++ b/yarrg/Commods.pm @@ -36,6 +36,7 @@ BEGIN { @EXPORT = qw(&parse_info_clientside &fetch_with_rsync &parse_info_serverside &parse_info_serverside_ocean %oceans %commods %clients %routes %route_mysteries + %vessels %shotname2damage &parse_pctb_commodmap %pctb_commodmap @pctb_commodmap &get_our_version &check_tsv_line &pipethrough_prep &pipethrough_run @@ -54,6 +55,10 @@ our %oceans; # eg $oceans{'Midnight'}{'Ruby'}{'Eta Island'}= $sources; our %clients; # eg $clients{'ypp-sc-tools'}= [ qw(last-page) ]; our %routes; # eg $routes{'Midnight'}{'Orca'}{'Tinga'}= $sources NB abbrevs! our %route_mysteries; # eg $route_mysteries{'Midnight'}{'Norse'}= 3 +our %vessels; # eg $vessels{'War Brig'}{Shot}='medium' + # $vessels{'War Brig'}{Volume}= 81000 + # $vessels{'War Brig'}{Mass}= 54000 +our %shotname2damage; # eg $shotname2damage{'medium'}= 3; # $sources = 's[l]b'; # 's' = Special Circumstances; 'l' = local ; B = with Bleach @@ -98,6 +103,24 @@ sub parse_info1 ($$) { $oceans{$ocean}{$arch}{$_} .= $src; }; }); + } elsif (m/^vessels$/) { + @ctx= (sub { + m/^ ([A-Z][a-z\ ]+[a-z]) \t\s* + (small|medium|large) \t\s* + (\d+) \s*\t\s* + (\d+) $/x + or die; + $vessels{$1}= { + Shot => $2, + Volume => $3, + Mass => $4, + }; + }); + } elsif (m/^shot$/) { + @ctx= (sub { + m/^ ([a-z]+) \s+ (\d+) $/x or die; + $shotname2damage{$1}= $2; + }); } elsif (m/^routes (\w+)$/) { my $ocean= $1; @ctx= (sub { diff --git a/yarrg/db-idempotent-populate b/yarrg/db-idempotent-populate index 143e2ef..43a2f0d 100755 --- a/yarrg/db-idempotent-populate +++ b/yarrg/db-idempotent-populate @@ -102,6 +102,13 @@ db_doall(<commit; } +#---------- vessel types ---------- +{ + my $idempotent= $dbh->prepare(<<'END') + INSERT OR REPLACE INTO vessels (name, shot, mass, volume) + VALUES (?,?,?,?) +END + ; + foreach my $name (sort keys %vessels) { + my $v= $vessels{$name}; + my $shotdamage= $shotname2damage{$v->{Shot}}; + die "no shot damage for shot $v->{Shot} for vessel $name" + unless defined $shotdamage; + my @qa= ($name, $shotdamage, map { $v->{$_} } qw(Mass Volume)); + $idempotent->execute(@qa); + } + $dbh->commit; +} + #---------- island list ---------- #---------- routes ---------- # now done by yppedia-chart-parser diff --git a/yarrg/source-info.txt b/yarrg/source-info.txt index c0e1deb..dc67c4e 100644 --- a/yarrg/source-info.txt +++ b/yarrg/source-info.txt @@ -1,4 +1,22 @@ +vessels + Sloop small 20250 13500 + Cutter small 60750 40500 + Dhow medium 20250 13500 + Longship small 20250 13500 + Baghlah medium 27000 18000 + Merchant brig medium 135000 90000 + War brig medium 81000 54000 + Merchant galleon large 405000 270000 + Xebec medium 182250 121500 + War frigate large 324000 216000 + Grand frigate large 810000 540000 + +shot + small 2 + medium 3 + large 4 + commods kraken's blood 1kg %c dye 1kg -- 2.30.2