Mercurial > nagslang
diff nagslang/screens/area.py @ 65:a99ac95a2940
Move protagonist object to the right place.
author | Jeremy Thurgood <firxen@gmail.com> |
---|---|
date | Sun, 01 Sep 2013 19:31:39 +0200 |
parents | 972142c543ef |
children | a1b4d09e6f23 |
line wrap: on
line diff
--- a/nagslang/screens/area.py Sun Sep 01 19:18:45 2013 +0200 +++ b/nagslang/screens/area.py Sun Sep 01 19:31:39 2013 +0200 @@ -4,13 +4,10 @@ import pymunk import pymunk.pygame_util -from nagslang.game_object import ( - GameObject, SingleShapePhysicser, FacingImageRenderer) -from nagslang.screens.base import Screen +from nagslang.events import ScreenChange from nagslang.level import Level -from nagslang.events import ScreenChange -from nagslang.resources import resources -from nagslang.mutators import FLIP_H +from nagslang.protagonist import Protagonist +from nagslang.screens.base import Screen class ControlKeys(object): @@ -30,61 +27,6 @@ self.key_up(ev.key) -class Protagonist(GameObject): - def __init__(self, position): - self.body = pymunk.Body(10, 10000) - self.body.position = position - self.body.velocity_func = self.velocity_func - - self.shape = pymunk.Circle(self.body, 30) - self.shape.elasticity = 1.0 - self.shape.friction = 10.0 - - super(Protagonist, self).__init__( - FacingImageRenderer( - resources.get_image('creatures', 'werewolf_1.png'), - resources.get_image( - 'creatures', 'werewolf_1.png', transforms=(FLIP_H,))), - SingleShapePhysicser(self.shape)) - - self.go_human() - - def velocity_func(self, body, gravity, damping, dt): - return pymunk.Body.update_velocity(body, gravity, self.damping, dt) - - def go_werewolf(self): - self.werewolf = True - self.body.mass = 100 - self.body.moment = 10000 - self.body.velocity_limit = 1000 - self.shape.color = pygame.color.THECOLORS['red'] - self.impulse_factor = 4000 - self.damping = 0.9 - - def go_human(self): - self.werewolf = False - self.body.mass = 10 - self.body.moment = 1000 - self.body.velocity_limit = 1000 - self.shape.color = pygame.color.THECOLORS['blue'] - self.impulse_factor = 500 - self.damping = 0.8 - - def set_direction(self, dx, dy): - if (dx, dy) == (0, 0): - return - vec = pymunk.Vec2d((dx, dy)) - self.body.angle = vec.angle - self.body.apply_impulse( - (dx * self.impulse_factor, dy * self.impulse_factor)) - - def toggle_form(self): - if self.werewolf: - self.go_human() - else: - self.go_werewolf() - - class AreaScreen(Screen): def setup(self):