"""Widget to draw the player on the screen"""
-import pygame.locals as pgl
-
-from naja.constants import PLAYER_SIZE, BIT_SIZE, TILE_SIZE, BITS, ACT
-from naja.events import InvalidateTheWorld
+from naja.constants import (PLAYER_SIZE, BIT_SIZE, TILE_SIZE, BITS)
from naja.resources import resources
from naja.resources.mutators import EIGHT_BIT
from naja.widgets.base import Widget
IMG_MAP = {
- BITS.CYAN: 'board/robot_cyan.png',
- BITS.YELLOW: 'board/robot_yellow.png',
- BITS.MAGENTA: 'board/robot_magenta.png',
- }
+ BITS.MSB: 'board/robot_msb.png',
+ BITS.RED: 'board/robot_red.png',
+ BITS.GREEN: 'board/robot_green.png',
+ BITS.BLUE: 'board/robot_blue.png',
+}
class RobotWidget(Widget):
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,))
+ transforms=(EIGHT_BIT,)).copy()
for bit, img_name in IMG_MAP.iteritems():
if self.state.player.bits.check_bit(bit):
bit_img = resources.get_image(img_name,
def draw(self, surface):
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 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 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 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 self.state.player.move(BITS.EAST):
- self.state.gameboard.change_mode()
- InvalidateTheWorld.post()
- return True
- if ev.key in (pgl.K_SPACE,):
- self.state.gameboard.change_mode()
- InvalidateTheWorld.post()
- return True
- return super(RobotWidget, self).handle_event(ev)