Mercurial > touhou
comparison pytouhou/vm/eclrunner.py @ 306:52d791bb7c32
Rename a few attributes/methods to make a little more sense.
author | Thibaut Girka <thib@sitedethib.com> |
---|---|
date | Tue, 13 Mar 2012 19:18:14 +0100 |
parents | f3099ebf4f61 |
children | 5930b33a0370 |
comparison
equal
deleted
inserted
replaced
305:5492472963b0 | 306:52d791bb7c32 |
---|---|
25 | 25 |
26 class ECLMainRunner(object): | 26 class ECLMainRunner(object): |
27 __metaclass__ = MetaRegistry | 27 __metaclass__ = MetaRegistry |
28 __slots__ = ('_ecl', '_game', 'processes', 'frame', | 28 __slots__ = ('_ecl', '_game', 'processes', 'frame', |
29 'instruction_pointer', | 29 'instruction_pointer', |
30 'time_stopped') | 30 'boss_wait') |
31 | 31 |
32 def __init__(self, ecl, game): | 32 def __init__(self, ecl, game): |
33 self._ecl = ecl | 33 self._ecl = ecl |
34 self._game = game | 34 self._game = game |
35 self.frame = 0 | 35 self.frame = 0 |
36 self.time_stopped = False | 36 self.boss_wait = False |
37 | 37 |
38 self.processes = [] | 38 self.processes = [] |
39 | 39 |
40 self.instruction_pointer = 0 | 40 self.instruction_pointer = 0 |
41 | 41 |
42 | 42 |
43 def run_iter(self): | 43 def run_iter(self): |
44 if not self._game.boss: | 44 if not self._game.boss: |
45 self.time_stopped = False | 45 self.boss_wait = False |
46 | 46 |
47 while True: | 47 while True: |
48 try: | 48 try: |
49 frame, sub, instr_type, args = self._ecl.main[self.instruction_pointer] | 49 frame, sub, instr_type, args = self._ecl.main[self.instruction_pointer] |
50 except IndexError: | 50 except IndexError: |
51 break | 51 break |
52 | 52 |
53 # The msg_wait instruction stops the reading of the ECL, not just the frame incrementation. | 53 # The msg_wait instruction stops the reading of the ECL, not just the frame incrementation. |
54 if frame > self.frame or self._game.msg_wait or self.time_stopped: | 54 if frame > self.frame or self._game.msg_wait or self.boss_wait: |
55 break | 55 break |
56 else: | 56 else: |
57 self.instruction_pointer += 1 | 57 self.instruction_pointer += 1 |
58 | 58 |
59 if frame == self.frame: | 59 if frame == self.frame: |
65 callback(self, sub, instr_type, *args) | 65 callback(self, sub, instr_type, *args) |
66 | 66 |
67 self.processes[:] = (process for process in self.processes | 67 self.processes[:] = (process for process in self.processes |
68 if process.run_iteration()) | 68 if process.run_iteration()) |
69 | 69 |
70 if not (self._game.msg_wait or self.time_stopped): | 70 if not (self._game.msg_wait or self.boss_wait): |
71 self.frame += 1 | 71 self.frame += 1 |
72 | 72 |
73 | 73 |
74 def _pop_enemy(self, sub, instr_type, x, y, z, life, bonus_dropped, die_score): | 74 def _pop_enemy(self, sub, instr_type, x, y, z, life, bonus_dropped, die_score): |
75 if instr_type & 4: | 75 if instr_type & 4: |
118 else: | 118 else: |
119 raise Exception #TODO | 119 raise Exception #TODO |
120 | 120 |
121 | 121 |
122 @instruction(12) | 122 @instruction(12) |
123 def stop_time(self, sub, instr_type): | 123 def wait_for_boss_death(self, sub, instr_type): |
124 self.time_stopped = True | 124 self.boss_wait = True |
125 | 125 |
126 | 126 |
127 | 127 |
128 | 128 |
129 class ECLRunner(object): | 129 class ECLRunner(object): |
806 def set_spellcard(self, face, number, name): | 806 def set_spellcard(self, face, number, name): |
807 #TODO: display it on the game. | 807 #TODO: display it on the game. |
808 #TODO: make the enemies more resistants (and find how). | 808 #TODO: make the enemies more resistants (and find how). |
809 self._game.change_bullets_into_star_items() | 809 self._game.change_bullets_into_star_items() |
810 self._game.spellcard = (number, name) | 810 self._game.spellcard = (number, name) |
811 self._game.enable_effect() | 811 self._game.enable_spellcard_effect() |
812 | 812 |
813 | 813 |
814 @instruction(94) | 814 @instruction(94) |
815 def end_spellcard(self): | 815 def end_spellcard(self): |
816 #TODO: return everything back to normal | 816 #TODO: return everything back to normal |
817 #TODO: give the spellcard bonus. | 817 #TODO: give the spellcard bonus. |
818 if self._game.spellcard: | 818 if self._game.spellcard: |
819 self._game.change_bullets_into_star_items() | 819 self._game.change_bullets_into_star_items() |
820 self._game.spellcard = None | 820 self._game.spellcard = None |
821 self._game.disable_effect() | 821 self._game.disable_spellcard_effect() |
822 | 822 |
823 | 823 |
824 @instruction(95) | 824 @instruction(95) |
825 def pop_enemy(self, sub, x, y, z, life, bonus_dropped, die_score): | 825 def pop_enemy(self, sub, x, y, z, life, bonus_dropped, die_score): |
826 self._game.ecl_runner._pop_enemy(sub, 0, self._getval(x), | 826 self._game.ecl_runner._pop_enemy(sub, 0, self._getval(x), |