git.fiddlerwoaroof.com
src/player.py
54cb1995
 import libtcodpy as tc
3d5a515d
 import libs.combat
dff12016
 import libs.overlay
54cb1995
 
df36dce5
 def trigger_update(func):
 	def _inner(self, *a, **kw):
 		self.trigger_event('preupdate')
 		result = func(self, *a, **kw)
 		self.trigger_event('update')
 		return result
 	return _inner
 
dff12016
 class Player(libs.overlay.Actor):
def7cb88
 	char = ord('@')
 	color = (255,255,255)
3d5a515d
 	light_radius = 10
dff12016
 	def __init__(self, x,y, map, adventurer):
 		libs.overlay.Actor.__init__(self, x,y, map, adventurer)
86f3fea2
 		print 'Player\'s name is %s' % self.adventurer.name
3d5a515d
 		self.map.set_pov((self.pos, self.light_radius))
b8f124a1
 		self.display = None
df36dce5
 
 	@trigger_update
3d5a515d
 	def move(self, dx, dy):
dff12016
 		libs.overlay.Actor.move(self, dx,dy)
3d5a515d
 		self.map.set_pov((self.pos, self.light_radius))
54cb1995
 
b8f124a1
 	def claim_display(self, display):
 		self.display = display
df36dce5
 
b8f124a1
 	def tick(self):
 		return libs.overlay.Actor.tick(self)
 
54cb1995
 class ArrowHandler(object):
 	def __init__(self, player, eh):
 		self.player = player
 		eh.register(tc.KEY_LEFT,self.left)
 		eh.register(tc.KEY_RIGHT,self.right)
 		eh.register(tc.KEY_UP,self.up)
 		eh.register(tc.KEY_DOWN,self.down)
b8f124a1
 
 	def do_move(self, shift, dx, dy):
 		self.player.add_repeated_action(10 if shift else 1, self.player.move, dx,dy)
 
291e96ff
 	def left(self, alt, shift, ctrl):
b8f124a1
 		dx,dy = (-1,-1) if alt else (-1,0)
 		self.do_move(shift, dx,dy)
 
291e96ff
 	def right(self, alt, shift, ctrl):
b8f124a1
 		dx,dy = (1,1) if alt else (1,0)
 		self.do_move(shift, dx,dy)
 
291e96ff
 	def up(self, alt, shift, ctrl):
b8f124a1
 		dx,dy = (1,-1) if alt else (0,-1)
 		self.do_move(shift, dx,dy)
 
291e96ff
 	def down(self, alt, shift, ctrl):
b8f124a1
 		dx,dy = (-1,1) if alt else (0,1)
 		self.do_move(shift, dx,dy)
54cb1995