Exemple #1
0
/* crea un bitmap con la pieza actual */
BITMAP *create_piece_bitmap(PLAYER *player, int *xout, int *yout)
{
  BITMAP *bmp;
  int c, x, y, w, h;

  get_piece_blocks(player);
  get_piece_metrics(player, &x, &y, &w, &h);

  /* crear el bitmap */
  bmp = create_bitmap(w, h);
  if (!bmp)
    return NULL;

  /* limpiar el bitmap con el color máscara actual */
  clear_to_color(bmp, bitmap_mask_color(bmp));

  /* dibujar cada bloque de la pieza en el bitmap */
  for (c=0; c<4; c++)
    draw_block(bmp, player->piece.bx[c]-x,
                    player->piece.by[c]-y, player->piece.block[c], FALSE);

  /* posiciones absolutas de la pieza;
     si se usa draw_sprite() con estas posiciones, el bitmap se
     dibujará en el mismo sitio donde está la pieza actual */
  if (xout) *xout = player->px+x;
  if (yout) *yout = player->py+y;

  return bmp;
}
Exemple #2
0
static void		create_piece(t_list **head, char *buf, char letter)
{
	t_list		*node;
	t_tetri		t;

	gen_piece(&t);
	get_piece_metrics(buf, &t);
	t.letter = letter;
	t.height = t.ymax - t.ymin + 1;
	t.width = t.xmax - t.xmin + 1;
	buf_to_struct(buf, &t);
	if (!(node = ft_lstnew(&t, sizeof(t_tetri))))
		return ;
	ft_lstadd(head, node);
}