import pygame
import pygame.locals as pgl
-from naja.constants import TILE_SIZE, BITS, LOCK_HEIGHT
+from naja.constants import TILE_SIZE, BITS, LOCK_HEIGHT, MOVE, EXAMINE
from naja.resources import resources
from naja.resources.mutators import EIGHT_BIT
from naja.widgets.base import Widget
super(TileWidget, self).__init__(pos, TILE_SIZE)
self.state = state
self.board_pos = board_pos
+ self.highlighted = False
def prepare(self):
# Draw background
x, y = abs(self.board_pos[0] - 2), abs(self.board_pos[1] - 2)
- if (x == 1 and y in [0, 1]) or (y == 1 and x in [0, 1]):
- # Inner ring
+ legal_move = (self.board_pos in self.state.player.legal_moves())
+ if self.state.gameboard.player_mode in (MOVE, EXAMINE) and legal_move:
+ bg = resources.get_image('board/tile_available.png',
+ transforms=(EIGHT_BIT,))
+ elif (x + y) % 2 == 0:
bg = resources.get_image('board/tile_2.png',
transforms=(EIGHT_BIT,))
else:
bg = resources.get_image('board/tile_1.png',
transforms=(EIGHT_BIT,))
+ if self.highlighted:
+ bg = resources.get_image('board/tile_selected.png',
+ transforms=(EIGHT_BIT,))
self.surface = pygame.surface.Surface(TILE_SIZE)
self.surface.blit(bg, (0, 0))
# Look up the required bits on the board location
for pattern in bits:
if self.board_pos != player_pos:
img_name = BIT_MAP[pattern]
+ x_offset = 0
else:
img_name = BIT_MAP[pattern].replace('.png', '_small.png')
+ x_offset = 4
if y_offset >= TILE_SIZE[1] // 2:
# FIXME: Hack'ish
# Bump the lock down by some hand-tuned factor
# to not overlap with the robot
- y_offset += LOCK_HEIGHT // 2 - 6
+ y_offset += LOCK_HEIGHT // 2 - 4
img = resources.get_image(img_name,
transforms=(EIGHT_BIT,))
- self.surface.blit(img, (5, y_offset))
+ self.surface.blit(img, (x_offset, y_offset))
y_offset += LOCK_HEIGHT
+ def set_highlight(self, pos):
+ self.highlighted = False
+ if (self.state.gameboard.player_mode == EXAMINE and
+ self.board_pos == pos):
+ self.highlighted = True
+
def draw(self, surface):
surface.blit(self.surface, self.pos)