| 10 | | sub calculate { } |
| | 10 | sub calculate { |
| | 11 | my ($self, %args) = @_; |
| | 12 | |
| | 13 | my $hand = $args{hand}; |
| | 14 | # pre-analyze the suits/kinds for easier calculation |
| | 15 | |
| | 16 | my @tiles = $hand->tiles; |
| | 17 | my %meta; |
| | 18 | |
| | 19 | my %kinds; |
| | 20 | foreach my $tile (@tiles) { |
| | 21 | if ($tile->isa('Acme::Mahjong::Tile::Suited')) { |
| | 22 | $kinds{ $tile->suit }++; |
| | 23 | } elsif ($tile->isa('Acme::Mahjong::Tile::Wind')) { |
| | 24 | $kinds{ wind }++; |
| | 25 | } elsif ($tile->isa('Acme::Mahjong::Tile::Dragon')) { |
| | 26 | $kinds{ dragon }++; |
| | 27 | } |
| | 28 | } |
| | 29 | $meta{ kinds } = \%kinds; |
| | 30 | |
| | 31 | $self->fu2score( |
| | 32 | $self->hand2fu( hand => $hand, %args, meta => \%meta ) |
| | 33 | ); |
| | 34 | } |
| | 35 | |
| | 36 | sub hand2fu { |
| | 37 | |
| | 38 | } |