forked from Mirrors/RGSX
v1.9.7.5 - Correction doublon detection langue + ajout nom musique discret dans le footer
This commit is contained in:
16
__main__.py
16
__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()
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
45
display.py
45
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
|
||||
@@ -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",
|
||||
|
||||
6
utils.py
6
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."""
|
||||
|
||||
Reference in New Issue
Block a user