def main(): logger.info("Starting {0}".format(version_string)) try: gem.runite.context = gem.runite.Context() gem.runite.context.unpack(config.game_data['data_file'], config.game_data['index_files']) plugin_loader = PluginLoader(plugin_path) plugin_loader.load() # init service listeners # inserts an engine.Start hook to launch listeners listeners = ServiceListeners() # start the engine engine = gem.engine.Engine() engine.start() signal_handler.setup_exit_handler(engine.stop) logger.notice("Finished engine initialization") except Exception as e: logger.error("Startup failed: {0}".format(e)) if args.no_console: logger.notice("Press Control-D to toggle the interactive console") while True: line = sys.stdin.readline() if not line: # readline will return "" on EOF interactive_console() else: while True: pass
def test_task_api(): # For tasks to tick, we need the engine engine = gem.engine.Engine() engine.start() task_stack = ["pre", "tick", "post"] def task(task, userdata): assert task_stack.pop(0) == userdata if len(task_stack) == 0: engine.stop() return False scheduler = gem.task.submit(task, gem.task.PreTick, 2, "pre") scheduler = gem.task.submit(task, gem.task.Tick, 2, "tick") scheduler = gem.task.submit(task, gem.task.PostTick, 2, "post") engine.join() assert len(task_stack) == 0