if not self._img:
name = random.choice(
('mouldA.png', 'mouldB.png', 'mouldC.png'))
- self._img = loader.load_image("32", name)
+ size = "16" if self._age < 10 else "32" if self._age < 20 else "64"
+ self._img = loader.load_image(size, name)
return self._img
def tick(self, gamestate, space, moulds):
"""Grow and / or Die"""
+
self._age += 1
# we regain a health every tick, so we heal in the dark
moulds.append(child)
refresh = True
+ if self._age in (10, 20):
+ # Segment grows in size
+ refresh = True
+ self._img = None # invalidate cached image
+
if self._age > 120:
# We die of old age
space.remove(self, self._shape)
self._moulds = [seed]
self._image = pygame.surface.Surface(SCREEN_SIZE)
self._image.convert_alpha(pygame.display.get_surface())
+ self._draw_moulds()
+
+ def _draw_moulds(self):
self._image.fill((0, 0, 0, 0))
- self._image.blit(seed.get_image(),
- seed.pygame_pos(self._image), None, pgl.BLEND_RGBA_ADD)
+ for m in self._moulds:
+ self._image.blit(m.get_image(),
+ m.pygame_pos(self._image), None,
+ 0)
def tick(self, gamestate, space, lights):
redraw = False
if mould.tick(gamestate, space, self._moulds):
redraw = True
# Check for damage
- if lights.lit_by(mould.position):
+ lit_by = lights.light_query(mould._shape)
+ for light in lit_by:
+ # Todo: extract colour and intensity from light
if mould.damage(None, None, space, self._moulds):
redraw = True
+ break # we only die once
if redraw:
- self._image.fill((0, 0, 0, 0))
- for mould in self._moulds:
- self._image.blit(mould.get_image(),
- mould.pygame_pos(self._image), None, pgl.BLEND_RGBA_ADD)
+ self._draw_moulds()
def render(self, surface):
"""Draw ourselves"""