X-Git-Url: https://git.ctpug.org.za/?a=blobdiff_plain;f=tabakrolletjie%2Fturnip.py;h=b1bb5a4571f330027fe0b2ea74491636b60e1560;hb=05a783db47a36c0cc18df7cb625d44a6689aaf56;hp=b53d451f3705a707a5ceec55bab04eb551bd4f43;hpb=5b5836320f5c8c4894dff0bd76df1acaf11bd700;p=tabakrolletjie.git diff --git a/tabakrolletjie/turnip.py b/tabakrolletjie/turnip.py index b53d451..b1bb5a4 100644 --- a/tabakrolletjie/turnip.py +++ b/tabakrolletjie/turnip.py @@ -1,17 +1,46 @@ # Brassica rapa extraterrestrialus, the common space turnip +import pymunk +import pymunk.pygame_util +import pygame.display +import pygame.transform + from .loader import loader +from .constants import TURNIP_CATEGORY, LIGHT_CATEGORY import random +TURNIP_FILTER = pymunk.ShapeFilter( + mask=pymunk.ShapeFilter.ALL_MASKS ^ LIGHT_CATEGORY, + categories=TURNIP_CATEGORY) + + +class TurnipInvalidPosition(Exception): + pass + + class Turnip(object): def __init__(self, **kwargs): self._age = kwargs.get('age', 0) self._pos = kwargs.get('pos', (0, 0)) + space = kwargs.get('space', None) + self._rotation = 90 * (hash(tuple(self._pos)) % 4) self._update_image() + self.eaten = False # Flag for boyd + self._body = pymunk.Body(0, 0, pymunk.Body.STATIC) + self._shape = pymunk.Circle(self._body, 24) + self._shape.filter = TURNIP_FILTER + self._body.position = pymunk.pygame_util.from_pygame( + self._pos, pygame.display.get_surface()) + # Add a reference so space query can get the object + self._body.turnip = self + if space.shape_query(self._shape): + raise TurnipInvalidPosition() + space.add(self._body, self._shape) def _update_image(self): - self._image = loader.load_image('32', 'turnip%d.png' % (self._age + 1)) + self._image = loader.load_image('48', 'turnip%d.png' % (self._age + 1)) + self._image = pygame.transform.rotate(self._image, self._rotation) def render(self, surface): surface.blit(self._image, self._pos, None) @@ -19,10 +48,16 @@ class Turnip(object): def serialize(self): return {'age': self._age, 'pos': self._pos} + def remove(self): + self._body.turnip = None + space = self._body.space + space.remove(self._body, self._shape) + def grow(self): self._age += 1 if self._age >= 3: # Mature, so harvest it for seeds + self.remove() return random.randint(1, 3) else: self._update_image()