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 |
|