X-Git-Url: https://git.ctpug.org.za/?a=blobdiff_plain;f=naja%2Fwidgets%2Frobot.py;h=cbeba2e73443d4e8e75fe220033c32e00e59ba09;hb=a99e4ae79d235b6047625fb1de2559f66b3a7562;hp=4506edf6e1e91d66dc89ee1091b83bcbe92c81db;hpb=b28198fc51a256d3e1ac9d3f983aff05c6ace25a;p=naja.git diff --git a/naja/widgets/robot.py b/naja/widgets/robot.py index 4506edf..cbeba2e 100644 --- a/naja/widgets/robot.py +++ b/naja/widgets/robot.py @@ -2,7 +2,7 @@ import pygame.locals as pgl -from naja.constants import PLAYER_SIZE, BIT_SIZE, TILE_SIZE, BITS +from naja.constants import PLAYER_SIZE, BIT_SIZE, TILE_SIZE, BITS, ACT, KEYS from naja.events import InvalidateTheWorld from naja.resources import resources from naja.resources.mutators import EIGHT_BIT @@ -18,14 +18,14 @@ IMG_MAP = { class RobotWidget(Widget): """Widget which holds a tile on the game board.""" def __init__(self, state): - pos = (state.player.position[0] * TILE_SIZE[0] + 32, + pos = (state.player.position[0] * TILE_SIZE[0], state.player.position[1] * TILE_SIZE[1] + BIT_SIZE[1]) super(RobotWidget, self).__init__(pos, PLAYER_SIZE) self.state = state def prepare(self): # Look up the required bits on the board location - self.pos = (self.state.player.position[0] * TILE_SIZE[0] + 32, + self.pos = (self.state.player.position[0] * TILE_SIZE[0], self.state.player.position[1] * TILE_SIZE[1] + BIT_SIZE[1]) self.surface = resources.get_image('board/robot.png', transforms=(EIGHT_BIT,)) @@ -39,21 +39,31 @@ class RobotWidget(Widget): surface.blit(self.surface, self.rect) def handle_event(self, ev): + if self.state.gameboard.player_mode == ACT: + return super(RobotWidget, self).handle_event(ev) if ev.type == pgl.KEYDOWN: - if ev.key in (pgl.K_UP, pgl.K_w): + if ev.key in KEYS.UP: if self.state.player.move(BITS.NORTH): + self.state.gameboard.change_mode() InvalidateTheWorld.post() return True - if ev.key in (pgl.K_DOWN, pgl.K_s): + if ev.key in KEYS.DOWN: if self.state.player.move(BITS.SOUTH): + self.state.gameboard.change_mode() InvalidateTheWorld.post() return True - if ev.key in (pgl.K_LEFT, pgl.K_a): + if ev.key in KEYS.LEFT: if self.state.player.move(BITS.WEST): + self.state.gameboard.change_mode() InvalidateTheWorld.post() return True - if ev.key in (pgl.K_RIGHT, pgl.K_d): + if ev.key in KEYS.RIGHT: if self.state.player.move(BITS.EAST): + self.state.gameboard.change_mode() InvalidateTheWorld.post() return True - super(RobotWidget, self).handle_event(ev) + if ev.key in (pgl.K_SPACE,): + self.state.gameboard.change_mode() + InvalidateTheWorld.post() + return True + return super(RobotWidget, self).handle_event(ev)