mirror of
https://github.com/jeremysrand/apple2048.git
synced 2024-09-27 13:54:30 +00:00
Move faster when there are more tiles to animate so animations don't take as long
This commit is contained in:
parent
f77826ed09
commit
ae7930ddf1
152
apple2048.c
152
apple2048.c
@ -193,6 +193,10 @@ void performAnimationsLeft(void)
|
|||||||
tPos x;
|
tPos x;
|
||||||
tPos y;
|
tPos y;
|
||||||
bool firstFrame = true;
|
bool firstFrame = true;
|
||||||
|
uint8_t speed = 1;
|
||||||
|
|
||||||
|
if (gNumAnims > BOARD_SIZE)
|
||||||
|
speed = 2;
|
||||||
|
|
||||||
do {
|
do {
|
||||||
animInProgress = false;
|
animInProgress = false;
|
||||||
@ -207,31 +211,57 @@ void performAnimationsLeft(void)
|
|||||||
y = tileAnim->fromY;
|
y = tileAnim->fromY;
|
||||||
|
|
||||||
if (!firstFrame) {
|
if (!firstFrame) {
|
||||||
switch (x % TILE_WIDTH) {
|
if (speed == 1) {
|
||||||
case 0:
|
switch (x % TILE_WIDTH) {
|
||||||
break;
|
case 0:
|
||||||
case 1:
|
break;
|
||||||
textframexy(((x / TILE_WIDTH) + 1) * TILE_WIDTH, y,
|
case 1:
|
||||||
TILE_WIDTH, TILE_HEIGHT, TEXTFRAME_WIDE);
|
textframexy(((x / TILE_WIDTH) + 1) * TILE_WIDTH, y,
|
||||||
break;
|
TILE_WIDTH, TILE_HEIGHT, TEXTFRAME_WIDE);
|
||||||
default:
|
break;
|
||||||
x += TILE_WIDTH - 1;
|
default:
|
||||||
cputcxy(x, y + 1, ' ');
|
x += TILE_WIDTH - 1;
|
||||||
cputcxy(x, y + 2, ' ');
|
cputcxy(x, y + 1, ' ');
|
||||||
cputcxy(x, y + 3, ' ');
|
cputcxy(x, y + 2, ' ');
|
||||||
x -= TILE_WIDTH - 1;
|
cputcxy(x, y + 3, ' ');
|
||||||
break;
|
x -= TILE_WIDTH - 1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
switch (x % TILE_WIDTH) {
|
||||||
|
case 0:
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
case 2:
|
||||||
|
x += TILE_WIDTH - 1;
|
||||||
|
cputcxy(x, y + 1, ' ');
|
||||||
|
cputcxy(x, y + 2, ' ');
|
||||||
|
cputcxy(x, y + 3, ' ');
|
||||||
|
x -= TILE_WIDTH - 1;
|
||||||
|
textframexy(((x / TILE_WIDTH) + 1) * TILE_WIDTH, y,
|
||||||
|
TILE_WIDTH, TILE_HEIGHT, TEXTFRAME_WIDE);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
x += TILE_WIDTH - 2;
|
||||||
|
cputsxy(x, y + 1, " ");
|
||||||
|
cputsxy(x, y + 2, " ");
|
||||||
|
cputsxy(x, y + 3, " ");
|
||||||
|
x -= TILE_WIDTH - 2;
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
x--;
|
x -= speed;
|
||||||
|
|
||||||
textframexy(x, y, TILE_WIDTH, TILE_HEIGHT, TEXTFRAME_WIDE);
|
|
||||||
|
|
||||||
if (x == tileAnim->toX) {
|
if (x <= tileAnim->toX) {
|
||||||
|
x = tileAnim->toX;
|
||||||
|
textframexy(x, y, TILE_WIDTH, TILE_HEIGHT, TEXTFRAME_WIDE);
|
||||||
tileAnim->tileString = NULL;
|
tileAnim->tileString = NULL;
|
||||||
printValueAt(x, y, tileAnim->endTileString);
|
printValueAt(x, y, tileAnim->endTileString);
|
||||||
} else {
|
} else {
|
||||||
|
textframexy(x, y, TILE_WIDTH, TILE_HEIGHT, TEXTFRAME_WIDE);
|
||||||
tileAnim->fromX = x;
|
tileAnim->fromX = x;
|
||||||
animInProgress = true;
|
animInProgress = true;
|
||||||
printValueAt(x, y, tileAnim->tileString);
|
printValueAt(x, y, tileAnim->tileString);
|
||||||
@ -252,6 +282,10 @@ void performAnimationsRight(void)
|
|||||||
tPos x;
|
tPos x;
|
||||||
tPos y;
|
tPos y;
|
||||||
bool firstFrame = true;
|
bool firstFrame = true;
|
||||||
|
uint8_t speed = 1;
|
||||||
|
|
||||||
|
if (gNumAnims > BOARD_SIZE)
|
||||||
|
speed = 2;
|
||||||
|
|
||||||
do {
|
do {
|
||||||
animInProgress = false;
|
animInProgress = false;
|
||||||
@ -266,29 +300,51 @@ void performAnimationsRight(void)
|
|||||||
y = tileAnim->fromY;
|
y = tileAnim->fromY;
|
||||||
|
|
||||||
if (!firstFrame) {
|
if (!firstFrame) {
|
||||||
switch (x % TILE_WIDTH) {
|
if (speed == 1) {
|
||||||
case 0:
|
switch (x % TILE_WIDTH) {
|
||||||
break;
|
case 0:
|
||||||
case (TILE_WIDTH - 1):
|
break;
|
||||||
textframexy((x / TILE_WIDTH) * TILE_WIDTH, y,
|
case (TILE_WIDTH - 1):
|
||||||
TILE_WIDTH, TILE_HEIGHT, TEXTFRAME_WIDE);
|
textframexy((x / TILE_WIDTH) * TILE_WIDTH, y,
|
||||||
break;
|
TILE_WIDTH, TILE_HEIGHT, TEXTFRAME_WIDE);
|
||||||
default:
|
break;
|
||||||
cputcxy(x, y + 1, ' ');
|
default:
|
||||||
cputcxy(x, y + 2, ' ');
|
cputcxy(x, y + 1, ' ');
|
||||||
cputcxy(x, y + 3, ' ');
|
cputcxy(x, y + 2, ' ');
|
||||||
break;
|
cputcxy(x, y + 3, ' ');
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
switch (x % TILE_WIDTH) {
|
||||||
|
case 0:
|
||||||
|
break;
|
||||||
|
case (TILE_WIDTH - 1):
|
||||||
|
case (TILE_WIDTH - 2):
|
||||||
|
textframexy((x / TILE_WIDTH) * TILE_WIDTH, y,
|
||||||
|
TILE_WIDTH, TILE_HEIGHT, TEXTFRAME_WIDE);
|
||||||
|
cputcxy(x, y + 1, ' ');
|
||||||
|
cputcxy(x, y + 2, ' ');
|
||||||
|
cputcxy(x, y + 3, ' ');
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
cputsxy(x, y + 1, " ");
|
||||||
|
cputsxy(x, y + 2, " ");
|
||||||
|
cputsxy(x, y + 3, " ");
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
x++;
|
x += speed;
|
||||||
|
|
||||||
textframexy(x, y, TILE_WIDTH, TILE_HEIGHT, TEXTFRAME_WIDE);
|
|
||||||
|
|
||||||
if (x == tileAnim->toX) {
|
if (x >= tileAnim->toX) {
|
||||||
|
x = tileAnim->toX;
|
||||||
|
textframexy(x, y, TILE_WIDTH, TILE_HEIGHT, TEXTFRAME_WIDE);
|
||||||
tileAnim->tileString = NULL;
|
tileAnim->tileString = NULL;
|
||||||
printValueAt(x, y, tileAnim->endTileString);
|
printValueAt(x, y, tileAnim->endTileString);
|
||||||
} else {
|
} else {
|
||||||
|
textframexy(x, y, TILE_WIDTH, TILE_HEIGHT, TEXTFRAME_WIDE);
|
||||||
tileAnim->fromX = x;
|
tileAnim->fromX = x;
|
||||||
animInProgress = true;
|
animInProgress = true;
|
||||||
printValueAt(x, y, tileAnim->tileString);
|
printValueAt(x, y, tileAnim->tileString);
|
||||||
@ -309,6 +365,10 @@ void performAnimationsUp(void)
|
|||||||
tPos x;
|
tPos x;
|
||||||
tPos y;
|
tPos y;
|
||||||
bool firstFrame = true;
|
bool firstFrame = true;
|
||||||
|
uint8_t speed = 1;
|
||||||
|
|
||||||
|
if (gNumAnims > BOARD_SIZE)
|
||||||
|
speed = 2;
|
||||||
|
|
||||||
do {
|
do {
|
||||||
animInProgress = false;
|
animInProgress = false;
|
||||||
@ -328,20 +388,26 @@ void performAnimationsUp(void)
|
|||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
cputsxy(x + 1, y + TILE_HEIGHT - 1, " ");
|
cputsxy(x + 1, y + TILE_HEIGHT - 1, " ");
|
||||||
|
if (speed > 1)
|
||||||
|
cputsxy(x + 1, y + TILE_HEIGHT - 1, " ");
|
||||||
textframexy(x, ((y / TILE_HEIGHT) + 1) * TILE_HEIGHT,
|
textframexy(x, ((y / TILE_HEIGHT) + 1) * TILE_HEIGHT,
|
||||||
TILE_WIDTH, TILE_HEIGHT, TEXTFRAME_WIDE);
|
TILE_WIDTH, TILE_HEIGHT, TEXTFRAME_WIDE);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
y--;
|
if (y < speed)
|
||||||
|
y = 0;
|
||||||
|
else
|
||||||
|
y -= speed;;
|
||||||
|
|
||||||
textframexy(x, y, TILE_WIDTH, TILE_HEIGHT, TEXTFRAME_WIDE);
|
if (y <= tileAnim->toY) {
|
||||||
|
y = tileAnim->toY;
|
||||||
if (y == tileAnim->toY) {
|
textframexy(x, y, TILE_WIDTH, TILE_HEIGHT, TEXTFRAME_WIDE);
|
||||||
tileAnim->tileString = NULL;
|
tileAnim->tileString = NULL;
|
||||||
printValueAt(x, y, tileAnim->endTileString);
|
printValueAt(x, y, tileAnim->endTileString);
|
||||||
} else {
|
} else {
|
||||||
|
textframexy(x, y, TILE_WIDTH, TILE_HEIGHT, TEXTFRAME_WIDE);
|
||||||
tileAnim->fromY = y;
|
tileAnim->fromY = y;
|
||||||
animInProgress = true;
|
animInProgress = true;
|
||||||
printValueAt(x, y, tileAnim->tileString);
|
printValueAt(x, y, tileAnim->tileString);
|
||||||
@ -362,6 +428,10 @@ void performAnimationsDown(void)
|
|||||||
tPos x;
|
tPos x;
|
||||||
tPos y;
|
tPos y;
|
||||||
bool firstFrame = true;
|
bool firstFrame = true;
|
||||||
|
uint8_t speed = 1;
|
||||||
|
|
||||||
|
if (gNumAnims > BOARD_SIZE)
|
||||||
|
speed = 2;
|
||||||
|
|
||||||
do {
|
do {
|
||||||
animInProgress = false;
|
animInProgress = false;
|
||||||
@ -381,20 +451,24 @@ void performAnimationsDown(void)
|
|||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
cputsxy(x + 1, y, " ");
|
cputsxy(x + 1, y, " ");
|
||||||
|
if (speed > 1)
|
||||||
|
cputsxy(x + 1, y + 1, " ");
|
||||||
textframexy(x, (y / TILE_HEIGHT) * TILE_HEIGHT,
|
textframexy(x, (y / TILE_HEIGHT) * TILE_HEIGHT,
|
||||||
TILE_WIDTH, TILE_HEIGHT, TEXTFRAME_WIDE);
|
TILE_WIDTH, TILE_HEIGHT, TEXTFRAME_WIDE);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
y++;
|
y += speed;
|
||||||
|
|
||||||
textframexy(x, y, TILE_WIDTH, TILE_HEIGHT, TEXTFRAME_WIDE);
|
|
||||||
|
|
||||||
if (y == tileAnim->toY) {
|
if (y >= tileAnim->toY) {
|
||||||
|
y = tileAnim->toY;
|
||||||
|
textframexy(x, y, TILE_WIDTH, TILE_HEIGHT, TEXTFRAME_WIDE);
|
||||||
tileAnim->tileString = NULL;
|
tileAnim->tileString = NULL;
|
||||||
printValueAt(x, y, tileAnim->endTileString);
|
printValueAt(x, y, tileAnim->endTileString);
|
||||||
} else {
|
} else {
|
||||||
|
textframexy(x, y, TILE_WIDTH, TILE_HEIGHT, TEXTFRAME_WIDE);
|
||||||
tileAnim->fromY = y;
|
tileAnim->fromY = y;
|
||||||
animInProgress = true;
|
animInProgress = true;
|
||||||
printValueAt(x, y, tileAnim->tileString);
|
printValueAt(x, y, tileAnim->tileString);
|
||||||
|
Loading…
Reference in New Issue
Block a user