Changeset 406 for veekun/trunk/lib/Vee/Controller/Dex.pm
- Timestamp:
- 02/08/08 02:44:39 (2 years ago)
- Files:
-
- 1 modified
-
veekun/trunk/lib/Vee/Controller/Dex.pm (modified) (21 diffs)
Legend:
- Unmodified
- Added
- Removed
-
veekun/trunk/lib/Vee/Controller/Dex.pm
r400 r406 281 281 group_by => 'me.id', 282 282 join => 'pokemon_abilities', 283 '+select' => 'COUNT(DISTINCT pokemon_abilities.poke id)',283 '+select' => 'COUNT(DISTINCT pokemon_abilities.pokemon_id)', 284 284 '+as' => 'pokemon_count', 285 285 }); … … 353 353 354 354 # check to see if there is only one move, ever, that corresponds to this TM 355 my %set = map { $_->move id => 1 } @tms;355 my %set = map { $_->move_id => 1 } @tms; 356 356 357 357 if (!@tms) { … … 359 359 } elsif (1 == scalar keys %set) { 360 360 # TODO: remove this? 361 $c->res->redirect( $c->uri('Dex', 'moves', lc $MoveData[ $tms[0]->move id ]->name) );361 $c->res->redirect( $c->uri('Dex', 'moves', lc $MoveData[ $tms[0]->move_id ]->name) ); 362 362 } 363 363 … … 453 453 %query, 454 454 }, { 455 join => { ev chain => 'pokemon' },455 join => { evo_chain => 'pokemon' }, 456 456 prefetch => { pokemon_abilities => 'ability' }, 457 group_by => [ 'me.id', 'pokemon_abilities.ability id' ],457 group_by => [ 'me.id', 'pokemon_abilities.ability_id' ], 458 458 order_by => [ @extra_order, "pokemon.id ASC", "FIND_IN_SET('baby', me.flags) DESC", 'me.id ASC' ], 459 459 }); … … 482 482 delete $c->session->{last_pokemon_view}; 483 483 484 $s->{page_title} = $row->name . ' - Pokémon #' . $row->real_ id;484 $s->{page_title} = $row->name . ' - Pokémon #' . $row->real_pokemon_id; 485 485 $s->{page_header} = $row->name; 486 486 $s->{extra_js} = ['dexutils']; … … 507 507 $s->{this} = $row; 508 508 $s->{pid} = Vee::Utils::pad($row->id, 3); 509 $s->{generation} = my $generation = ( grep { $Generations[$_]{maxid} >= $row->real_ id } 0 .. $#Generations )[0];509 $s->{generation} = my $generation = ( grep { $Generations[$_]{maxid} >= $row->real_pokemon_id } 0 .. $#Generations )[0]; 510 510 511 511 # alt forms … … 513 513 my @alts; 514 514 my $alt_rs = $c->model('DBIC::Pokemon')->search({ 515 real_ id => $row->real_id,515 real_pokemon_id => $row->real_pokemon_id, 516 516 }, { 517 517 columns => ['alt_form'], … … 525 525 526 526 # evolution chain 527 my @family = $row->ev chain->pokemon( \'id = real_id', { columns => [qw/id evparent evmethod evparam/] } );527 my @family = $row->evo_chain->pokemon( \'id = real_pokemon_id', { columns => [qw/id evo_parent_id evo_method evo_param/] } ); 528 528 my %evtrees; 529 $evtrees{$_->id} = { id => $_->id, parent => $_->ev parent, method => $_->evmethod, param => $_->evparam, children => [] } for @family;529 $evtrees{$_->id} = { id => $_->id, parent => $_->evo_parent_id, method => $_->evo_method, param => $_->evo_param, children => [] } for @family; 530 530 push @{ $evtrees{ $_->{parent} }{children} }, $_ for sort { $a->{id} <=> $b->{id} } grep { $_->{parent} } values %evtrees; 531 for my $node (values %evtrees) { add_evolution_desc($node, $row->ev chain) }531 for my $node (values %evtrees) { add_evolution_desc($node, $row->evo_chain) } 532 532 $s->{evtree} = ( grep { !$_->{parent} } values %evtrees )[0]; # should only be one with no parent: the root 533 533 calculate_tree_width($s->{evtree}); … … 547 547 $s->{compatibility}{all} = $compat_rs->count; 548 548 # TODO: this is actually wrong; fix when bug #88 is fixed please 549 $s->{compatibility}{base} = $compat_rs->search({ ev parent=> 0 })->count;549 $s->{compatibility}{base} = $compat_rs->search({ evo_parent_id => 0 })->count; 550 550 551 551 # held items … … 563 563 # moves from here down 564 564 # slurp everything this Pokemon can learn, complete with egg moves if necessary 565 my $moves_rs = $c->model('DBIC::PokeMoves')->search( { 566 pokeid => $row->id, 567 }, { 568 columns => [qw/moveid method level version/] 565 my $moves_rs = $c->model('DBIC::PokemonMoves')->search( { 566 pokemon_id => $row->id, 569 567 } ); 570 568 … … 578 576 while (my $move_row = $moves_rs->next) { 579 577 my $table_row = { 580 move id => $move_row->moveid,578 move_id => $move_row->move_id, 581 579 level => $move_row->level, 582 versions => { map { $_ => $move_row->level || 1 } split /,/, $move_row->version },580 versions => { map { $_ => $move_row->level || 1 } split /,/, $move_row->versions }, 583 581 }; 584 582 … … 595 593 @{ $moves{$_} } = sort { 596 594 $a->{level} <=> $b->{level} or 597 $MoveData[ $a->{move id} ]->name cmp $MoveData[ $b->{moveid} ]->name595 $MoveData[ $a->{move_id} ]->name cmp $MoveData[ $b->{move_id} ]->name 598 596 } @{ $moves{$_} } for qw/ level egg machine /; 599 597 … … 633 631 my $i = -1; 634 632 while (++$i <= $#$lev_moves) { # shouldn't use a for since the size of the array changes 635 # find the next row index with the same move id636 my $next_idx = first { $lev_moves->[$_]{move id} == $lev_moves->[$i]{moveid} } $i + 1 .. $#$lev_moves;633 # find the next row index with the same move id 634 my $next_idx = first { $lev_moves->[$_]{move_id} == $lev_moves->[$i]{move_id} } $i + 1 .. $#$lev_moves; 637 635 next if not defined $next_idx; 638 636 … … 673 671 } 674 672 if (scalar keys %{ $from->{versions} } == 0) { 675 # only move id left, so delete this row and redo to hit the next one673 # only move id left, so delete this row and redo to hit the next one 676 674 splice @$lev_moves, $from_idx, 1; 677 675 redo; … … 704 702 map { $_->generation => $_->text } $row->flavors 705 703 }; 706 $s->{generation} = ( grep { $Generations[$_]{maxid} >= $row->real_ id } 0 .. $#Generations )[0];704 $s->{generation} = ( grep { $Generations[$_]{maxid} >= $row->real_pokemon_id } 0 .. $#Generations )[0]; 707 705 708 706 $s->{page_title} = $row->name . ' - Flavor Text and Images'; … … 785 783 ? Vee::Utils::round( $c->model('DBIC::Moves')->count({ power => { '!=' => undef, '<' => $row->power } }) / $DamagingMoveCount * 100, 1 ) 786 784 :'n/a'; 787 $s->{tm_info} = { map { $_->generation => $_ } $c->model('DBIC::Machines')->search({ move id => $row->id }) };785 $s->{tm_info} = { map { $_->generation => $_ } $c->model('DBIC::Machines')->search({ move_id => $row->id }) }; 788 786 789 787 # status effect … … 805 803 806 804 # contest stuffs 807 my $contest_family_rs = $c->model('DBIC::Moves')->search({ con effect => $row->coneffect, id => { '!=', $row->id } }, { columns => [qw/id name contype/], order_by => 'name ASC' });805 my $contest_family_rs = $c->model('DBIC::Moves')->search({ contest_effect_id => $row->contest_effect_id, id => { '!=', $row->id } }, { columns => [qw/id name contest_type/], order_by => 'name ASC' }); 808 806 my %contest_family; 809 807 $s->{contest_family_count} = 0; 810 808 while (my $move = $contest_family_rs->next) { 811 push @{ $contest_family{ $move->cont ype } }, $move;809 push @{ $contest_family{ $move->contest_type } }, $move; 812 810 $s->{contest_family_count}++; 813 811 } … … 818 816 my %pokemon_count; 819 817 my %valid_methods = map { $_ => 1 } qw/level egg tutor machine/; 820 my $pokemoves_rs = $c->model('DBIC::Poke Moves')->search({ moveid => $row->id });818 my $pokemoves_rs = $c->model('DBIC::PokemonMoves')->search({ move_id => $row->id }); 821 819 my %pokemon_hash; # method => pokemon id => version => level 822 820 while (my $pm = $pokemoves_rs->next) { … … 829 827 @versions = ('all'); 830 828 } else { 831 @versions = split /,/, $pm->version ;829 @versions = split /,/, $pm->versions; 832 830 } 833 831 834 832 for my $ver (@versions) { 835 $pokemon_hash{$method}{$pm->poke id}{pokemon} ||= $pm->pokemon;836 $pokemon_hash{$method}{$pm->poke id}{$ver} = $pm->level || 1;837 } 838 $pokemon_count{ $pm->poke id } = 1;833 $pokemon_hash{$method}{$pm->pokemon_id}{pokemon} ||= $pm->pokemon; 834 $pokemon_hash{$method}{$pm->pokemon_id}{$ver} = $pm->level || 1; 835 } 836 $pokemon_count{ $pm->pokemon_id } = 1; 839 837 } 840 838 … … 903 901 $c->forward('/cache', [ $row->id ]); 904 902 905 $s->{hid} = $row->internal id + 1;903 $s->{hid} = $row->internal_id + 1; 906 904 $s->{generation} = ($row->name eq 'dark' || $row->name eq 'steel') ? 1 : 0; 907 905 … … 1190 1188 my @extra; 1191 1189 # n.b.: can ONLY prefetch one has_many here; DBIx::Class will refuse more due to cross-product effect 1192 if ($table eq 'Pokemon') { @extra = ( prefetch => [qw/ev chain pokemoves/], order_by => 'pokemoves.moveid ASC' ) }1193 elsif ($table eq 'Moves') { @extra = ( prefetch => 'pokemo ves', order_by => 'pokemoves.pokeid ASC' ) }1190 if ($table eq 'Pokemon') { @extra = ( prefetch => [qw/evo_chain pokemon_moves/], order_by => 'pokemon_moves.move_id ASC' ) } 1191 elsif ($table eq 'Moves') { @extra = ( prefetch => 'pokemon_moves', order_by => 'pokemon_moves.pokemon_id ASC' ) } 1194 1192 1195 1193 if ($id eq 'random') {
