diff --git a/wiki-map.pl b/wiki-map.pl index 6dd1e07..b865290 100644 --- a/wiki-map.pl +++ b/wiki-map.pl @@ -59,8 +59,8 @@ my $grid = HexGrid->new(embed_images => $embed_images, defaults => { # my %region_grids; my %regions_by_subregion; -my %region_grid_listings; my %images_for_region_grids; +my %location_grids; my $mw = MediaWiki::API->new(); $mw->{config}->{api_url} = $api_url; @@ -90,7 +90,6 @@ foreach my $page (values %{$region_query_results->{query}{pages}}) $region->{defaults}{colour} = $parsed_template->{named_params}{colour}; if($regiondir) { - # $region_grid_listings{$region->{name}} = [$region->{name}]; $regions_by_subregion{$region->{name}} = $region->{name}; } @@ -166,25 +165,14 @@ foreach my $page (values %{$location_query_results->{query}{pages}}) $location->make_tile_at($nw, $sw); if($regiondir) { - # $region_grids{$region_name}->add_region($location); - - # $region_grids{$location->{name}} = HexGrid->new - # ( - # defaults => - # { - # style => { 'stroke-width' => $border_width, stroke => $border_colour }, - # show_coords => $show_coords - # }, - # height => 300, - # width => 300 - # ); - # my $location_with_context = $region_grids{$location->{name}}->make_region($location->{name}); - # $location_with_context->add_tile($grid->get_tile_at($nw, $sw)); - # foreach my $coords (split /;/, $parsed_template->{named_params}{context_tiles}) - # { - # do { carp "Skipping bad spec: $coords"; next; } unless $coords =~ $coords_regex; - # $location_with_context->add_tile($grid->get_tile_at($1, $2)); - # } + my @coords_list = ({ nw => $nw, sw => $sw}); + foreach my $coords (split /;/, $parsed_template->{named_params}{context_tiles}) + { + do { carp "Skipping bad spec: $coords"; next; } unless $coords =~ $coords_regex; + # $location_with_context->add_tile($grid->get_tile_at($1, $2)); + push @coords_list, { nw => $1, sw => $2 }; + } + $location_grids{$location->{name}} = $grid->subgrid_for_tiles(@coords_list); } }; } @@ -335,34 +323,17 @@ if($regiondir) say $region_fh ($html_document ? wrap_in_html($region_grid) : $region_grid->render); close $region_fh; } + # Location grids need to import images + while(my ($location_name, $location_grid) = each %location_grids) + { + open (my $location_fh, "> $location_name.$extension") + or croak "Couldn't open $location_name.extension for writing: $!"; + say $location_fh ($html_document ? wrap_in_html($location_grid) : $location_grid->render); + close $location_fh; + } } -### Subgrid testing - -# HexGrid::DEBUG(); -# my $subgrid = $grid->subgrid_for_regions("Midhills", "Minev's Forest", "Naurardhon"); -# my $subgrid = $grid->subgrid_for_tiles -# ( -# { nw => 0, sw => 0 }, -# { nw => 1, sw => 0 }, -# { nw => 0, sw => 1 }, -# # { nw => 1, sw => 1 }, -# { nw => -1, sw => 0 }, -# { nw => -1, sw => 1 }, -# { nw => 1, sw => -1 } -# # { nw => 0, sw => -1 }, -# # { nw => -1, sw => -1 } -# ); -# my $svg = $subgrid->render; -# open SUBGRID, ">subgrid_test.svg"; -# say SUBGRID $svg; -# close SUBGRID; - -### - - - sub wrap_in_html($grid) { my $html_builder = "";