from Richter.Actor import Actor
from Richter.Sprite import *
class RichterActor(Actor):
def __init__(self, **kwargs):
Actor.__init__(self, **kwargs)
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.currentstatename == '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:
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
else:
self.delta[1] = -abs(self.delta[0])
self.move(self.delta)
self.grounded = self.collideDelta((0,-1))