# HG changeset patch # User "Rex Tsai " # Date 1223465131 -28800 # Node ID d5e02a25b0002b4793bddfd49b9ac24c2aace7f9 # Parent 5635e75c92d0c3cee759f20276063cfb6ec44555 map generator for ally diff -r 5635e75c92d0 -r d5e02a25b000 ally.pl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ally.pl Wed Oct 08 19:25:31 2008 +0800 @@ -0,0 +1,77 @@ +#!/usr/bin/perl +use strict; +use Ikariam; +use Data::Dumper; +use List::Util qw[min max]; + +package main; + +Ikariam::Cities->set_sql(ally => qq { + SELECT cities.id + FROM island, cities + WHERE cities.island == island.id + AND cities.ally == ? + }); + +Ikariam::Island->has_many(cities => 'Ikariam::Cities'); +Ikariam::Island->set_sql(ally => qq { + SELECT island.id + FROM island, cities + WHERE cities.island == island.id + AND cities.ally == ? + }); + +die("Usage: $0\nUsage: $0 ally\n") unless ($#ARGV == 0); + +my @islands = Ikariam::Island->search_ally($ARGV[0]); +my %maps; + +my $x1 = 99; +my $x2 = 0; +my $y1 = 99; +my $y2 = 0; + +foreach my $island (@islands) +{ + $x1 = min ($x1, $island->x); + $x2 = max ($x2, $island->x); + $y1 = min ($y1, $island->y); + $y2 = max ($y2, $island->y); + + $maps{$island->x}{$island->y}{'id'} = $island->id; + $maps{$island->x}{$island->y}{'density'} += 1; + # printf("[%s,%s]", $island->x, $island->y); +} + +open(OUT, sprintf(">%s-map.html", $ARGV[0])) or die $!; +printf(OUT ""); + +foreach my $x ($x1..$x2) +{ + print(OUT ""); + foreach my $y($y1..$y2) + { + # printf("
o
"); + if(defined($maps{$x}{$y}{'density'})) { + my $c = 255 - (15 * $maps{$x}{$y}{'density'}); + printf(OUT "", + $c, $c, $maps{$x}{$y}{'id'}, $x, $y, $maps{$x}{$y}{'density'}, $x, $y); + } else { + printf(OUT "", $x, $y); + } + } + print(OUT ""); +} +printf(OUT "
[%d,%d][%d,%d]
"); +close(OUT);