2 Widget that holds the game tiles.
4 import pygame.locals as pgl
6 from naja.constants import BOARD_SIZE, TILE_SIZE, KEYS, EXAMINE, ACT
7 from naja.events import finish_event
9 from naja.widgets.base import Widget
10 from naja.widgets.tile import TileWidget
13 class BoardWidget(Widget):
15 Widget which holds all the tiles that make up the gameboard.
17 def __init__(self, pos, state, info):
18 super(BoardWidget, self).__init__(pos, BOARD_SIZE)
21 self.card_pos = (2, 2)
26 tile_pos = (pos[0] + x * TILE_SIZE[0],
27 pos[1] + y * TILE_SIZE[1])
28 self._tiles.append(TileWidget(tile_pos, state, (x, y)))
31 for tile in self._tiles:
32 tile.set_highlight(self.card_pos)
34 self.size = BOARD_SIZE
35 if self.state.gameboard.player_mode == ACT:
36 self.card_pos = self.state.player.position
38 def draw(self, surface):
39 for tile in self._tiles:
42 def change_pos(self, offset):
43 tpos = (offset[0] + self.card_pos[0], offset[1] + self.card_pos[1])
44 if tpos[0] < 0 or tpos[1] < 0 or tpos[0] > 4 or tpos[1] > 4:
47 self.info.set_position(self.card_pos)
48 self.legal = self.card_pos in self.state.player.legal_moves()
51 def handle_event(self, ev):
52 if self.state.gameboard.player_mode == ACT:
53 return super(BoardWidget, self).handle_event(ev)
54 if ev.type == pgl.KEYDOWN:
56 if self.change_pos((0, -1)):
58 if ev.key in KEYS.DOWN:
59 if self.change_pos((0, +1)):
61 if ev.key in KEYS.LEFT:
62 if self.change_pos((-1, 0)):
64 if ev.key in KEYS.RIGHT:
65 if self.change_pos((+1, 0)):
67 if (ev.key in KEYS.SELECT and
68 self.state.player.set_position(self.card_pos)):
69 self.state.gameboard.change_mode(ACT)
70 self.info.set_position(self.card_pos)
72 return super(BoardWidget, self).handle_event(ev)