From: Neil Date: Sun, 11 May 2014 20:31:50 +0000 (+0200) Subject: Render bit pattern markers on tile widgets X-Git-Tag: 0.1~388 X-Git-Url: https://git.ctpug.org.za/?a=commitdiff_plain;h=ee32cda1beebfdc07234f393bf39bb948b36a39a;p=naja.git Render bit pattern markers on tile widgets --- diff --git a/naja/scenes/game.py b/naja/scenes/game.py index 32285cd..2b6bbf2 100644 --- a/naja/scenes/game.py +++ b/naja/scenes/game.py @@ -20,7 +20,7 @@ class GameScene(Scene): def __init__(self, state): super(GameScene, self).__init__(state) self.add(PlayerBitsWidget((0, 0))) - self.add(BoardWidget((0, 60))) + self.add(BoardWidget((0, 60), state)) self.add(GameBitsWidget((0, 540))) self.add(InfoAreaWidget((480, 0))) diff --git a/naja/widgets/board.py b/naja/widgets/board.py index ac53d5d..c5eef2a 100644 --- a/naja/widgets/board.py +++ b/naja/widgets/board.py @@ -11,7 +11,7 @@ class BoardWidget(Widget): """ Widget which holds all the tiles that make up the gameboard. """ - def __init__(self, pos, tiles=None): + def __init__(self, pos, state): super(BoardWidget, self).__init__(pos, BOARD_SIZE) # FIXME: Placeholder logic self._tiles = [] @@ -19,7 +19,7 @@ class BoardWidget(Widget): for x in range(0, 5): tile_pos = (pos[0] + x * TILE_SIZE[0], pos[1] + y * TILE_SIZE[1]) - self._tiles.append(TileWidget(tile_pos, None)) + self._tiles.append(TileWidget(tile_pos, state, (x, y))) def prepare(self): for tile in self._tiles: diff --git a/naja/widgets/tile.py b/naja/widgets/tile.py index 7550ba5..a152f76 100644 --- a/naja/widgets/tile.py +++ b/naja/widgets/tile.py @@ -2,16 +2,24 @@ import pygame import pygame.locals as pgl -from naja.constants import TILE_SIZE +from naja.constants import TILE_SIZE, BITS from naja.resources import resources from naja.widgets.base import Widget +BIT_MAP = { + BITS['CYAN']: 'board/tile_cyan.png', + BITS['MAGENTA']: 'board/tile_magenta.png', + BITS['YELLOW']: 'board/tile_yellow.png', + } + + class TileWidget(Widget): """Widget which holds a tile on the game board.""" - def __init__(self, pos, image=None): + def __init__(self, pos, state=None, board_pos=None): super(TileWidget, self).__init__(pos, TILE_SIZE) - self.image = image + self.state = state + self.board_pos = board_pos def prepare(self): # Placeholder logic - just draw the outline of a square @@ -19,7 +27,24 @@ class TileWidget(Widget): pygame.draw.lines(self.surface, pgl.color.THECOLORS['yellow'], True, [(1, 1), (1, 95), (95, 95), (95, 1)], 2) self.surface.convert_alpha(pygame.display.get_surface()) + # Look up the required bits on the board location + card = self.state.gameboard.board_locations[self.board_pos] + bits = [] + for action in card.actions: + if action.required_bits: + bits.append(action.required_bits) + # Sort so we have longer lists of bits later self.size = self.surface.get_rect().size + if bits: + bits.sort(key=lambda x: len(x)) + y_offset = TILE_SIZE[1] - 32 * len(bits) + for pattern in bits: + x_offset = 10 + for bit in pattern: + img = resources.get_image(BIT_MAP[bit]) + self.surface.blit(img, (x_offset, y_offset)) + x_offset += 32 + y_offset += 32 def draw(self, surface): surface.blit(self.surface, self.rect)