changeset 277:56e42c00da25

Protagonist and enemies should see the world
author Neil Muller <drnlmuller@gmail.com>
date Thu, 05 Sep 2013 13:15:31 +0200
parents 3153196517fc
children e72025e9aa07
files nagslang/enemies.py nagslang/level.py nagslang/protagonist.py nagslang/screens/area.py nagslang/world.py tools/area_editor.py
diffstat 6 files changed, 12 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- 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'
--- 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(
--- 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
--- 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()
--- 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'
--- 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