# HG changeset patch # User Neil Muller # Date 1378379731 -7200 # Node ID 56e42c00da2565ba669472821755b0d84efa3288 # Parent 3153196517fc27ab3b8d6f1662b00136787e6cdb Protagonist and enemies should see the world diff -r 3153196517fc -r 56e42c00da25 nagslang/enemies.py --- a/nagslang/enemies.py Thu Sep 05 13:09:14 2013 +0200 +++ b/nagslang/enemies.py Thu Sep 05 13:15:31 2013 +0200 @@ -22,13 +22,14 @@ class Enemy(GameObject): """A base class for mobile enemies""" - def __init__(self, space, position): + def __init__(self, space, world, position): self._setup_physics(space, position) self._setup_renderer() super(Enemy, self).__init__( self._physicser, self.renderer) self.zorder = ZORDER_MID + self.world = world def _get_image(self, name, *transforms): return resources.get_image('creatures', name, transforms=transforms) @@ -50,9 +51,9 @@ class PatrollingAlien(Enemy): is_moving = True # Always walking. - def __init__(self, space, position, end_position): + def __init__(self, space, world, position, end_position): # An enemy that patrols between the two points - super(PatrollingAlien, self).__init__(space, position) + super(PatrollingAlien, self).__init__(space, world, position) self._start_pos = position self._end_pos = end_position self._direction = 'away' diff -r 3153196517fc -r 56e42c00da25 nagslang/level.py --- a/nagslang/level.py Thu Sep 05 13:09:14 2013 +0200 +++ b/nagslang/level.py Thu Sep 05 13:15:31 2013 +0200 @@ -22,13 +22,14 @@ class Level(object): - def __init__(self, name): + def __init__(self, name, world): self.name = name # defaults self.x = 800 self.y = 600 self.polygons = {} self.lines = [] + self.world = world self.basetile = 'tiles/floor.png' self._tile_image = None self._surface = None @@ -100,7 +101,7 @@ def _create_enemy(self, space, classname, args, name=None): cls = getattr(enemies, classname) if issubclass(cls, go.GameObject): - gobj = cls(space, *args) + gobj = cls(space, self.world, *args) self.drawables.append(gobj) else: raise TypeError( diff -r 3153196517fc -r 56e42c00da25 nagslang/protagonist.py --- a/nagslang/protagonist.py Thu Sep 05 13:09:14 2013 +0200 +++ b/nagslang/protagonist.py Thu Sep 05 13:15:31 2013 +0200 @@ -42,13 +42,14 @@ HUMAN_FORM = 'human' WOLF_FORM = 'wolf' - def __init__(self, space, position): + def __init__(self, space, world, position): physicser = self._make_physics(space, position) renderer = self._make_renderer() self.inventory = {} self.form = self.HUMAN_FORM self.angle = 0 self.is_moving = False + self.world = world super(Protagonist, self).__init__(physicser, renderer) self.zorder = ZORDER_MID diff -r 3153196517fc -r 56e42c00da25 nagslang/screens/area.py --- a/nagslang/screens/area.py Thu Sep 05 13:09:14 2013 +0200 +++ b/nagslang/screens/area.py Thu Sep 05 13:15:31 2013 +0200 @@ -67,7 +67,7 @@ def setup(self): self._disable_render = False # Avoid redrawing on scene changes self.keys = ControlKeys() - self._level = Level(self.name) + self._level = Level(self.name, self.world) self._level.load(self.space) self._drawables = Drawables() self.add_walls() diff -r 3153196517fc -r 56e42c00da25 nagslang/world.py --- a/nagslang/world.py Thu Sep 05 13:09:14 2013 +0200 +++ b/nagslang/world.py Thu Sep 05 13:15:31 2013 +0200 @@ -21,7 +21,7 @@ self.transformations = 0 self.kills = 0 self.rooms = 0 - self.protagonist = Protagonist(pymunk.Space(), (350, 300)) + self.protagonist = Protagonist(pymunk.Space(), self, (350, 300)) def _save_location(self): app = 'nagslang' diff -r 3153196517fc -r 56e42c00da25 tools/area_editor.py --- a/tools/area_editor.py Thu Sep 05 13:09:14 2013 +0200 +++ b/tools/area_editor.py Thu Sep 05 13:15:31 2013 +0200 @@ -52,7 +52,7 @@ class EditorLevel(Level): def __init__(self, name, x=800, y=600): - super(EditorLevel, self).__init__(name) + super(EditorLevel, self).__init__(name, None) self.x = x self.y = y # Lookup initiliasition info from the objects