summaryrefslogtreecommitdiffstats
path: root/character.py
blob: 7ac8aad4356f82a60edf1dbddd3208d9731aa828 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
import pygame

from tileset import Tileset

class Character(object):
	movement = [0, 0]

	def __init__(self, start_pos, tilesize):
		self.tilesize = tilesize
		self.render_x, self.render_y = start_pos
		self.render_x *= tilesize
		self.render_y *= tilesize

	def frame(self, keys):
		# are we done moving?
		if self.render_x % self.tilesize == 0:
			self.movement[0] = 0
		if self.render_y % self.tilesize == 0:
			self.movement[1] = 0

		SPEED = 2
		direction = None
		# can we start moving?
		if self.movement[1] == 0:
			if keys[pygame.K_DOWN] or keys[pygame.K_j]:
				self.movement[1] = SPEED
				direction = Tileset.DOWN
			elif keys[pygame.K_UP] or keys[pygame.K_k]:
				self.movement[1] = -SPEED
				direction = Tileset.UP
		if self.movement[0] == 0:
			if keys[pygame.K_RIGHT] or keys[pygame.K_l]:
				self.movement[0] = SPEED
				if not self.movement[1]: # prefer up/down when moving diagonally
					direction = Tileset.RIGHT
			elif keys[pygame.K_LEFT] or keys[pygame.K_h]:
				self.movement[0] = -SPEED
				if not self.movement[1]:
					direction = Tileset.LEFT

		# move!
		self.render_x += self.movement[0]
		self.render_y += self.movement[1]
		return direction