changeset 88:bf4adb40ca3c

Rough outline of a player object, completely with statuesque flying fox
author Neil Muller <drnlmuller@gmail.com>
date Mon, 04 Apr 2011 16:45:11 +0200
parents 9d1719523ae5
children a46fc252e4fa
files skaapsteker/data.py skaapsteker/level.py skaapsteker/levelscene.py skaapsteker/sprites/base.py
diffstat 4 files changed, 23 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/skaapsteker/data.py	Mon Apr 04 16:44:13 2011 +0200
+++ b/skaapsteker/data.py	Mon Apr 04 16:45:11 2011 +0200
@@ -32,6 +32,11 @@
     return open(os.path.join(data_dir, filename), mode)
 
 
+def get_files(filepath):
+    """Return a sorted list of files in the given directory, with the directory stripped"""
+    return sorted(os.listdir(os.path.join(data_dir, filepath)))
+
+
 IMAGES = {}
 
 def load_image(filename):
--- a/skaapsteker/level.py	Mon Apr 04 16:44:13 2011 +0200
+++ b/skaapsteker/level.py	Mon Apr 04 16:45:11 2011 +0200
@@ -51,12 +51,13 @@
 
 
 class Level(object):
-    def __init__(self, leveldef):
+    def __init__(self, leveldef, player):
         self.level_data = json.loads(data.load('levels/' + leveldef + '.json').read())
         self.sprites = LayeredUpdates()
         self.build_backgrounds()
         self.build_tiles()
         self.setup_enemies()
+        self.setup_player(player)
 
 
     def build_backgrounds(self):
@@ -86,6 +87,12 @@
             self.enemies.add(enemy)
             self.sprites.add(enemy)
 
+    def setup_player(self, player):
+        player_data = self.level_data['player']
+        player.set_facing(player_data.pop('direction'))
+        player.set_image()
+        player.set_pos(player_data.pop('pos'))
+        self.sprites.add(player)
 
     # def setup_sprites(self):
     #     self.sprites = []
--- a/skaapsteker/levelscene.py	Mon Apr 04 16:44:13 2011 +0200
+++ b/skaapsteker/levelscene.py	Mon Apr 04 16:45:11 2011 +0200
@@ -3,12 +3,17 @@
 import engine
 import level
 import physics
+import sprites.player
 import pygame
 
 class LevelScene(engine.Scene):
 
-    def __init__(self, leveldef):
-        self._level = level.Level(leveldef)
+    def __init__(self, leveldef, player=None):
+        if not player:
+            self._player = sprites.player.Player()
+        else:
+            self._player = player
+        self._level = level.Level(leveldef, self._player)
         self._level_surface = self._level.get_surface()
         self._pos = (0, 0)
         self._world = physics.World()
@@ -19,6 +24,8 @@
         for sprite in self._level.tiles:
             self._world.add(sprite)
 
+        self._world.add(self._player)
+
     def draw(self, screen_surface):
         self._world.update()
 
@@ -32,4 +39,5 @@
 
     def dispatch(self, ev):
         # handle events here!
+        self._player.dispatch(ev)
         pass
--- a/skaapsteker/sprites/base.py	Mon Apr 04 16:44:13 2011 +0200
+++ b/skaapsteker/sprites/base.py	Mon Apr 04 16:45:11 2011 +0200
@@ -30,10 +30,6 @@
     pass
 
 
-class Player(Sprite):
-    pass
-
-
 class Projectile(Sprite):
     gravitates = False