# HG changeset patch # User Thibaut Girka # Date 1319405302 -7200 # Node ID 5a1533677a9a78642deaa8d12d71dff3380aa89e # Parent 3c2a9e28198cb9eb58501e6e0d416cd9bde5937b Freeze time during spellcards diff --git a/pytouhou/game/game.py b/pytouhou/game/game.py --- a/pytouhou/game/game.py +++ b/pytouhou/game/game.py @@ -46,6 +46,7 @@ class Game(object): self.rank = rank self.difficulty = difficulty self.boss = None + self.spellcard = None self.prng = Random() self.frame = 0 diff --git a/pytouhou/vm/eclrunner.py b/pytouhou/vm/eclrunner.py --- a/pytouhou/vm/eclrunner.py +++ b/pytouhou/vm/eclrunner.py @@ -25,12 +25,13 @@ logger = get_logger(__name__) class ECLMainRunner(object): __metaclass__ = MetaRegistry - __slots__ = ('_ecl', '_game', 'processes', + __slots__ = ('_ecl', '_game', 'processes', 'frame', 'instruction_pointer') def __init__(self, ecl, game): self._ecl = ecl self._game = game + self.frame = 0 self.processes = [] @@ -44,12 +45,12 @@ class ECLMainRunner(object): except IndexError: break - if frame > self._game.frame: + if frame > self.frame: break else: self.instruction_pointer += 1 - if frame == self._game.frame: + if frame == self.frame: try: callback = self._handlers[instr_type] except KeyError: @@ -60,6 +61,9 @@ class ECLMainRunner(object): self.processes[:] = (process for process in self.processes if process.run_iteration()) + if not self._game.spellcard: + self.frame += 1 + def _pop_enemy(self, sub, instr_type, x, y, z, life, bonus_dropped, die_score): if instr_type & 4: @@ -701,6 +705,7 @@ class ECLRunner(object): #TODO: change the background. #TODO: make the enemies more resistants (and find how). self._game.change_bullets_into_star_items() + self._game.spellcard = number print("%d - %s" % (number+1, name)) @@ -708,7 +713,9 @@ class ECLRunner(object): def end_spellcard(self): #TODO: return everything back to normal #TODO: give the spellcard bonus. - self._game.change_bullets_into_star_items() + if self._game.spellcard: + self._game.change_bullets_into_star_items() + self._game.spellcard = None @instruction(95)