forked from KolibriOS/kolibrios
59 lines
1.9 KiB
C
59 lines
1.9 KiB
C
|
#include "cell.h"
|
||
|
|
||
|
__u8 tile_draw(tile* t)
|
||
|
{
|
||
|
if (t->value)
|
||
|
{
|
||
|
__u32 bg_color = 0;
|
||
|
__u32 txt_color = 0;
|
||
|
switch (t->value)
|
||
|
{
|
||
|
case 0 : bg_color = CELL_COLOR; break;
|
||
|
case 2 : bg_color = 0xEEE4DA; txt_color = 0x776E65; break;
|
||
|
case 4 : bg_color = 0xEDE0C8; txt_color = 0x776E65; break;
|
||
|
case 8 : bg_color = 0xF2B179; txt_color = 0xF9F6F2; break;
|
||
|
case 16 : bg_color = 0xF59563; txt_color = 0xF9F6F2; break;
|
||
|
case 32 : bg_color = 0xF67C5F; txt_color = 0xF9F6F2; break;
|
||
|
case 64 : bg_color = 0xF65E3B; txt_color = 0xF9F6F2; break;
|
||
|
case 128 : bg_color = 0xEDCF72; txt_color = 0xF9F6F2; break;
|
||
|
case 256 : bg_color = 0xEDCC61; txt_color = 0xF9F6F2; break;
|
||
|
case 512 : bg_color = 0xEDC850; txt_color = 0xF9F6F2; break;
|
||
|
case 1024 : bg_color = 0xEDC53F; txt_color = 0xF9F6F2; break;
|
||
|
case 2048 : bg_color = 0xEDC22E; txt_color = 0xF9F6F2; break;
|
||
|
default : bg_color = 0x3C3A32; txt_color = 0xF9F6F2; break;
|
||
|
}
|
||
|
|
||
|
rect* begin = &t->cell;
|
||
|
rect* end = &t->transition;
|
||
|
|
||
|
if (rect_transform(begin,end,t->ani_step))
|
||
|
t->animate = false;
|
||
|
|
||
|
rect_draw(begin,bg_color);
|
||
|
rect_draw_value(begin,t->value,txt_color);
|
||
|
|
||
|
if (t->merged)
|
||
|
{
|
||
|
if (rect_transform(&t->merged_rect,end,t->ani_step) &&
|
||
|
(t->animate == false))
|
||
|
{
|
||
|
t->animate = true;
|
||
|
t->merged = false;
|
||
|
t->value *= 2;
|
||
|
}
|
||
|
|
||
|
rect_draw(&t->merged_rect,bg_color);
|
||
|
rect_draw_value(&t->merged_rect,t->value,txt_color);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
return t->animate;
|
||
|
}
|
||
|
|
||
|
__u8 tile_mergeable(tile* from, tile* to)
|
||
|
{
|
||
|
return (from && !from->merged &&
|
||
|
to && !to->merged &&
|
||
|
(from->value == to->value));
|
||
|
}
|