summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2009-10-05 21:34:33 -0500
committerJesse Luehrs <doy@tozt.net>2009-10-05 22:09:17 -0500
commitd0c6fddd162854bc7841a17274384f5c13930f9e (patch)
tree3f8fc16e8a59eb379bd6364d826f13dba39745f6
parent4be05163cc0be9bd4615a44954a6d7d11309b8fe (diff)
downloadgames-smtnocturne-fusion-d0c6fddd162854bc7841a17274384f5c13930f9e.tar.gz
games-smtnocturne-fusion-d0c6fddd162854bc7841a17274384f5c13930f9e.zip
convert Chart to use multimethods
-rw-r--r--dist.ini1
-rw-r--r--lib/Games/SMTNocturne/Fusion/Chart.pm11
2 files changed, 5 insertions, 7 deletions
diff --git a/dist.ini b/dist.ini
index 535ba9e..b5571f7 100644
--- a/dist.ini
+++ b/dist.ini
@@ -10,6 +10,7 @@ abstract = Demon fusion rules for Shin Megami Tensei Nocturne
[Prereq]
Moose = 0.90
MooseX::ClassAttribute = 0
+MooseX::MultiMethods = 0
MooseX::Role::Matcher = 0
MooseX::Traits = 0
MooseX::Types = 0
diff --git a/lib/Games/SMTNocturne/Fusion/Chart.pm b/lib/Games/SMTNocturne/Fusion/Chart.pm
index 8c30a31..790e9b9 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::MultiMethods;
use YAML::Any qw(Load);
use Games::SMTNocturne::Fusion::Types qw(DemonType SMTDemon);
use MooseX::Types::Moose qw(HashRef Maybe);
@@ -18,9 +19,8 @@ class_has _type_chart => (
},
);
-sub fuse {
- my $self = shift;
- my ($demon1, $demon2) = map { to_SMTDemon($_) } @_;
+multi method fuse (ClassName $self: SMTDemon $demon1 is coerce,
+ SMTDemon $demon2 is coerce) {
my $type = $self->_type_chart->{$demon1->type}{$demon2->type};
my $level = ($demon1->level + $demon2->level) / 2;
my @possible = Demon->lookup(
@@ -30,10 +30,7 @@ sub fuse {
return $possible[0];
}
-sub fusions_for {
- my $self = shift;
- my ($demon) = map { to_SMTDemon($_) } @_;
-
+method fusions_for (ClassName $self: SMTDemon $demon is coerce) {
my $type = $demon->type;
my @type_combos;
for my $type1 (keys %{ $self->_type_chart }) {