action_class: 'SetBits'
required_bits: []
data:
- message: "Moving to a tile requires picking an action. Some tiles' actions set bits on your robot. Such as the {SOUTH} bit."
+ message: "Moving to a tile requires picking an action. This tile has 2 actions. Both this tile's actions set bits on your robot, the {SOUTH} bit."
- &STEP2-ACTION-NULL
action_class: 'SetBits'
required_bits: []
data:
- message: "So does this one. See, we gave you a choice!"
+ message: "This is the second choice."
- &STEP2-CARD
card_name: 'step2'
from naja.scenes.game import GameScene
LoadGameEvent.post(game_state)
SceneChangeEvent.post(GameScene)
+
+
+class Flashlight(object):
+ def __init__(self, rate):
+ self.rate = rate
+ self.ticks = 0
+ self.on = False
+
+ def tick(self):
+ self.ticks += 1
+ if self.ticks >= self.rate:
+ self.on = not self.on
+ self.ticks = 0
+ return True
+ return False
"""
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):
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],
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)
from naja.resources import resources
from naja.resources.mutators import EIGHT_BIT, blender
from naja.sound import sound
-from naja.utils import bit_glyphs
+from naja.utils import bit_glyphs, Flashlight
from naja.widgets.base import Widget
from naja.widgets.tile import BIT_MAP
-from naja.widgets.text import TextBoxWidget, TextWidget
+from naja.widgets.text import TextBoxWidget
from naja import constants
self.chosen = None
self.card_position = state.player.position
self.set_position(state.player.position)
- self.flash_count = 0
- self.flash_light = True
+ self.flash_light = Flashlight(constants.FPS // 2)
def prepare(self):
if self.state.gameboard.player_mode == ACT:
border_colour = None
if choice == self.chosen:
- if self.flash_light:
+ if self.flash_light.on:
border_colour = (PALETTE.GREEN if action_viable else
PALETTE.ORANGE)
else:
self.chosen = None
def draw(self, surface):
- self.flash_count += 1
- if self.flash_count >= (constants.FPS // 2):
- self.flash_light = not self.flash_light
- self.flash_count = 0
+ if self.flash_light.tick():
self.prepare()
surface.blit(self.surface, self.pos)
self.current_card = None
self.board_pos = board_pos
self.highlighted = False
+ self.bright = False
self.animation = TILE_SIZE[0]
def prepare(self):
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:
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