diff Ikariam.pm @ 1:f9eac5385dc0

added viewWorldMap
author "Rex Tsai <chihchun@kalug.linux.org.tw>"
date Tue, 07 Oct 2008 22:56:12 +0800
parents abaee7064429
children 0fb73a7a0b94
line wrap: on
line diff
--- a/Ikariam.pm	Tue Oct 07 22:24:46 2008 +0800
+++ b/Ikariam.pm	Tue Oct 07 22:56:12 2008 +0800
@@ -3,7 +3,7 @@
 
 use Data::Dumper;
 use LWP;
-use LWP::Debug qw(+ -conns);
+# use LWP::Debug qw(+ -conns);
 use HTTP::Cookies;
 use WWW::Mechanize;
 use HTML::TagParser;
@@ -33,18 +33,45 @@
     my $x = shift;
     my $y = shift;
 
-    my $res;
-    if(defined($x) && defined($y))
+    if(!defined($x) && !defined($y))
     {
-        $res = $self->{mech}->post(sprintf("http://%s/index.php?view=worldmap_iso", $self->{server}), [
+        die('location required');
+    }
+
+    my $res = $self->{mech}->post(sprintf("http://%s/index.php?view=worldmap_iso", $self->{server}), [
             xajax => 'getMapData',
             'xajaxargs[]' => $x,
             'xajaxargs[]' => $y,
             xajaxr => time,
             ]);
-    } else {
-        $res = $self->{mech}->get(sprintf("http://%s/index.php?view=worldmap_iso", $self->{server}));
+
+    my $c;
+    my $status = gunzip \$res->content => \$c 
+        or die "gunzip failed: $GunzipError\n";
+
+    my @islands;
+    # parsing xjxobj
+    while($c =~ /<cmd n="jc" t="addToMap"><xjxobj><e><k>0<\/k><v><!\[CDATA\[(\d+)\]\]><\/v><\/e><e><k>1<\/k><v><!\[CDATA\[(\d+)\]\]><\/v><\/e><e><k>2<\/k><v><!\[CDATA\[(\d+)\]\]><\/v><\/e><e><k>3<\/k><v><!\[CDATA\[(\d+)\]\]><\/v><\/e><e><k>4<\/k><v><!\[CDATA\[(\d+)\]\]><\/v><\/e><e><k>5<\/k><v><!\[CDATA\[(\w+)\]\]><\/v><\/e><e><k>6<\/k><v><!\[CDATA\[(\d+)\]\]><\/v><\/e><e><k>7<\/k><v><!\[CDATA\[(\d+)\]\]><\/v><\/e><\/xjxobj><\/cmd>/g)
+    {
+        my %island;
+        $island{id} = $3;
+        $island{x} = $1;
+        $island{y} = $2;
+        $island{name} = $6;
+        $island{tradegood} = $4;
+        $island{wonder} = $5;
+        # $7 ?
+        $island{people} = $8;
+        push @islands, \%island;
     }
+    return @islands;
+}
+
+sub viewHomedMap
+{
+    my $self = shift;
+
+    my $res = $self->{mech}->get(sprintf("http://%s/index.php?view=worldmap_iso", $self->{server}));
 
     my $c;
     my $status = gunzip \$res->content => \$c