1
0
forked from Mirrors/RGSX

v1.9.7.5 - Correction doublon detection langue + ajout nom musique discret dans le footer

This commit is contained in:
skymike03
2025-07-26 00:59:57 +02:00
parent 6436fad255
commit d591b5f46c
5 changed files with 18 additions and 55 deletions

View File

@@ -8,7 +8,7 @@ import requests
import queue
import datetime
from display import init_display, draw_loading_screen, draw_error_screen, draw_platform_grid, draw_progress_screen, draw_controls, draw_virtual_keyboard, draw_popup_result_download, draw_extension_warning, draw_pause_menu, draw_controls_help, draw_game_list, draw_history_list, draw_clear_history_dialog, draw_confirm_dialog, draw_redownload_game_cache_dialog, draw_popup, draw_gradient, draw_language_menu, THEME_COLORS
from language import update_valid_states, handle_language_menu_events, _
from language import handle_language_menu_events, _
from network import test_internet, download_rom, is_1fichier_url, download_from_1fichier, check_for_updates
from controls import handle_controls, validate_menu_state, process_key_repeats
from controls_mapper import load_controls_config, map_controls, draw_controls_mapping, ACTIONS
@@ -43,7 +43,6 @@ pygame.joystick.init()
# Chargement et initialisation de la langue
from language import initialize_language
initialize_language()
logger.debug(f"Langue initialisée: {config.current_language}")
# Détection du système non-PC
config.is_non_pc = detect_non_pc()
@@ -88,8 +87,8 @@ config.repeat_start_time = 0
config.repeat_last_action = 0
# Initialisation des variables pour la popup de musique
current_music_name = None
music_popup_start_time = 0
# Dossier musique Batocera
music_folder = os.path.join(config.APP_FOLDER, "assets", "music")
music_files = [f for f in os.listdir(music_folder) if f.lower().endswith(('.ogg', '.mp3'))]
@@ -569,14 +568,7 @@ async def main():
draw_platform_grid(screen)
config.needs_redraw = True
logger.error(f"État de menu non valide détecté: {config.menu_state}, retour à platform")
draw_controls(screen, config.menu_state)
# Afficher la popup de musique si nécessaire
if current_music_name and music_popup_start_time > 0:
from display import draw_music_popup
if not draw_music_popup(screen, current_music_name, music_popup_start_time):
current_music_name = None
music_popup_start_time = 0
draw_controls(screen, config.menu_state, getattr(config, 'current_music_name', None), getattr(config, 'music_popup_start_time', 0))
pygame.display.flip()

View File

@@ -3,7 +3,7 @@ import os
import logging
# Version actuelle de l'application
app_version = "1.9.7.3"
app_version = "1.9.7.4"
@@ -97,8 +97,8 @@ redownload_confirm_selection = 0 # Sélection pour la confirmation de redownloa
popup_message = "" # Message à afficher dans les popups
popup_timer = 0 # Temps restant pour le popup en millisecondes (0 = inactif)
last_frame_time = pygame.time.get_ticks()
current_music_name = None
music_popup_start_time = 0
current_music_name = ""
GRID_COLS = 3 # Number of columns in the platform grid

View File

@@ -949,11 +949,18 @@ def draw_extension_warning(screen):
screen.blit(error_surface, error_rect)
# Affichage des contrôles en bas de page
def draw_controls(screen, menu_state):
def draw_controls(screen, menu_state, current_music_name=None, music_popup_start_time=0):
"""Affiche les contrôles sur une seule ligne en bas de lécran."""
start_button = get_control_display('start', 'START')
start_text = _("controls_action_start")
control_text = f"RGSX v{config.app_version} - {start_button} : {start_text}"
# Ajouter le nom de la musique si disponible
if config.current_music_name and config.music_popup_start_time > 0:
current_time = pygame.time.get_ticks() / 1000
if current_time - config.music_popup_start_time < 3.0: # Afficher pendant 3 secondes
control_text += f" | {config.current_music_name}"
logger.debug(f"config.current_music_name")
max_width = config.screen_width - 40
wrapped_controls = wrap_text(control_text, config.small_font, max_width)
line_height = config.small_font.get_height() + 5
@@ -1313,39 +1320,3 @@ def draw_popup(screen):
countdown_rect = countdown_surface.get_rect(center=(config.screen_width // 2, popup_y + margin_top_bottom + len(text_lines) * line_height + line_height // 2))
screen.blit(countdown_surface, countdown_rect)
def draw_music_popup(screen, music_name, start_time):
"""Affiche une popup temporaire avec le nom de la musique en cours"""
current_time = pygame.time.get_ticks() / 1000
elapsed = current_time - start_time
# Afficher pendant 3 secondes
if elapsed > 3.0:
return False
# Effet de fondu
alpha = 255
if elapsed > 2.5:
alpha = int(255 * (3.0 - elapsed) / 0.5)
# Dimensions de la popup
popup_width = 300
popup_height = 60
popup_x = config.screen_width - popup_width - 20
popup_y = 20
# Surface avec transparence
popup_surface = pygame.Surface((popup_width, popup_height), pygame.SRCALPHA)
popup_surface.set_alpha(alpha)
# Fond de la popup
pygame.draw.rect(popup_surface, THEME_COLORS["button_idle"], (0, 0, popup_width, popup_height), border_radius=10)
pygame.draw.rect(popup_surface, THEME_COLORS["border"], (0, 0, popup_width, popup_height), 2, border_radius=10)
# Texte de la musique
text_surface = config.small_font.render(music_name, True, THEME_COLORS["text"])
text_rect = text_surface.get_rect(center=(popup_width // 2, popup_height // 2))
popup_surface.blit(text_surface, text_rect)
# Afficher la popup
screen.blit(popup_surface, (popup_x, popup_y))
return True

View File

@@ -19,7 +19,7 @@
"error_controls_mapping": "Failed to map controls",
"error_download_data": "Failed to download/extract Data Folder: {0}",
"error_api_key": "Please enter your API key (premium only) in the file {0}",
"error_api_key_extended": "Please enter your API key (premium only) in the file /userdata/saves/ports/rgsx/1fichierAPI.txt by opening it in a text editor and pasting your API key",
"error_api_key_extended": "Please enter your API key (premium only) in the file /saves/ports/rgsx/1fichierAPI.txt by opening it in a text editor and pasting your API key",
"error_invalid_download_data": "Invalid download data",
"error_delete_sources": "Error deleting sources.json file or folders",
"error_extension": "Unsupported extension or download error",

View File

@@ -595,9 +595,9 @@ def play_random_music(music_files, music_folder, current_music=None):
def set_music_popup(music_name):
"""Définit le nom de la musique à afficher dans la popup."""
global current_music_name, music_popup_start_time
current_music_name = f"{os.path.splitext(music_name)[0]}" # Utilise l'emoji ♬ directement
music_popup_start_time = pygame.time.get_ticks() / 1000 # Temps actuel en secondes
config.current_music_name = f"{os.path(music_name)[0]}" # Utilise l'emoji ♬ directement
config.music_popup_start_time = pygame.time.get_ticks() / 1000 # Temps actuel en secondes
config.needs_redraw = True # Forcer le redraw pour afficher le nom de la musique
def load_api_key_1fichier():
"""Charge la clé API 1fichier depuis le dossier de sauvegarde, crée le fichier si absent."""