Subversion Repositories Kolibri OS

Rev

Rev 5229 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1. #include "cell.h"
  2.  
  3. __u8 tile_draw(tile* t)
  4. {
  5.     if (t->value)
  6.     {
  7.         __u32 bg_color = 0;
  8.         __u32 txt_color = 0;
  9.         switch (t->value)
  10.         {
  11.         case 0      : bg_color = CELL_COLOR;    break;
  12.         case 2      : bg_color = 0xEEE4DA;     txt_color = 0x776E65;  break;
  13.         case 4      : bg_color = 0xEDE0C8;     txt_color = 0x776E65;  break;
  14.         case 8      : bg_color = 0xF2B179;     txt_color = 0xF9F6F2;  break;
  15.         case 16     : bg_color = 0xF59563;     txt_color = 0xF9F6F2;  break;
  16.         case 32     : bg_color = 0xF67C5F;     txt_color = 0xF9F6F2;  break;
  17.         case 64     : bg_color = 0xF65E3B;     txt_color = 0xF9F6F2;  break;
  18.         case 128    : bg_color = 0xEDCF72;     txt_color = 0xF9F6F2;  break;
  19.         case 256    : bg_color = 0xEDCC61;     txt_color = 0xF9F6F2;  break;
  20.         case 512    : bg_color = 0xEDC850;     txt_color = 0xF9F6F2;  break;
  21.         case 1024   : bg_color = 0xEDC53F;     txt_color = 0xF9F6F2;  break;
  22.         case 2048   : bg_color = 0xEDC22E;     txt_color = 0xF9F6F2;  break;
  23.         default     : bg_color = 0x3C3A32;     txt_color = 0xF9F6F2;  break;
  24.         }
  25.  
  26.         rect* begin = &t->cell;
  27.         rect* end = &t->transition;
  28.  
  29.         if (rect_transform(begin,end,t->ani_step))
  30.             t->animate = false;
  31.  
  32.         canvas_draw_rect(begin,bg_color);
  33.         canvas_draw_value(begin,t->value,txt_color);
  34.  
  35.         if (t->merged)
  36.         {
  37.             if (rect_transform(&t->merged_rect,end,t->ani_step) &&
  38.                     (t->animate == false))
  39.             {
  40.                 t->animate = true;
  41.                 t->merged = false;
  42.                 t->value *= 2;
  43.             }
  44.  
  45.             canvas_draw_rect(&t->merged_rect,bg_color);
  46.             canvas_draw_value(&t->merged_rect,t->value,txt_color);
  47.         }
  48.     }
  49.  
  50.     return t->animate;
  51. }
  52.  
  53. __u8 tile_mergeable(tile* from, tile* to)
  54. {
  55.     return (from && !from->merged &&
  56.             to && !to->merged &&
  57.             (from->value == to->value));
  58. }
  59.