Mercurial > nagslang
diff nagslang/level.py @ 168:ce8d4fc3baf4
A patrolling alien
author | Neil Muller <drnlmuller@gmail.com> |
---|---|
date | Tue, 03 Sep 2013 14:39:38 +0200 |
parents | 06c681ff53aa |
children | e080fcd07fa9 |
line wrap: on
line diff
--- a/nagslang/level.py Tue Sep 03 11:21:43 2013 +0200 +++ b/nagslang/level.py Tue Sep 03 14:39:38 2013 +0200 @@ -2,6 +2,7 @@ import pygame.locals as pgl from nagslang import game_object as go +from nagslang import enemies from nagslang.resources import resources from nagslang.yamlish import load, dump @@ -30,6 +31,7 @@ self._glue = go.PuzzleGlue() self._drawables = [] self._game_objects = [] + self._enemies = [] def _get_data(self): # For overriding in tests. @@ -43,6 +45,7 @@ 'base_tile': self.basetile, 'polygons': self.polygons, 'game_objects': self._game_objects, + 'enemies': self._enemies, }, f) def load(self, space): @@ -56,6 +59,9 @@ self._game_objects = data.get('game_objects', []) for game_object_dict in self._game_objects: self._create_game_object(space, **game_object_dict) + self._enemies = data.get('enemies', []) + for enemy_dict in self._enemies: + self._create_enemy(space, **enemy_dict) def _create_game_object(self, space, classname, args, name=None): # We should probably build a registry of game objects or something. @@ -73,6 +79,18 @@ if name is not None: self._glue.add_component(name, gobj) + def _create_enemy(self, space, classname, args, name=None): + cls = getattr(enemies, classname) + if issubclass(cls, go.GameObject): + gobj = cls(space, *args) + self._drawables.append(gobj) + else: + raise TypeError( + "Expected a subclass of GameObject, got %s" % ( + classname)) + if name is not None: + self._glue.add_component(name, gobj) + def all_closed(self): """Check if all the polygons are closed""" closed = True