/classes/Zombie.py
from Richter.Actor import Actor
from Richter.Sprite import *

class Zombie(Actor):
	def __init__(self, **kwargs):
		Actor.__init__(self, **kwargs)

		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


	def hitWall(self):
		if self.direction == 0:
			self.direction = 1
			self.setState('walk_l')
		elif self.direction == 1:
			self.direction = 0
			self.setState('walk_r')


	def collideStart(self, obj):
		if self.disabled > 0: return
		if obj.__class__.__name__ == 'RichterActor':
			if not obj.grounded and obj.delta[1] < 0:
				obj.bounce()
				self.disabled = 100


	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:
				self.move((1, 0))
			elif self.direction == 1:
				self.move((-1, 0))

			# put in future collide event
			#if self.topbox.collidepoint(player.position):
			#	self.disabled = 120
			#	player.bounce()