def __init__(self,
                 rf: Optional[RfactorPlayer] = None,
                 preset: Optional[GraphicsPreset] = None,
                 setting_name: str = None,
                 setting_value: str = None):
        """ Helper to run the rFactor 2 DEV executable with the current Session Settings,
            most likely rF Trainer @ Loch Drummond, for a fixed amount of time in a quick race with AI control.

            If fpsVR is present, will start/stop frame data logging and collect file name of the resulting
            CSV fpsVR file.

            :param rf: RfactorPlayer instance to use
            :param preset: the GraphicsPreset settings to apply
            :param setting_name: optional setting name to name the result file "rf2_settingName_settingValue"
            :param setting_value: optional setting value to name result file "rf2_settingName_settingValue"
        """
        self.kill_event = threading.Event()
        self.kill_pm_event = threading.Event()
        self.rf = rf or RfactorPlayer(dev=True)

        # Prepare settings to be applied
        self.benchmark_preset = preset
        self.current_preset = GraphicsPreset()
        self.current_preset.update(self.rf)
        self.setting_name, self.setting_value = setting_name, setting_value

        self.fps_vr_cmd = Path('./fpsVRcmd.exe')
        self._get_fpsvr_cmd()

        # Keep an index of fpsVR csv files present before the current benchmark
        # so we can identify the new created one.
        self.fpsvr_csv_index = set()
        self.result_csv_file = Path()
def get_current_dx_config():
    rf = RfactorPlayer()
    if not rf.is_valid:
        return json.dumps({'result': False})

    rp = GraphicsPreset()
    rp.update(rf)
    return json.dumps({'result': True, 'preset': rp.to_js()})
def _get_rf_location(sub_path):
    rf = RfactorPlayer(only_version=True)
    rf_path = rf.location / sub_path
    if not rf_path.exists():
        logging.error('Could not locate rF2 Setups directory in %s',
                      rf_path.as_posix())
        return
    return str(WindowsPath(rf_path))
def run_rfactor(server_info: Optional[dict] = None, method: Optional[int] = 0):
    logging.info('UI requested rF2 run with method: %s', method)
    if server_info and server_info.get('password_remember'):
        # -- Store password if remember option checked
        logging.info('Storing password for Server %s', server_info.get('id'))
        AppSettings.server_passwords[server_info.get('id')] = server_info.get(
            'password')
        AppSettings.save()
    elif server_info and not server_info.get('password_remember'):
        # -- Delete password if remember option unchecked
        if server_info.get('id') in AppSettings.server_passwords:
            AppSettings.server_passwords.pop(server_info.get('id'))
            AppSettings.save()

    rf, result = RfactorPlayer(), False
    if rf.is_valid:
        result = rf.run_rfactor(method, server_info)

    return json.dumps({'result': result, 'msg': rf.error})
 def update_web_ui_port() -> bool:
     rf = RfactorPlayer()
     if rf.is_valid:
         if hasattr(rf.options, 'misc_options'):
             o = rf.options.misc_options.get_option('WebUI port')
             RfactorConnect.web_ui_port = o.value
             logging.debug('Updated RfactorConnect Web UI port to: %s',
                           RfactorConnect.web_ui_port)
             return True
     return False
def restore_backup():
    rf = RfactorPlayer()

    if not rf.is_valid:
        return json.dumps({'result': False, 'msg': rf.error})

    if AppSettings.restore_backup(rf):
        logging.info('Original settings restored!')
        return json.dumps({'result': True, 'msg': 'BackUp files restored!'})

    return json.dumps({
        'result':
        False,
        'msg':
        'Could not restore all back up files! Make sure you '
        'did not deleted any *.original files!'
    })
Beispiel #7
0
def get_rf_driver():
    rf = RfactorPlayer()
    if rf.is_valid:
        return json.dumps({'result': rf.options.driver_options.to_js()})

    return json.dumps({'result': False, 'msg': rf.error})
def run_rfactor_config():
    rf, result = RfactorPlayer(), False
    if rf.is_valid:
        result = rf.run_config()

    return json.dumps({'result': result, 'msg': rf.error})
def rf_is_valid():
    rf = RfactorPlayer()
    logging.info('Detected valid rF2 installation: %s %s', rf.is_valid,
                 rf.location)
    return json.dumps(rf.is_valid)
Beispiel #10
0
def get_rf_version():
    rf = RfactorPlayer(only_version=True)
    return json.dumps({'version': rf.version, 'location': str(rf.location)})