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!' })
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)
def get_rf_version(): rf = RfactorPlayer(only_version=True) return json.dumps({'version': rf.version, 'location': str(rf.location)})