def run(restart): """ This is called during a single run of the script. Restarting the script will cause this to change. """ # Reset the store to a clean version of itself. renpy.python.clean_stores() # Init translation. renpy.translation.init_translation() # Prepare the screens. renpy.display.screen.prepare_screens() # Rebuild the various style caches. renpy.style.build_styles() # @UndefinedVariable # Start the interface, if it hasn't been started already. renpy.game.interface.start() # Re-Initialize the log. game.log = renpy.python.RollbackLog() # Switch contexts, begin logging. game.contexts = [ renpy.execution.Context(True) ] # Jump to an appropriate start label. if game.script.has_label("_start"): start_label = '_start' else: start_label = 'start' game.context().goto_label(start_label) # Perhaps warp. warp_label = renpy.warp.warp() if warp_label is not None: game.context().goto_label(warp_label) game.context().call('_after_warp') renpy.config.skipping = None try: renpy.exports.log("--- " + time.ctime()) renpy.exports.log("") except: pass # Note if this is a restart. renpy.store._restart = restart # We run until we get an exception. renpy.display.interface.enter_context() renpy.execution.run_context(True)
def run(restart): """ This is called during a single run of the script. Restarting the script will cause this to change. """ # Reset the store to a clean version of itself. renpy.python.clean_stores() # Re-Initialize the log. game.log = renpy.python.RollbackLog() # Switch contexts, begin logging. game.contexts = [ renpy.execution.Context(True) ] # Jump to an appropriate start label. if game.script.has_label("_start"): start_label = '_start' else: start_label = 'start' game.context().goto_label(start_label) # Perhaps warp. warp_label = renpy.warp.warp() if warp_label is not None: game.context().goto_label(warp_label) if game.script.has_label('after_warp'): game.context().call('after_warp') renpy.config.skipping = None try: renpy.exports.log("--- " + time.ctime()) renpy.exports.log("") except: pass # Note if this is a restart. renpy.store._restart = restart # We run until we get an exception. renpy.display.interface.enter_context() renpy.execution.run_context(True)
def run(restart): """ This is called during a single run of the script. Restarting the script will cause this to change. """ # Reset the store to a clean version of itself. renpy.python.clean_stores() # Re-Initialize the log. game.log = renpy.python.RollbackLog() # Switch contexts, begin logging. game.contexts = [renpy.execution.Context(True)] # Jump to an appropriate start label. if game.script.has_label("_start"): start_label = '_start' else: start_label = 'start' game.context().goto_label(start_label) # Perhaps warp. warp_label = renpy.warp.warp() if warp_label is not None: game.context().goto_label(warp_label) game.context().call('_after_warp') renpy.config.skipping = None try: renpy.exports.log("--- " + time.ctime()) renpy.exports.log("") except: pass # Note if this is a restart. renpy.store._restart = restart # We run until we get an exception. renpy.display.interface.enter_context() renpy.execution.run_context(True)
def main(): renpy.game.exception_info = 'Before loading the script.' # Get ready to accept new arguments. renpy.arguments.pre_init() # Init the screen language parser. renpy.sl2.slparser.init() # Init the config after load. renpy.config.init() # Set up variants. choose_variants() renpy.display.touch = "touch" in renpy.config.variants # Note the game directory. game.basepath = renpy.config.gamedir renpy.config.searchpath = [ renpy.config.gamedir ] # Find the common directory. commondir = __main__.path_to_common(renpy.config.renpy_base) # E1101 @UndefinedVariable if os.path.isdir(commondir): renpy.config.searchpath.append(commondir) renpy.config.commondir = commondir else: renpy.config.commondir = None if renpy.android: renpy.config.searchpath = [ ] renpy.config.commondir = None # Load Ren'Py extensions. for dir in renpy.config.searchpath: #@ReservedAssignment for fn in os.listdir(dir): if fn.lower().endswith(".rpe"): load_rpe(dir + "/" + fn) # The basename is the final component of the path to the gamedir. for i in sorted(os.listdir(renpy.config.gamedir)): if not i.endswith(".rpa"): continue i = i[:-4] renpy.config.archives.append(i) renpy.config.archives.reverse() # Initialize archives. renpy.loader.index_archives() # Start auto-loading. renpy.loader.auto_init() # Initialize the log. game.log = renpy.python.RollbackLog() # Initialize the store. renpy.store.store = sys.modules['store'] # Set up styles. game.style = renpy.style.StyleManager() # @UndefinedVariable renpy.store.style = game.style # Run init code in its own context. (Don't log.) game.contexts = [ renpy.execution.Context(False) ] game.contexts[0].init_phase = True # Load the script. renpy.game.exception_info = 'While loading the script.' renpy.game.script = renpy.script.Script() # Set up error handling. renpy.exports.load_module("_errorhandling") renpy.style.build_styles() # @UndefinedVariable # Load all .rpy files. renpy.game.script.load_script() # sets renpy.game.script. renpy.game.exception_info = 'After loading the script.' # Find the save directory. if renpy.config.savedir is None: renpy.config.savedir = __main__.path_to_saves(renpy.config.gamedir) # E1101 @UndefinedVariable if renpy.game.args.savedir: #@UndefinedVariable renpy.config.savedir = renpy.game.args.savedir #@UndefinedVariable # Init preferences. game.persistent = renpy.persistent.init() game.preferences = game.persistent._preferences # Init save locations. renpy.savelocation.init() # We need to be 100% sure we kill the savelocation thread. try: # Load persistent data from all save locations. renpy.persistent.update() # Clear the list of seen statements in this game. game.seen_session = { } # Initialize persistent variables. renpy.store.persistent = game.persistent renpy.store._preferences = game.preferences if renpy.parser.report_parse_errors(): raise renpy.game.ParseErrorException() renpy.game.exception_info = 'While executing init code:' for _prio, node in game.script.initcode: game.context().run(node) renpy.game.exception_info = 'After initialization, but before game start.' # Save the bytecode in a cache. renpy.game.script.save_bytecode() # Check if we should simulate android. renpy.android = renpy.android or renpy.config.simulate_android #@UndefinedVariable # Run the post init code, if any. for i in renpy.game.post_init: i() # Init translation. renpy.translation.init_translation() # Rebuild the various style caches. renpy.style.build_styles() # @UndefinedVariable # Index the archive files. We should not have loaded an image # before this point. (As pygame will not have been initialized.) # We need to do this again because the list of known archives # may have changed. renpy.loader.index_archives() # Check some environment variables. renpy.game.less_memory = "RENPY_LESS_MEMORY" in os.environ renpy.game.less_mouse = "RENPY_LESS_MOUSE" in os.environ renpy.game.less_updates = "RENPY_LESS_UPDATES" in os.environ renpy.dump.dump(False) # Handle arguments and commands. if not renpy.arguments.post_init(): return # Remove the list of all statements from the script. game.script.all_stmts = None # Make a clean copy of the store. renpy.python.make_clean_stores() # Initialize image cache. renpy.display.im.cache.init() # (Perhaps) Initialize graphics. if not game.interface: renpy.display.core.Interface() # Start things running. restart = None renpy.game.exception_info = 'While running game code:' renpy.first_utter_start = False while True: if restart: renpy.display.screen.before_restart() try: try: run(restart) finally: restart = (renpy.config.end_game_transition, "_invoke_main_menu", "_main_menu") renpy.persistent.update(True) except game.FullRestartException, e: restart = e.reason finally: # Flush any pending interface work. renpy.display.interface.finish_pending() # Give Ren'Py a couple of seconds to finish saving. renpy.loadsave.autosave_not_running.wait(3.0)
def run(restart): """ This is called during a single run of the script. Restarting the script will cause this to change. """ reset_clock() # Reset the store to a clean version of itself. renpy.python.clean_stores() log_clock("Cleaning stores") # Init translation. renpy.translation.init_translation() log_clock("Init translation") # Rebuild the various style caches. renpy.style.build_styles() # @UndefinedVariable log_clock("Build styles") renpy.sl2.slast.load_cache() log_clock("Load screen analysis") # Analyze the screens. renpy.display.screen.analyze_screens() log_clock("Analyze screens") if not restart: renpy.sl2.slast.save_cache() log_clock("Save screen analysis") # Prepare the screens. renpy.display.screen.prepare_screens() log_clock("Prepare screens") if not restart: renpy.pyanalysis.save_cache() log_clock("Save pyanalysis.") renpy.game.script.save_bytecode() log_clock("Save bytecode.") # Handle arguments and commands. if not renpy.arguments.post_init(): renpy.exports.quit() if renpy.config.clear_lines: renpy.scriptedit.lines.clear() # Sleep to finish the presplash. renpy.display.presplash.sleep() # Re-Initialize the log. game.log = renpy.python.RollbackLog() # Switch contexts, begin logging. game.contexts = [renpy.execution.Context(True)] # Jump to an appropriate start label. if game.script.has_label("_start"): start_label = '_start' else: start_label = 'start' game.context().goto_label(start_label) try: renpy.exports.log("--- " + time.ctime()) renpy.exports.log("") except: pass # Note if this is a restart. renpy.store._restart = restart # We run until we get an exception. renpy.display.interface.enter_context() log_clock("Running {}".format(start_label)) renpy.execution.run_context(True)
def main(): renpy.game.exception_info = 'Before loading the script.' # Get ready to accept new arguments. renpy.arguments.pre_init() # Init the screen language parser. renpy.sl2.slparser.init() # Init the config after load. renpy.config.init() # Set up variants. choose_variants() renpy.display.touch = "touch" in renpy.config.variants # Note the game directory. game.basepath = renpy.config.gamedir renpy.config.searchpath = [renpy.config.gamedir] # Find the common directory. commondir = __main__.path_to_common( renpy.config.renpy_base) # E1101 @UndefinedVariable if os.path.isdir(commondir): renpy.config.searchpath.append(commondir) renpy.config.commondir = commondir else: renpy.config.commondir = None if renpy.android: renpy.config.searchpath = [] renpy.config.commondir = None # Load Ren'Py extensions. for dir in renpy.config.searchpath: #@ReservedAssignment for fn in os.listdir(dir): if fn.lower().endswith(".rpe"): load_rpe(dir + "/" + fn) # The basename is the final component of the path to the gamedir. for i in sorted(os.listdir(renpy.config.gamedir)): if not i.endswith(".rpa"): continue i = i[:-4] renpy.config.archives.append(i) renpy.config.archives.reverse() # Initialize archives. renpy.loader.index_archives() # Start auto-loading. renpy.loader.auto_init() # Initialize the log. game.log = renpy.python.RollbackLog() # Initialize the store. renpy.store.store = sys.modules['store'] # Set up styles. game.style = renpy.style.StyleManager() # @UndefinedVariable renpy.store.style = game.style # Run init code in its own context. (Don't log.) game.contexts = [renpy.execution.Context(False)] game.contexts[0].init_phase = True # Load the script. renpy.game.exception_info = 'While loading the script.' renpy.game.script = renpy.script.Script() # Set up error handling. renpy.exports.load_module("_errorhandling") renpy.style.build_styles() # @UndefinedVariable renpy.display.screen.prepare_screens() # Load all .rpy files. renpy.game.script.load_script() # sets renpy.game.script. renpy.game.exception_info = 'After loading the script.' # Find the save directory. if renpy.config.savedir is None: renpy.config.savedir = __main__.path_to_saves( renpy.config.gamedir) # E1101 @UndefinedVariable if renpy.game.args.savedir: #@UndefinedVariable renpy.config.savedir = renpy.game.args.savedir #@UndefinedVariable # Init preferences. game.persistent = renpy.persistent.init() game.preferences = game.persistent._preferences # Init save locations. renpy.savelocation.init() # We need to be 100% sure we kill the savelocation thread. try: # Load persistent data from all save locations. renpy.persistent.update() # Clear the list of seen statements in this game. game.seen_session = {} # Initialize persistent variables. renpy.store.persistent = game.persistent renpy.store._preferences = game.preferences if renpy.parser.report_parse_errors(): raise renpy.game.ParseErrorException() renpy.game.exception_info = 'While executing init code:' for _prio, node in game.script.initcode: game.context().run(node) renpy.game.exception_info = 'After initialization, but before game start.' # Save the bytecode in a cache. renpy.game.script.save_bytecode() # Check if we should simulate android. renpy.android = renpy.android or renpy.config.simulate_android #@UndefinedVariable # Run the post init code, if any. for i in renpy.game.post_init: i() # Init translation. renpy.translation.init_translation() # Rebuild the various style caches. renpy.style.build_styles() # @UndefinedVariable # Analyze the script and compile ATL. renpy.game.script.analyze() renpy.atl.compile_all() # Prepare the screens. renpy.display.screen.prepare_screens() # Index the archive files. We should not have loaded an image # before this point. (As pygame will not have been initialized.) # We need to do this again because the list of known archives # may have changed. renpy.loader.index_archives() # Check some environment variables. renpy.game.less_memory = "RENPY_LESS_MEMORY" in os.environ renpy.game.less_mouse = "RENPY_LESS_MOUSE" in os.environ renpy.game.less_updates = "RENPY_LESS_UPDATES" in os.environ renpy.dump.dump(False) # Handle arguments and commands. if not renpy.arguments.post_init(): return # Remove the list of all statements from the script. game.script.all_stmts = None # Make a clean copy of the store. renpy.python.make_clean_stores() # Initialize image cache. renpy.display.im.cache.init() # (Perhaps) Initialize graphics. if not game.interface: renpy.display.core.Interface() # Start things running. restart = None renpy.game.exception_info = 'While running game code:' renpy.first_utter_start = False while True: if restart: renpy.display.screen.before_restart() try: try: run(restart) finally: restart = (renpy.config.end_game_transition, "_invoke_main_menu", "_main_menu") renpy.persistent.update(True) except game.FullRestartException, e: restart = e.reason finally: # Flush any pending interface work. renpy.display.interface.finish_pending() # Give Ren'Py a couple of seconds to finish saving. renpy.loadsave.autosave_not_running.wait(3.0)
def main(): log_clock("Bootstrap to the start of init.init") renpy.game.exception_info = 'Before loading the script.' # Get ready to accept new arguments. renpy.arguments.pre_init() # Init the screen language parser. renpy.sl2.slparser.init() # Init the config after load. renpy.config.init() # Set up variants. choose_variants() renpy.display.touch = "touch" in renpy.config.variants log_clock("Early init") # Note the game directory. game.basepath = renpy.config.gamedir renpy.config.searchpath = [renpy.config.gamedir] # Find the common directory. commondir = __main__.path_to_common( renpy.config.renpy_base) # E1101 @UndefinedVariable if os.path.isdir(commondir): renpy.config.searchpath.append(commondir) renpy.config.commondir = commondir else: renpy.config.commondir = None if renpy.android: renpy.config.searchpath = [] renpy.config.commondir = None # Load Ren'Py extensions. for dir in renpy.config.searchpath: #@ReservedAssignment for fn in os.listdir(dir): if fn.lower().endswith(".rpe"): load_rpe(dir + "/" + fn) # The basename is the final component of the path to the gamedir. for i in sorted(os.listdir(renpy.config.gamedir)): if not i.endswith(".rpa"): continue i = i[:-4] renpy.config.archives.append(i) renpy.config.archives.reverse() # Initialize archives. renpy.loader.index_archives() # Start auto-loading. renpy.loader.auto_init() log_clock("Loader init") # Initialize the log. game.log = renpy.python.RollbackLog() # Initialize the store. renpy.store.store = sys.modules['store'] # Set up styles. game.style = renpy.style.StyleManager() # @UndefinedVariable renpy.store.style = game.style # Run init code in its own context. (Don't log.) game.contexts = [renpy.execution.Context(False)] game.contexts[0].init_phase = True renpy.execution.not_infinite_loop(60) # Load the script. renpy.game.exception_info = 'While loading the script.' renpy.game.script = renpy.script.Script() if renpy.session.get("compile", False): renpy.game.args.compile = True # Set up error handling. renpy.exports.load_module("_errorhandling") renpy.style.build_styles() # @UndefinedVariable log_clock("Loading error handling") # If recompiling everything, remove orphan .rpyc files. # Otherwise, will fail in case orphan .rpyc have same # labels as in other scripts (usually happens on script rename). if (renpy.game.args.command == 'compile' ) and not (renpy.game.args.keep_orphan_rpyc): # @UndefinedVariable for (fn, dir) in renpy.game.script.script_files: if dir is None: continue if not os.path.isfile(os.path.join(dir, fn + ".rpy")): try: name = os.path.join(dir, fn + ".rpyc") os.rename(name, name + ".bak") except OSError: # This perhaps shouldn't happen since either .rpy or .rpyc should exist pass # Update script files list, so that it doesn't contain removed .rpyc's renpy.loader.cleardirfiles() renpy.game.script.scan_script_files() # Load all .rpy files. renpy.game.script.load_script() # sets renpy.game.script. log_clock("Loading script") if renpy.game.args.command == 'load-test': start = time.time() for i in range(5): print(i) renpy.game.script = renpy.script.Script() renpy.game.script.load_script() print time.time() - start sys.exit(0) renpy.game.exception_info = 'After loading the script.' # Find the save directory. if renpy.config.savedir is None: renpy.config.savedir = __main__.path_to_saves( renpy.config.gamedir) # E1101 @UndefinedVariable if renpy.game.args.savedir: #@UndefinedVariable renpy.config.savedir = renpy.game.args.savedir #@UndefinedVariable # Init preferences. game.persistent = renpy.persistent.init() game.preferences = game.persistent._preferences # Init save locations. renpy.savelocation.init() # We need to be 100% sure we kill the savelocation thread. try: # Load persistent data from all save locations. renpy.persistent.update() log_clock("Loading persistent") # Clear the list of seen statements in this game. game.seen_session = {} # Initialize persistent variables. renpy.store.persistent = game.persistent renpy.store._preferences = game.preferences if renpy.parser.report_parse_errors(): raise renpy.game.ParseErrorException() renpy.game.exception_info = 'While executing init code:' for _prio, node in game.script.initcode: game.context().run(node) renpy.game.exception_info = 'After initialization, but before game start.' # Check if we should simulate android. renpy.android = renpy.android or renpy.config.simulate_android #@UndefinedVariable # Run the post init code, if any. for i in renpy.game.post_init: i() if renpy.config.clear_lines: renpy.scriptedit.lines.clear() for i in renpy.game.persistent._seen_translates: if i in renpy.game.script.translator.default_translates: renpy.game.seen_translates_count += 1 log_clock("Running init code") renpy.pyanalysis.load_cache() log_clock("Loading analysis data") # Analyze the script and compile ATL. renpy.game.script.analyze() renpy.atl.compile_all() log_clock("Analyze and compile ATL") # Index the archive files. We should not have loaded an image # before this point. (As pygame will not have been initialized.) # We need to do this again because the list of known archives # may have changed. renpy.loader.index_archives() log_clock("Index archives") # Check some environment variables. renpy.game.less_memory = "RENPY_LESS_MEMORY" in os.environ renpy.game.less_mouse = "RENPY_LESS_MOUSE" in os.environ renpy.game.less_updates = "RENPY_LESS_UPDATES" in os.environ renpy.dump.dump(False) renpy.game.script.make_backups() log_clock("Dump and make backups.") # Initialize image cache. renpy.display.im.cache.init() log_clock("Cleaning cache") # Make a clean copy of the store. renpy.python.make_clean_stores() log_clock("Making clean stores") # (Perhaps) Initialize graphics. if not game.interface: renpy.display.core.Interface() log_clock("Creating interface object") # Start things running. restart = None while True: if restart: renpy.display.screen.before_restart() try: try: run(restart) finally: restart = (renpy.config.end_game_transition, "_invoke_main_menu", "_main_menu") renpy.persistent.update(True) except game.FullRestartException, e: restart = e.reason finally: # Flush any pending interface work. renpy.display.interface.finish_pending() # Give Ren'Py a couple of seconds to finish saving. renpy.loadsave.autosave_not_running.wait(3.0)
def run(restart): """ This is called during a single run of the script. Restarting the script will cause this to change. """ # Reset the store to a clean version of itself. renpy.python.clean_stores() # Re-Initialize the log. game.log = renpy.python.RollbackLog() # Switch contexts, begin logging. game.contexts = [ renpy.execution.Context(True) ] # Jump to an appropriate start label. if game.script.has_label("_start"): start_label = '_start' else: start_label = 'start' game.context().goto_label(start_label) # Perhaps warp. warp_label = renpy.warp.warp() if warp_label is not None: game.context().goto_label(warp_label) if game.script.has_label('after_warp'): game.context().call('after_warp') # Run the game. while True: renpy.config.skipping = None try: renpy.exports.log("--- " + time.ctime()) renpy.exports.log("") except: pass # Note if this is a restart. renpy.store._restart = restart restart = None # We run until we get an exception. try: game.context().run() game.context().pop_all_dynamic() break # We get this when the context has changed, and so we go and # start running from the new context. except game.RestartException, e: renpy.game.contexts = e.contexts label = e.label if label: if game.script.has_label(label): game.context().call(label) continue
def run(restart): """ This is called during a single run of the script. Restarting the script will cause this to change. """ reset_clock() # Reset the store to a clean version of itself. renpy.python.clean_stores() log_clock("Cleaning stores") # Init translation. renpy.translation.init_translation() log_clock("Init translation") # Rebuild the various style caches. renpy.style.build_styles() # @UndefinedVariable log_clock("Build styles") renpy.sl2.slast.load_cache() log_clock("Load screen analysis") # Analyze the screens. renpy.display.screen.analyze_screens() log_clock("Analyze screens") if not restart: renpy.sl2.slast.save_cache() log_clock("Save screen analysis") # Prepare the screens. renpy.display.screen.prepare_screens() log_clock("Prepare screens") if not restart: renpy.pyanalysis.save_cache() renpy.game.script.save_bytecode() log_clock("Save caches.") # Handle arguments and commands. if not renpy.arguments.post_init(): renpy.exports.quit() # Remove the list of all statements from the script. game.script.all_stmts = None # start = time.time() # # for i in range(0, 5): # print i # renpy.display.screen.prepared = False # renpy.display.screen.prepare_screens() # # print "5x prepare took", time.time() - start # sys.exit(0) # Re-Initialize the log. game.log = renpy.python.RollbackLog() # Switch contexts, begin logging. game.contexts = [renpy.execution.Context(True)] # Jump to an appropriate start label. if game.script.has_label("_start"): start_label = '_start' else: start_label = 'start' game.context().goto_label(start_label) # Perhaps warp. warp_label = renpy.warp.warp() if warp_label is not None: game.context().goto_label(warp_label) game.context().call('_after_warp') renpy.config.skipping = None try: renpy.exports.log("--- " + time.ctime()) renpy.exports.log("") except: pass # Note if this is a restart. renpy.store._restart = restart # We run until we get an exception. renpy.display.interface.enter_context() log_clock("Running {}".format(start_label)) renpy.execution.run_context(True)
def run(restart): """ This is called during a single run of the script. Restarting the script will cause this to change. """ # Reset the store to a clean version of itself. store = renpy.store.__dict__ #@UndefinedVariable store.clear() store.update(renpy.game.clean_store) # Re-Initialize the log. game.log = renpy.python.RollbackLog() # Switch contexts, begin logging. game.contexts = [ renpy.execution.Context(True) ] # Jump to an appropriate start label. if game.script.has_label("_start"): start_label = '_start' else: start_label = 'start' game.context().goto_label(start_label) # Perhaps warp. if renpy.game.options.warp: #@UndefinedVariable label = renpy.warp.warp(renpy.game.options.warp) #@UndefinedVariable renpy.game.options.warp = None if not label: raise Exception("Could not find line to warp to.") game.context().goto_label(label) if game.script.has_label('after_warp'): game.context().call('after_warp') # Run the game. while True: renpy.config.skipping = None try: renpy.exports.log("--- " + time.ctime()) renpy.exports.log("") except: pass # Note if this is a restart. renpy.store._restart = restart restart = None # We run until we get an exception. try: game.context().run() game.context().pop_all_dynamic() break # We get this when the context has changed, and so we go and # start running from the new context. except game.RestartException, e: renpy.game.contexts = e.contexts label = e.label if label: if game.script.has_label(label): game.context().call(label) continue
def main(): renpy.game.exception_info = 'Before loading the script.' # Init the config after load. renpy.config.init() # Set up variants. choose_variants() # Note the game directory. game.basepath = renpy.config.gamedir renpy.config.searchpath = [ renpy.config.gamedir ] # Find the common directory. commondir = __main__.path_to_common(renpy.config.renpy_base) # E1101 @UndefinedVariable if os.path.isdir(commondir): renpy.config.searchpath.append(commondir) renpy.config.commondir = commondir else: renpy.config.commondir = None # Load Ren'Py extensions. for dir in renpy.config.searchpath: #@ReservedAssignment for fn in os.listdir(dir): if fn.lower().endswith(".rpe"): load_rpe(dir + "/" + fn) # The basename is the final component of the path to the gamedir. for i in sorted(os.listdir(renpy.config.gamedir)): if not i.endswith(".rpa"): continue i = i[:-4] renpy.config.archives.append(i) renpy.config.archives.reverse() # Note the profile option. if renpy.game.options.profile: #@UndefinedVariable renpy.config.profile = True # Initialize archives. renpy.loader.index_archives() # Initialize the log. game.log = renpy.python.RollbackLog() # Initialize the store. renpy.store.store = renpy.python.StoreProxy() # Set up styles. renpy.style.reset() game.style = renpy.style.StyleManager() renpy.store.style = game.style # Run init code in its own context. (Don't log.) game.contexts = [ renpy.execution.Context(False) ] game.contexts[0].init_phase = True # Load the script. renpy.game.exception_info = 'While loading the script.' renpy.game.script = renpy.script.Script() renpy.exports.load_module("_errorhandling") renpy.game.script.load_script() # sets renpy.game.script. renpy.game.exception_info = 'After loading the script.' # Find the save directory. if renpy.config.savedir is None: renpy.config.savedir = __main__.path_to_saves(renpy.config.gamedir) # E1101 @UndefinedVariable if renpy.game.options.savedir: #@UndefinedVariable renpy.config.savedir = renpy.game.options.savedir #@UndefinedVariable # Make the save directory. try: os.makedirs(renpy.config.savedir) except: pass # Perhaps delete the persistent data and exit. if renpy.game.options.rmpersistent: #@UndefinedVariable try: os.unlink(renpy.config.savedir + "/persistent") except: pass return # Unserialize the persistent data. try: f = file(renpy.config.savedir + "/persistent", "rb") s = f.read().decode("zlib") f.close() game.persistent = loads(s) except: game.persistent = game.Persistent() # Initialize the set of statements seen ever. if not game.persistent._seen_ever: game.persistent._seen_ever = { } game.seen_ever = game.persistent._seen_ever # Initialize the set of images seen ever. if not game.persistent._seen_images: game.persistent._seen_images = { } # Initialize the set of chosen menu choices. if not game.persistent._chosen: game.persistent._chosen = { } if not game.persistent._seen_audio: game.persistent._seen_audio = { } # Clear the list of seen statements in this game. game.seen_session = { } # Initialize the preferences. if not game.persistent._preferences: game.persistent._preferences = game.Preferences() game.preferences = game.persistent._preferences # Initialize persistent variables. renpy.store.persistent = game.persistent renpy.store._preferences = game.preferences if renpy.parser.report_parse_errors(): raise renpy.game.ParseErrorException() renpy.game.exception_info = 'While executing init code:' for _prio, node in game.script.initcode: game.context().run(node) renpy.game.exception_info = 'After initialization, but before game start.' # Save the bytecode in a cache. renpy.game.script.save_bytecode() # Check if we should simulate android. renpy.android = renpy.android or renpy.config.simulate_android #@UndefinedVariable # Run the post init code, if any. for i in renpy.game.post_init: i() # Rebuild the various style caches. renpy.style.build_styles() # Index the archive files. We should not have loaded an image # before this point. (As pygame will not have been initialized.) # We need to do this again because the list of known archives # may have changed. renpy.loader.index_archives() # Make a clean copy of the store. game.clean_store = renpy.store.__dict__.copy() #@UndefinedVariable # Check some environment variables. renpy.game.less_memory = "RENPY_LESS_MEMORY" in os.environ renpy.game.less_mouse = "RENPY_LESS_MOUSE" in os.environ renpy.game.less_updates = "RENPY_LESS_UPDATES" in os.environ if renpy.game.options.compile: #@UndefinedVariable return if renpy.game.options.lint: #@UndefinedVariable try: renpy.lint.lint() return except: raise # Remove the list of all statements from the script. game.script.all_stmts = None # Initialize image cache. renpy.display.im.cache.init() # (Perhaps) Initialize graphics. if not game.interface: renpy.display.core.Interface() # Start things running. restart = None renpy.game.exception_info = 'While running game code:' renpy.first_utter_start = False while True: try: try: run(restart) finally: restart = (renpy.config.end_game_transition, "_invoke_main_menu", "_main_menu") save_persistent() except game.QuitException, e: break except game.FullRestartException, e: restart = e.reason
def main(): renpy.game.exception_info = 'Before loading the script.' # Init the config after load. renpy.config.init() # Note the game directory. game.basepath = renpy.config.gamedir renpy.config.searchpath = [ renpy.config.gamedir ] # Find the common directory. commondir = __main__.path_to_common(renpy.config.renpy_base) # E1101 if os.path.isdir(commondir): renpy.config.searchpath.append(commondir) renpy.config.commondir = commondir else: renpy.config.commondir = None # Load Ren'Py extensions. for dir in renpy.config.searchpath: for fn in os.listdir(dir): if fn.lower().endswith(".rpe"): load_rpe(dir + "/" + fn) # The basename is the final component of the path to the gamedir. for i in os.listdir(renpy.config.gamedir): if not i.endswith(".rpa"): continue i = i[:-4] renpy.config.archives.append(i) # Note the profile option. if renpy.game.options.profile: renpy.config.profile = True # Initialize archives. renpy.loader.index_archives() # Initialize the log. game.log = renpy.python.RollbackLog() # Initialize the store. renpy.store.store = renpy.store # Load the script. renpy.game.exception_info = 'While loading the script.' game.script = renpy.script.load_script() if renpy.parser.report_parse_errors(): raise renpy.game.ParseErrorException() renpy.game.exception_info = 'After loading the script.' # Find the save directory. if renpy.config.savedir is None: renpy.config.savedir = __main__.path_to_saves(renpy.config.gamedir) # E1101 if renpy.game.options.savedir: renpy.config.savedir = renpy.game.options.savedir # Make the save directory. try: os.makedirs(renpy.config.savedir) except: pass # Perhaps delete the persistent data and exit. if renpy.game.options.rmpersistent: try: os.unlink(renpy.config.savedir + "/persistent") except: pass return # Unserialize the persistent data. try: f = file(renpy.config.savedir + "/persistent", "rb") s = f.read().decode("zlib") f.close() game.persistent = loads(s) except: game.persistent = game.Persistent() # Initialize the set of statements seen ever. if not game.persistent._seen_ever: game.persistent._seen_ever = { } game.seen_ever = game.persistent._seen_ever # Initialize the set of images seen ever. if not game.persistent._seen_images: game.persistent._seen_images = { } # Initialize the set of chosen menu choices. if not game.persistent._chosen: game.persistent._chosen = { } if not game.persistent._seen_audio: game.persistent._seen_audio = { } # Clear the list of seen statements in this game. game.seen_session = { } # Initialize the preferences. if not game.persistent._preferences: game.persistent._preferences = game.Preferences() game.preferences = game.persistent._preferences # Initialize persistent variables. renpy.store.persistent = game.persistent renpy.store._preferences = game.preferences # Set up styles. renpy.style.reset() game.style = renpy.style.StyleManager() renpy.store.style = game.style renpy.game.exception_info = 'While executing init code:' # Run init code in its own context. (Don't log.) game.contexts = [ renpy.execution.Context(False) ] # Run the init code. game.init_phase = True for prio, node in game.script.initcode: game.context().run(node) game.init_phase = False renpy.game.exception_info = 'After initialization, but before game start.' # Save the bytecode in a cache. renpy.game.script.save_bytecode() # Run the post init code, if any. for i in renpy.game.post_init: i() # Rebuild the various style caches. renpy.style.build_styles() # Index the archive files. We should not have loaded an image # before this point. (As pygame will not have been initialized.) # We need to do this again because the list of known archives # may have changed. renpy.loader.index_archives() # Make a clean copy of the store. game.clean_store = renpy.store.__dict__.copy() # Check some environment variables. renpy.game.less_memory = "RENPY_LESS_MEMORY" in os.environ renpy.game.less_mouse = "RENPY_LESS_MOUSE" in os.environ renpy.game.less_updates = "RENPY_LESS_UPDATES" in os.environ if renpy.game.options.compile: return if renpy.game.options.lint: try: renpy.lint.lint() return except: raise # Remove the list of all statements from the script. game.script.all_stmts = None # (Perhaps) Initialize graphics. if not game.interface: game.interface = renpy.display.core.Interface() # Start things running. restart = None renpy.game.exception_info = 'While running game code:' while True: try: try: run(restart) finally: restart = (renpy.config.end_game_transition, "_invoke_main_menu", "_main_menu") save_persistent() except game.QuitException, e: break except game.FullRestartException, e: restart = e.reason
def run(restart): """ This is called during a single run of the script. Restarting the script will cause this to change. """ # Reset the store to a clean version of itself. store = renpy.store.__dict__ #@UndefinedVariable store.clear() store.update(renpy.game.clean_store) # Re-Initialize the log. game.log = renpy.python.RollbackLog() # Switch contexts, begin logging. game.contexts = [ renpy.execution.Context(True) ] # Jump to an appropriate start label. if game.script.has_label("_start"): start_label = '_start' else: start_label = 'start' game.context().goto_label(start_label) # Perhaps warp. if renpy.game.options.warp: #@UndefinedVariable label = renpy.warp.warp(renpy.game.options.warp) #@UndefinedVariable renpy.game.options.warp = None if not label: raise Exception("Could not find line to warp to.") game.context().goto_label(label) if game.script.has_label('after_warp'): game.context().call('after_warp') # Run the game. while True: renpy.exports.log("--- " + time.ctime()) renpy.exports.log("") # Note if this is a restart. renpy.store._restart = restart restart = None # We run until we get an exception. try: game.context().run() game.context().pop_all_dynamic() break # We get this when the context has changed, and so we go and # start running from the new context. except game.RestartException, e: renpy.game.contexts = e.contexts label = e.label if label: if game.script.has_label(label): game.context().call(label) continue
def main(): log_clock("Bootstrap to the start of init.init") renpy.game.exception_info = 'Before loading the script.' # Get ready to accept new arguments. renpy.arguments.pre_init() # Init the screen language parser. renpy.sl2.slparser.init() # Init the config after load. renpy.config.init() # Set up variants. choose_variants() renpy.display.touch = "touch" in renpy.config.variants log_clock("Early init") # Note the game directory. game.basepath = renpy.config.gamedir renpy.config.searchpath = [ renpy.config.gamedir ] # Find the common directory. commondir = __main__.path_to_common(renpy.config.renpy_base) # E1101 @UndefinedVariable if os.path.isdir(commondir): renpy.config.searchpath.append(commondir) renpy.config.commondir = commondir else: renpy.config.commondir = None if renpy.android: renpy.config.searchpath = [ ] renpy.config.commondir = None # Load Ren'Py extensions. for dir in renpy.config.searchpath: #@ReservedAssignment for fn in os.listdir(dir): if fn.lower().endswith(".rpe"): load_rpe(dir + "/" + fn) # The basename is the final component of the path to the gamedir. for i in sorted(os.listdir(renpy.config.gamedir)): if not i.endswith(".rpa"): continue i = i[:-4] renpy.config.archives.append(i) renpy.config.archives.reverse() # Initialize archives. renpy.loader.index_archives() # Start auto-loading. renpy.loader.auto_init() log_clock("Loader init") # Initialize the log. game.log = renpy.python.RollbackLog() # Initialize the store. renpy.store.store = sys.modules['store'] # Set up styles. game.style = renpy.style.StyleManager() # @UndefinedVariable renpy.store.style = game.style # Run init code in its own context. (Don't log.) game.contexts = [ renpy.execution.Context(False) ] game.contexts[0].init_phase = True renpy.execution.not_infinite_loop(60) # Load the script. renpy.game.exception_info = 'While loading the script.' renpy.game.script = renpy.script.Script() # Set up error handling. renpy.exports.load_module("_errorhandling") renpy.style.build_styles() # @UndefinedVariable log_clock("Loading error handling") # If recompiling everything, remove orphan .rpyc files. # Otherwise, will fail in case orphan .rpyc have same # labels as in other scripts (usually happens on script rename). if renpy.game.args.command == 'compile': for (fn, dir) in renpy.game.script.script_files: if not os.path.isfile(os.path.join(dir, fn+".rpy")): try: name = os.path.join(dir, fn+".rpyc") os.rename(name, name+".bak") except OSError: # This perhaps shouldn't happen since either .rpy or .rpyc should exist pass # Update script files list, so that it doesn't contain removed .rpyc's renpy.loader.cleardirfiles() renpy.game.script.scan_script_files() # Load all .rpy files. renpy.game.script.load_script() # sets renpy.game.script. log_clock("Loading script") if renpy.game.args.command == 'load-test': start = time.time() for i in range(5): print(i) renpy.game.script = renpy.script.Script() renpy.game.script.load_script() print time.time() - start sys.exit(0) renpy.game.exception_info = 'After loading the script.' # Find the save directory. if renpy.config.savedir is None: renpy.config.savedir = __main__.path_to_saves(renpy.config.gamedir) # E1101 @UndefinedVariable if renpy.game.args.savedir: #@UndefinedVariable renpy.config.savedir = renpy.game.args.savedir #@UndefinedVariable # Init preferences. game.persistent = renpy.persistent.init() game.preferences = game.persistent._preferences # Init save locations. renpy.savelocation.init() # We need to be 100% sure we kill the savelocation thread. try: # Load persistent data from all save locations. renpy.persistent.update() log_clock("Loading persistent") # Clear the list of seen statements in this game. game.seen_session = { } # Initialize persistent variables. renpy.store.persistent = game.persistent renpy.store._preferences = game.preferences if renpy.parser.report_parse_errors(): raise renpy.game.ParseErrorException() renpy.game.exception_info = 'While executing init code:' for _prio, node in game.script.initcode: game.context().run(node) renpy.game.exception_info = 'After initialization, but before game start.' # Check if we should simulate android. renpy.android = renpy.android or renpy.config.simulate_android #@UndefinedVariable # Run the post init code, if any. for i in renpy.game.post_init: i() if renpy.config.clear_lines: renpy.scriptedit.lines.clear() for i in renpy.game.persistent._seen_translates: if i in renpy.game.script.translator.default_translates: renpy.game.seen_translates_count += 1 log_clock("Running init code") renpy.pyanalysis.load_cache() log_clock("Loading analysis data") # Analyze the script and compile ATL. renpy.game.script.analyze() renpy.atl.compile_all() log_clock("Analyze and compile ATL") # Index the archive files. We should not have loaded an image # before this point. (As pygame will not have been initialized.) # We need to do this again because the list of known archives # may have changed. renpy.loader.index_archives() log_clock("Index archives") # Check some environment variables. renpy.game.less_memory = "RENPY_LESS_MEMORY" in os.environ renpy.game.less_mouse = "RENPY_LESS_MOUSE" in os.environ renpy.game.less_updates = "RENPY_LESS_UPDATES" in os.environ renpy.dump.dump(False) renpy.game.script.make_backups() log_clock("Dump and make backups.") # Initialize image cache. renpy.display.im.cache.init() log_clock("Cleaning cache") # Make a clean copy of the store. renpy.python.make_clean_stores() log_clock("Making clean stores") # (Perhaps) Initialize graphics. if not game.interface: renpy.display.core.Interface() log_clock("Creating interface object") # Start things running. restart = None while True: if restart: renpy.display.screen.before_restart() try: try: run(restart) finally: restart = (renpy.config.end_game_transition, "_invoke_main_menu", "_main_menu") renpy.persistent.update(True) except game.FullRestartException, e: restart = e.reason finally: # Flush any pending interface work. renpy.display.interface.finish_pending() # Give Ren'Py a couple of seconds to finish saving. renpy.loadsave.autosave_not_running.wait(3.0)
def main(): renpy.game.exception_info = 'Before loading the script.' # Get ready to accept new arguments. renpy.arguments.pre_init() # Init the config after load. renpy.config.init() # Set up variants. choose_variants() # Note the game directory. game.basepath = renpy.config.gamedir renpy.config.searchpath = [ renpy.config.gamedir ] # Find the common directory. commondir = __main__.path_to_common(renpy.config.renpy_base) # E1101 @UndefinedVariable if os.path.isdir(commondir): renpy.config.searchpath.append(commondir) renpy.config.commondir = commondir else: renpy.config.commondir = None # Load Ren'Py extensions. for dir in renpy.config.searchpath: #@ReservedAssignment for fn in os.listdir(dir): if fn.lower().endswith(".rpe"): load_rpe(dir + "/" + fn) # The basename is the final component of the path to the gamedir. for i in sorted(os.listdir(renpy.config.gamedir)): if not i.endswith(".rpa"): continue i = i[:-4] renpy.config.archives.append(i) renpy.config.archives.reverse() # Initialize archives. renpy.loader.index_archives() # Initialize the log. game.log = renpy.python.RollbackLog() # Initialize the store. renpy.store.store = sys.modules['store'] # Set up styles. renpy.style.reset() game.style = renpy.style.StyleManager() renpy.store.style = game.style # Run init code in its own context. (Don't log.) game.contexts = [ renpy.execution.Context(False) ] game.contexts[0].init_phase = True # Load the script. renpy.game.exception_info = 'While loading the script.' renpy.game.script = renpy.script.Script() renpy.exports.load_module("_errorhandling") renpy.game.script.load_script() # sets renpy.game.script. renpy.game.exception_info = 'After loading the script.' # Find the save directory. if renpy.config.savedir is None: renpy.config.savedir = __main__.path_to_saves(renpy.config.gamedir) # E1101 @UndefinedVariable if renpy.game.args.savedir: #@UndefinedVariable renpy.config.savedir = renpy.game.args.savedir #@UndefinedVariable # Make the save directory. try: os.makedirs(renpy.config.savedir) except: pass # Unserialize the persistent data. try: f = file(renpy.config.savedir + "/persistent", "rb") s = f.read().decode("zlib") f.close() game.persistent = loads(s) except: game.persistent = game.Persistent() # Initialize the set of statements seen ever. if not game.persistent._seen_ever: game.persistent._seen_ever = { } game.seen_ever = game.persistent._seen_ever # Initialize the set of images seen ever. if not game.persistent._seen_images: game.persistent._seen_images = { } # Initialize the set of chosen menu choices. if not game.persistent._chosen: game.persistent._chosen = { } if not game.persistent._seen_audio: game.persistent._seen_audio = { } # Clear the list of seen statements in this game. game.seen_session = { } # Initialize the preferences. if not game.persistent._preferences: game.persistent._preferences = game.Preferences() game.preferences = game.persistent._preferences # Initialize persistent variables. renpy.store.persistent = game.persistent renpy.store._preferences = game.preferences if renpy.parser.report_parse_errors(): raise renpy.game.ParseErrorException() renpy.game.exception_info = 'While executing init code:' for _prio, node in game.script.initcode: game.context().run(node) renpy.game.exception_info = 'After initialization, but before game start.' # Save the bytecode in a cache. renpy.game.script.save_bytecode() # Check if we should simulate android. renpy.android = renpy.android or renpy.config.simulate_android #@UndefinedVariable # Run the post init code, if any. for i in renpy.game.post_init: i() # Rebuild the various style caches. renpy.style.build_styles() # Index the archive files. We should not have loaded an image # before this point. (As pygame will not have been initialized.) # We need to do this again because the list of known archives # may have changed. renpy.loader.index_archives() # Check some environment variables. renpy.game.less_memory = "RENPY_LESS_MEMORY" in os.environ renpy.game.less_mouse = "RENPY_LESS_MOUSE" in os.environ renpy.game.less_updates = "RENPY_LESS_UPDATES" in os.environ renpy.dump.dump(False) # Handle arguments and commands. if not renpy.arguments.post_init(): return # Remove the list of all statements from the script. game.script.all_stmts = None # Make a clean copy of the store. renpy.python.make_clean_stores() # Initialize image cache. renpy.display.im.cache.init() # (Perhaps) Initialize graphics. if not game.interface: renpy.display.core.Interface() # Start things running. restart = None renpy.game.exception_info = 'While running game code:' renpy.first_utter_start = False while True: try: try: run(restart) finally: restart = (renpy.config.end_game_transition, "_invoke_main_menu", "_main_menu") save_persistent() except game.QuitException, e: if e.relaunch: if renpy.windows and sys.argv[0].endswith(".exe"): subprocess.Popen(sys.argv) else: subprocess.Popen([sys.executable, "-OO"] + sys.argv) break except game.FullRestartException, e: restart = e.reason
def run(restart): """ This is called during a single run of the script. Restarting the script will cause this to change. """ reset_clock() # Reset the store to a clean version of itself. renpy.python.clean_stores() log_clock("Cleaning stores") # Init translation. renpy.translation.init_translation() log_clock("Init translation") # Rebuild the various style caches. renpy.style.build_styles() # @UndefinedVariable log_clock("Build styles") renpy.sl2.slast.load_cache() log_clock("Load screen analysis") # Analyze the screens. renpy.display.screen.analyze_screens() log_clock("Analyze screens") if not restart: renpy.sl2.slast.save_cache() log_clock("Save screen analysis") # Prepare the screens. renpy.display.screen.prepare_screens() log_clock("Prepare screens") if not restart: renpy.pyanalysis.save_cache() log_clock("Save pyanalysis.") renpy.game.script.save_bytecode() log_clock("Save bytecode.") # Handle arguments and commands. if not renpy.arguments.post_init(): renpy.exports.quit() # Sleep to finish the presplash. renpy.display.presplash.sleep() # Re-Initialize the log. game.log = renpy.python.RollbackLog() # Switch contexts, begin logging. game.contexts = [ renpy.execution.Context(True) ] # Jump to an appropriate start label. if game.script.has_label("_start"): start_label = '_start' else: start_label = 'start' game.context().goto_label(start_label) # Perhaps warp. warp_label = renpy.warp.warp() if warp_label is not None: game.context().goto_label(warp_label) game.context().call('_after_warp') renpy.config.skipping = None try: renpy.exports.log("--- " + time.ctime()) renpy.exports.log("") except: pass # Note if this is a restart. renpy.store._restart = restart # We run until we get an exception. renpy.display.interface.enter_context() log_clock("Running {}".format(start_label)) renpy.execution.run_context(True)
def run(restart): """ This is called during a single run of the script. Restarting the script will cause this to change. """ reset_clock() # Reset the store to a clean version of itself. renpy.python.clean_stores() log_clock("Cleaning stores") # Init translation. renpy.translation.init_translation() log_clock("Init translation") # Rebuild the various style caches. renpy.style.build_styles() # @UndefinedVariable log_clock("Build styles") # Prepare the screens. renpy.display.screen.prepare_screens() log_clock("Prepare screens") # Re-Initialize the log. game.log = renpy.python.RollbackLog() # Switch contexts, begin logging. game.contexts = [renpy.execution.Context(True)] # Jump to an appropriate start label. if game.script.has_label("_start"): start_label = '_start' else: start_label = 'start' game.context().goto_label(start_label) # Perhaps warp. warp_label = renpy.warp.warp() if warp_label is not None: game.context().goto_label(warp_label) game.context().call('_after_warp') renpy.config.skipping = None try: renpy.exports.log("--- " + time.ctime()) renpy.exports.log("") except: pass # Note if this is a restart. renpy.store._restart = restart # We run until we get an exception. renpy.display.interface.enter_context() log_clock("Running {}".format(start_label)) renpy.execution.run_context(True)