Mercurial > touhou
comparison eosd @ 486:2f53be1b2f60
Merge netplay branch.
| author | Emmanuel Gil Peyrot <linkmauve@linkmauve.fr> |
|---|---|
| date | Fri, 27 Sep 2013 19:01:47 +0200 |
| parents | 58b47e788c59 1de67f332f00 |
| children | 711c75115675 |
comparison
equal
deleted
inserted
replaced
| 474:ca22df9e70bc | 486:2f53be1b2f60 |
|---|---|
| 44 parser.add_argument('--no-particles', action='store_false', help='Disable particles handling (huge performance boost on slow systems).') | 44 parser.add_argument('--no-particles', action='store_false', help='Disable particles handling (huge performance boost on slow systems).') |
| 45 parser.add_argument('--no-music', action='store_false', help='Disable background music.') | 45 parser.add_argument('--no-music', action='store_false', help='Disable background music.') |
| 46 parser.add_argument('--hints', metavar='HINTS', default=None, help='Hints file, to display text while playing.') | 46 parser.add_argument('--hints', metavar='HINTS', default=None, help='Hints file, to display text while playing.') |
| 47 parser.add_argument('--verbosity', metavar='VERBOSITY', choices=['DEBUG', 'INFO', 'WARNING', 'ERROR', 'CRITICAL'], help='Select the wanted logging level.') | 47 parser.add_argument('--verbosity', metavar='VERBOSITY', choices=['DEBUG', 'INFO', 'WARNING', 'ERROR', 'CRITICAL'], help='Select the wanted logging level.') |
| 48 parser.add_argument('--game', metavar='GAME', choices=['EoSD'], default='EoSD', help='Select the game engine to use.') | 48 parser.add_argument('--game', metavar='GAME', choices=['EoSD'], default='EoSD', help='Select the game engine to use.') |
| 49 parser.add_argument('--port', metavar='PORT', type=int, default=0, help='Port to use for netplay') | |
| 50 parser.add_argument('--remote', metavar='REMOTE', default=None, help='Remote address') | |
| 49 | 51 |
| 50 args = parser.parse_args() | 52 args = parser.parse_args() |
| 51 | 53 |
| 52 | 54 |
| 53 import sys | 55 import sys |
| 60 from pytouhou.game.player import PlayerState, GameOver | 62 from pytouhou.game.player import PlayerState, GameOver |
| 61 from pytouhou.formats.t6rp import T6RP, Level | 63 from pytouhou.formats.t6rp import T6RP, Level |
| 62 from pytouhou.utils.random import Random | 64 from pytouhou.utils.random import Random |
| 63 from pytouhou.vm.msgrunner import NextStage | 65 from pytouhou.vm.msgrunner import NextStage |
| 64 from pytouhou.formats.hint import Hint | 66 from pytouhou.formats.hint import Hint |
| 67 from pytouhou.network import Network | |
| 65 | 68 |
| 66 | 69 |
| 67 if args.game == 'EoSD': | 70 if args.game == 'EoSD': |
| 68 from pytouhou.games.eosd import EoSDCommon as Common, EoSDGame as Game | 71 from pytouhou.games.eosd import EoSDCommon as Common, EoSDGame as Game |
| 69 | 72 |
| 96 Game.cleanup(self) | 99 Game.cleanup(self) |
| 97 | 100 |
| 98 | 101 |
| 99 def main(window, path, data, stage_num, rank, character, replay, save_filename, | 102 def main(window, path, data, stage_num, rank, character, replay, save_filename, |
| 100 skip_replay, boss_rush, debug, enable_background, enable_particles, | 103 skip_replay, boss_rush, debug, enable_background, enable_particles, |
| 101 enable_music, hints, verbosity): | 104 enable_music, hints, verbosity, port, remote): |
| 102 | 105 |
| 103 resource_loader = Loader(path) | 106 resource_loader = Loader(path) |
| 104 | 107 |
| 105 try: | 108 try: |
| 106 resource_loader.scan_archives(data) | 109 resource_loader.scan_archives(data) |
| 134 if save_filename: | 137 if save_filename: |
| 135 save_replay = T6RP() | 138 save_replay = T6RP() |
| 136 save_replay.rank = rank | 139 save_replay.rank = rank |
| 137 save_replay.character = character | 140 save_replay.character = character |
| 138 | 141 |
| 142 if port != 0: | |
| 143 players = [PlayerState(character=0), PlayerState(character=2)] | |
| 144 | |
| 145 if remote: | |
| 146 remote_addr, remote_port = remote.split(':') | |
| 147 addr = remote_addr, int(remote_port) | |
| 148 selected_player = 0 | |
| 149 else: | |
| 150 addr = None | |
| 151 selected_player = 1 | |
| 152 | |
| 153 prng = Random(0) | |
| 154 con = Network(port, addr, selected_player) | |
| 155 else: | |
| 156 con = None | |
| 157 | |
| 139 if hints: | 158 if hints: |
| 140 with open(hints, 'rb') as file: | 159 with open(hints, 'rb') as file: |
| 141 hints = Hint.read(file) | 160 hints = Hint.read(file) |
| 142 | 161 |
| 143 difficulty = 16 | 162 difficulty = 16 |
| 145 states = [PlayerState(character=character, power=default_power, continues=continues)] | 164 states = [PlayerState(character=character, power=default_power, continues=continues)] |
| 146 | 165 |
| 147 game_class = GameBossRush if boss_rush else Game | 166 game_class = GameBossRush if boss_rush else Game |
| 148 | 167 |
| 149 common = Common(resource_loader) | 168 common = Common(resource_loader) |
| 150 runner = GameRunner(window, resource_loader, skip=skip_replay) | 169 runner = GameRunner(window, resource_loader, skip=skip_replay, con=con) |
| 151 while True: | 170 while True: |
| 152 if replay: | 171 if replay: |
| 153 level = replay.levels[stage_num - 1] | 172 level = replay.levels[stage_num - 1] |
| 154 if not level: | 173 if not level: |
| 155 raise Exception | 174 raise Exception |
| 165 states[0].points = level.point_items | 184 states[0].points = level.point_items |
| 166 states[0].power = level.power | 185 states[0].power = level.power |
| 167 states[0].lives = level.lives | 186 states[0].lives = level.lives |
| 168 states[0].bombs = level.bombs | 187 states[0].bombs = level.bombs |
| 169 difficulty = level.difficulty | 188 difficulty = level.difficulty |
| 170 else: | 189 elif port == 0: |
| 171 prng = Random() | 190 prng = Random() |
| 172 | 191 |
| 173 if save_filename: | 192 if save_filename: |
| 174 if not replay: | 193 if not replay: |
| 175 save_replay.levels[stage_num - 1] = level = Level() | 194 save_replay.levels[stage_num - 1] = level = Level() |
| 229 fixed_pipeline=args.fixed_pipeline) | 248 fixed_pipeline=args.fixed_pipeline) |
| 230 | 249 |
| 231 main(window, args.path, tuple(args.data), args.stage, args.rank, | 250 main(window, args.path, tuple(args.data), args.stage, args.rank, |
| 232 args.character, args.replay, args.save_replay, args.skip_replay, | 251 args.character, args.replay, args.save_replay, args.skip_replay, |
| 233 args.boss_rush, args.debug, args.no_background, args.no_particles, | 252 args.boss_rush, args.debug, args.no_background, args.no_particles, |
| 234 args.no_music, args.hints, args.verbosity) | 253 args.no_music, args.hints, args.verbosity, args.port, args.remote) |
| 235 | 254 |
| 236 import gc | 255 import gc |
| 237 gc.collect() | 256 gc.collect() |
