# HG changeset patch # User Emmanuel Gil Peyrot # Date 1319215043 25200 # Node ID 35d850502d1ff56835ba91e4124581448151426e # Parent ea2ad94c33a093ba5ac906e1964adc7ec055cad5 Move effects where they should be. diff --git a/pytouhou/game/effect.py b/pytouhou/game/effect.py new file mode 100644 --- /dev/null +++ b/pytouhou/game/effect.py @@ -0,0 +1,36 @@ +# -*- encoding: utf-8 -*- +## +## Copyright (C) 2011 Emmanuel Gil Peyrot +## +## This program is free software; you can redistribute it and/or modify +## it under the terms of the GNU General Public License as published +## by the Free Software Foundation; version 3 only. +## +## This program is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +## GNU General Public License for more details. +## + + +from pytouhou.game.sprite import Sprite +from pytouhou.vm.anmrunner import ANMRunner + + + +class Effect(object): + def __init__(self, pos, index, anm_wrapper): + self._sprite = Sprite() + self._anmrunner = ANMRunner(anm_wrapper, index, self._sprite) + self._anmrunner.run_frame() + self._removed = False + + self.x, self.y = pos + + def update(self): + if self._anmrunner and not self._anmrunner.run_frame(): + self._anmrunner = None + + if self._sprite: + if self._sprite._removed: + self._sprite = None diff --git a/pytouhou/game/enemy.py b/pytouhou/game/enemy.py --- a/pytouhou/game/enemy.py +++ b/pytouhou/game/enemy.py @@ -21,24 +21,6 @@ from pytouhou.game.item import Item from math import cos, sin, atan2, pi -class Effect(object): - def __init__(self, pos, index, anm_wrapper): - self._sprite = Sprite() - self._anmrunner = ANMRunner(anm_wrapper, index, self._sprite) - self._anmrunner.run_frame() - self._removed = False - - self.x, self.y = pos - - def update(self): - if self._anmrunner and not self._anmrunner.run_frame(): - self._anmrunner = None - - if self._sprite: - if self._sprite._removed: - self._sprite = None - - class Enemy(object): def __init__(self, pos, life, _type, bonus_dropped, die_score, anm_wrapper, game): self._game = game @@ -173,8 +155,7 @@ class Enemy(object): def die_anim(self): - eff00 = self._game.resource_loader.get_anm_wrapper(('eff00.anm',)) - self._game.effects.append(Effect((self.x, self.y), self.death_anim, eff00)) + self._game.new_effect((self.x, self.y), self.death_anim) def set_pos(self, x, y, z): diff --git a/pytouhou/game/game.py b/pytouhou/game/game.py --- a/pytouhou/game/game.py +++ b/pytouhou/game/game.py @@ -20,6 +20,7 @@ from pytouhou.vm.eclrunner import ECLMai from pytouhou.game.player import Player from pytouhou.game.enemy import Enemy from pytouhou.game.item import Item +from pytouhou.game.effect import Effect @@ -50,6 +51,7 @@ class Game(object): self.enm_anm_wrapper = resource_loader.get_anm_wrapper2(('stg%denm.anm' % stage, 'stg%denm2.anm' % stage)) + self.eff00 = resource_loader.get_anm_wrapper(('eff00.anm',)) ecl = resource_loader.get_ecl('ecldata%d.ecl' % stage) self.ecl_runner = ECLMainRunner(ecl, self) @@ -70,6 +72,10 @@ class Game(object): self.bullets = [] + def new_effect(self, pos, anim): + self.effects.append(Effect(pos, anim, self.eff00)) + + def new_enemy(self, pos, life, instr_type, bonus_dropped, die_score): enemy = Enemy(pos, life, instr_type, bonus_dropped, die_score, self.enm_anm_wrapper, self) self.enemies.append(enemy) diff --git a/pytouhou/game/player.py b/pytouhou/game/player.py --- a/pytouhou/game/player.py +++ b/pytouhou/game/player.py @@ -14,7 +14,6 @@ from pytouhou.game.sprite import Sprite -from pytouhou.game.enemy import Effect from pytouhou.vm.anmrunner import ANMRunner @@ -77,8 +76,7 @@ class Player(object): def collide(self): if not self.state.invulnerable_time and not self.death_time and self.state.touchable: # Border Between Life and Death self.death_time = self._game.frame - eff00 = self._game.resource_loader.get_anm_wrapper(('eff00.anm',)) - self._game.effects.append(Effect((self.state.x, self.state.y), 2, eff00)) + self._game.new_effect((self.state.x, self.state.y), 2) def collect(self, item):