Mercurial > touhou
diff pytouhou/game/enemymanager.py @ 22:fa87db09fc3a
Fix Rumia's animations
author | Thibaut Girka <thib@sitedethib.com> |
---|---|
date | Thu, 11 Aug 2011 21:21:38 +0200 |
parents | bf225780973f |
children | 444ac7bca7bc |
line wrap: on
line diff
--- a/pytouhou/game/enemymanager.py +++ b/pytouhou/game/enemymanager.py @@ -19,6 +19,7 @@ class Enemy(object): self.sprite = None self.movement_dependant_sprites = None + self.direction = None self.interpolator = None #TODO self.angle = 0. self.speed = 0. @@ -37,7 +38,9 @@ class Enemy(object): script_index, = unpack('<I', args) self.anm, self.sprite = self.anm_wrapper.get_sprite(script_index) elif instr_type == 98: #TODO - self.movement_dependant_sprites = unpack('<HHHHI', args) + default, end_left, end_right, left, right, unknown = unpack('<HHHHHH', args) + self.movement_dependant_sprites = end_left, end_right, left, right, unknown + self.anm, self.sprite = self.anm_wrapper.get_sprite(default) elif instr_type == 43: # set_pos self.x, self.y, z = unpack('<fff', args) self.interpolator = Interpolator((self.x, self.y)) #TODO: better interpolation @@ -75,19 +78,16 @@ class Enemy(object): if self.movement_dependant_sprites: #TODO: is that really how it works? - dx, dy = self.x - x, self.y - y - if (dx, dy) == (0, 0): - self.anm, self.sprite = self.anm_wrapper.get_sprite(self.movement_dependant_sprites[0]) - elif abs(dx) > abs(dy): - if dx < 0: - self.anm, self.sprite = self.anm_wrapper.get_sprite(self.movement_dependant_sprites[2]) - else: - self.anm, self.sprite = self.anm_wrapper.get_sprite(self.movement_dependant_sprites[3]) - else: - if dy < 0: - self.anm, self.sprite = self.anm_wrapper.get_sprite(self.movement_dependant_sprites[1]) - else: - self.anm, self.sprite = self.anm_wrapper.get_sprite(self.movement_dependant_sprites[2]) + if x < self.x: + self.anm, self.sprite = self.anm_wrapper.get_sprite(self.movement_dependant_sprites[2]) + self.direction = -1 + elif x > self.x: + self.anm, self.sprite = self.anm_wrapper.get_sprite(self.movement_dependant_sprites[3]) + self.direction = +1 + #TODO: end_animation + elif self.direction is not None: + self.anm, self.sprite = self.anm_wrapper.get_sprite(self.movement_dependant_sprites[{-1: 0, +1:1}[self.direction]]) + self.direction = None self.x, self.y = x, y if self.sprite: