Add (ugly) countdown timer to tile.
[naja.git] / naja / widgets / tile.py
index c9326670251d2988704aa2e35d0a7829048682f9..344a924ae27b0dcb99546b6e38d02a77b82aaa92 100644 (file)
@@ -6,6 +6,7 @@ from naja.constants import (
 from naja.resources import resources
 from naja.resources.mutators import EIGHT_BIT, blender
 from naja.widgets.base import Widget
+from naja.widgets.text import TextBoxWidget
 
 
 BIT_MAP = {
@@ -34,10 +35,19 @@ class TileWidget(Widget):
         # Draw background
         x, y = abs(self.board_pos[0] - 2), abs(self.board_pos[1] - 2)
 
+        if self.state.gameboard.puzzle:
+            tile_1_name = 'board/tile_1.png'
+            tile_2_name = 'board/tile_2_puzzle.png'
+            tile_available_name = 'board/tile_available_puzzle.png'
+        else:
+            tile_1_name = 'board/tile_1.png'
+            tile_2_name = 'board/tile_2.png'
+            tile_available_name = 'board/tile_available.png'
+
         if (x + y) % 2 == 0:
-            bg_name = 'board/tile_2.png'
+            bg_name = tile_2_name
         else:
-            bg_name = 'board/tile_1.png'
+            bg_name = tile_1_name
         bg = resources.get_image(bg_name, transforms=(EIGHT_BIT,))
         overlays = []
 
@@ -45,7 +55,7 @@ class TileWidget(Widget):
 
         if self.state.gameboard.player_mode == EXAMINE and legal_move:
             overlays.append(resources.get_image(
-                'board/tile_available.png', transforms=(EIGHT_BIT,)))
+                tile_available_name, transforms=(EIGHT_BIT,)))
         if self.highlighted:
             overlays.append(resources.get_image(
                 'board/tile_selected.png',
@@ -65,6 +75,15 @@ class TileWidget(Widget):
         for action in card.actions:
             y_offset = self._prepare_action(action, y_offset)
 
+        if card.replacement_time is not None:
+            timestr = str(card.replacement_time)
+            if len(timestr) > 1:
+                timestr = '+'
+            countdown_text = TextBoxWidget(
+                (TILE_SIZE[0] - 24, 4), timestr, padding=2,
+                colour=PALETTE.PINK, bg_colour=PALETTE.DARK_RED)
+            countdown_text.render(self.surface)
+
     def _prepare_lock(self, action, y_offset):
         if not action.required_bits:
             return 4