commit:c7ba0802719856d3554231e8b90329da5e27a6ba
author:Chip Black
committer:Chip Black
date:Fri Jul 11 03:20:50 2008 -0500
parents:b1d533b3ba0f8b7d4c064b5ea3f81526e4c79e11
Changed Engine bits to make platformtest.py work again
diff --git a/Engine.py b/Engine.py
line changes: +10/-2
index 78db785..af3f5bb
--- a/Engine.py
+++ b/Engine.py
@@ -68,11 +68,21 @@ drawers = []
 
 def loadlevel(name):
 	global level
+	unloadLevel()
 	fp, pathname, description = imp.find_module(name)
 	level = imp.load_module(name, fp, pathname, description)
+	updaters.insert(0, level.update)
+	drawers.insert(0, level.draw)
 	return level
 
 
+def unloadLevel():
+	global level
+	updaters.remove(level.update)
+	drawers.remove(level.draw)
+	level = None
+
+
 def stop():
 	global running
 	running = False
@@ -93,11 +103,9 @@ def run():
 
 		for update in updaters:
 			update()
-		level.update()
 
 		for draw in drawers:
 			draw()
-		level.draw()
 
 		pygame.display.flip()
 		fpsman.tick(60)

diff --git a/platformtest.py b/platformtest.py
line changes: +14/-7
index 79f270a..2e988b1
--- a/platformtest.py
+++ b/platformtest.py
@@ -23,7 +23,7 @@ stage.addLayerFront(main)
 stage.addLayerBack(Layer('data/stars', 1.0, 0.25))
 stage.setSurfaces('data/example1')
 
-candelabra = Sprite(['Sprites/candelabra_short/cand_s_1.png','Sprites/candelabra_short/cand_s_2.png','Sprites/candelabra_short/cand_s_3.png','Sprites/candelabra_short/cand_s_4.png'])
+candelabra = Sprite(['Sprites/candelabra_short/cand_s_%d.png' % x for x in range(1,4)])
 candelabra.setPosition(64, 64)
 candelabra.setScale(2.0)
 candelabra.setGravity(CENTER, BOTTOM)
@@ -31,9 +31,11 @@ candelabra.setFramerate(10.0)
 candelabra.play()
 
 main.add(candelabra)
+Engine.drawers.append(stage.draw)
 
-camera = Camera(stage, resolution)
+camera = Camera(stage)
 camera.setBbox(main.bbox)
+Engine.updaters.append(camera.update)
 
 class Richter(Actor):
 	def __init__(self, surfaces=None):
@@ -181,12 +183,17 @@ def input(e):
 			camera.clearBbox()
 		elif e.key == pygame.K_3:
 			camera.setBbox(main.bbox)
+		elif e.key == pygame.K_ESC:
+			Engine.stop()
 	elif e.type == pygame.KEYUP:
 		if e.key == pygame.K_LEFT or e.key == pygame.K_RIGHT:
 			richter.idle()
 		elif e.key == pygame.K_UP:
 			richter.jumpCancel()
+	elif e.type == pygame.QUIT:
+		Engine.stop()
 
+Engine.eventhandlers.append(input)
 
 def update():
 	richter.update()
@@ -194,6 +201,8 @@ def update():
 		richter.position = [richter.position[0],480]
 	zombie.update()
 
+Engine.updaters.append(update)
+
 n = 0
 def fpsthing():
 	global n
@@ -204,8 +213,6 @@ def fpsthing():
 		print fps
 		n = 0
 
-Engine.engine(
-	[input],
-	[update, camera.update, fpsthing],
-	[stage.draw]
-)
+Engine.updaters.append(fpsthing)
+
+Engine.run()