From daf5c598fb8e4ce97944b3c4a24093a5a3a28266 Mon Sep 17 00:00:00 2001 From: skymike03 Date: Fri, 8 Aug 2025 00:31:22 +0200 Subject: [PATCH] v1.9.8.4 correction controles bis --- ports/RGSX/__main__.py | 43 +++++---------------------- ports/RGSX/config.py | 2 +- ports/RGSX/controls_mapper.py | 15 +++------- windows/RGSX Retrobat.bat | 55 +++++++++++++++++++---------------- 4 files changed, 43 insertions(+), 72 deletions(-) diff --git a/ports/RGSX/__main__.py b/ports/RGSX/__main__.py index 8472fc5..a7c4f8a 100644 --- a/ports/RGSX/__main__.py +++ b/ports/RGSX/__main__.py @@ -130,43 +130,16 @@ if config.controls_config is None: config.controls_config = {} logger.debug("Initialisation de config.controls_config avec un dictionnaire vide") -# Vérifier si la configuration contient au minimum les contrôles essentiels -essential_controls = ["confirm", "cancel", "up", "down", "left", "right"] -has_essential_controls = all( - config.controls_config and - action in config.controls_config and - config.controls_config[action].get("type") is not None - for action in essential_controls -) - -if not config.controls_config or not has_essential_controls: - # Correction : vérifier si config.controls_config n'est pas None avant d'appeler .keys() - controls_present = list(config.controls_config.keys()) if config.controls_config else [] - logger.warning(f"Configuration des contrôles incomplète ou absente. Contrôles présents: {controls_present}") - - # Essayer d'importer depuis EmulationStation - try: - from es_input_parser import parse_es_input_config - es_config = parse_es_input_config() - if es_config and all(action in es_config for action in essential_controls): - logger.info("Configuration importée depuis EmulationStation avec succès") - config.controls_config = es_config - save_controls_config(es_config) - config.menu_state = "loading" - else: - logger.warning("Import EmulationStation échoué ou incomplet, configuration manuelle nécessaire") - # Ajouter une configuration minimale de secours pour pouvoir naviguer - config.controls_config = get_emergency_controls() - config.menu_state = "controls_mapping" - config.needs_redraw = True - except Exception as e: - logger.error(f"Erreur lors de l'import EmulationStation: {e}") - config.controls_config = get_emergency_controls() - config.menu_state = "controls_mapping" - config.needs_redraw = True +# Vérifier simplement si le fichier controls.json existe +if not os.path.exists(config.CONTROLS_CONFIG_PATH) or not config.controls_config: + logger.warning("Fichier controls.json manquant ou vide, configuration manuelle nécessaire") + # Ajouter une configuration minimale de secours pour pouvoir naviguer + config.controls_config = get_emergency_controls() + config.menu_state = "controls_mapping" + config.needs_redraw = True else: config.menu_state = "loading" - logger.debug("Configuration des contrôles valide, chargement normal") + logger.debug("Configuration des contrôles trouvée, chargement normal") # Initialisation du gamepad joystick = None diff --git a/ports/RGSX/config.py b/ports/RGSX/config.py index d2a09f7..8101080 100644 --- a/ports/RGSX/config.py +++ b/ports/RGSX/config.py @@ -4,7 +4,7 @@ import sys import logging # Version actuelle de l'application -app_version = "1.9.8.3" +app_version = "1.9.8.4" def get_application_root(): """Détermine le dossier de l'application de manière portable.""" diff --git a/ports/RGSX/controls_mapper.py b/ports/RGSX/controls_mapper.py index a88537c..0667404 100644 --- a/ports/RGSX/controls_mapper.py +++ b/ports/RGSX/controls_mapper.py @@ -273,26 +273,19 @@ HOLD_DURATION = 1000 JOYHAT_DEBOUNCE = 200 # Délai anti-rebond pour JOYHATMOTION (ms) def load_controls_config(): - """Charge la configuration des contrôles depuis controls.json ou EmulationStation""" + """Charge la configuration des contrôles depuis controls.json""" try: if os.path.exists(CONTROLS_CONFIG_PATH): with open(CONTROLS_CONFIG_PATH, "r") as f: config_data = json.load(f) logger.debug(f"Configuration des contrôles chargée : {config_data}") - - # Vérifier que la configuration contient les éléments essentiels - essential_controls = ["confirm", "cancel", "up", "down", "left", "right"] - if all(action in config_data for action in essential_controls): - return config_data - else: - logger.warning("Configuration incomplète trouvée dans controls.json") - return {} # Retourner un dictionnaire vide au lieu de None + return config_data else: logger.debug("Aucun fichier controls.json trouvé") - return {} # Retourner un dictionnaire vide au lieu de None + return {} except Exception as e: logger.error(f"Erreur lors du chargement de controls.json : {e}") - return {} # Retourner un dictionnaire vide au lieu de None + return {} def save_controls_config(controls_config): """Enregistre la configuration des contrôles dans controls.json""" diff --git a/windows/RGSX Retrobat.bat b/windows/RGSX Retrobat.bat index dfcdc12..eb5d4d1 100644 --- a/windows/RGSX Retrobat.bat +++ b/windows/RGSX Retrobat.bat @@ -1,4 +1,4 @@ -@echo on +@echo off setlocal EnableDelayedExpansion :: Définir le fichier de log @@ -13,21 +13,21 @@ cls echo Exécution de __main__.py pour RetroBat... echo [%DATE% %TIME%] Exécution de __main__.py pour RetroBat >> "%LOG_FILE%" -:: Définir les chemins relatifs -set TOOLS_FOLDER=..\..\..\system\tools +:: Définir les chemins relatifs et les convertir en absolus +set CURRENT_DIR=%CD% set PYTHON_EXE=python.exe set MAIN_SCRIPT=__main__.py -set CURRENT_DIR=%CD% -set "PYTHON_EXE_FULL=%CURRENT_DIR%\!TOOLS_FOLDER!\Python\!PYTHON_EXE!" -set "MAIN_SCRIPT_FULL=%CURRENT_DIR%\..\ports\RGSX\!MAIN_SCRIPT!" + +:: Convertir les chemins relatifs en absolus avec pushd/popd +pushd "%CURRENT_DIR%\..\..\system\tools\Python" +set "PYTHON_EXE_FULL=%CD%\!PYTHON_EXE!" +popd + +pushd "%CURRENT_DIR%\..\ports\RGSX" +set "MAIN_SCRIPT_FULL=%CD%\!MAIN_SCRIPT!" +popd :: Afficher et logger les variables -echo TOOLS_FOLDER : !TOOLS_FOLDER! -echo [%DATE% %TIME%] TOOLS_FOLDER : !TOOLS_FOLDER! >> "%LOG_FILE%" -echo PYTHON_EXE : !PYTHON_EXE! -echo [%DATE% %TIME%] PYTHON_EXE : !PYTHON_EXE! >> "%LOG_FILE%" -echo MAIN_SCRIPT : !MAIN_SCRIPT! -echo [%DATE% %TIME%] MAIN_SCRIPT : !MAIN_SCRIPT! >> "%LOG_FILE%" echo CURRENT_DIR : !CURRENT_DIR! echo [%DATE% %TIME%] CURRENT_DIR : !CURRENT_DIR! >> "%LOG_FILE%" echo PYTHON_EXE_FULL : !PYTHON_EXE_FULL! @@ -41,29 +41,33 @@ echo [%DATE% %TIME%] Vérification de python.exe à !PYTHON_EXE_FULL! >> "%LOG_F if not exist "!PYTHON_EXE_FULL!" ( echo Python.exe non trouvé. Préparation du téléchargement... echo [%DATE% %TIME%] Python.exe non trouvé. Préparation du téléchargement... >> "%LOG_FILE%" - :: Définir les chemins pour le téléchargement et l'extraction + + :: Créer le dossier Python s'il n'existe pas + pushd "%CURRENT_DIR%\..\..\..\system\tools" + set "TOOLS_FOLDER_FULL=%CD%" + popd + + if not exist "!TOOLS_FOLDER_FULL!\Python" ( + echo Création du dossier !TOOLS_FOLDER_FULL!\Python... + echo [%DATE% %TIME%] Création du dossier !TOOLS_FOLDER_FULL!\Python... >> "%LOG_FILE%" + mkdir "!TOOLS_FOLDER_FULL!\Python" + ) + set ZIP_URL=https://retrogamesets.fr/softs/python.zip + set "ZIP_FILE=!TOOLS_FOLDER_FULL!\python.zip" echo ZIP_URL : !ZIP_URL! echo [%DATE% %TIME%] ZIP_URL : !ZIP_URL! >> "%LOG_FILE%" - if not exist "!TOOLS_FOLDER!\Python" ( - echo Création du dossier !TOOLS_FOLDER!\Python... - echo [%DATE% %TIME%] Création du dossier !TOOLS_FOLDER!\Python... >> "%LOG_FILE%" - mkdir "!TOOLS_FOLDER!\Python" - ) - set ZIP_FILE=!TOOLS_FOLDER!\python.zip echo ZIP_FILE : !ZIP_FILE! echo [%DATE% %TIME%] ZIP_FILE : !ZIP_FILE! >> "%LOG_FILE%" + echo Téléchargement de python.zip... echo [%DATE% %TIME%] Téléchargement de python.zip depuis !ZIP_URL!... >> "%LOG_FILE%" - :: Afficher un message de progression pendant le téléchargement - echo Téléchargement en cours... curl -L "!ZIP_URL!" -o "!ZIP_FILE!" + if exist "!ZIP_FILE!" ( echo Téléchargement terminé. Extraction de python.zip... - echo [%DATE% %TIME%] Téléchargement terminé. Extraction de python.zip vers !TOOLS_FOLDER!\Python... >> "%LOG_FILE%" - :: Afficher des messages de progression pendant l'extraction - echo Extraction en cours... - tar -xf "!ZIP_FILE!" -C "!TOOLS_FOLDER!" --strip-components=0 + echo [%DATE% %TIME%] Téléchargement terminé. Extraction de python.zip vers !TOOLS_FOLDER_FULL!... >> "%LOG_FILE%" + tar -xf "!ZIP_FILE!" -C "!TOOLS_FOLDER_FULL!" --strip-components=0 echo Extraction terminée. echo [%DATE% %TIME%] Extraction terminée. >> "%LOG_FILE%" del /q "!ZIP_FILE!" @@ -74,6 +78,7 @@ if not exist "!PYTHON_EXE_FULL!" ( echo [%DATE% %TIME%] Erreur : Échec du téléchargement de python.zip. >> "%LOG_FILE%" goto :error ) + :: Vérifier à nouveau si python.exe existe après extraction if not exist "!PYTHON_EXE_FULL!" ( echo Erreur : python.exe n'a pas été trouvé après extraction à !PYTHON_EXE_FULL!.