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 )