package Manager; =head1 NAME Manager - Manage all games and users =head1 DESCRIPTION This holds and manages all the running games, and has the list of possible games. =cut use Moose; with qw( Debug); has running_games => (is => 'rw', default => sub { {} }); has available_games => (is => 'rw', default => sub { {} }); has users => (is => 'rw', default => sub { {} }); sub BUILD { my ($self) = @_; $self->load_available_games; }; sub load_available_games { my ($self) = @_; # Look up all the available games my @gamelist = (glob 'lib/Game/*.pm'); @gamelist = map { s/^lib\///g; s/\.pm$//g; s/\//::/g; $_ } @gamelist; $self->warn("*** Loading: @gamelist"); # Load them all (they register themselves) foreach my $game (@gamelist) { eval "require $game"; if($@) { $self->warn("Error: $@"); } else { $self->available_games->{$game} = 1; } } } 1;