#!/usr/bin/perl -w # # generate-plag - program for processing game board definitions # # Copyright (C) 2019 Ian Jackson # # This program is dual licensed, GPv3+ or CC-BY-SA 4.0+. # Only to the Pandemic Rising Tide folks, it is permissively licensed. # # This program is free software. # # You can redistribute it and/or modify it under the terms of the # GNU General Public License as published by the Free Software # Foundation, either version 3 of the License, or (at your option) # any later version; or (at your option), under the terms of the # Creative Commons Attribution-ShareAlike International License, # version 4.0 of that License, or (at your option), any later # version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License Creative Commons Attribution-ShareAlike # License or the for more details. # # You should have received a copy of these licenses along with this # program. If not, see and # . # # Pandemic and Pandemic Rising Tide are (I think) trademarks of Z-Man # games and I use them without permission. # # For the avoidance of doubt, I do not consider this program to be a # derivative work of the game Pandemic Rising Tide. However, it is # not very useful without a pair of game description files and the # only nontrivial game description files I know of are indeed such # derivatives. use strict; use Carp; BEGIN { unshift @INC, qw(.); } use Parse; sub output_planar_graph () { foreach my $ra (sort keys %region) { o(plag_prs($ra), "\n"); if ($ra eq $c{Sea} || $ra =~ m/^L2?$/) { o(" :outer\n"); } my $adjs = $region{$ra}{Adj}; foreach my $adj (reverse @$adjs) { o(" ", plag_prs($adj->{Name}), "\n"); } } # RUST_BACKTRACE=1 target/release/plag-mangler <../pandemic-rising-tide/map.plag R DUAL OUTER-F2V OUTER-SPLIT B T OUTER-F2V OUTER-F12VA PCO CP RAE PRINT-VI-NAMES NLOPT WG t.dot | qtdebug/vtrace } parse_input_graph(); output_planar_graph(); # Local variables: # cperl-indent-level: 2 # End.