def __init__(self, installer, parent): super().__init__() self.target_path = None self.parent = parent self.game_dir_created = False # Whether a game folder was created during the install self.game_disc = None self.game_files = {} self.cancelled = False self.abort_current_task = None self.user_inputs = [] self.current_command = 0 # Current installer command when iterating through them self.runners_to_install = [] self.installer = LutrisInstaller(installer, self) if not self.installer.script: raise ScriptingError("This installer doesn't have a 'script' section") script_errors = self.installer.get_errors() if script_errors: raise ScriptingError( "Invalid script: \n{}".format("\n".join(script_errors)), self.installer.script ) self.current_resolution = DISPLAY_MANAGER.get_current_resolution() self._check_binary_dependencies() self._check_dependency() if self.installer.creates_game_folder: self.target_path = self.get_default_target()
def __init__(self, installer, parent): super().__init__() self.target_path = None self.parent = parent self.service = parent.service if parent else None self.appid = parent.appid if parent else None self.game_dir_created = False # Whether a game folder was created during the install # Extra files for installers, either None if the extras haven't been checked yet. # Or a list of IDs of extras to be downloaded during the install self.extras = None self.game_disc = None self.game_files = {} self.cancelled = False self.abort_current_task = None self.user_inputs = [] self.current_command = 0 # Current installer command when iterating through them self.runners_to_install = [] self.installer = LutrisInstaller(installer, self, service=self.service, appid=self.appid) if not self.installer.script: raise ScriptingError( _("This installer doesn't have a 'script' section")) script_errors = self.installer.get_errors() if script_errors: raise ScriptingError( _("Invalid script: \n{}").format("\n".join(script_errors)), self.installer.script) self.current_resolution = DISPLAY_MANAGER.get_current_resolution() self._check_binary_dependencies() self._check_dependency() if self.installer.creates_game_folder: self.target_path = self.get_default_target()
def play(self): """Runs the game""" rom = self.game_config.get("main_file") or "" machine = self.game_config.get("machine") or "" fullscreen = self.runner_config.get("fs") or "0" if fullscreen is True: fullscreen = "1" elif fullscreen is False: fullscreen = "0" stretch = self.runner_config.get("stretch") or "0" scaler = self.runner_config.get("scaler") or DEFAULT_MEDNAFEN_SCALER sound_device = self.runner_config.get("sound_device") xres, yres = DISPLAY_MANAGER.get_current_resolution() options = [ "-fs", fullscreen, "-force_module", machine, "-sound.device", sound_device, "-" + machine + ".xres", xres, "-" + machine + ".yres", yres, "-" + machine + ".stretch", stretch, "-" + machine + ".special", scaler, "-" + machine + ".videoip", "1", ] joy_ids = self.find_joysticks() dont_map_controllers = self.runner_config.get("dont_map_controllers") if joy_ids and not dont_map_controllers: controls = self.set_joystick_controls(joy_ids, machine) for control in controls: options.append(control) if not system.path_exists(rom): return {"error": "FILE_NOT_FOUND", "file": rom} command = [self.get_executable()] for option in options: command.append(option) command.append(rom) return {"command": command}
def get_params(self): # pylint: disable=too-many-branches params = [] model = self.runner_config.get("model") cpumodel = self.runner_config.get("cpumodel") fmemory = self.runner_config.get("fmemory") ziiimem = self.runner_config.get("ziiimem") fdvolume = self.runner_config.get("fdvolume") fdspeed = self.runner_config.get("fdspeed") grafixcard = self.runner_config.get("grafixcard") grafixmemory = self.runner_config.get("grafixmemory") kickstart_file = self.runner_config.get("kickstart_file") if kickstart_file: params.append("--kickstart_file=%s" % kickstart_file) kickstart_ext_file = self.runner_config.get("kickstart_ext_file") if kickstart_ext_file: params.append("--kickstart_ext_file=%s" % kickstart_ext_file) if model: params.append("--amiga_model=%s" % model) if cpumodel: params.append("--cpu=%s" % cpumodel) if fmemory: params.append("--fast_memory=%s" % fmemory) if ziiimem: params.append("--zorro_iii_memory=%s" % ziiimem) if fdvolume: params.append("--floppy_drive_volume=%s" % fdvolume) if fdspeed: params.append("--floppy_drive_speed=%s" % fdspeed) if grafixcard: params.append("--graphics_card=%s" % grafixcard) if grafixmemory: params.append("--graphics_memory=%s" % grafixmemory) if self.runner_config.get("gfx_fullscreen_amiga"): width = int(DISPLAY_MANAGER.get_current_resolution()[0]) params.append("--fullscreen") # params.append("--fullscreen_mode=fullscreen-window") params.append("--fullscreen_mode=fullscreen") params.append("--fullscreen_width=%d" % width) if self.runner_config.get("jitcompiler"): params.append("--jit_compiler=1") if self.runner_config.get("bsdsocket"): params.append("--bsdsocket_library=1") if self.runner_config.get("gamemode"): params.append("--game_mode=0") if self.runner_config.get("govwarning"): params.append("--governor_warning=0") if self.runner_config.get("scanlines"): params.append("--scanlines=1") return params
def play(self): """Runs the game""" rom = self.game_config.get("main_file") or "" machine = self.game_config.get("machine") or "" fullscreen = self.runner_config.get("fs") or "0" if fullscreen is True: fullscreen = "1" elif fullscreen is False: fullscreen = "0" stretch = self.runner_config.get("stretch") or "0" scaler = self.runner_config.get("scaler") or "hq4x" xres, yres = DISPLAY_MANAGER.get_current_resolution() options = [ "-fs", fullscreen, "-force_module", machine, "-" + machine + ".xres", xres, "-" + machine + ".yres", yres, "-" + machine + ".stretch", stretch, "-" + machine + ".special", scaler, "-" + machine + ".videoip", "1", ] joy_ids = self.find_joysticks() dont_map_controllers = self.runner_config.get("dont_map_controllers") if joy_ids and not dont_map_controllers: controls = self.set_joystick_controls(joy_ids, machine) for control in controls: options.append(control) if not system.path_exists(rom): return {"error": "FILE_NOT_FOUND", "file": rom} command = [self.get_executable()] for option in options: command.append(option) command.append(rom) return {"command": command}
def set_virtual_desktop(self, enabled): """Enable or disable wine virtual desktop. The Lutris virtual desktop is refered to as 'WineDesktop', in Wine the virtual desktop name is 'default'. """ path = self.hkcu_prefix + "/Software/Wine/Explorer" if enabled: self.set_registry_key(path, "Desktop", "WineDesktop") default_resolution = "x".join(DISPLAY_MANAGER.get_current_resolution()) logger.debug("Enabling wine virtual desktop with default resolution of %s", default_resolution) self.set_registry_key( self.hkcu_prefix + "/Software/Wine/Explorer/Desktops", "WineDesktop", default_resolution ) else: self.clear_registry_key(path)
def set_virtual_desktop(self, enabled): """Enable or disable wine virtual desktop. The Lutris virtual desktop is refered to as 'WineDesktop', in Wine the virtual desktop name is 'default'. """ path = self.hkcu_prefix + "/Software/Wine/Explorer" if enabled: self.set_registry_key(path, "Desktop", "WineDesktop") default_resolution = "x".join(DISPLAY_MANAGER.get_current_resolution()) logger.debug("Enabling wine virtual desktop with default resolution of %s", default_resolution) self.set_registry_key( self.hkcu_prefix + "/Software/Wine/Explorer/Desktops", "WineDesktop", default_resolution ) else: self.clear_registry_key(path)
def get_params(self): params = [] model = self.runner_config.get("model") fmemory = self.runner_config.get("fmemory") fdvolume = self.runner_config.get("fdvolume") fdspeed = self.runner_config.get("fdspeed") grafixcard = self.runner_config.get("grafixcard") grafixmemory = self.runner_config.get("grafixmemory") kickstart_file = self.runner_config.get("kickstart_file") if kickstart_file: params.append("--kickstart_file=%s" % kickstart_file) kickstart_ext_file = self.runner_config.get("kickstart_ext_file") if kickstart_ext_file: params.append("--kickstart_ext_file=%s" % kickstart_ext_file) if model: params.append("--amiga_model=%s" % model) if fmemory: params.append("--fast_memory=%s" % fmemory) if fdvolume: params.append("--floppy_drive_volume_empty=%s" % fdvolume) if fdspeed: params.append("--floppy_drive_volume_empty=%s" % fdspeed) if grafixcard: params.append("--graphics_card=%s" % grafixcard) if grafixmemory: params.append("--graphics_memory=%s" % grafixmemory) if self.runner_config.get("gfx_fullscreen_amiga"): width = int(DISPLAY_MANAGER.get_current_resolution()[0]) params.append("--fullscreen") # params.append("--fullscreen_mode=fullscreen-window") params.append("--fullscreen_mode=fullscreen") params.append("--fullscreen_width=%d" % width) if self.runner_config.get("jitcompiler"): params.append("--jit_compiler=1") if self.runner_config.get("jitcompiler"): params.append("--bsdsocket_library=1") if self.runner_config.get("scanlines"): params.append("--scanlines=1") return params
def get_params(self): params = [] model = self.runner_config.get("model") fmemory = self.runner_config.get("fmemory") fdvolume = self.runner_config.get("fdvolume") fdspeed = self.runner_config.get("fdspeed") grafixcard = self.runner_config.get("grafixcard") grafixmemory = self.runner_config.get("grafixmemory") kickstart_file = self.runner_config.get("kickstart_file") if kickstart_file: params.append("--kickstart_file=%s" % kickstart_file) kickstart_ext_file = self.runner_config.get("kickstart_ext_file") if kickstart_ext_file: params.append("--kickstart_ext_file=%s" % kickstart_ext_file) if model: params.append("--amiga_model=%s" % model) if fmemory: params.append("--fast_memory=%s" % fmemory) if fdvolume: params.append("--floppy_drive_volume_empty=%s" % fdvolume) if fdspeed: params.append("--floppy_drive_volume_empty=%s" % fdspeed) if grafixcard: params.append("--graphics_card=%s" % grafixcard) if grafixmemory: params.append("--graphics_memory=%s" % grafixmemory) if self.runner_config.get("gfx_fullscreen_amiga"): width = int(DISPLAY_MANAGER.get_current_resolution()[0]) params.append("--fullscreen") # params.append("--fullscreen_mode=fullscreen-window") params.append("--fullscreen_mode=fullscreen") params.append("--fullscreen_width=%d" % width) if self.runner_config.get("jitcompiler"): params.append("--jit_compiler=1") if self.runner_config.get("jitcompiler"): params.append("--bsdsocket_library=1") if self.runner_config.get("scanlines"): params.append("--scanlines=1") return params
def get_params(self): # pylint: disable=too-many-branches params = [] option_params = { "kickstart_file": "--kickstart_file=%s", "kickstart_ext_file": "--kickstart_ext_file=%s", "model": "--amiga_model=%s", "cpumodel": "--cpu=%s", "fmemory": "--fast_memory=%s", "ziiimem": "--zorro_iii_memory=%s", "fdvolume": "--floppy_drive_volume=%s", "fdspeed": "--floppy_drive_speed=%s", "grafixcard": "--graphics_card=%s", "grafixmemory": "--graphics_memory=%s", } for option, param in option_params.items(): option_value = self.runner_config.get(option) if option_value: params.append(param % option_value) if self.runner_config.get("gfx_fullscreen_amiga"): width = int(DISPLAY_MANAGER.get_current_resolution()[0]) params.append("--fullscreen") # params.append("--fullscreen_mode=fullscreen-window") params.append("--fullscreen_mode=fullscreen") params.append("--fullscreen_width=%d" % width) if self.runner_config.get("jitcompiler"): params.append("--jit_compiler=1") if self.runner_config.get("bsdsocket"): params.append("--bsdsocket_library=1") if self.runner_config.get("gamemode"): params.append("--game_mode=0") if self.runner_config.get("govwarning"): params.append("--governor_warning=0") if self.runner_config.get("scanlines"): params.append("--scanlines=1") return params
def __init__(self, installer, parent): self.error = None self.errors = [] self.target_path = None self.parent = parent self.game_dir_created = False # Whether a game folder was created during the install self.game_files = {} self.game_disc = None self.cancelled = False self.abort_current_task = None self.user_inputs = [] self.steam_data = {} self.gog_data = {} self.script = installer.get("script") if not self.script: raise ScriptingError( "This installer doesn't have a 'script' section") self.script_pretty = json.dumps(self.script, indent=4) self.install_start_time = None # Time of the start of the install self.steam_poll = None # Reference to the Steam poller that checks if games are downloaded self.current_command = None # Current installer command when iterating through them self.current_file_id = None # Current file when downloading / gathering files self.runners_to_install = [] self.prev_states = [] # Previous states for the Steam installer self.version = installer["version"] self.slug = installer["slug"] self.year = installer.get("year") self.runner = installer["runner"] self.game_name = self.script.get("custom-name") or installer["name"] self.game_slug = installer["game_slug"] self.steamid = installer.get("steamid") self.gogid = installer.get("gogid") if not self.is_valid(): raise ScriptingError( "Invalid script: \n{}".format("\n".join(self.errors)), self.script) self.files = [ InstallerFile(self.game_slug, file_id, file_meta) for file_desc in self.script.get("files", []) for file_id, file_meta in file_desc.items() ] self.requires = self.script.get("requires") self.extends = self.script.get("extends") self.current_resolution = DISPLAY_MANAGER.get_current_resolution() self._check_binary_dependencies() self._check_dependency() if self.creates_game_folder: self.target_path = self.get_default_target() # If the game is in the library and uninstalled, the first installation # updates it existing_game = pga.get_game_by_field(self.game_slug, "slug") if existing_game and not existing_game["installed"]: self.game_id = existing_game["id"] else: self.game_id = None
def __init__(self, installer, parent): self.error = None self.errors = [] self.target_path = None self.parent = parent self.game_dir_created = False # Whether a game folder was created during the install self.game_files = {} self.game_disc = None self.cancelled = False self.abort_current_task = None self.user_inputs = [] self.steam_data = {} self.gog_data = {} self.script = installer.get("script") if not self.script: raise ScriptingError("This installer doesn't have a 'script' section") self.script_pretty = json.dumps(self.script, indent=4) self.install_start_time = None # Time of the start of the install self.steam_poll = None # Reference to the Steam poller that checks if games are downloaded self.current_command = None # Current installer command when iterating through them self.current_file_id = None # Current file when downloading / gathering files self.runners_to_install = [] self.prev_states = [] # Previous states for the Steam installer self.version = installer["version"] self.slug = installer["slug"] self.year = installer.get("year") self.runner = installer["runner"] self.game_name = self.script.get("custom-name") or installer["name"] self.game_slug = installer["game_slug"] self.steamid = installer.get("steamid") self.gogid = installer.get("gogid") if not self.is_valid(): raise ScriptingError( "Invalid script: \n{}".format("\n".join(self.errors)), self.script ) self.files = [ InstallerFile(self.game_slug, file_id, file_meta) for file_desc in self.script.get("files", []) for file_id, file_meta in file_desc.items() ] self.requires = self.script.get("requires") self.extends = self.script.get("extends") self.current_resolution = DISPLAY_MANAGER.get_current_resolution() self._check_binary_dependencies() self._check_dependency() if self.creates_game_folder: self.target_path = self.get_default_target() # If the game is in the library and uninstalled, the first installation # updates it existing_game = pga.get_game_by_field(self.game_slug, "slug") if existing_game and not existing_game["installed"]: self.game_id = existing_game["id"] else: self.game_id = None