#!/usr/bin/env python
import pygame
-from Richter.Sprite import *
-from Richter.Collage import *
-from Richter.Surface import *
-from Richter.Actor import *
-from Richter.Stage import *
-from Richter.Camera import *
+from Richter.Level import Level
+from Richter.Camera import Camera
import Richter.Engine as Engine
#resolution = (1280,1024)
pygame.display.set_caption("platformtest")
-stage = Stage()
-main = Layer('data/example1')
-stage.addLayerFront(main)
-stage.addLayerBack(Layer('data/stars', 1.0, 0.25))
-stage.setSurfaces('data/example1')
+l = Level('levels/example1')
+Engine.updaters.append(l.update)
+Engine.drawers.append(l.draw)
-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)
-candelabra.setFramerate(10.0)
-candelabra.play()
+player = l.env['player']
-main.add(candelabra)
-Engine.drawers.append(stage.draw)
-
-camera = Camera(stage)
-camera.setBbox(main.bbox)
+camera = Camera(l)
+#camera.setBbox(l.bbox)
Engine.updaters.append(camera.update)
-
-class Richter(Actor):
- def __init__(self, surfaces=None):
- Actor.__init__(self, surfaces)
-
- self.defineState('walk_l',
- Sprite(['Sprites/Richter/richter%d.png' % n for n in range(0,8)],
- framerate=10.0, scale=2.0, gravity=(CENTER,BOTTOM)))
- self.defineState('walk_r',
- Sprite(['Sprites/Richter/richter%d.png' % n for n in range(0,8)], mirror=True,
- framerate=10.0, scale=2.0, gravity=(CENTER,BOTTOM)))
- self.defineState('idle_l',
- Sprite("Sprites/Richter/richter0.png", scale=2.0, gravity=(CENTER,BOTTOM)))
- self.defineState('idle_r',
- Sprite("Sprites/Richter/richter0.png", mirror=True, scale=2.0, gravity=(CENTER,BOTTOM)))
- self.setState('idle_r')
-
- self.delta = [0,0]
- self.jumping = False
- self.grounded = self.collideDelta((0,-1))
-
-
- def jump(self):
- if not self.jumping and self.grounded:
- self.delta[1] = 15.0
- self.jumping = True
- self.grounded = False
-
-
- def jumpCancel(self):
- self.jumping = False
- if self.delta[1] > 0.0:
- self.delta[1] = 0.0
-
-
- def bounce(self):
- self.delta[1] = -self.delta[1]
-
-
- def walkRight(self):
- self.delta[0] = 2
- self.setState('walk_r')
-
-
- def walkLeft(self):
- self.delta[0] = -2
- self.setState('walk_l')
-
-
- def idle(self):
- if self.currentstate == 'walk_l':
- self.setState('idle_l')
- else:
- self.setState('idle_r')
- self.delta[0] = 0
-
-
- def update(self):
- if self.grounded:
- self.delta[1] = 0
- else:
- if self.delta[1] > -15.0:
- self.delta[1] -= 0.5
- if self.grounded and self.delta[0] != 0:
- # Climb up inclines (visually poetic, is it not?)
- if self.collideDelta(self.delta):
- delta = list(self.delta)
- for delta[1] in range(1, abs(delta[0]) + 1):
- if not self.collideDelta(delta):
- self.delta = delta
- break
- # ... and walk down slopes
- else:
- self.delta[1] = -abs(self.delta[0])
- self.move(self.delta)
- self.grounded = self.collideDelta((0,-1))
-
-
-richter = Richter(stage.surfaces)
-richter.setPosition(32, 64)
-main.add(richter)
-camera.setFocus(richter)
-
-class Zombie(Actor):
- def __init__(self, surfaces=None):
- Actor.__init__(self, surfaces)
-
- self.defineState('walk_r',
- Sprite(['Sprites/zombie soldier/zombiesoldierwalk_%d.png' % n for n in range(1,5)],
- framerate=10.0, scale=2.0, gravity=(CENTER,BOTTOM)))
- self.defineState('walk_l',
- Sprite(['Sprites/zombie soldier/zombiesoldierwalk_%d.png' % n for n in range(1,5)],
- mirror=True, framerate=10.0, scale=2.0, gravity=(CENTER,BOTTOM)))
-
- self.setState('walk_r')
- self.direction = 0
- self.disabled = 0
- self.topbox = pygame.Rect(self.states['walk_l'].hitbox)
- self.topbox.height = 10
-
- def update(self):
- if self.disabled > 0:
- if self.disabled % 2:
- self.setState('walk_r')
- else:
- self.setState('walk_l')
- self.disabled -= 1
- if self.disabled == 0:
- if self.direction == 0:
- self.setState('walk_r')
- else:
- self.setState('walk_l')
- else:
- if self.direction == 0:
- if self.move((1, 0)):
- self.direction = 1
- self.setState('walk_l')
- elif self.direction == 1:
- if self.move((-1, 0)):
- self.direction = 0
- self.setState('walk_r')
-
- self.topbox.bottom = self.position[1] + 72
- self.topbox.left = self.position[0] - 31
- if self.topbox.collidepoint(richter.position):
- self.disabled = 120
- richter.bounce()
-
-zombie = Zombie(stage.surfaces)
-zombie.setPosition(512, 64)
-main.add(zombie)
-
+camera.setFocus(player)
def input(e):
if e.type == pygame.KEYDOWN:
if e.key == pygame.K_LEFT:
- richter.walkLeft()
+ player.walkLeft()
elif e.key == pygame.K_RIGHT:
- richter.walkRight()
+ player.walkRight()
elif e.key == pygame.K_UP:
- richter.jump()
+ player.jump()
elif e.key == pygame.K_1:
- stage.toggleDrawSurfaces()
- elif e.key == pygame.K_2:
- camera.clearBbox()
- elif e.key == pygame.K_3:
- camera.setBbox(main.bbox)
+ l.toggleDrawSurfaces()
+ #elif e.key == pygame.K_2:
+ # camera.clearBbox()
+ #elif e.key == pygame.K_3:
+ # camera.setBbox(l.bbox)
elif e.key == pygame.K_ESCAPE:
Engine.stop()
elif e.type == pygame.KEYUP:
if e.key == pygame.K_LEFT or e.key == pygame.K_RIGHT:
- richter.idle()
+ player.idle()
elif e.key == pygame.K_UP:
- richter.jumpCancel()
+ player.jumpCancel()
elif e.type == pygame.QUIT:
Engine.stop()
Engine.eventhandlers.append(input)
def update():
- richter.update()
- if richter.position[1] < 0:
- richter.position = [richter.position[0],480]
- zombie.update()
+ if player.position[1] < 0:
+ player.position = [player.position[0],480]
Engine.updaters.append(update)