use flicker free drawing piece technique

This commit is contained in:
nino-porcino 2021-12-21 16:40:40 +01:00
parent 07906ea3c1
commit b8bf064b18
2 changed files with 20 additions and 20 deletions

View File

@ -206,13 +206,13 @@ void gr_erasepiece_unmarked(sprite *p) {
px += STARTBOARD_X; px += STARTBOARD_X;
py += STARTBOARD_Y; py += STARTBOARD_Y;
for(byte t=0; t<4; t++) { for(byte t=0; t<4; t++) {
int x = px + data->offset_x; int x = px; byte x1 = data->offset_x; x+= (int) x1;
int y = py + data->offset_y; int y = py; byte y1 = data->offset_y; y+= (int) y1;
int cx = zx + data->offset_x; int cx = p->x; cx += (int) x1;
int cy = zy + data->offset_y; int cy = p->y; cy += (int) y1;
data++; data++;

View File

@ -152,13 +152,13 @@ void handle_player_input() {
if(collides(&new_pos)) { if(collides(&new_pos)) {
break; break;
} }
gr_erasepiece(&player); // gr_erasepiece(&player);
gr_drawpiece(&new_pos); // gr_drawpiece(&new_pos);
// flicker-free version // flicker-free version
// ck_markpiece(&new_pos); ck_markpiece(&new_pos);
// gr_erasepiece_unmarked(&player); gr_erasepiece_unmarked(&player);
// gr_drawpiece(&new_pos); gr_drawpiece(&new_pos);
ck_drawpiece(&new_pos); ck_drawpiece(&new_pos);
sprite_copy(&player,&new_pos); sprite_copy(&player,&new_pos);
@ -168,13 +168,13 @@ void handle_player_input() {
} }
if(allowed == 1) { if(allowed == 1) {
gr_erasepiece(&player); // gr_erasepiece(&player);
gr_drawpiece(&new_pos); // gr_drawpiece(&new_pos);
// flicker-free version // flicker-free version
// ck_markpiece(&new_pos); ck_markpiece(&new_pos);
// gr_erasepiece_unmarked(&player); gr_erasepiece_unmarked(&player);
// gr_drawpiece(&new_pos); gr_drawpiece(&new_pos);
sprite_copy(&player, &new_pos); sprite_copy(&player, &new_pos);
} }
@ -207,13 +207,13 @@ void gameLoop() {
} }
else { else {
// automatic drop does not collide, simply draw it // automatic drop does not collide, simply draw it
gr_erasepiece(&player); // erase and draw are as close as possible // gr_erasepiece(&player); // erase and draw are as close as possible
gr_drawpiece(&new_pos); // gr_drawpiece(&new_pos);
// flicker-free version // flicker-free version
// ck_markpiece(&new_pos); ck_markpiece(&new_pos);
// gr_erasepiece_unmarked(&player); gr_erasepiece_unmarked(&player);
// gr_drawpiece(&new_pos); gr_drawpiece(&new_pos);
sprite_copy(&player, &new_pos); sprite_copy(&player, &new_pos);
ck_drawpiece(&player); ck_drawpiece(&player);