X-Git-Url: https://git.ctpug.org.za/?a=blobdiff_plain;f=tabakrolletjie%2Fturnip.py;h=27cb4de9b20c3f3af8da42fe24b347c051fcb8ec;hb=03a464fef04162e3928750a31e52cf954d5af7c8;hp=b53d451f3705a707a5ceec55bab04eb551bd4f43;hpb=5b5836320f5c8c4894dff0bd76df1acaf11bd700;p=tabakrolletjie.git diff --git a/tabakrolletjie/turnip.py b/tabakrolletjie/turnip.py index b53d451..27cb4de 100644 --- a/tabakrolletjie/turnip.py +++ b/tabakrolletjie/turnip.py @@ -1,14 +1,37 @@ # Brassica rapa extraterrestrialus, the common space turnip +import pymunk +import pymunk.pygame_util +import pygame.display + 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._update_image() + self._body = pymunk.Body(0, 0, pymunk.Body.STATIC) + self._shape = pymunk.Circle(self._body, 16) + self._shape.filter = TURNIP_FILTER + self._body.position = pymunk.pygame_util.from_pygame( + self._pos, pygame.display.get_surface()) + 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)) @@ -19,6 +42,10 @@ class Turnip(object): def serialize(self): return {'age': self._age, 'pos': self._pos} + def remove(self): + # FIXME: Remove body from the space + pass + def grow(self): self._age += 1 if self._age >= 3: