summaryrefslogtreecommitdiffstats
path: root/lib/Games/SMTNocturne/Demons
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2014-05-25 02:26:51 -0400
committerJesse Luehrs <doy@tozt.net>2014-05-25 02:26:51 -0400
commitef5e91f3d15e44c37d84b98e45da34181acd3d92 (patch)
tree62cebd33f0da78d542f347dca713dffcd29e4c8d /lib/Games/SMTNocturne/Demons
parent2a5da1a4d4f9cdeeb5dece6710afd5ca828cb0c8 (diff)
downloadgames-smtnocturne-demons-ef5e91f3d15e44c37d84b98e45da34181acd3d92.tar.gz
games-smtnocturne-demons-ef5e91f3d15e44c37d84b98e45da34181acd3d92.zip
always return the same instance for a given demon
Diffstat (limited to 'lib/Games/SMTNocturne/Demons')
-rw-r--r--lib/Games/SMTNocturne/Demons/Demon.pm13
1 files changed, 7 insertions, 6 deletions
diff --git a/lib/Games/SMTNocturne/Demons/Demon.pm b/lib/Games/SMTNocturne/Demons/Demon.pm
index 12d276e..711697d 100644
--- a/lib/Games/SMTNocturne/Demons/Demon.pm
+++ b/lib/Games/SMTNocturne/Demons/Demon.pm
@@ -7,16 +7,17 @@ use JSON::PP;
my %DEMONS_BY_NAME = %{ decode_json(do { local $/; <DATA> }) };
for my $name (keys %DEMONS_BY_NAME) {
$DEMONS_BY_NAME{$name}{name} = $name;
+ $DEMONS_BY_NAME{$name} = bless $DEMONS_BY_NAME{$name}, __PACKAGE__;
}
my %DEMONS_BY_TYPE;
for my $name (keys %DEMONS_BY_NAME) {
- my $data = $DEMONS_BY_NAME{$name};
- push @{ $DEMONS_BY_TYPE{$data->{type}} ||= [] }, $data;
+ my $demon = $DEMONS_BY_NAME{$name};
+ push @{ $DEMONS_BY_TYPE{$demon->type} ||= [] }, $demon;
}
for my $type (keys %DEMONS_BY_TYPE) {
my $demons = $DEMONS_BY_TYPE{$type};
- @$demons = sort { $a->{level} <=> $b->{level} } @$demons;
+ @$demons = sort { $a->level <=> $b->level } @$demons;
}
sub from_name {
@@ -24,7 +25,7 @@ sub from_name {
die "unknown demon $name" unless $DEMONS_BY_NAME{$name};
- return bless { %{ $DEMONS_BY_NAME{$name} } }, $class;
+ return $DEMONS_BY_NAME{$name};
}
sub from_type_and_level {
@@ -35,10 +36,10 @@ sub from_type_and_level {
my $found;
for my $demon (@{ $DEMONS_BY_TYPE{$type} }) {
$found = $demon;
- last if $demon->{level} >= $level;
+ last if $demon->level >= $level;
}
- return bless { %$found }, $class;
+ return $found;
}
# sub boss { $_[0]->{boss} }