comparison Ikariam.pm @ 236:cf08e01f5713

merged.
author "Rex Tsai <chihchun@kalug.linux.org.tw>"
date Thu, 06 Nov 2008 20:36:24 +0800
parents 978a949602e5
children 937fc672df56
comparison
equal deleted inserted replaced
235:a89e049d1d31 236:cf08e01f5713
358 my @locations = @{$self->{'cities'}->{$cityId}->{locations}}; 358 my @locations = @{$self->{'cities'}->{$cityId}->{locations}};
359 foreach (0..$#locations) { 359 foreach (0..$#locations) {
360 $position = $_ if($locations[$_] eq $type); 360 $position = $_ if($locations[$_] eq $type);
361 } 361 }
362 362
363 if($position != -1) { 363 # Academy - inputScientists
364 $self->{mech}->get (sprintf("http://%s/index.php?view=%s&id=%s&position=%d", $self->{server}, $type, $cityId, $position)); 364 if($position != -1 && $type eq 'academy') {
365 $self->{mech}->submit_form( 365 $self->{mech}->get (sprintf("http://%s/index.php?view=%s&id=%s&position=%d", $self->{server}, $type, $cityId, $position));
366 form_number => 1, 366 $self->{mech}->submit_form(
367 fields => { 367 form_number => 1,
368 amount => $self->{'cities'}->{$cityId}->{$type}->{maxValue}, 368 fields => {
369 } 369 s => $self->{'cities'}->{$cityId}->{$type}->{maxValue},
370 ); 370 }
371 371 );
372
373 }
374
375 # Tavern
376 if($position != -1 && $type eq 'tavern') {
377 $self->{mech}->get (sprintf("http://%s/index.php?view=%s&id=%s&position=%d", $self->{server}, $type, $cityId, $position));
378 $self->{mech}->submit_form(
379 form_number => 1,
380 fields => {
381 amount => $self->{'cities'}->{$cityId}->{$type}->{maxValue},
382 }
383 );
384
372 } 385 }
373 } 386 }
374 387
375 sub is_shipyard_upgrading { 388 sub is_shipyard_upgrading {
376 my $self = shift; 389 my $self = shift;
709 $self->{'cities'}->{$cityId}->{transporters}->{sum} = $extractor->find('//span[@id="value_transSum"]/text()'); 722 $self->{'cities'}->{$cityId}->{transporters}->{sum} = $extractor->find('//span[@id="value_transSum"]/text()');
710 $self->{'cities'}->{$cityId}->{transporters}->{sum} =~ s/[\(|\)]//g; 723 $self->{'cities'}->{$cityId}->{transporters}->{sum} =~ s/[\(|\)]//g;
711 $self->{'cities'}->{$cityId}->{maxActionPoints} = $extractor->find('//span[@id="value_maxActionPoints"]');; 724 $self->{'cities'}->{$cityId}->{maxActionPoints} = $extractor->find('//span[@id="value_maxActionPoints"]');;
712 } 725 }
713 726
727 sub checkAcademy {
728 my $self = shift;
729 my $cityId = shift;
730 my $building = "academy";
731
732 my @locations = @{$self->{'cities'}->{$cityId}->{locations}};
733 # init
734 $self->{'cities'}->{$cityId}->{$building}->{'maxValue'} = 0;
735 $self->{'cities'}->{$cityId}->{$building}->{'iniValue'} = 0;
736 foreach (0..$#locations) {
737 if($locations[$_] eq $building) {
738 my $res = $self->{mech}->get(sprintf('http://%s/index.php?view=%s&id=%d&position=%d', $self->{server}, $building, $cityId, $_ ));
739 my $extractor = Ikariam::Extractor->new(content => $res->content);
740 if($extractor->{doc}->toString(0) =~ /maxValue : (\d+),\s+overcharge : \d+,\s+iniValue : (\d+),/) {
741 $self->{'cities'}->{$cityId}->{$building}->{'maxValue'} = $1;
742 $self->{'cities'}->{$cityId}->{$building}->{'iniValue'} = $2;
743 }
744 last;
745 }
746 }
747 }
748
714 sub checkTavern { 749 sub checkTavern {
715 my $self = shift; 750 my $self = shift;
716 my $cityId = shift; 751 my $cityId = shift;
717 752
718 my @locations = @{$self->{'cities'}->{$cityId}->{locations}}; 753 my @locations = @{$self->{'cities'}->{$cityId}->{locations}};
993 foreach my $cityId (keys(%{$self->{'cities'}})) { 1028 foreach my $cityId (keys(%{$self->{'cities'}})) {
994 $self->checkCity($cityId); 1029 $self->checkCity($cityId);
995 $self->checkTownHall($cityId); 1030 $self->checkTownHall($cityId);
996 $self->checkArmies($cityId); 1031 $self->checkArmies($cityId);
997 $self->checkTavern($cityId); 1032 $self->checkTavern($cityId);
1033 $self->checkAcademy($cityId);
998 } 1034 }
999 # $self->checkFriends(); 1035 # $self->checkFriends();
1000 return $self->{'cities'}; 1036 return $self->{'cities'};
1001 } 1037 }
1002 1038