comparison pytouhou/game/game.pyx @ 795:2d60a14f4816 default tip

python: Rewrite the main entrypoint in Rust This lets us progressively replace Python modules with Rust ones. Currently missing features include: - Saving replays - Networking code for cooperative mode - Reading a configuration file for options - Maybe more. But the base game is working, so yay!
author Link Mauve <linkmauve@linkmauve.fr>
date Tue, 02 Jun 2026 19:06:16 +0200
parents 1f152ca95658
children
comparison
equal deleted inserted replaced
794:8c2ef2d503c9 795:2d60a14f4816
597 return filtered 597 return filtered
598 598
599 599
600 def select_player_key(player): 600 def select_player_key(player):
601 return (player.score, player.character) 601 return (player.score, player.character)
602
603
604 class GameBossRush(Game):
605 def run_iter(self, keystates):
606 for i in range(20):
607 skip = not (self.enemies or self.items or self.lasers
608 or self.bullets or self.cancelled_bullets)
609 if skip:
610 keystates = [k & ~1 for k in keystates]
611 Game.run_iter(self, [0 if i else k | 256 for k in keystates])
612 if not self.enemies and self.frame % 90 == 0:
613 for player in self.players:
614 if player.power < 128:
615 player.power += 1
616 if not skip:
617 break
618
619 def cleanup(self):
620 boss_wait = any(ecl_runner.boss_wait for ecl_runner in self.ecl_runners)
621 if not (self.boss or self.msg_wait or boss_wait):
622 self.enemies = [enemy for enemy in self.enemies
623 if enemy.boss_callback or enemy.frame > 1]
624 for laser in self.lasers:
625 if laser.frame <= 1:
626 laser.removed = True
627 self.lasers = [laser for laser in self.lasers if laser.frame > 1]
628 self.bullets = [bullet for bullet in self.bullets if bullet.frame > 1]
629 Game.cleanup(self)