changeset 21:d5e02a25b000

map generator for ally
author "Rex Tsai <chihchun@kalug.linux.org.tw>"
date Wed, 08 Oct 2008 19:25:31 +0800
parents 5635e75c92d0
children 552528bb4917
files ally.pl
diffstat 1 files changed, 77 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /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 "<html><head><style type=\"text/css\">
+    body {color: #FFFFFF; } 
+    a {color: #000000; } 
+    table {
+	border-width: 0px 0px 0px 0px;
+	border-spacing: 0px;
+	border-style: inset inset inset inset;
+	border-color: gray gray gray gray;
+	border-collapse: collapse;
+	background-color: white;
+    }
+    </style></head><body><table border=1>");
+
+foreach my $x ($x1..$x2)
+{
+    print(OUT "<tr>");
+    foreach my $y($y1..$y2)
+    {
+        # printf("<div stlye='float:left; background-color: black; padding: 0; Display:inline;'>o</div>");
+        if(defined($maps{$x}{$y}{'density'})) {
+            my $c = 255 - (15 * $maps{$x}{$y}{'density'});
+            printf(OUT "<td style=\"background-color: rgb(255,%d,%d);\"><a href=\"http://s2.ikariam.tw/index.php?view=island&id=%d\" title=\"[%d,%d] (%d)\">[%d,%d]</a></td>",
+                $c, $c, $maps{$x}{$y}{'id'}, $x, $y, $maps{$x}{$y}{'density'}, $x, $y);
+        } else {
+            printf(OUT "<td style=\"background-color: rgb(255,255,255);\">[%d,%d]</td>", $x, $y);
+        }
+    }
+    print(OUT "</tr>");
+}
+printf(OUT "</table></body></html>");
+close(OUT);