1
0
forked from Mirrors/RGSX

v1.9.8.4 correction controles bis

This commit is contained in:
skymike03
2025-08-08 00:31:22 +02:00
parent 2728db0f80
commit daf5c598fb
4 changed files with 43 additions and 72 deletions

View File

@@ -130,43 +130,16 @@ if config.controls_config is None:
config.controls_config = {} config.controls_config = {}
logger.debug("Initialisation de config.controls_config avec un dictionnaire vide") logger.debug("Initialisation de config.controls_config avec un dictionnaire vide")
# Vérifier si la configuration contient au minimum les contrôles essentiels # Vérifier simplement si le fichier controls.json existe
essential_controls = ["confirm", "cancel", "up", "down", "left", "right"] if not os.path.exists(config.CONTROLS_CONFIG_PATH) or not config.controls_config:
has_essential_controls = all( logger.warning("Fichier controls.json manquant ou vide, configuration manuelle nécessaire")
config.controls_config and # Ajouter une configuration minimale de secours pour pouvoir naviguer
action in config.controls_config and config.controls_config = get_emergency_controls()
config.controls_config[action].get("type") is not None config.menu_state = "controls_mapping"
for action in essential_controls config.needs_redraw = True
)
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
else: else:
config.menu_state = "loading" 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 # Initialisation du gamepad
joystick = None joystick = None

View File

@@ -4,7 +4,7 @@ import sys
import logging import logging
# Version actuelle de l'application # Version actuelle de l'application
app_version = "1.9.8.3" app_version = "1.9.8.4"
def get_application_root(): def get_application_root():
"""Détermine le dossier de l'application de manière portable.""" """Détermine le dossier de l'application de manière portable."""

View File

@@ -273,26 +273,19 @@ HOLD_DURATION = 1000
JOYHAT_DEBOUNCE = 200 # Délai anti-rebond pour JOYHATMOTION (ms) JOYHAT_DEBOUNCE = 200 # Délai anti-rebond pour JOYHATMOTION (ms)
def load_controls_config(): 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: try:
if os.path.exists(CONTROLS_CONFIG_PATH): if os.path.exists(CONTROLS_CONFIG_PATH):
with open(CONTROLS_CONFIG_PATH, "r") as f: with open(CONTROLS_CONFIG_PATH, "r") as f:
config_data = json.load(f) config_data = json.load(f)
logger.debug(f"Configuration des contrôles chargée : {config_data}") logger.debug(f"Configuration des contrôles chargée : {config_data}")
return 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
else: else:
logger.debug("Aucun fichier controls.json trouvé") logger.debug("Aucun fichier controls.json trouvé")
return {} # Retourner un dictionnaire vide au lieu de None return {}
except Exception as e: except Exception as e:
logger.error(f"Erreur lors du chargement de controls.json : {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): def save_controls_config(controls_config):
"""Enregistre la configuration des contrôles dans controls.json""" """Enregistre la configuration des contrôles dans controls.json"""

View File

@@ -1,4 +1,4 @@
@echo on @echo off
setlocal EnableDelayedExpansion setlocal EnableDelayedExpansion
:: Définir le fichier de log :: Définir le fichier de log
@@ -13,21 +13,21 @@ cls
echo Exécution de __main__.py pour RetroBat... echo Exécution de __main__.py pour RetroBat...
echo [%DATE% %TIME%] Exécution de __main__.py pour RetroBat >> "%LOG_FILE%" echo [%DATE% %TIME%] Exécution de __main__.py pour RetroBat >> "%LOG_FILE%"
:: Définir les chemins relatifs :: Définir les chemins relatifs et les convertir en absolus
set TOOLS_FOLDER=..\..\..\system\tools set CURRENT_DIR=%CD%
set PYTHON_EXE=python.exe set PYTHON_EXE=python.exe
set MAIN_SCRIPT=__main__.py set MAIN_SCRIPT=__main__.py
set CURRENT_DIR=%CD%
set "PYTHON_EXE_FULL=%CURRENT_DIR%\!TOOLS_FOLDER!\Python\!PYTHON_EXE!" :: Convertir les chemins relatifs en absolus avec pushd/popd
set "MAIN_SCRIPT_FULL=%CURRENT_DIR%\..\ports\RGSX\!MAIN_SCRIPT!" 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 :: 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 CURRENT_DIR : !CURRENT_DIR!
echo [%DATE% %TIME%] CURRENT_DIR : !CURRENT_DIR! >> "%LOG_FILE%" echo [%DATE% %TIME%] CURRENT_DIR : !CURRENT_DIR! >> "%LOG_FILE%"
echo PYTHON_EXE_FULL : !PYTHON_EXE_FULL! 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!" ( if not exist "!PYTHON_EXE_FULL!" (
echo Python.exe non trouvé. Préparation du téléchargement... 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%" 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_URL=https://retrogamesets.fr/softs/python.zip
set "ZIP_FILE=!TOOLS_FOLDER_FULL!\python.zip"
echo ZIP_URL : !ZIP_URL! echo ZIP_URL : !ZIP_URL!
echo [%DATE% %TIME%] ZIP_URL : !ZIP_URL! >> "%LOG_FILE%" 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 ZIP_FILE : !ZIP_FILE!
echo [%DATE% %TIME%] ZIP_FILE : !ZIP_FILE! >> "%LOG_FILE%" echo [%DATE% %TIME%] ZIP_FILE : !ZIP_FILE! >> "%LOG_FILE%"
echo Téléchargement de python.zip... echo Téléchargement de python.zip...
echo [%DATE% %TIME%] Téléchargement de python.zip depuis !ZIP_URL!... >> "%LOG_FILE%" 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!" curl -L "!ZIP_URL!" -o "!ZIP_FILE!"
if exist "!ZIP_FILE!" ( if exist "!ZIP_FILE!" (
echo Téléchargement terminé. Extraction de python.zip... 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%" echo [%DATE% %TIME%] Téléchargement terminé. Extraction de python.zip vers !TOOLS_FOLDER_FULL!... >> "%LOG_FILE%"
:: Afficher des messages de progression pendant l'extraction tar -xf "!ZIP_FILE!" -C "!TOOLS_FOLDER_FULL!" --strip-components=0
echo Extraction en cours...
tar -xf "!ZIP_FILE!" -C "!TOOLS_FOLDER!" --strip-components=0
echo Extraction terminée. echo Extraction terminée.
echo [%DATE% %TIME%] Extraction terminée. >> "%LOG_FILE%" echo [%DATE% %TIME%] Extraction terminée. >> "%LOG_FILE%"
del /q "!ZIP_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%" echo [%DATE% %TIME%] Erreur : Échec du téléchargement de python.zip. >> "%LOG_FILE%"
goto :error goto :error
) )
:: Vérifier à nouveau si python.exe existe après extraction :: Vérifier à nouveau si python.exe existe après extraction
if not exist "!PYTHON_EXE_FULL!" ( if not exist "!PYTHON_EXE_FULL!" (
echo Erreur : python.exe n'a pas été trouvé après extraction à !PYTHON_EXE_FULL!. echo Erreur : python.exe n'a pas été trouvé après extraction à !PYTHON_EXE_FULL!.