0,0 → 1,58 |
#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)); |
} |