From c81c66c4be9f5e683e2dca82cc236d36be254d3b Mon Sep 17 00:00:00 2001 From: Simon Cross Date: Sun, 18 May 2014 00:10:45 +0200 Subject: [PATCH] Pulse onboard selector. --- naja/widgets/board.py | 8 ++++++-- naja/widgets/tile.py | 12 ++++++++---- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/naja/widgets/board.py b/naja/widgets/board.py index b2a93fa..e6eafa5 100644 --- a/naja/widgets/board.py +++ b/naja/widgets/board.py @@ -3,12 +3,13 @@ Widget that holds the game tiles. """ import pygame.locals as pgl -from naja.constants import BOARD_SIZE, TILE_SIZE, KEYS, ACT +from naja.constants import BOARD_SIZE, TILE_SIZE, KEYS, ACT, FPS from naja.events import finish_event from naja.sound import sound from naja.widgets.base import Widget from naja.widgets.tile import TileWidget +from naja.utils import Flashlight class BoardWidget(Widget): @@ -22,6 +23,7 @@ class BoardWidget(Widget): self.card_pos = state.player.position self._tiles = [] self.legal = False + self.flash_light = Flashlight(FPS // 2) for y in range(0, 5): for x in range(0, 5): tile_pos = (pos[0] + x * TILE_SIZE[0], @@ -30,13 +32,15 @@ class BoardWidget(Widget): def prepare(self): for tile in self._tiles: - tile.set_highlight(self.card_pos) + tile.set_highlight(self.card_pos, self.flash_light.on) tile.prepare() self.size = BOARD_SIZE if self.state.gameboard.player_mode == ACT: self.card_pos = self.state.player.position def draw(self, surface): + if self.flash_light.tick(): + self.prepare() for tile in self._tiles: tile.draw(surface) diff --git a/naja/widgets/tile.py b/naja/widgets/tile.py index 06a0f78..9278e84 100644 --- a/naja/widgets/tile.py +++ b/naja/widgets/tile.py @@ -28,6 +28,7 @@ class TileWidget(Widget): self.current_card = None self.board_pos = board_pos self.highlighted = False + self.bright = False self.animation = TILE_SIZE[0] def prepare(self): @@ -56,10 +57,12 @@ class TileWidget(Widget): overlays.append(resources.get_image( tile_available_name, transforms=(EIGHT_BIT,))) if self.highlighted: + if self.bright: + select_name = 'board/tile_selected_pulse.png' + else: + select_name = 'board/tile_selected.png' overlays.append(resources.get_image( - 'board/tile_selected.png', - transforms=(EIGHT_BIT,))) - + select_name, transforms=(EIGHT_BIT,))) self.surface = pygame.surface.Surface(TILE_SIZE) self.surface.blit(bg, (0, 0)) for overlay in overlays: @@ -141,8 +144,9 @@ class TileWidget(Widget): x_offset += img.get_width() return y_offset + LOCK_HEIGHT - def set_highlight(self, pos): + def set_highlight(self, pos, bright=False): self.highlighted = False + self.bright = bright if (self.state.gameboard.player_mode == EXAMINE and self.board_pos == pos): self.highlighted = True -- 2.34.1