'''Mutations to apply to images'''
-from pygame.transform import rotate, flip
+from pygame.transform import flip, rotate, scale
+
+from naja.constants import EIGHT_BIT_SCALE
class Mutator(object):
return Mutator(rotate, angle)
+def scaler(size):
+ return Mutator(scale, size)
+
+
+def scale_multiplier(image, factor):
+ size = image.get_width() * factor, image.get_height() * factor
+ return scale(image, size)
+
+
# Identity mutator
NULL = Mutator(lambda x: x)
FLIP_H = Mutator(flip, True, False)
FLIP_V = Mutator(flip, False, True)
+
+EIGHT_BIT = Mutator(scale_multiplier, EIGHT_BIT_SCALE)
from naja.constants import BIT_SIZE, BITS
from naja.resources import resources
-from naja.resources.mutators import R90, R180, R270
+from naja.resources.mutators import R90, R180, R270, EIGHT_BIT
from naja.widgets.base import Widget
is_set = self.state.player.bits.check_bit(bit)
img = resources.get_image(
'bits', '%s_%s.png' % (image, 'on' if is_set else 'off'),
- transforms=transforms)
+ transforms=transforms + (EIGHT_BIT,))
self.surface.blit(img, (img.get_width() * pos, 0))
def draw(self, surface):
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 = {
# Look up the required bits on the board location
self.pos = (self.state.player.position[0] * TILE_SIZE[0] + 32,
self.state.player.position[1] * TILE_SIZE[1] + BIT_SIZE[1])
- self.surface = resources.get_image('board/robot.png')
+ self.surface = resources.get_image('board/robot.png',
+ transforms=(EIGHT_BIT,))
for bit, img_name in IMG_MAP.iteritems():
if self.state.player.bits.check_bit(bit):
- bit_img = resources.get_image(img_name)
+ bit_img = resources.get_image(img_name,
+ transforms=(EIGHT_BIT,))
self.surface.blit(bit_img, (0, 0))
def draw(self, surface):
from naja.widgets.base import Container
from naja.resources import resources
-from naja.resources.mutators import R270
+from naja.resources.mutators import EIGHT_BIT, R270
class SelectorWidget(Container):
super(SelectorWidget, self).__init__(*args, **kwargs)
self.position = 0
self.selector = resources.get_image('bits', 'arrow_on.png',
- transforms=(R270,))
+ transforms=(R270, EIGHT_BIT))
def render(self, surface):
super(SelectorWidget, self).render(surface)
from naja.constants import TILE_SIZE, BITS
from naja.resources import resources
+from naja.resources.mutators import EIGHT_BIT
from naja.widgets.base import Widget
for pattern in bits:
x_offset = 10
for bit in pattern:
- img = resources.get_image(BIT_MAP[bit])
+ img = resources.get_image(BIT_MAP[bit],
+ transforms=(EIGHT_BIT,))
self.surface.blit(img, (x_offset, y_offset))
x_offset += 32
y_offset += 32