BalanceOfPower
view release on metacpan or search on metacpan
lib/BalanceOfPower/Role/WebMaster.pm view on Meta::CPAN
print {$targets} $self->print_targets($p->name, 'html');
close($targets);
$dest_dir = "$site_root/metadata/$game/p";
make_path($dest_dir);
open(my $metawallet, "> $dest_dir/" . $p->name . "-wallet.data");
my %wallet;
for(keys %{$p->wallet})
{
my $code = $self->get_nation($_)->code;
$wallet{$code} = $p->wallet->{$_};
}
my $stock_status = $self->player_stocks_status($p->name);
my $w_metadata = { wallet => \%wallet, stock_value => $stock_status->{'stock_value'} };
print {$metawallet} Dumper($w_metadata);
close($metawallet);
}
}
sub clean_statics
{
my $self = shift;
my $game = shift;
my $preservation_window = shift;
my $site_root = $self->site_root;
my $delete_year = $self->current_year;
say "Current year: $delete_year";
say "---";
for(my $i = $preservation_window; $i > 0; $i--)
{
$delete_year = prev_turn($delete_year);
}
my $deleting = 1;
while($deleting)
{
my $directory_to_delete = "$site_root/views/generated/$game/$delete_year";
if (-e $directory_to_delete and -d $directory_to_delete)
{
say "Deleting $directory_to_delete";
remove_tree($directory_to_delete);
if($delete_year =~ /1$/)
{
my $parent_directory_to_delete = $directory_to_delete;
$parent_directory_to_delete =~ s/\/1$//;
say "Deleting $parent_directory_to_delete";
remove_tree($parent_directory_to_delete);
}
$delete_year = prev_turn($delete_year);
}
else
{
$deleting = 0;
}
}
}
sub server_available
{
my $self = shift;
my $alive = $self->get_web_data('/keepalive', 1);
if($alive && $alive eq 'OK')
{
return 1;
}
else
{
return 0;
}
}
sub generate_whole_turn
{
my $self = shift;
my $game = shift;
my $turn = shift;
my $site_root = shift;
$self->pre_decisions_elaborations($turn);
$self->build_pre_statics($game, $site_root);
$self->decisions();
$self->post_decisions_elaborations();
$self->build_post_statics($game, $site_root);
}
sub generate_web_interactive_turn
{
my $self = shift;
my $game = shift;
my $site_root = shift;
$self->collect_api_data($game);
$self->decisions();
$self->post_decisions_elaborations();
$self->build_post_statics($game, $site_root);
$self->update_web_players($game);
$self->pre_decisions_elaborations(next_turn($self->current_year));
$self->build_pre_statics($game, $site_root);
}
sub manage_web_players
{
my $self = shift;
my $game = shift;
my $players = $self->get_web_data("/api/$game/users");
if($players)
{
my $many = @{$players} + 0;
say "$game - $many players on DB";
for(@{$players})
{
$self->create_player($_->{'username'}, $_->{'position'}, $_->{'money'});
}
}
else
{
say "$game - players list NOT retrieved";
}
}
sub collect_api_data
{
my $self = shift;
my $game = shift;
$self->manage_web_players($game);
( run in 0.540 second using v1.01-cache-2.11-cpan-df04353d9ac )