Mercurial > touhou
comparison pytouhou/ui/gamerunner.py @ 374:6a63fd3deb76
Use an iterator to get the keystates from a replay.
| author | Emmanuel Gil Peyrot <linkmauve@linkmauve.fr> |
|---|---|
| date | Sun, 05 Aug 2012 18:19:42 +0200 |
| parents | 6deab6ad8be8 |
| children | 11d895b6c0dc |
comparison
equal
deleted
inserted
replaced
| 373:6deab6ad8be8 | 374:6a63fd3deb76 |
|---|---|
| 66 self.replay_level = None | 66 self.replay_level = None |
| 67 if not replay or not replay.levels[game.stage-1]: | 67 if not replay or not replay.levels[game.stage-1]: |
| 68 self.keys = pyglet.window.key.KeyStateHandler() | 68 self.keys = pyglet.window.key.KeyStateHandler() |
| 69 self.push_handlers(self.keys) | 69 self.push_handlers(self.keys) |
| 70 else: | 70 else: |
| 71 self.keys = 0 | |
| 72 self.replay_level = replay.levels[game.stage-1] | 71 self.replay_level = replay.levels[game.stage-1] |
| 72 self.keys = self.replay_level.iter_keystates() | |
| 73 game.players[0].state.lives = self.replay_level.lives | 73 game.players[0].state.lives = self.replay_level.lives |
| 74 game.players[0].state.power = self.replay_level.power | 74 game.players[0].state.power = self.replay_level.power |
| 75 game.players[0].state.bombs = self.replay_level.bombs | 75 game.players[0].state.bombs = self.replay_level.bombs |
| 76 game.difficulty = self.replay_level.difficulty | 76 game.difficulty = self.replay_level.difficulty |
| 77 | 77 |
| 159 if self.keys[pyglet.window.key.RIGHT]: | 159 if self.keys[pyglet.window.key.RIGHT]: |
| 160 keystate |= 128 | 160 keystate |= 128 |
| 161 if self.keys[pyglet.window.key.LCTRL]: | 161 if self.keys[pyglet.window.key.LCTRL]: |
| 162 keystate |= 256 | 162 keystate |= 256 |
| 163 else: | 163 else: |
| 164 keystate = 0 | 164 try: |
| 165 for frame, _keystate, unknown in self.replay_level.keys: | 165 keystate = self.keys.next() |
| 166 if self.game.frame < frame: | 166 except StopIteration: |
| 167 break | 167 keystate = 0 |
| 168 else: | |
| 169 keystate = _keystate | |
| 170 | 168 |
| 171 if self.save_keystates is not None: | 169 if self.save_keystates is not None: |
| 172 self.save_keystates.append(keystate) | 170 self.save_keystates.append(keystate) |
| 173 | 171 |
| 174 self.game.run_iter(keystate) | 172 self.game.run_iter(keystate) |
