1 # Brassica rapa extraterrestrialus, the common space turnip
4 import pymunk.pygame_util
7 from .loader import loader
8 from .constants import TURNIP_CATEGORY, LIGHT_CATEGORY
11 TURNIP_FILTER = pymunk.ShapeFilter(
12 mask=pymunk.ShapeFilter.ALL_MASKS ^ LIGHT_CATEGORY,
13 categories=TURNIP_CATEGORY)
16 class TurnipInvalidPosition(Exception):
22 def __init__(self, **kwargs):
23 self._age = kwargs.get('age', 0)
24 self._pos = kwargs.get('pos', (0, 0))
25 space = kwargs.get('space', None)
27 self.eaten = False # Flag for boyd
28 self._body = pymunk.Body(0, 0, pymunk.Body.STATIC)
29 self._shape = pymunk.Circle(self._body, 16)
30 self._shape.filter = TURNIP_FILTER
31 self._body.position = pymunk.pygame_util.from_pygame(
32 self._pos, pygame.display.get_surface())
33 # Add a reference so space query can get the object
34 self._body.turnip = self
35 if space.shape_query(self._shape):
36 raise TurnipInvalidPosition()
37 space.add(self._body, self._shape)
39 def _update_image(self):
40 self._image = loader.load_image('32', 'turnip%d.png' % (self._age + 1))
42 def render(self, surface):
43 surface.blit(self._image, self._pos, None)
46 return {'age': self._age, 'pos': self._pos}
49 self._body.turnip = None
50 space = self._body.space
51 space.remove(self._body, self._shape)
56 # Mature, so harvest it for seeds
58 return random.randint(1, 3)