diff --git a/__main__.py b/__main__.py index 305ab21..4f455bb 100644 --- a/__main__.py +++ b/__main__.py @@ -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() diff --git a/config.py b/config.py index 4974410..0433b0d 100644 --- a/config.py +++ b/config.py @@ -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 diff --git a/display.py b/display.py index 290ee9e..eba519f 100644 --- a/display.py +++ b/display.py @@ -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 \ No newline at end of file diff --git a/languages/en.json b/languages/en.json index 5fb8cd0..59acd2f 100644 --- a/languages/en.json +++ b/languages/en.json @@ -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", diff --git a/utils.py b/utils.py index cb0d5fc..10ac514 100644 --- a/utils.py +++ b/utils.py @@ -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."""