diff options
author | Jesse Luehrs <doy@tozt.net> | 2009-10-06 09:44:50 -0500 |
---|---|---|
committer | Jesse Luehrs <doy@tozt.net> | 2009-10-06 09:44:50 -0500 |
commit | 99c4bd60f5be23b03c19dc80953422da78105a30 (patch) | |
tree | 337601b1dd2d63826d9204ebbfcc126d80e43d8e /lib | |
parent | aa950d8f97cf1170b59db7175433ef5b9c2bdc98 (diff) | |
download | games-smtnocturne-fusion-99c4bd60f5be23b03c19dc80953422da78105a30.tar.gz games-smtnocturne-fusion-99c4bd60f5be23b03c19dc80953422da78105a30.zip |
factor out removing of duplicates
Diffstat (limited to 'lib')
-rw-r--r-- | lib/Games/SMTNocturne/Fusion/Chart.pm | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/lib/Games/SMTNocturne/Fusion/Chart.pm b/lib/Games/SMTNocturne/Fusion/Chart.pm index 287e7df..1570e97 100644 --- a/lib/Games/SMTNocturne/Fusion/Chart.pm +++ b/lib/Games/SMTNocturne/Fusion/Chart.pm @@ -1,6 +1,7 @@ package Games::SMTNocturne::Fusion::Chart; use Moose; use MooseX::ClassAttribute; +use MooseX::Mangle; use MooseX::MultiMethods; use List::MoreUtils qw(firstval); use YAML::Any qw(Load); @@ -118,7 +119,6 @@ multi method fusions_for (ClassName $self: SMTDemon $demon is coerce) { my @type2_demons = Demon->lookup(type => $combo->[1]); for my $demon1 (@type1_demons) { for my $demon2 (@type2_demons) { - next if $demon2->level < $demon1->level; my $fusion = $self->fuse($demon1, $demon2); push @found, [$demon1, $demon2] if defined $fusion && $fusion->name eq $demon->name; @@ -149,7 +149,6 @@ multi method fusions_for (ClassName $self: Element $demon is coerce) { for my $demon1 (@demons) { for my $demon2 (grep { $demon1->type eq $_->type } @demons) { next if $demon1->name eq $demon2->name; - next if $demon2->level < $demon1->level; push @found, [$demon1, $demon2]; } } @@ -162,13 +161,18 @@ multi method fusions_for (ClassName $self: Mitama $demon is coerce) { for my $demon2 (keys %{ $element_fusions{$demon1} }) { next unless $demon->name eq "$element_fusions{$demon1}{$demon2} Mitama"; my ($found1, $found2) = (Demon->lookup($demon1), Demon->lookup($demon2)); - next if $found2->level < $found1->level; push @found, [$found1, $found2]; } } return @found; } +mangle_return fusions_for => sub { + my $self = shift; + @_ = grep { $_->[0]->level <= $_->[1]->level } @_; + return @_; +}; + __PACKAGE__->meta->make_immutable; 1; |