コード例 #1
0
/**
 * \brief Update controls.
 */
void ptb::frame_play_story::update_controls()
{
  if ( !m_levels.empty() )
    {
      update_level_name();
      update_all_players_status();
      update_bonus();
      m_thumb->set_picture(get_thumb());
      m_status_picture->set_picture(get_status_picture());
    }
} // frame_play_story::update_controls()
コード例 #2
0
ファイル: ifr_player.c プロジェクト: clemej/ifrac
/* Return release mask */
void player_process_dropped_tile(PLAYER *player)
{
    int  released_mask;
    int  w, d, h, layer_count;
    int  layer_capacity;
    int  layer_mask;
    char *layer;

    released_mask = 0;
    layer_mask = 1;
    layer_capacity = BoardWidth * BoardDepth;
    layer = player->board;

    player->score += player->bonus;
    update_score(PT_FOREGROUND, player->score, player->layers);

    player->bonus = -1;
    update_bonus(PT_FOREGROUND, -1);

    for (h=0; h<BoardHeight; h++)
    {   layer_count = 0;

        for (d=0; d<BoardDepth; d++)
            for (w=0; w<BoardWidth; w++)
                if (*layer++) layer_count++;

        if (layer_count == layer_capacity)
            released_mask |= layer_mask;
        else if (layer_count == 0)
            break;

        layer_mask <<= 1;
    }

    player->released_details = released_mask;
    if (released_mask)
        player_animate_release(player);

}
コード例 #3
0
ファイル: ifr_board.c プロジェクト: clemej/ifrac
int board_accept_new_tile(PLAYER *player, short tile_code,
                          const short tile_pos[], const short tile_size[])
{
    char *board;

    
    if (player->status & PLST_FINISHED) return 0;
    
    player->status &= ~PLST_DROPPED;
    player->status |= PLST_NEWTILE;
    
    player->released_details = 0;
    player->bonus = (player->options & PLOP_SHOWNEXT) ? 15 : 20;

    board = player->board;

    if (!check_tile_insert(board, tile_pos, tile_size))
    {   player->status |= PLST_FINISHED;
        draw_board(PT_FOREGROUND, player, 0);
        return 0;
    }	    

    memcpy(player->tile_pos, tile_pos, sizeof(short)*Dimension);
    memcpy(player->tile_size, tile_size, sizeof(short)*Dimension);
    player->tile_code = tile_code;


    tile_insert(board, tile_pos, tile_size, tile_code);
    player->status |= PLST_CHANGED;

    if (player->options & PLOP_SHOWNEXT)
	        show_next(PT_FOREGROUND, player);

    update_bonus(PT_FOREGROUND, player->bonus);    
    draw_board(PT_FOREGROUND, player, 0);
    
    return 1;
}