Ejemplo n.º 1
0
    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()
Ejemplo n.º 2
0
    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()
Ejemplo n.º 3
0
    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}
Ejemplo n.º 4
0
 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
Ejemplo n.º 5
0
    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}
Ejemplo n.º 6
0
 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)
Ejemplo n.º 7
0
 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)
Ejemplo n.º 8
0
 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
Ejemplo n.º 9
0
 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
Ejemplo n.º 10
0
    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
Ejemplo n.º 11
0
    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
Ejemplo n.º 12
0
    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