Compare commits
2 Commits
0010d64d62
...
767d38e170
| Author | SHA1 | Date | |
|---|---|---|---|
| 767d38e170 | |||
| 2512345b2c |
139
data/lang/ba_BA.json
Normal file
139
data/lang/ba_BA.json
Normal file
@@ -0,0 +1,139 @@
|
||||
{
|
||||
"MENU_TITLE_0": "JUGAR",
|
||||
"MENU_TITLE_1": "OPCIONS",
|
||||
"MENU_TITLE_2": "INSTRUCCIONS",
|
||||
"MENU_TITLE_3": "EIXIR",
|
||||
"MENU_OPTIONS_4": "FINESTRA",
|
||||
"MENU_OPTIONS_5": "PANTALLA COMPLETA",
|
||||
"MENU_OPTIONS_6": "PANTALLA COMPLETA FALSA",
|
||||
"MENU_OPTIONS_7": "TAMANY DE FINESTRA",
|
||||
"MENU_OPTIONS_8": "IDIOMA",
|
||||
"MENU_OPTIONS_9": "[ ACEPTAR ]",
|
||||
"MENU_OPTIONS_10": "[ CANCELAR ]",
|
||||
"INSTRUCTIONS_11": "Objectiu",
|
||||
"INSTRUCTIONS_12": "HAS D'EXPLOTAR",
|
||||
"INSTRUCTIONS_13": "TANTS GLOBUS COM PUGUES",
|
||||
"INSTRUCTIONS_14": "LA DIFICULTAT AUGMENTA",
|
||||
"INSTRUCTIONS_15": "A MESURA QUE VAS PUNTUANT",
|
||||
"INSTRUCTIONS_16": "Objectes",
|
||||
"INSTRUCTIONS_17": "1.000 PUNTS",
|
||||
"INSTRUCTIONS_18": "2.500 PUNTS",
|
||||
"INSTRUCTIONS_19": "5.000 PUNTS",
|
||||
"INSTRUCTIONS_20": "PARA EL TEMPS",
|
||||
"INSTRUCTIONS_21": "VIDA EXTRA",
|
||||
"INSTRUCTIONS_22": "PREM UNA TECLA PER A TORNAR",
|
||||
"TITLE_23": "PULSA PER JUGAR",
|
||||
"LANGUAGE_MENU_24": "ESPA{OL (ESPANYOL)",
|
||||
"LANGUAGE_MENU_25": "BALOONCIA",
|
||||
"LANGUAGE_MENU_26": "ENGLISH (ANGLES)",
|
||||
"INTRO_27": "Un dia qualsevol de l'any 2000",
|
||||
"INTRO_28": "Tot esta tranquil a la UPV",
|
||||
"INTRO_29": "Fins que un desaprensiu...",
|
||||
"INTRO_30": "HEY! ME ANE A FERME UN CORTAET...",
|
||||
"INTRO_31": "UAAAAAAAAAAAAA!!!",
|
||||
"INTRO_32": "Espera un moment...",
|
||||
"INTRO_33": "Si resulta que no tinc solt!",
|
||||
"INTRO_34": "VAJA BIRRIA DE MAQUINA !!!",
|
||||
"INTRO_35": "blop... blop... blop...",
|
||||
"GAME_TEXT_36": "Temps detes: ",
|
||||
"GAME_TEXT_37": "D E M O",
|
||||
"GAME_TEXT_38": " fases mes!",
|
||||
"PLAYER_SELECTION_MENU_39": "Selecciona personatge",
|
||||
"PLAYER_SELECTION_MENU_40": "Enrere",
|
||||
"PAUSE_MENU_41": "Menu de pausa",
|
||||
"HIGHSCORE_TABLE_42": "Millors puntuacions",
|
||||
"GAME_OVER_SCREEN_43": "FI DEL JOC",
|
||||
"GAME_OVER_SCREEN_44": "ELS TEUS PUNTS: ",
|
||||
"GAME_OVER_SCREEN_45": "CONTINUAR?",
|
||||
"PAUSE_MENU_46": "CONTINUAR",
|
||||
"PAUSE_MENU_47": "EIXIR DEL JOC",
|
||||
"GAME_OVER_MENU_48": "SI",
|
||||
"GAME_OVER_MENU_49": "NO",
|
||||
"GAME_COMPLETION_TEXT_50": "Felicitats!!",
|
||||
"MENU_TITLE_51": "1 JUGADOR",
|
||||
"MENU_TITLE_52": "2 JUGADORS",
|
||||
"SCOREBOARD_53": "Jugador 1",
|
||||
"SCOREBOARD_54": "Jugador 2",
|
||||
"SCOREBOARD_55": "Multiplicador",
|
||||
"SCOREBOARD_56": "Max. puntuacio",
|
||||
"SCOREBOARD_57": "Fase ",
|
||||
"MENU_OPTIONS_58": "MODE DE VISUALITZACIO",
|
||||
"MENU_OPTIONS_59": "DIFICULTAT",
|
||||
"MENU_OPTIONS_60": "FILTRE",
|
||||
"MENU_OPTIONS_61": "SINC. VERTICAL",
|
||||
"MENU_OPTIONS_62": "CONTROLS DEL JUGADOR 1",
|
||||
"MENU_OPTIONS_63": "CONTROLS DEL JUGADOR 2",
|
||||
"MENU_OPTIONS_64": "(FORA DE LINEA)",
|
||||
"MISC_65": "-",
|
||||
"MENU_OPTIONS_66": "FACIL",
|
||||
"MENU_OPTIONS_67": "NORMAL",
|
||||
"MENU_OPTIONS_68": "DIFICIL",
|
||||
"MENU_OPTIONS_69": "Teclat",
|
||||
"MENU_OPTIONS_70": "MANDO",
|
||||
"MENU_OPTIONS_71": "LINEAL",
|
||||
"MENU_OPTIONS_72": "NEAREST",
|
||||
"MENU_OPTIONS_73": "ACTIVADA",
|
||||
"MENU_OPTIONS_74": "DESACTIVADA",
|
||||
"GAMEPLAY_75": "Endavant!",
|
||||
"GAMEPLAY_76": "1.000.000 de punts!",
|
||||
"GAME_OVER_SCREEN_77": "PUNTS J1: ",
|
||||
"GAME_OVER_SCREEN_78": "PUNTS J2: ",
|
||||
"GAME_TEXT_79": "Ultima fase!",
|
||||
"NOTIFICATIONS_80": "Fallo al conectar a",
|
||||
"NOTIFICATIONS_81": "No s'ha pogut obtenir",
|
||||
"NOTIFICATIONS_82": "la puntuacio online",
|
||||
"NOTIFICATIONS_83": "No ha especificat",
|
||||
"NOTIFICATIONS_84": "cap jailerID",
|
||||
"NOTIFICATIONS_85": "ha iniciat la sesio",
|
||||
"NOTIFICATIONS_86": "Punts enviats: ",
|
||||
"NOTIFICATIONS_87": "No s'ha pogut",
|
||||
"NOTIFICATIONS_88": "enviar la puntuacio",
|
||||
"ENTER_ID_89": "CONFIGURACIO EN LINEA",
|
||||
"ENTER_ID_90": "INTRODUEIX UN JAILER_ID",
|
||||
"ENTER_ID_91": "DEIXA BUIT PER A",
|
||||
"ENTER_ID_92": "MODE FORA DE LINEA",
|
||||
"MENU_OPTIONS_93": "TAULER DE PUNTS",
|
||||
"NOTIFICATIONS_94": "Torna a polsar per eixir",
|
||||
"DEFINE_BUTTONS_95": "Disparar cap a l'esquerra",
|
||||
"DEFINE_BUTTONS_96": "Disparar cap amunt",
|
||||
"DEFINE_BUTTONS_97": "Disparar cap a la dreta",
|
||||
"DEFINE_BUTTONS_98": "Start",
|
||||
"DEFINE_BUTTONS_99": "Servei",
|
||||
"DEFINE_BUTTONS_100": "Jugador ",
|
||||
"SCOREBOARD_101": "Mode demostracio",
|
||||
"SCOREBOARD_102": "Game Over",
|
||||
"SCOREBOARD_103": "Pulsa START",
|
||||
"SCOREBOARD_104": "per jugar",
|
||||
"SCOREBOARD_105": "Continuar?",
|
||||
"SCOREBOARD_106": "Posa el nom",
|
||||
"HELP_107": "Intercanviar mandos",
|
||||
"HELP_108": "Configuracio",
|
||||
"HELP_109": "Alternar el audio",
|
||||
"HELP_110": "Filtres",
|
||||
"HELP_111": "Reiniciar",
|
||||
"HELP_112": "Pausar",
|
||||
"HELP_113": "Eixir",
|
||||
"SCOREBOARD_114": "Per favor",
|
||||
"SCOREBOARD_115": "espere",
|
||||
"NOTIFICATIONS_116": "Torna a polsar per apagar el sistema",
|
||||
"GAME_TEXT_117": "SuperPoder!",
|
||||
"GAME_TEXT_118": "+1 Colp",
|
||||
"GAME_TEXT_119": "Temps!",
|
||||
"SCOREBOARD_120": "Puntuacio",
|
||||
"CREDITS_121": "PROGRAMAT I DISSENYAT PER",
|
||||
"CREDITS_122": "GRAFICS DIBUIXATS PER",
|
||||
"CREDITS_123": "MUSICA COMPOSADA PER",
|
||||
"CREDITS_124": "EFECTES DE SO",
|
||||
"NOTIFICATIONS_125": "Torna a polsar per reiniciar",
|
||||
"NOTIFICATIONS_126": "Torna a polsar per canviar el idioma a",
|
||||
"NOTIFICATIONS_127": "Idioma canviat a",
|
||||
"MISC_128": "activat",
|
||||
"MISC_129": "desactivat",
|
||||
"MISC_130": "Dispar automatic",
|
||||
"MISC_131": "Zoom de finestra",
|
||||
"MISC_132": "Mode finestra",
|
||||
"MISC_133": "Mode pantalla completa",
|
||||
"MISC_134": "Mode d'escalat sencer",
|
||||
"MISC_135": "Filtre",
|
||||
"MISC_136": "Sincronisme vertical"
|
||||
}
|
||||
@@ -1,410 +0,0 @@
|
||||
## 0 - MENU DEL TITULO
|
||||
JUGAR
|
||||
|
||||
## 1 - MENU DEL TITULO
|
||||
OPCIONS
|
||||
|
||||
## 2 - MENU DEL TITULO
|
||||
INSTRUCCIONS
|
||||
|
||||
## 3 - MENU DEL TITULO
|
||||
EIXIR
|
||||
|
||||
## 4 - MENU DE OPCIONES
|
||||
FINESTRA
|
||||
|
||||
## 5 - MENU DE OPCIONES
|
||||
PANTALLA COMPLETA
|
||||
|
||||
## 6 - MENU DE OPCIONES
|
||||
PANTALLA COMPLETA FALSA
|
||||
|
||||
## 7 - MENU DE OPCIONES
|
||||
TAMANY DE FINESTRA
|
||||
|
||||
## 8 - MENU DE OPCIONES
|
||||
IDIOMA
|
||||
|
||||
## 9 - MENU DE OPCIONES
|
||||
[ ACEPTAR ]
|
||||
|
||||
## 10 - MENU DE OPCIONES
|
||||
[ CANCELAR ]
|
||||
|
||||
## 11 - INSTRUCCIONES
|
||||
Objectiu
|
||||
|
||||
## 12 - INSTRUCCIONES
|
||||
HAS D'EXPLOTAR
|
||||
|
||||
## 13 - INSTRUCCIONES
|
||||
TANTS GLOBUS COM PUGUES
|
||||
|
||||
## 14 - INSTRUCCIONES
|
||||
LA DIFICULTAT AUGMENTA
|
||||
|
||||
## 15 - INSTRUCCIONES
|
||||
A MESURA QUE VAS PUNTUANT
|
||||
|
||||
## 16 - INSTRUCCIONES
|
||||
Objectes
|
||||
|
||||
## 17 - INSTRUCCIONES
|
||||
1.000 PUNTS
|
||||
|
||||
## 18 - INSTRUCCIONES
|
||||
2.500 PUNTS
|
||||
|
||||
## 19 - INSTRUCCIONES
|
||||
5.000 PUNTS
|
||||
|
||||
## 20 - INSTRUCCIONES
|
||||
PARA EL TEMPS
|
||||
|
||||
## 21 - INSTRUCCIONES
|
||||
VIDA EXTRA
|
||||
|
||||
## 22 - INSTRUCCIONES
|
||||
PREM UNA TECLA PER A TORNAR
|
||||
|
||||
## 23 - TITULO
|
||||
PULSA PER JUGAR
|
||||
|
||||
## 24 - MENU SELECCION DE IDIOMA
|
||||
ESPA{OL (ESPANYOL)
|
||||
|
||||
## 25 - MENU SELECCION DE IDIOMA
|
||||
BALOONCIA
|
||||
|
||||
## 26 - MENU SELECCION DE IDIOMA
|
||||
ENGLISH (ANGLES)
|
||||
|
||||
## 27 - INTRO
|
||||
Un dia qualsevol de l'any 2000
|
||||
|
||||
## 28 - INTRO
|
||||
Tot esta tranquil a la UPV
|
||||
|
||||
## 29 - INTRO
|
||||
Fins que un desaprensiu...
|
||||
|
||||
## 30 - INTRO
|
||||
HEY! ME ANE A FERME UN CORTAET...
|
||||
|
||||
## 31 - INTRO
|
||||
UAAAAAAAAAAAAA!!!
|
||||
|
||||
## 32 - INTRO
|
||||
Espera un moment...
|
||||
|
||||
## 33 - INTRO
|
||||
Si resulta que no tinc solt!
|
||||
|
||||
## 34 - INTRO
|
||||
VAJA BIRRIA DE MAQUINA !!!
|
||||
|
||||
## 35 - INTRO
|
||||
blop... blop... blop...
|
||||
|
||||
## 36 - TEXTOS DEL JUEGO
|
||||
Temps detes:
|
||||
|
||||
## 37 - TEXTOS DEL JUEGO
|
||||
D E M O
|
||||
|
||||
## 38 - TEXTOS DEL JUEGO
|
||||
fases mes!
|
||||
|
||||
## 39 - MENU SELECCION DE JUGADOR
|
||||
Selecciona personatge
|
||||
|
||||
## 40 - MENU SELECCION DE JUGADOR
|
||||
Enrere
|
||||
|
||||
## 41 - MENU DE PAUSA
|
||||
Menu de pausa
|
||||
|
||||
## 42 - TABLA DE RECORDS
|
||||
Millors puntuacions
|
||||
|
||||
## 43 - PANTALLA DE GAME OVER
|
||||
FI DEL JOC
|
||||
|
||||
## 44 - PANTALLA DE GAME OVER
|
||||
ELS TEUS PUNTS:
|
||||
|
||||
## 45 - PANTALLA DE GAME OVER
|
||||
CONTINUAR?
|
||||
|
||||
## 46 - MENU DE PAUSA
|
||||
CONTINUAR
|
||||
|
||||
## 47 - MENU DE PAUSA
|
||||
EIXIR DEL JOC
|
||||
|
||||
## 48 - MENU GAME OVER
|
||||
SI
|
||||
|
||||
## 49 - MENU GAME OVER
|
||||
NO
|
||||
|
||||
## 50 - TEXTO DE COMPLETAR EL JUEGO
|
||||
Felicitats!!
|
||||
|
||||
## 51 - MENU DEL TITULO
|
||||
1 JUGADOR
|
||||
|
||||
## 52 - MENU DEL TITULO
|
||||
2 JUGADORS
|
||||
|
||||
## 53 MARCADOR
|
||||
Jugador 1
|
||||
|
||||
## 54 MARCADOR
|
||||
Jugador 2
|
||||
|
||||
## 55 MARCADOR
|
||||
Multiplicador
|
||||
|
||||
## 56 MARCADOR
|
||||
Max. puntuacio
|
||||
|
||||
## 57 MARCADOR
|
||||
Fase
|
||||
|
||||
## 58 - MENU DE OPCIONES
|
||||
MODE DE VISUALITZACIO
|
||||
|
||||
## 59 - MENU DE OPCIONES
|
||||
DIFICULTAT
|
||||
|
||||
## 60 - MENU DE OPCIONES
|
||||
FILTRE
|
||||
|
||||
## 61 - MENU DE OPCIONES
|
||||
SINC. VERTICAL
|
||||
|
||||
## 62 - MENU DE OPCIONES
|
||||
CONTROLS DEL JUGADOR 1
|
||||
|
||||
## 63 - MENU DE OPCIONES
|
||||
CONTROLS DEL JUGADOR 2
|
||||
|
||||
## 64 - MENU DE OPCIONES
|
||||
(FORA DE LINEA)
|
||||
|
||||
## 65 -
|
||||
-
|
||||
|
||||
## 66 - MENU DE OPCIONES
|
||||
FACIL
|
||||
|
||||
## 67 - MENU DE OPCIONES
|
||||
NORMAL
|
||||
|
||||
## 68 - MENU DE OPCIONES
|
||||
DIFICIL
|
||||
|
||||
## 69 - MENU DE OPCIONES
|
||||
Teclat
|
||||
|
||||
## 70 - MENU DE OPCIONES
|
||||
MANDO
|
||||
|
||||
## 71 - MENU DE OPCIONES
|
||||
LINEAL
|
||||
|
||||
## 72 - MENU DE OPCIONES
|
||||
NEAREST
|
||||
|
||||
## 73 - MENU DE OPCIONES
|
||||
ACTIVADA
|
||||
|
||||
## 74 - MENU DE OPCIONES
|
||||
DESACTIVADA
|
||||
|
||||
## 75 - JUEGO
|
||||
Endavant!
|
||||
|
||||
## 76 - JUEGO
|
||||
1.000.000 de punts!
|
||||
|
||||
## 77 - PANTALLA DE GAME OVER
|
||||
PUNTS J1:
|
||||
|
||||
## 78 - PANTALLA DE GAME OVER
|
||||
PUNTS J2:
|
||||
|
||||
## 79 - TEXTOS DEL JUEGO
|
||||
Ultima fase!
|
||||
|
||||
## 80 - NOTIFICACIONES
|
||||
Fallo al conectar a
|
||||
|
||||
## 81 - NOTIFICACIONES
|
||||
No s'ha pogut obtenir
|
||||
|
||||
## 82 - NOTIFICACIONES
|
||||
la puntuacio online
|
||||
|
||||
## 83 - NOTIFICACIONES
|
||||
No ha especificat
|
||||
|
||||
## 84 - NOTIFICACIONES
|
||||
cap jailerID
|
||||
|
||||
## 85 - NOTIFICACIONES
|
||||
ha iniciat la sesio
|
||||
|
||||
## 86 - NOTIFICACIONES
|
||||
Punts enviats:
|
||||
|
||||
## 87 - NOTIFICACIONES
|
||||
No s'ha pogut
|
||||
|
||||
## 88 - NOTIFICACIONES
|
||||
enviar la puntuacio
|
||||
|
||||
## 89 - ENTER ID
|
||||
CONFIGURACIO EN LINEA
|
||||
|
||||
## 90 - ENTER ID
|
||||
INTRODUEIX UN JAILER_ID
|
||||
|
||||
## 91 - ENTER ID
|
||||
DEIXA BUIT PER A
|
||||
|
||||
## 92 - ENTER ID
|
||||
MODE FORA DE LINEA
|
||||
|
||||
## 93 - MENU OPCIONES
|
||||
TAULER DE PUNTS
|
||||
|
||||
## 94 - NOTIFICACIONES
|
||||
Torna a polsar per eixir
|
||||
|
||||
## 95 - DEFINE BUTTONS
|
||||
Disparar cap a l'esquerra
|
||||
|
||||
## 96 - DEFINE BUTTONS
|
||||
Disparar cap amunt
|
||||
|
||||
## 97 - DEFINE BUTTONS
|
||||
Disparar cap a la dreta
|
||||
|
||||
## 98 - DEFINE BUTTONS
|
||||
Start
|
||||
|
||||
## 99 - DEFINE BUTTONS
|
||||
Servei
|
||||
|
||||
## 100 - DEFINE BUTTONS
|
||||
Jugador
|
||||
|
||||
## 101 - MARCADOR
|
||||
Mode demostracio
|
||||
|
||||
## 102 - MARCADOR
|
||||
Game Over
|
||||
|
||||
## 103 - MARCADOR
|
||||
Pulsa START
|
||||
|
||||
## 104 - MARCADOR
|
||||
per jugar
|
||||
|
||||
## 105 - MARCADOR
|
||||
Continuar?
|
||||
|
||||
## 106 - MARCADOR
|
||||
Posa el nom
|
||||
|
||||
## 107 - AJUDA
|
||||
Intercanviar mandos
|
||||
|
||||
## 108 - AJUDA
|
||||
Configuracio
|
||||
|
||||
## 109 - AJUDA
|
||||
Alternar el audio
|
||||
|
||||
## 110 - AJUDA
|
||||
Filtres
|
||||
|
||||
## 111 - AJUDA
|
||||
Reiniciar
|
||||
|
||||
## 112 - AJUDA
|
||||
Pausar
|
||||
|
||||
## 113 - AJUDA
|
||||
Eixir
|
||||
|
||||
## 114 - MARCADOR
|
||||
Per favor
|
||||
|
||||
## 115 - MARCADOR
|
||||
espere
|
||||
|
||||
## 116 - NOTIFICACIONES
|
||||
Torna a polsar per apagar el sistema
|
||||
|
||||
## 117 - GAME TEXT
|
||||
SuperPoder!
|
||||
|
||||
## 118 - GAME TEXT
|
||||
+1 Colp
|
||||
|
||||
## 119 - GAME TEXT
|
||||
Temps!
|
||||
|
||||
## 120 - SCOREBOARD
|
||||
Puntuacio
|
||||
|
||||
## 121 - CREDITS
|
||||
PROGRAMAT I DISSENYAT PER
|
||||
|
||||
## 122 - CREDITS
|
||||
GRAFICS DIBUIXATS PER
|
||||
|
||||
## 123 - CREDITS
|
||||
MUSICA COMPOSADA PER
|
||||
|
||||
## 124 - CREDITS
|
||||
EFECTES DE SO
|
||||
|
||||
## 125 - NOTIFICACIONES
|
||||
Torna a polsar per reiniciar
|
||||
|
||||
## 126 - NOTIFICACIONES
|
||||
Torna a polsar per canviar el idioma a
|
||||
|
||||
## 127 - NOTIFICACIONES
|
||||
Idioma canviat a
|
||||
|
||||
## 128 - VARIOS
|
||||
activat
|
||||
|
||||
## 129 - VARIOS
|
||||
desactivat
|
||||
|
||||
## 130 - VARIOS
|
||||
Dispar automatic
|
||||
|
||||
## 131 - VARIOS
|
||||
Zoom de finestra
|
||||
|
||||
## 132 - VARIOS
|
||||
Mode finestra
|
||||
|
||||
## 133 - VARIOS
|
||||
Mode pantalla completa
|
||||
|
||||
## 134 - VARIOS
|
||||
Mode d'escalat sencer
|
||||
|
||||
## 135 - VARIOS
|
||||
Filtre
|
||||
|
||||
## 136 - VARIOS
|
||||
Sincronisme vertical
|
||||
139
data/lang/en_UK.json
Normal file
139
data/lang/en_UK.json
Normal file
@@ -0,0 +1,139 @@
|
||||
{
|
||||
"MENU_TITLE_0": "PLAY",
|
||||
"MENU_TITLE_1": "OPTIONS",
|
||||
"MENU_TITLE_2": "HOW TO PLAY",
|
||||
"MENU_TITLE_3": "QUIT",
|
||||
"MENU_OPTIONS_4": "WINDOW",
|
||||
"MENU_OPTIONS_5": "FULLSCREEN",
|
||||
"MENU_OPTIONS_6": "FAKE FULLSCREEN",
|
||||
"MENU_OPTIONS_7": "WINDOW SIZE",
|
||||
"MENU_OPTIONS_8": "LANGUAGE",
|
||||
"MENU_OPTIONS_9": "[ ACCEPT ]",
|
||||
"MENU_OPTIONS_10": "[ CANCEL ]",
|
||||
"INSTRUCTIONS_11": "OBJECTIVE",
|
||||
"INSTRUCTIONS_12": "YOU HAVE TO POP AS MANY",
|
||||
"INSTRUCTIONS_13": "BALLOONS AS YOU CAN",
|
||||
"INSTRUCTIONS_14": "DIFFICULTY WILL BE INCREASED",
|
||||
"INSTRUCTIONS_15": "AS YOU SCORE POINTS",
|
||||
"INSTRUCTIONS_16": "ITEMS",
|
||||
"INSTRUCTIONS_17": "1.000 POINTS",
|
||||
"INSTRUCTIONS_18": "2.500 POINTS",
|
||||
"INSTRUCTIONS_19": "5.000 POINTS",
|
||||
"INSTRUCTIONS_20": "TIME STOPPER",
|
||||
"INSTRUCTIONS_21": "EXTRA HIT",
|
||||
"INSTRUCTIONS_22": "PRESS ANY KEY TO RETURN",
|
||||
"TITLE_23": "PRESS START BUTTON TO PLAY",
|
||||
"LANGUAGE_MENU_24": "ESPA{OL (SPANISH)",
|
||||
"LANGUAGE_MENU_25": "BALOONCIA (VALENCIAN)",
|
||||
"LANGUAGE_MENU_26": "ENGLISH",
|
||||
"INTRO_27": "Any day of the year 2000",
|
||||
"INTRO_28": "Everything is quiet at the UPV",
|
||||
"INTRO_29": "Until a bastard arrives...",
|
||||
"INTRO_30": " YO! GONNA TAKE A CAFELITO... ",
|
||||
"INTRO_31": "AAAAAAAARGHHHH!!!",
|
||||
"INTRO_32": "Wait a moment...",
|
||||
"INTRO_33": " I don't have any loose! ",
|
||||
"INTRO_34": "FUCKING MACHINE!",
|
||||
"INTRO_35": "Blop... blop... blop...",
|
||||
"GAME_TEXT_36": "Time stopped: ",
|
||||
"GAME_TEXT_37": "D E M O",
|
||||
"GAME_TEXT_38": " stages left!",
|
||||
"PLAYER_SELECTION_MENU_39": "Select Player",
|
||||
"PLAYER_SELECTION_MENU_40": "Back",
|
||||
"PAUSE_MENU_41": "Pause Menu",
|
||||
"HIGHSCORE_TABLE_42": "Best scores",
|
||||
"GAME_OVER_SCREEN_43": "GAME OVER",
|
||||
"GAME_OVER_SCREEN_44": "YOUR SCORE: ",
|
||||
"GAME_OVER_SCREEN_45": "CONTINUE?",
|
||||
"PAUSE_MENU_46": "CONTINUE",
|
||||
"PAUSE_MENU_47": "LEAVE GAME",
|
||||
"GAME_OVER_MENU_48": "YES",
|
||||
"GAME_OVER_MENU_49": "NO",
|
||||
"GAME_COMPLETION_TEXT_50": "Congratulations!!",
|
||||
"MENU_TITLE_51": "1 PLAYER",
|
||||
"MENU_TITLE_52": "2 PLAYERS",
|
||||
"SCOREBOARD_53": "Player 1",
|
||||
"SCOREBOARD_54": "Player 2",
|
||||
"SCOREBOARD_55": "Multiplier",
|
||||
"SCOREBOARD_56": "High Score",
|
||||
"SCOREBOARD_57": "Stage ",
|
||||
"MENU_OPTIONS_58": "DISPLAY MODE",
|
||||
"MENU_OPTIONS_59": "DIFFICULTY",
|
||||
"MENU_OPTIONS_60": "FILTER",
|
||||
"MENU_OPTIONS_61": "VSYNC",
|
||||
"MENU_OPTIONS_62": "PLAYER 1 CONTROLS",
|
||||
"MENU_OPTIONS_63": "PLAYER 2 CONTROLS",
|
||||
"MENU_OPTIONS_64": "(OFFLINE MODE)",
|
||||
"MISC_65": "-",
|
||||
"MENU_OPTIONS_66": "EASY",
|
||||
"MENU_OPTIONS_67": "NORMAL",
|
||||
"MENU_OPTIONS_68": "HARD",
|
||||
"MENU_OPTIONS_69": "Keyboard",
|
||||
"MENU_OPTIONS_70": "GAME CONTROLLER",
|
||||
"MENU_OPTIONS_71": "LINEAL",
|
||||
"MENU_OPTIONS_72": "NEAREST",
|
||||
"MENU_OPTIONS_73": "ON",
|
||||
"MENU_OPTIONS_74": "OFF",
|
||||
"GAMEPLAY_75": "Get Ready!",
|
||||
"GAMEPLAY_76": "1.000.000 points!",
|
||||
"GAME_OVER_SCREEN_77": "PLAYER1 SCORE: ",
|
||||
"GAME_OVER_SCREEN_78": "PLAYER2 SCORE: ",
|
||||
"GAME_TEXT_79": "Last stage!",
|
||||
"NOTIFICATIONS_80": "Failed connecting to",
|
||||
"NOTIFICATIONS_81": "Can't get",
|
||||
"NOTIFICATIONS_82": "online scores",
|
||||
"NOTIFICATIONS_83": "No JailerID",
|
||||
"NOTIFICATIONS_84": "name was set",
|
||||
"NOTIFICATIONS_85": "is logged in",
|
||||
"NOTIFICATIONS_86": "Score submitted",
|
||||
"NOTIFICATIONS_87": "Failed to send",
|
||||
"NOTIFICATIONS_88": "score to online server",
|
||||
"ENTER_ID_89": "ONLINE CONFIGURATION",
|
||||
"ENTER_ID_90": "PLEASE ENTER AN ID",
|
||||
"ENTER_ID_91": "LEAVE BLANK FOR",
|
||||
"ENTER_ID_92": "OFFLINE MODE",
|
||||
"MENU_OPTIONS_93": "HISCORE TABLE",
|
||||
"NOTIFICATIONS_94": "Press again to quit",
|
||||
"DEFINE_BUTTONS_95": "Fire left",
|
||||
"DEFINE_BUTTONS_96": "Fire up",
|
||||
"DEFINE_BUTTONS_97": "Fire right",
|
||||
"DEFINE_BUTTONS_98": "Start",
|
||||
"DEFINE_BUTTONS_99": "Service",
|
||||
"DEFINE_BUTTONS_100": "Player",
|
||||
"SCOREBOARD_101": "Demo mode",
|
||||
"SCOREBOARD_102": "Game Over",
|
||||
"SCOREBOARD_103": "Press START",
|
||||
"SCOREBOARD_104": "to play",
|
||||
"SCOREBOARD_105": "Continue?",
|
||||
"SCOREBOARD_106": "Enter name",
|
||||
"HELP_107": "Swap Controllers",
|
||||
"HELP_108": "Configuration",
|
||||
"HELP_109": "Toggle audio",
|
||||
"HELP_110": "Shaders",
|
||||
"HELP_111": "Reset",
|
||||
"HELP_112": "Pause",
|
||||
"HELP_113": "Exit",
|
||||
"SCOREBOARD_114": "Please",
|
||||
"SCOREBOARD_115": "wait",
|
||||
"NOTIFICATIONS_116": "Press again to shutdown system",
|
||||
"GAME_TEXT_117": "PowerUp",
|
||||
"GAME_TEXT_118": "+1 Hit",
|
||||
"GAME_TEXT_119": "Stop!",
|
||||
"SCOREBOARD_120": "Score",
|
||||
"CREDITS_121": "PROGRAMMED AND DESIGNED BY",
|
||||
"CREDITS_122": "PIXELART DRAWN BY",
|
||||
"CREDITS_123": "MUSIC COMPOSED BY",
|
||||
"CREDITS_124": "SOUND EFFECTS",
|
||||
"NOTIFICATIONS_125": "Press again to reset",
|
||||
"NOTIFICATIONS_126": "Press again to change languaje to",
|
||||
"NOTIFICATIONS_127": "Language set to",
|
||||
"MISC_128": "on",
|
||||
"MISC_129": "off",
|
||||
"MISC_130": "Autofire",
|
||||
"MISC_131": "Window zoom",
|
||||
"MISC_132": "Window mode",
|
||||
"MISC_133": "Fullscreen mode",
|
||||
"MISC_134": "Integer scale",
|
||||
"MISC_135": "Filter",
|
||||
"MISC_136": "Vertical Sync"
|
||||
}
|
||||
@@ -1,410 +0,0 @@
|
||||
## 0 - MENU DEL TITULO
|
||||
PLAY
|
||||
|
||||
## 1 - MENU DEL TITULO
|
||||
OPTIONS
|
||||
|
||||
## 2 - MENU DEL TITULO
|
||||
HOW TO PLAY
|
||||
|
||||
## 3 - MENU DEL TITULO
|
||||
QUIT
|
||||
|
||||
## 4 - MENU DE OPCIONES
|
||||
WINDOW
|
||||
|
||||
## 5 - MENU DE OPCIONES
|
||||
FULLSCREEN
|
||||
|
||||
## 6 - MENU DE OPCIONES
|
||||
FAKE FULLSCREEN
|
||||
|
||||
## 7 - MENU DE OPCIONES
|
||||
WINDOW SIZE
|
||||
|
||||
## 8 - MENU DE OPCIONES
|
||||
LANGUAGE
|
||||
|
||||
## 9 - MENU DE OPCIONES
|
||||
[ ACCEPT ]
|
||||
|
||||
## 10 - MENU DE OPCIONES
|
||||
[ CANCEL ]
|
||||
|
||||
## 11 - INSTRUCCIONES
|
||||
OBJECTIVE
|
||||
|
||||
## 12 - INSTRUCCIONES
|
||||
YOU HAVE TO POP AS MANY
|
||||
|
||||
## 13 - INSTRUCCIONES
|
||||
BALLOONS AS YOU CAN
|
||||
|
||||
## 14 - INSTRUCCIONES
|
||||
DIFFICULTY WILL BE INCREASED
|
||||
|
||||
## 15 - INSTRUCCIONES
|
||||
AS YOU SCORE POINTS
|
||||
|
||||
## 16 - INSTRUCCIONES
|
||||
ITEMS
|
||||
|
||||
## 17 - INSTRUCCIONES
|
||||
1.000 POINTS
|
||||
|
||||
## 18 - INSTRUCCIONES
|
||||
2.500 POINTS
|
||||
|
||||
## 19 - INSTRUCCIONES
|
||||
5.000 POINTS
|
||||
|
||||
## 20 - INSTRUCCIONES
|
||||
TIME STOPPER
|
||||
|
||||
## 21 - INSTRUCCIONES
|
||||
EXTRA HIT
|
||||
|
||||
## 22 - INSTRUCCIONES
|
||||
PRESS ANY KEY TO RETURN
|
||||
|
||||
## 23 - TITULO
|
||||
PRESS START BUTTON TO PLAY
|
||||
|
||||
## 24 - MENU SELECCION DE IDIOMA
|
||||
ESPA{OL (SPANISH)
|
||||
|
||||
## 25 - MENU SELECCION DE IDIOMA
|
||||
BALOONCIA (VALENCIAN)
|
||||
|
||||
## 26 - MENU SELECCION DE IDIOMA
|
||||
ENGLISH
|
||||
|
||||
## 27 - INTRO
|
||||
Any day of the year 2000
|
||||
|
||||
## 28 - INTRO
|
||||
Everything is quiet at the UPV
|
||||
|
||||
## 29 - INTRO
|
||||
Until a bastard arrives...
|
||||
|
||||
## 30 - INTRO
|
||||
YO! GONNA TAKE A CAFELITO...
|
||||
|
||||
## 31 - INTRO
|
||||
AAAAAAAARGHHHH!!!
|
||||
|
||||
## 32 - INTRO
|
||||
Wait a moment...
|
||||
|
||||
## 33 - INTRO
|
||||
I don't have any loose!
|
||||
|
||||
## 34 - INTRO
|
||||
FUCKING MACHINE!
|
||||
|
||||
## 35 - INTRO
|
||||
Blop... blop... blop...
|
||||
|
||||
## 36 - TEXTOS DEL JUEGO
|
||||
Time stopped:
|
||||
|
||||
## 37 - TEXTOS DEL JUEGO
|
||||
D E M O
|
||||
|
||||
## 38 - TEXTOS DEL JUEGO
|
||||
stages left!
|
||||
|
||||
## 39 - MENU SELECCION DE JUGADOR
|
||||
Select Player
|
||||
|
||||
## 40 - MENU SELECCION DE JUGADOR
|
||||
Back
|
||||
|
||||
## 41 - MENU DE PAUSA
|
||||
Pause Menu
|
||||
|
||||
## 42 - TABLA DE RECORDS
|
||||
Best scores
|
||||
|
||||
## 43 - PANTALLA DE GAME OVER
|
||||
GAME OVER
|
||||
|
||||
## 44 - PANTALLA DE GAME OVER
|
||||
YOUR SCORE:
|
||||
|
||||
## 45 - PANTALLA DE GAME OVER
|
||||
CONTINUE?
|
||||
|
||||
## 46 - MENU DE PAUSA
|
||||
CONTINUE
|
||||
|
||||
## 47 - MENU DE PAUSA
|
||||
LEAVE GAME
|
||||
|
||||
## 48 - MENU GAME OVER
|
||||
YES
|
||||
|
||||
## 49 - MENU GAME OVER
|
||||
NO
|
||||
|
||||
## 50 - TEXTO DE COMPLETAR EL JUEGO
|
||||
Congratulations!!
|
||||
|
||||
## 51 - MENU DEL TITULO
|
||||
1 PLAYER
|
||||
|
||||
## 52 - MENU DEL TITULO
|
||||
2 PLAYERS
|
||||
|
||||
## 53 - MARCADOR
|
||||
Player 1
|
||||
|
||||
## 54 - MARCADOR
|
||||
Player 2
|
||||
|
||||
## 55 - MARCADOR
|
||||
Multiplier
|
||||
|
||||
## 56 - MARCADOR
|
||||
High Score
|
||||
|
||||
## 57 - MARCADOR
|
||||
Stage
|
||||
|
||||
## 58 - MENU DE OPCIONES
|
||||
DISPLAY MODE
|
||||
|
||||
## 59 - MENU DE OPCIONES
|
||||
DIFFICULTY
|
||||
|
||||
## 60 - MENU DE OPCIONES
|
||||
FILTER
|
||||
|
||||
## 61 - MENU DE OPCIONES
|
||||
VSYNC
|
||||
|
||||
## 62 - MENU DE OPCIONES
|
||||
PLAYER 1 CONTROLS
|
||||
|
||||
## 63 - MENU DE OPCIONES
|
||||
PLAYER 2 CONTROLS
|
||||
|
||||
## 64 - MENU DE OPCIONES
|
||||
(OFFLINE MODE)
|
||||
|
||||
## 65 -
|
||||
-
|
||||
|
||||
## 66 - MENU DE OPCIONES
|
||||
EASY
|
||||
|
||||
## 67 - MENU DE OPCIONES
|
||||
NORMAL
|
||||
|
||||
## 68 - MENU DE OPCIONES
|
||||
HARD
|
||||
|
||||
## 69 - MENU DE OPCIONES
|
||||
Keyboard
|
||||
|
||||
## 70 - MENU DE OPCIONES
|
||||
GAME CONTROLLER
|
||||
|
||||
## 71 - MENU DE OPCIONES
|
||||
LINEAL
|
||||
|
||||
## 72 - MENU DE OPCIONES
|
||||
NEAREST
|
||||
|
||||
## 73 - MENU DE OPCIONES
|
||||
ON
|
||||
|
||||
## 74 - MENU DE OPCIONES
|
||||
OFF
|
||||
|
||||
## 75 - JUEGO
|
||||
Get Ready!
|
||||
|
||||
## 76 - JUEGO
|
||||
1.000.000 points!
|
||||
|
||||
## 77 - PANTALLA DE GAME OVER
|
||||
PLAYER1 SCORE:
|
||||
|
||||
## 78 - PANTALLA DE GAME OVER
|
||||
PLAYER2 SCORE:
|
||||
|
||||
## 79 - TEXTOS DEL JUEGO
|
||||
Last stage!
|
||||
|
||||
## 80 - NOTIFICACIONES
|
||||
Failed connecting to
|
||||
|
||||
## 81 - NOTIFICACIONES
|
||||
Can't get
|
||||
|
||||
## 82 - NOTIFICACIONES
|
||||
online scores
|
||||
|
||||
## 83 - NOTIFICACIONES
|
||||
No JailerID
|
||||
|
||||
## 84 - NOTIFICACIONES
|
||||
name was set
|
||||
|
||||
## 85 - NOTIFICACIONES
|
||||
is logged in
|
||||
|
||||
## 86 - NOTIFICACIONES
|
||||
Score submitted
|
||||
|
||||
## 87 - NOTIFICACIONES
|
||||
Failed to send
|
||||
|
||||
## 88 - NOTIFICACIONES
|
||||
score to online server
|
||||
|
||||
## 89 - ENTER ID
|
||||
ONLINE CONFIGURATION
|
||||
|
||||
## 90 - ENTER ID
|
||||
PLEASE ENTER AN ID
|
||||
|
||||
## 91 - ENTER ID
|
||||
LEAVE BLANK FOR
|
||||
|
||||
## 92 - ENTER ID
|
||||
OFFLINE MODE
|
||||
|
||||
## 93 - MENU OPCIONES
|
||||
HISCORE TABLE
|
||||
|
||||
## 94 - NOTIFICACIONES
|
||||
Press again to quit
|
||||
|
||||
## 95 - DEFINE BUTTONS
|
||||
Fire left
|
||||
|
||||
## 96 - DEFINE BUTTONS
|
||||
Fire up
|
||||
|
||||
## 97 - DEFINE BUTTONS
|
||||
Fire right
|
||||
|
||||
## 98 - DEFINE BUTTONS
|
||||
Start
|
||||
|
||||
## 99 - DEFINE BUTTONS
|
||||
Service
|
||||
|
||||
## 100 - DEFINE BUTTONS
|
||||
Player
|
||||
|
||||
## 101 - MARCADOR
|
||||
Demo mode
|
||||
|
||||
## 102 - MARCADOR
|
||||
Game Over
|
||||
|
||||
## 103 - MARCADOR
|
||||
Press START
|
||||
|
||||
## 104 - MARCADOR
|
||||
to play
|
||||
|
||||
## 105 - MARCADOR
|
||||
Continue?
|
||||
|
||||
## 106 - MARCADOR
|
||||
Enter name
|
||||
|
||||
## 107 - AJUDA
|
||||
Swap Controllers
|
||||
|
||||
## 108 - AJUDA
|
||||
Configuration
|
||||
|
||||
## 109 - AJUDA
|
||||
Toggle audio
|
||||
|
||||
## 110 - AJUDA
|
||||
Shaders
|
||||
|
||||
## 111 - AJUDA
|
||||
Reset
|
||||
|
||||
## 112 - AJUDA
|
||||
Pause
|
||||
|
||||
## 113 - AJUDA
|
||||
Exit
|
||||
|
||||
## 114 - MARCADOR
|
||||
Please
|
||||
|
||||
## 115 - MARCADOR
|
||||
wait
|
||||
|
||||
## 116 - NOTIFICACIONES
|
||||
Press again to shutdown system
|
||||
|
||||
## 117 - GAME TEXT
|
||||
PowerUp
|
||||
|
||||
## 118 - GAME TEXT
|
||||
+1 Hit
|
||||
|
||||
## 119 - GAME TEXT
|
||||
Stop!
|
||||
|
||||
## 120 - SCOREBOARD
|
||||
Score
|
||||
|
||||
## 121 - CREDITS
|
||||
PROGRAMMED AND DESIGNED BY
|
||||
|
||||
## 122 - CREDITS
|
||||
PIXELART DRAWN BY
|
||||
|
||||
## 123 - CREDITS
|
||||
MUSIC COMPOSED BY
|
||||
|
||||
## 124 - CREDITS
|
||||
SOUND EFFECTS
|
||||
|
||||
## 125 - NOTIFICACIONES
|
||||
Press again to reset
|
||||
|
||||
## 126 - NOTIFICACIONES
|
||||
Press again to change languaje to
|
||||
|
||||
## 127 - NOTIFICACIONES
|
||||
Language set to
|
||||
|
||||
## 128 - VARIOS
|
||||
on
|
||||
|
||||
## 129 - VARIOS
|
||||
off
|
||||
|
||||
## 130 - VARIOS
|
||||
Autofire
|
||||
|
||||
## 131 - VARIOS
|
||||
Window zoom
|
||||
|
||||
## 132 - VARIOS
|
||||
Window mode
|
||||
|
||||
## 133 - VARIOS
|
||||
Fullscreen mode
|
||||
|
||||
## 134 - VARIOS
|
||||
Integer scale
|
||||
|
||||
## 135 - VARIOS
|
||||
Filter
|
||||
|
||||
## 136 - VARIOS
|
||||
Vertical Sync
|
||||
139
data/lang/es_ES.json
Normal file
139
data/lang/es_ES.json
Normal file
@@ -0,0 +1,139 @@
|
||||
{
|
||||
"MENU_TITLE_0": "JUGAR",
|
||||
"MENU_TITLE_1": "OPCIONES",
|
||||
"MENU_TITLE_2": "INSTRUCCIONES",
|
||||
"MENU_TITLE_3": "SALIR",
|
||||
"MENU_OPTIONS_4": "VENTANA",
|
||||
"MENU_OPTIONS_5": "PANTALLA COMPLETA",
|
||||
"MENU_OPTIONS_6": "PANTALLA COMPLETA FALSA",
|
||||
"MENU_OPTIONS_7": "TAMA{O DE VENTANA",
|
||||
"MENU_OPTIONS_8": "IDIOMA",
|
||||
"MENU_OPTIONS_9": "[ ACEPTAR ]",
|
||||
"MENU_OPTIONS_10": "[ CANCELAR ]",
|
||||
"INSTRUCTIONS_11": "OBJETIVO",
|
||||
"INSTRUCTIONS_12": "TIENES QUE EXPLOTAR",
|
||||
"INSTRUCTIONS_13": "TANTOS GLOBOS COMO PUEDAS",
|
||||
"INSTRUCTIONS_14": "LA DIFICULTAD SE INCREMENTA",
|
||||
"INSTRUCTIONS_15": "A MEDIDA QUE VAS PUNTUANDO",
|
||||
"INSTRUCTIONS_16": "OBJETOS",
|
||||
"INSTRUCTIONS_17": "1.000 PUNTOS",
|
||||
"INSTRUCTIONS_18": "2.500 PUNTOS",
|
||||
"INSTRUCTIONS_19": "5.000 PUNTOS",
|
||||
"INSTRUCTIONS_20": "DETIENE EL TIEMPO",
|
||||
"INSTRUCTIONS_21": "VIDA EXTRA",
|
||||
"INSTRUCTIONS_22": "PULSA UNA TECLA PARA VOLVER",
|
||||
"TITLE_23": "PULSA UN BOTON PARA JUGAR",
|
||||
"LANGUAGE_MENU_24": "ESPA{OL",
|
||||
"LANGUAGE_MENU_25": "BALOONCIA (VALENCIANO)",
|
||||
"LANGUAGE_MENU_26": "ENGLISH (INGLES)",
|
||||
"INTRO_27": "Un dia cualquiera del a{o 2000",
|
||||
"INTRO_28": "Todo esta tranquilo en la UPV",
|
||||
"INTRO_29": "Hasta que un desaprensivo...",
|
||||
"INTRO_30": "HEY! VOY A SACARME UN TALLADET...",
|
||||
"INTRO_31": "UAAAAAAAAAAAAA!!!",
|
||||
"INTRO_32": "Espera un momento...",
|
||||
"INTRO_33": "Si no llevo suelto encima!",
|
||||
"INTRO_34": "MIERDA DE MAQUINA!",
|
||||
"INTRO_35": "Blop... blop... blop...",
|
||||
"GAME_TEXT_36": "Tiempo: ",
|
||||
"GAME_TEXT_37": "D E M O",
|
||||
"GAME_TEXT_38": " fases mas!",
|
||||
"PLAYER_SELECTION_MENU_39": "Selecciona jugador",
|
||||
"PLAYER_SELECTION_MENU_40": "Volver",
|
||||
"PAUSE_MENU_41": "Menu de pausa",
|
||||
"HIGHSCORE_TABLE_42": "Mejores puntuaciones",
|
||||
"GAME_OVER_SCREEN_43": "FIN DE JUEGO",
|
||||
"GAME_OVER_SCREEN_44": "TU PUNTUACION: ",
|
||||
"GAME_OVER_SCREEN_45": "CONTINUAR?",
|
||||
"PAUSE_MENU_46": "CONTINUAR",
|
||||
"PAUSE_MENU_47": "SALIR DEL JUEGO",
|
||||
"GAME_OVER_MENU_48": "SI",
|
||||
"GAME_OVER_MENU_49": "NO",
|
||||
"GAME_COMPLETION_TEXT_50": "Felicidades!!",
|
||||
"MENU_TITLE_51": "1 JUGADOR",
|
||||
"MENU_TITLE_52": "2 JUGADORES",
|
||||
"SCOREBOARD_53": "Jugador 1",
|
||||
"SCOREBOARD_54": "Jugador 2",
|
||||
"SCOREBOARD_55": "Multiplicador",
|
||||
"SCOREBOARD_56": "Max. puntuacion",
|
||||
"SCOREBOARD_57": "Fase ",
|
||||
"MENU_OPTIONS_58": "MODO DE VISUALIZACION",
|
||||
"MENU_OPTIONS_59": "DIFICULTAD",
|
||||
"MENU_OPTIONS_60": "FILTRO",
|
||||
"MENU_OPTIONS_61": "SINC. VERTICAL",
|
||||
"MENU_OPTIONS_62": "CONTROLES DEL JUGADOR 1",
|
||||
"MENU_OPTIONS_63": "CONTROLES DEL JUGADOR 2",
|
||||
"MENU_OPTIONS_64": "(MODO OFFLINE)",
|
||||
"MISC_65": "-",
|
||||
"MENU_OPTIONS_66": "FACIL",
|
||||
"MENU_OPTIONS_67": "NORMAL",
|
||||
"MENU_OPTIONS_68": "DIFICIL",
|
||||
"MENU_OPTIONS_69": "Teclado",
|
||||
"MENU_OPTIONS_70": "MANDO",
|
||||
"MENU_OPTIONS_71": "LINEAL",
|
||||
"MENU_OPTIONS_72": "NEAREST",
|
||||
"MENU_OPTIONS_73": "ACTIVADA",
|
||||
"MENU_OPTIONS_74": "DESACTIVADA",
|
||||
"GAMEPLAY_75": "Adelante!",
|
||||
"GAMEPLAY_76": "1.000.000 de puntos!",
|
||||
"GAME_OVER_SCREEN_77": "PUNTUACION J1: ",
|
||||
"GAME_OVER_SCREEN_78": "PUNTUACION J2: ",
|
||||
"GAME_TEXT_79": "Ultima fase!",
|
||||
"NOTIFICATIONS_80": "Fallo al conectar a ",
|
||||
"NOTIFICATIONS_81": "No se ha podido obtener",
|
||||
"NOTIFICATIONS_82": "la puntuacion online",
|
||||
"NOTIFICATIONS_83": "No se ha especificado",
|
||||
"NOTIFICATIONS_84": "ningun jailerID",
|
||||
"NOTIFICATIONS_85": "ha iniciado la sesion",
|
||||
"NOTIFICATIONS_86": "Puntos enviados: ",
|
||||
"NOTIFICATIONS_87": "No se ha podido",
|
||||
"NOTIFICATIONS_88": "enviar la puntuacion",
|
||||
"ENTER_ID_89": "CONFIGURACION ONLNE",
|
||||
"ENTER_ID_90": "INTRODUCE UN JAILER_ID",
|
||||
"ENTER_ID_91": "DEJA EN BLANCO PARA",
|
||||
"ENTER_ID_92": "MODO SIN CONEXION",
|
||||
"MENU_OPTIONS_93": "TABLA DE PUNTUACIONES",
|
||||
"NOTIFICATIONS_94": "Pulsa otra vez para salir",
|
||||
"DEFINE_BUTTONS_95": "Disparar a la izquierda",
|
||||
"DEFINE_BUTTONS_96": "Disparar hacia arriba",
|
||||
"DEFINE_BUTTONS_97": "Disparar hacia la derecha",
|
||||
"DEFINE_BUTTONS_98": "Start",
|
||||
"DEFINE_BUTTONS_99": "Servicio",
|
||||
"DEFINE_BUTTONS_100": "Jugador ",
|
||||
"SCOREBOARD_101": "Mode demostracion",
|
||||
"SCOREBOARD_102": "Game Over",
|
||||
"SCOREBOARD_103": "Pulsa START",
|
||||
"SCOREBOARD_104": "para jugar",
|
||||
"SCOREBOARD_105": "Continuar?",
|
||||
"SCOREBOARD_106": "Pon tu nombre",
|
||||
"HELP_107": "Intercambiar mandos",
|
||||
"HELP_108": "Configuracion",
|
||||
"HELP_109": "Alternar el audio",
|
||||
"HELP_110": "Filtros",
|
||||
"HELP_111": "Reiniciar",
|
||||
"HELP_112": "Pausar",
|
||||
"HELP_113": "Salir",
|
||||
"SCOREBOARD_114": "Por favor",
|
||||
"SCOREBOARD_115": "espere",
|
||||
"NOTIFICATIONS_116": "Pulsa otra vez para apagar el sistema",
|
||||
"GAME_TEXT_117": "Potenciador",
|
||||
"GAME_TEXT_118": "+1 Golpe",
|
||||
"GAME_TEXT_119": "Tiempo!",
|
||||
"SCOREBOARD_120": "Puntuacion",
|
||||
"CREDITS_121": "PROGRAMADO Y DISE{ADO POR",
|
||||
"CREDITS_122": "GRAFICOS DIBUJADOS POR",
|
||||
"CREDITS_123": "MUSICA COMPUESTA POR",
|
||||
"CREDITS_124": "EFECTOS DE SONIDO",
|
||||
"NOTIFICATIONS_125": "Vuelve a pulsar para reiniciar",
|
||||
"NOTIFICATIONS_126": "Vuelve a pulsar para cambiar el idioma a",
|
||||
"NOTIFICATIONS_127": "Idioma cambiado a",
|
||||
"MISC_128": "activado",
|
||||
"MISC_129": "desactivado",
|
||||
"MISC_130": "Disparo automático",
|
||||
"MISC_131": "Zoom de ventana",
|
||||
"MISC_132": "Modo ventana",
|
||||
"MISC_133": "Modo pantalla completa",
|
||||
"MISC_134": "Modo de escalado entero",
|
||||
"MISC_135": "Filtro",
|
||||
"MISC_136": "Sincronismo vertical"
|
||||
}
|
||||
@@ -1,410 +0,0 @@
|
||||
## 0 - MENU DEL TITULO
|
||||
JUGAR
|
||||
|
||||
## 1 - MENU DEL TITULO
|
||||
OPCIONES
|
||||
|
||||
## 2 - MENU DEL TITULO
|
||||
INSTRUCCIONES
|
||||
|
||||
## 3 - MENU DEL TITULO
|
||||
SALIR
|
||||
|
||||
## 4 - MENU DE OPCIONES
|
||||
VENTANA
|
||||
|
||||
## 5 - MENU DE OPCIONES
|
||||
PANTALLA COMPLETA
|
||||
|
||||
## 6 - MENU DE OPCIONES
|
||||
PANTALLA COMPLETA FALSA
|
||||
|
||||
## 7 - MENU DE OPCIONES
|
||||
TAMA{O DE VENTANA
|
||||
|
||||
## 8 - MENU DE OPCIONES
|
||||
IDIOMA
|
||||
|
||||
## 9 - MENU DE OPCIONES
|
||||
[ ACEPTAR ]
|
||||
|
||||
## 10 - MENU DE OPCIONES
|
||||
[ CANCELAR ]
|
||||
|
||||
## 11 - INSTRUCCIONES
|
||||
OBJETIVO
|
||||
|
||||
## 12 - INSTRUCCIONES
|
||||
TIENES QUE EXPLOTAR
|
||||
|
||||
## 13 - INSTRUCCIONES
|
||||
TANTOS GLOBOS COMO PUEDAS
|
||||
|
||||
## 14 - INSTRUCCIONES
|
||||
LA DIFICULTAD SE INCREMENTA
|
||||
|
||||
## 15 - INSTRUCCIONES
|
||||
A MEDIDA QUE VAS PUNTUANDO
|
||||
|
||||
## 16 - INSTRUCCIONES
|
||||
OBJETOS
|
||||
|
||||
## 17 - INSTRUCCIONES
|
||||
1.000 PUNTOS
|
||||
|
||||
## 18 - INSTRUCCIONES
|
||||
2.500 PUNTOS
|
||||
|
||||
## 19 - INSTRUCCIONES
|
||||
5.000 PUNTOS
|
||||
|
||||
## 20 - INSTRUCCIONES
|
||||
DETIENE EL TIEMPO
|
||||
|
||||
## 21 - INSTRUCCIONES
|
||||
VIDA EXTRA
|
||||
|
||||
## 22 - INSTRUCCIONES
|
||||
PULSA UNA TECLA PARA VOLVER
|
||||
|
||||
## 23 - TITULO
|
||||
PULSA UN BOTON PARA JUGAR
|
||||
|
||||
## 24 - MENU SELECCION DE IDIOMA
|
||||
ESPA{OL
|
||||
|
||||
## 25 - MENU SELECCION DE IDIOMA
|
||||
BALOONCIA (VALENCIANO)
|
||||
|
||||
## 26 - MENU SELECCION DE IDIOMA
|
||||
ENGLISH (INGLES)
|
||||
|
||||
## 27 - INTRO
|
||||
Un dia cualquiera del a{o 2000
|
||||
|
||||
## 28 - INTRO
|
||||
Todo esta tranquilo en la UPV
|
||||
|
||||
## 29 - INTRO
|
||||
Hasta que un desaprensivo...
|
||||
|
||||
## 30 - INTRO
|
||||
HEY! VOY A SACARME UN TALLADET...
|
||||
|
||||
## 31 - INTRO
|
||||
UAAAAAAAAAAAAA!!!
|
||||
|
||||
## 32 - INTRO
|
||||
Espera un momento...
|
||||
|
||||
## 33 - INTRO
|
||||
Si no llevo suelto encima!
|
||||
|
||||
## 34 - INTRO
|
||||
MIERDA DE MAQUINA!
|
||||
|
||||
## 35 - INTRO
|
||||
Blop... blop... blop...
|
||||
|
||||
## 36 - TEXTOS DEL JUEGO
|
||||
Tiempo:
|
||||
|
||||
## 37 - TEXTOS DEL JUEGO
|
||||
D E M O
|
||||
|
||||
## 38 - TEXTOS DEL JUEGO
|
||||
fases mas!
|
||||
|
||||
## 39 - MENU SELECCION DE JUGADOR
|
||||
Selecciona jugador
|
||||
|
||||
## 40 - MENU SELECCION DE JUGADOR
|
||||
Volver
|
||||
|
||||
## 41 - MENU DE PAUSA
|
||||
Menu de pausa
|
||||
|
||||
## 42 - TABLA DE RECORDS
|
||||
Mejores puntuaciones
|
||||
|
||||
## 43 - PANTALLA DE GAME OVER
|
||||
FIN DE JUEGO
|
||||
|
||||
## 44 - PANTALLA DE GAME OVER
|
||||
TU PUNTUACION:
|
||||
|
||||
## 45 - PANTALLA DE GAME OVER
|
||||
CONTINUAR?
|
||||
|
||||
## 46 - MENU DE PAUSA
|
||||
CONTINUAR
|
||||
|
||||
## 47 - MENU DE PAUSA
|
||||
SALIR DEL JUEGO
|
||||
|
||||
## 48 - MENU GAME OVER
|
||||
SI
|
||||
|
||||
## 49 - MENU GAME OVER
|
||||
NO
|
||||
|
||||
## 50 - TEXTO DE COMPLETAR EL JUEGO
|
||||
Felicidades!!
|
||||
|
||||
## 51 - MENU DEL TITULO
|
||||
1 JUGADOR
|
||||
|
||||
## 52 - MENU DEL TITULO
|
||||
2 JUGADORES
|
||||
|
||||
## 53 - MARCADOR
|
||||
Jugador 1
|
||||
|
||||
## 54 - MARCADOR
|
||||
Jugador 2
|
||||
|
||||
## 55 - MARCADOR
|
||||
Multiplicador
|
||||
|
||||
## 56 - MARCADOR
|
||||
Max. puntuacion
|
||||
|
||||
## 57 - MARCADOR
|
||||
Fase
|
||||
|
||||
## 58 - MENU DE OPCIONES
|
||||
MODO DE VISUALIZACION
|
||||
|
||||
## 59 - MENU DE OPCIONES
|
||||
DIFICULTAD
|
||||
|
||||
## 60 - MENU DE OPCIONES
|
||||
FILTRO
|
||||
|
||||
## 61 - MENU DE OPCIONES
|
||||
SINC. VERTICAL
|
||||
|
||||
## 62 - MENU DE OPCIONES
|
||||
CONTROLES DEL JUGADOR 1
|
||||
|
||||
## 63 - MENU DE OPCIONES
|
||||
CONTROLES DEL JUGADOR 2
|
||||
|
||||
## 64 - MENU DE OPCIONES
|
||||
(MODO OFFLINE)
|
||||
|
||||
## 65 -
|
||||
-
|
||||
|
||||
## 66 - MENU DE OPCIONES
|
||||
FACIL
|
||||
|
||||
## 67 - MENU DE OPCIONES
|
||||
NORMAL
|
||||
|
||||
## 68 - MENU DE OPCIONES
|
||||
DIFICIL
|
||||
|
||||
## 69 - MENU DE OPCIONES
|
||||
Teclado
|
||||
|
||||
## 70 - MENU DE OPCIONES
|
||||
MANDO
|
||||
|
||||
## 71 - MENU DE OPCIONES
|
||||
LINEAL
|
||||
|
||||
## 72 - MENU DE OPCIONES
|
||||
NEAREST
|
||||
|
||||
## 73 - MENU DE OPCIONES
|
||||
ACTIVADA
|
||||
|
||||
## 74 - MENU DE OPCIONES
|
||||
DESACTIVADA
|
||||
|
||||
## 75 - JUEGO
|
||||
Adelante!
|
||||
|
||||
## 76 - JUEGO
|
||||
1.000.000 de puntos!
|
||||
|
||||
## 77 - PANTALLA DE GAME OVER
|
||||
PUNTUACION J1:
|
||||
|
||||
## 78 - PANTALLA DE GAME OVER
|
||||
PUNTUACION J2:
|
||||
|
||||
## 79 - TEXTOS DEL JUEGO
|
||||
Ultima fase!
|
||||
|
||||
## 80 - NOTIFICACIONES
|
||||
Fallo al conectar a
|
||||
|
||||
## 81 - NOTIFICACIONES
|
||||
No se ha podido obtener
|
||||
|
||||
## 82 - NOTIFICACIONES
|
||||
la puntuacion online
|
||||
|
||||
## 83 - NOTIFICACIONES
|
||||
No se ha especificado
|
||||
|
||||
## 84 - NOTIFICACIONES
|
||||
ningun jailerID
|
||||
|
||||
## 85 - NOTIFICACIONES
|
||||
ha iniciado la sesion
|
||||
|
||||
## 86 - NOTIFICACIONES
|
||||
Puntos enviados:
|
||||
|
||||
## 87 - NOTIFICACIONES
|
||||
No se ha podido
|
||||
|
||||
## 88 - NOTIFICACIONES
|
||||
enviar la puntuacion
|
||||
|
||||
## 89 - ENTER ID
|
||||
CONFIGURACION ONLNE
|
||||
|
||||
## 90 - ENTER ID
|
||||
INTRODUCE UN JAILER_ID
|
||||
|
||||
## 91 - ENTER ID
|
||||
DEJA EN BLANCO PARA
|
||||
|
||||
## 92 - ENTER ID
|
||||
MODO SIN CONEXION
|
||||
|
||||
## 93 - MENU OPCIONES
|
||||
TABLA DE PUNTUACIONES
|
||||
|
||||
## 94 - NOTIFICACIONES
|
||||
Pulsa otra vez para salir
|
||||
|
||||
## 95 - DEFINE BUTTONS
|
||||
Disparar a la izquierda
|
||||
|
||||
## 96 - DEFINE BUTTONS
|
||||
Disparar hacia arriba
|
||||
|
||||
## 97 - DEFINE BUTTONS
|
||||
Disparar hacia la derecha
|
||||
|
||||
## 98 - DEFINE BUTTONS
|
||||
Start
|
||||
|
||||
## 99 - DEFINE BUTTONS
|
||||
Servicio
|
||||
|
||||
## 100 - DEFINE BUTTONS
|
||||
Jugador
|
||||
|
||||
## 101 - MARCADOR
|
||||
Mode demostracion
|
||||
|
||||
## 102 - MARCADOR
|
||||
Game Over
|
||||
|
||||
## 103 - MARCADOR
|
||||
Pulsa START
|
||||
|
||||
## 104 - MARCADOR
|
||||
para jugar
|
||||
|
||||
## 105 - MARCADOR
|
||||
Continuar?
|
||||
|
||||
## 106 - MARCADOR
|
||||
Pon tu nombre
|
||||
|
||||
## 107 - AJUDA
|
||||
Intercambiar mandos
|
||||
|
||||
## 108 - AJUDA
|
||||
Configuracion
|
||||
|
||||
## 109 - AJUDA
|
||||
Alternar el audio
|
||||
|
||||
## 110 - AJUDA
|
||||
Filtros
|
||||
|
||||
## 111 - AJUDA
|
||||
Reiniciar
|
||||
|
||||
## 112 - AJUDA
|
||||
Pausar
|
||||
|
||||
## 113 - AJUDA
|
||||
Salir
|
||||
|
||||
## 114 - MARCADOR
|
||||
Por favor
|
||||
|
||||
## 115 - MARCADOR
|
||||
espere
|
||||
|
||||
## 94 - NOTIFICACIONES
|
||||
Pulsa otra vez para apagar el sistema
|
||||
|
||||
## 117 - GAME TEXT
|
||||
Potenciador
|
||||
|
||||
## 118 - GAME TEXT
|
||||
+1 Golpe
|
||||
|
||||
## 119 - GAME TEXT
|
||||
Tiempo!
|
||||
|
||||
## 120 - SCOREBOARD
|
||||
Puntuacion
|
||||
|
||||
## 121 - CREDITS
|
||||
PROGRAMADO Y DISE{ADO POR
|
||||
|
||||
## 122 - CREDITS
|
||||
GRAFICOS DIBUJADOS POR
|
||||
|
||||
## 123 - CREDITS
|
||||
MUSICA COMPUESTA POR
|
||||
|
||||
## 124 - CREDITS
|
||||
EFECTOS DE SONIDO
|
||||
|
||||
## 125 - NOTIFICACIONES
|
||||
Vuelve a pulsar para reiniciar
|
||||
|
||||
## 126 - NOTIFICACIONES
|
||||
Vuelve a pulsar para cambiar el idioma a
|
||||
|
||||
## 127 - NOTIFICACIONES
|
||||
Idioma cambiado a
|
||||
|
||||
## 128 - VARIOS
|
||||
activado
|
||||
|
||||
## 129 - VARIOS
|
||||
desactivado
|
||||
|
||||
## 130 - VARIOS
|
||||
Disparo automático
|
||||
|
||||
## 131 - VARIOS
|
||||
Zoom de ventana
|
||||
|
||||
## 132 - VARIOS
|
||||
Modo ventana
|
||||
|
||||
## 133 - VARIOS
|
||||
Modo pantalla completa
|
||||
|
||||
## 134 - VARIOS
|
||||
Modo de escalado entero
|
||||
|
||||
## 135 - VARIOS
|
||||
Filtro
|
||||
|
||||
## 136 - VARIOS
|
||||
Sincronismo vertical
|
||||
@@ -169,10 +169,10 @@ void Credits::fillTextTexture()
|
||||
SDL_RenderClear(Screen::get()->getRenderer());
|
||||
|
||||
const std::array<std::string, 10> TEXTS = {
|
||||
lang::getText(121),
|
||||
lang::getText(122),
|
||||
lang::getText(123),
|
||||
lang::getText(124),
|
||||
lang::getText("CREDITS_121"),
|
||||
lang::getText("CREDITS_122"),
|
||||
lang::getText("CREDITS_123"),
|
||||
lang::getText("CREDITS_124"),
|
||||
"JAILDESIGNER",
|
||||
"JAILDOCTOR (INTRO)",
|
||||
"ERIC MATYAS (SOUNDIMAGE.ORG)",
|
||||
|
||||
@@ -28,7 +28,7 @@ void DefineButtons::render()
|
||||
{
|
||||
if (enabled_)
|
||||
{
|
||||
text_->writeCentered(x_, y_ - 10, lang::getText(100) + std::to_string(options.controllers.at(index_controller_).player_id));
|
||||
text_->writeCentered(x_, y_ - 10, lang::getText("DEFINE_BUTTONS_100") + std::to_string(options.controllers.at(index_controller_).player_id));
|
||||
text_->writeCentered(x_, y_, controller_names_.at(index_controller_));
|
||||
text_->writeCentered(x_, y_ + 10, buttons_.at(index_button_).label);
|
||||
}
|
||||
@@ -135,9 +135,9 @@ bool DefineButtons::checkButtonNotInUse(SDL_GamepadButton button)
|
||||
void DefineButtons::clearButtons()
|
||||
{
|
||||
buttons_.clear();
|
||||
buttons_.emplace_back(lang::getText(95), InputAction::FIRE_LEFT, SDL_GAMEPAD_BUTTON_INVALID);
|
||||
buttons_.emplace_back(lang::getText(96), InputAction::FIRE_CENTER, SDL_GAMEPAD_BUTTON_INVALID);
|
||||
buttons_.emplace_back(lang::getText(97), InputAction::FIRE_RIGHT, SDL_GAMEPAD_BUTTON_INVALID);
|
||||
buttons_.emplace_back(lang::getText(98), InputAction::START, SDL_GAMEPAD_BUTTON_INVALID);
|
||||
buttons_.emplace_back(lang::getText(99), InputAction::SERVICE, SDL_GAMEPAD_BUTTON_INVALID);
|
||||
buttons_.emplace_back(lang::getText("DEFINE_BUTTONS_95"), InputAction::FIRE_LEFT, SDL_GAMEPAD_BUTTON_INVALID);
|
||||
buttons_.emplace_back(lang::getText("DEFINE_BUTTONS_96"), InputAction::FIRE_CENTER, SDL_GAMEPAD_BUTTON_INVALID);
|
||||
buttons_.emplace_back(lang::getText("DEFINE_BUTTONS_97"), InputAction::FIRE_RIGHT, SDL_GAMEPAD_BUTTON_INVALID);
|
||||
buttons_.emplace_back(lang::getText("DEFINE_BUTTONS_98"), InputAction::START, SDL_GAMEPAD_BUTTON_INVALID);
|
||||
buttons_.emplace_back(lang::getText("DEFINE_BUTTONS_99"), InputAction::SERVICE, SDL_GAMEPAD_BUTTON_INVALID);
|
||||
}
|
||||
@@ -460,9 +460,9 @@ void Director::setFileList()
|
||||
Asset::get()->add(prefix + "/data/font/04b_25_reversed_2x.png", AssetType::BITMAP);
|
||||
|
||||
// Textos
|
||||
Asset::get()->add(prefix + "/data/lang/es_ES.txt", AssetType::LANG);
|
||||
Asset::get()->add(prefix + "/data/lang/en_UK.txt", AssetType::LANG);
|
||||
Asset::get()->add(prefix + "/data/lang/ba_BA.txt", AssetType::LANG);
|
||||
Asset::get()->add(prefix + "/data/lang/es_ES.json", AssetType::LANG);
|
||||
Asset::get()->add(prefix + "/data/lang/en_UK.json", AssetType::LANG);
|
||||
Asset::get()->add(prefix + "/data/lang/ba_BA.json", AssetType::LANG);
|
||||
|
||||
// Si falta algun fichero, sale del programa
|
||||
if (!Asset::get()->check())
|
||||
@@ -692,20 +692,20 @@ std::string Director::getLangFile(lang::Code code)
|
||||
{
|
||||
switch (code)
|
||||
{
|
||||
case lang::Code::ba_BA:
|
||||
return Asset::get()->get("ba_BA.txt");
|
||||
case lang::Code::VALENCIAN:
|
||||
return Asset::get()->get("ba_BA.json");
|
||||
break;
|
||||
case lang::Code::es_ES:
|
||||
return Asset::get()->get("es_ES.txt");
|
||||
case lang::Code::SPANISH:
|
||||
return Asset::get()->get("es_ES.json");
|
||||
break;
|
||||
case lang::Code::en_UK:
|
||||
return Asset::get()->get("en_UK.txt");
|
||||
case lang::Code::ENGLISH:
|
||||
return Asset::get()->get("en_UK.json");
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return Asset::get()->get("en_UK.txt");
|
||||
return Asset::get()->get("en_UK.json");
|
||||
}
|
||||
|
||||
#ifdef ARCADE
|
||||
|
||||
@@ -276,7 +276,7 @@ void Game::updateStage()
|
||||
else
|
||||
{
|
||||
auto text = Resource::get()->getText("04b_25_2x");
|
||||
const std::string caption = std::to_string(10 - Stage::number) + lang::getText(38);
|
||||
const std::string caption = std::to_string(10 - Stage::number) + lang::getText("GAME_TEXT_38");
|
||||
createMessage(paths, text->writeToTexture(caption, 1, -4));
|
||||
}
|
||||
}
|
||||
@@ -1727,12 +1727,12 @@ void Game::initPlayers(int player_id)
|
||||
const int y = param.game.play_area.rect.h - 30;
|
||||
players_.emplace_back(std::make_unique<Player>(1, param.game.play_area.first_quarter_x - 15, y, demo_.enabled, param.game.play_area.rect, player_textures_[0], player_animations_));
|
||||
players_.back()->setScoreBoardPanel(SCOREBOARD_LEFT_PANEL);
|
||||
players_.back()->setName(lang::getText(53));
|
||||
players_.back()->setName(lang::getText("SCOREBOARD_53"));
|
||||
players_.back()->setController(getController(players_.back()->getId()));
|
||||
|
||||
players_.emplace_back(std::make_unique<Player>(2, param.game.play_area.third_quarter_x - 15, y, demo_.enabled, param.game.play_area.rect, player_textures_[1], player_animations_));
|
||||
players_.back()->setScoreBoardPanel(SCOREBOARD_RIGHT_PANEL);
|
||||
players_.back()->setName(lang::getText(54));
|
||||
players_.back()->setName(lang::getText("SCOREBOARD_53"));
|
||||
players_.back()->setController(getController(players_.back()->getId()));
|
||||
|
||||
// Activa el jugador que coincide con el "player_id"
|
||||
|
||||
@@ -30,10 +30,10 @@ namespace globalInputs
|
||||
{
|
||||
// Si la notificación de salir no está activa, muestra la notificación
|
||||
#ifdef ARCADE
|
||||
const int INDEX = code == section::Options::QUIT_WITH_CONTROLLER ? 116 : 94;
|
||||
Notifier::get()->show({lang::getText(INDEX), std::string()}, -1, CODE);
|
||||
const std::string TEXT = code == section::Options::QUIT_WITH_CONTROLLER ? lang::getText("NOTIFICATIONS_116") : lang::getText("NOTIFICATIONS_94");
|
||||
Notifier::get()->show(TEXT, std::string()}, -1, CODE);
|
||||
#else
|
||||
Notifier::get()->show({lang::getText(94), std::string()}, -1, CODE);
|
||||
Notifier::get()->show({lang::getText("NOTIFICATIONS_94"), std::string()}, -1, CODE);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
@@ -45,11 +45,11 @@ namespace globalInputs
|
||||
if (Notifier::get()->checkCode(CODE))
|
||||
{
|
||||
section::name = section::Name::INIT;
|
||||
Notifier::get()->show({lang::getText(111)});
|
||||
Notifier::get()->show({lang::getText("HELP_111")});
|
||||
}
|
||||
else
|
||||
{
|
||||
Notifier::get()->show({lang::getText(125), std::string()}, -1, CODE);
|
||||
Notifier::get()->show({lang::getText("NOTIFICATIONS_125"), std::string()}, -1, CODE);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -65,21 +65,21 @@ namespace globalInputs
|
||||
void toggleIntegerScale()
|
||||
{
|
||||
Screen::get()->toggleIntegerScale();
|
||||
Notifier::get()->show({lang::getText(134) + " " + boolToOnOff(options.video.integer_scale)});
|
||||
Notifier::get()->show({lang::getText("MISC_134") + " " + boolToOnOff(options.video.integer_scale)});
|
||||
}
|
||||
|
||||
// Activa / desactiva el vsync
|
||||
void toggleVSync()
|
||||
{
|
||||
Screen::get()->toggleVSync();
|
||||
Notifier::get()->show({lang::getText(136) + " " + boolToOnOff(options.video.v_sync)});
|
||||
Notifier::get()->show({lang::getText("MISC_136") + " " + boolToOnOff(options.video.v_sync)});
|
||||
}
|
||||
|
||||
// Activa o desactiva los shaders
|
||||
void toggleShaders()
|
||||
{
|
||||
Screen::get()->toggleShaders();
|
||||
Notifier::get()->show({lang::getText(135) + " " + boolToOnOff(options.video.shaders)});
|
||||
Notifier::get()->show({lang::getText("MISC_135") + " " + boolToOnOff(options.video.shaders)});
|
||||
}
|
||||
|
||||
// Obtiene una fichero a partir de un lang::Code
|
||||
@@ -87,14 +87,14 @@ namespace globalInputs
|
||||
{
|
||||
switch (code)
|
||||
{
|
||||
case lang::Code::ba_BA:
|
||||
return Asset::get()->get("ba_BA.txt");
|
||||
case lang::Code::VALENCIAN:
|
||||
return Asset::get()->get("ba_BA.json");
|
||||
break;
|
||||
case lang::Code::es_ES:
|
||||
return Asset::get()->get("es_ES.txt");
|
||||
case lang::Code::SPANISH:
|
||||
return Asset::get()->get("es_ES.json");
|
||||
break;
|
||||
default:
|
||||
return Asset::get()->get("en_UK.txt");
|
||||
return Asset::get()->get("en_UK.json");
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -104,10 +104,10 @@ namespace globalInputs
|
||||
{
|
||||
switch (code)
|
||||
{
|
||||
case lang::Code::ba_BA:
|
||||
case lang::Code::VALENCIAN:
|
||||
return " \"ba_BA\"";
|
||||
break;
|
||||
case lang::Code::es_ES:
|
||||
case lang::Code::SPANISH:
|
||||
return " \"es_ES\"";
|
||||
break;
|
||||
default:
|
||||
@@ -126,12 +126,12 @@ namespace globalInputs
|
||||
lang::loadFromFile(getLangFile(static_cast<lang::Code>(options.game.language)));
|
||||
section::name = section::Name::INIT;
|
||||
section::options = section::Options::RELOAD;
|
||||
Notifier::get()->show({lang::getText(127) + getLangName(options.game.language)});
|
||||
Notifier::get()->show({lang::getText("NOTIFICATIONS_127") + getLangName(options.game.language)});
|
||||
}
|
||||
else
|
||||
{
|
||||
const auto NEXT = lang::getNextLangCode(options.game.language);
|
||||
Notifier::get()->show({lang::getText(126) + getLangName(NEXT), std::string()}, -1, CODE);
|
||||
Notifier::get()->show({lang::getText("NOTIFICATIONS_126") + getLangName(NEXT), std::string()}, -1, CODE);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -139,7 +139,7 @@ namespace globalInputs
|
||||
void toggleFireMode()
|
||||
{
|
||||
options.game.autofire = !options.game.autofire;
|
||||
Notifier::get()->show({lang::getText(130) + " " + boolToOnOff(options.game.autofire)});
|
||||
Notifier::get()->show({lang::getText("MISC_130") + " " + boolToOnOff(options.game.autofire)});
|
||||
}
|
||||
|
||||
// Salta una sección del juego
|
||||
@@ -271,7 +271,7 @@ namespace globalInputs
|
||||
if (Input::get()->checkInput(InputAction::WINDOW_FULLSCREEN, INPUT_DO_NOT_ALLOW_REPEAT, InputDeviceToUse::KEYBOARD))
|
||||
{
|
||||
Screen::get()->toggleFullscreen();
|
||||
const std::string MODE = options.video.fullscreen ? lang::getText(133) : lang::getText(132);
|
||||
const std::string MODE = options.video.fullscreen ? lang::getText("MISC_133") : lang::getText("MISC_132");
|
||||
Notifier::get()->show({MODE});
|
||||
return;
|
||||
}
|
||||
@@ -281,7 +281,7 @@ namespace globalInputs
|
||||
{
|
||||
if (Screen::get()->decWindowZoom())
|
||||
{
|
||||
Notifier::get()->show({lang::getText(131) + " x" + std::to_string(options.window.size)});
|
||||
Notifier::get()->show({lang::getText("MISC_131") + " x" + std::to_string(options.window.size)});
|
||||
}
|
||||
return;
|
||||
}
|
||||
@@ -291,7 +291,7 @@ namespace globalInputs
|
||||
{
|
||||
if (Screen::get()->incWindowZoom())
|
||||
{
|
||||
Notifier::get()->show({lang::getText(131) + " x" + std::to_string(options.window.size)});
|
||||
Notifier::get()->show({lang::getText("MISC_131") + " x" + std::to_string(options.window.size)});
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -221,7 +221,7 @@ void HiScoreTable::createSprites()
|
||||
const int first_line = (param.game.height - size) / 2;
|
||||
|
||||
// Crea el sprite para el texto de cabecera
|
||||
header_ = std::make_unique<Sprite>(header_text->writeDXToTexture(TEXT_COLOR, lang::getText(42), -2, background_fade_color_.getInverse().lighten(25)));
|
||||
header_ = std::make_unique<Sprite>(header_text->writeDXToTexture(TEXT_COLOR, lang::getText("HIGHSCORE_TABLE_42"), -2, background_fade_color_.getInverse().lighten(25)));
|
||||
header_->setPosition(param.game.game_area.center_x - (header_->getWidth() / 2), first_line);
|
||||
|
||||
// Crea los sprites para las entradas en la tabla de puntuaciones
|
||||
|
||||
@@ -139,38 +139,45 @@ void Instructions::fillTexture()
|
||||
|
||||
// Calcula cual es el texto más largo de las descripciones de los items
|
||||
int lenght = 0;
|
||||
for (int i = 17; i <= 21; ++i)
|
||||
const std::array<std::string, 5> ITEM_DESCRIPTIONS = {
|
||||
lang::getText("INSTRUCTIONS_17"),
|
||||
lang::getText("INSTRUCTIONS_18"),
|
||||
lang::getText("INSTRUCTIONS_19"),
|
||||
lang::getText("INSTRUCTIONS_20"),
|
||||
lang::getText("INSTRUCTIONS_21")
|
||||
};
|
||||
for (const auto& desc : ITEM_DESCRIPTIONS)
|
||||
{
|
||||
const int l = text_->lenght(lang::getText(i));
|
||||
const int l = text_->lenght(desc);
|
||||
lenght = l > lenght ? l : lenght;
|
||||
}
|
||||
const int anchor_item = (param.game.width - (lenght + desp_x)) / 2;
|
||||
const int ANCHOR_ITEM = (param.game.width - (lenght + desp_x)) / 2;
|
||||
|
||||
// Escribe el texto de las instrucciones
|
||||
text_->writeDX(TEXT_CENTER | TEXT_COLOR | TEXT_SHADOW, param.game.game_area.center_x, first_line, lang::getText(11), 1, ORANGE_COLOR, 1, SHADOW_TEXT_COLOR);
|
||||
text_->writeDX(TEXT_CENTER | TEXT_COLOR | TEXT_SHADOW, param.game.game_area.center_x, first_line, lang::getText("INSTRUCTIONS_11"), 1, ORANGE_COLOR, 1, SHADOW_TEXT_COLOR);
|
||||
|
||||
const int anchor1 = first_line + space_post_header;
|
||||
text_->writeDX(TEXT_CENTER | TEXT_COLOR | TEXT_SHADOW, param.game.game_area.center_x, anchor1 + space_between_lines * 0, lang::getText(12), 1, NO_COLOR, 1, SHADOW_TEXT_COLOR);
|
||||
text_->writeDX(TEXT_CENTER | TEXT_COLOR | TEXT_SHADOW, param.game.game_area.center_x, anchor1 + space_between_lines * 1, lang::getText(13), 1, NO_COLOR, 1, SHADOW_TEXT_COLOR);
|
||||
text_->writeDX(TEXT_CENTER | TEXT_COLOR | TEXT_SHADOW, param.game.game_area.center_x, anchor1 + space_new_paragraph + space_between_lines * 2, lang::getText(14), 1, NO_COLOR, 1, SHADOW_TEXT_COLOR);
|
||||
text_->writeDX(TEXT_CENTER | TEXT_COLOR | TEXT_SHADOW, param.game.game_area.center_x, anchor1 + space_new_paragraph + space_between_lines * 3, lang::getText(15), 1, NO_COLOR, 1, SHADOW_TEXT_COLOR);
|
||||
text_->writeDX(TEXT_CENTER | TEXT_COLOR | TEXT_SHADOW, param.game.game_area.center_x, anchor1 + space_between_lines * 0, lang::getText("INSTRUCTIONS_12"), 1, NO_COLOR, 1, SHADOW_TEXT_COLOR);
|
||||
text_->writeDX(TEXT_CENTER | TEXT_COLOR | TEXT_SHADOW, param.game.game_area.center_x, anchor1 + space_between_lines * 1, lang::getText("INSTRUCTIONS_13"), 1, NO_COLOR, 1, SHADOW_TEXT_COLOR);
|
||||
text_->writeDX(TEXT_CENTER | TEXT_COLOR | TEXT_SHADOW, param.game.game_area.center_x, anchor1 + space_new_paragraph + space_between_lines * 2, lang::getText("INSTRUCTIONS_14"), 1, NO_COLOR, 1, SHADOW_TEXT_COLOR);
|
||||
text_->writeDX(TEXT_CENTER | TEXT_COLOR | TEXT_SHADOW, param.game.game_area.center_x, anchor1 + space_new_paragraph + space_between_lines * 3, lang::getText("INSTRUCTIONS_15"), 1, NO_COLOR, 1, SHADOW_TEXT_COLOR);
|
||||
|
||||
// Escribe el texto de los objetos y sus puntos
|
||||
const int anchor2 = anchor1 + space_pre_header + space_new_paragraph + space_between_lines * 3;
|
||||
text_->writeDX(TEXT_CENTER | TEXT_COLOR | TEXT_SHADOW, param.game.game_area.center_x, anchor2, lang::getText(16), 1, ORANGE_COLOR, 1, SHADOW_TEXT_COLOR);
|
||||
text_->writeDX(TEXT_CENTER | TEXT_COLOR | TEXT_SHADOW, param.game.game_area.center_x, anchor2, lang::getText("INSTRUCTIONS_16"), 1, ORANGE_COLOR, 1, SHADOW_TEXT_COLOR);
|
||||
|
||||
const int anchor3 = anchor2 + space_post_header;
|
||||
text_->writeShadowed(anchor_item + desp_x, anchor3 + space_between_item_lines * 0, lang::getText(17), SHADOW_TEXT_COLOR);
|
||||
text_->writeShadowed(anchor_item + desp_x, anchor3 + space_between_item_lines * 1, lang::getText(18), SHADOW_TEXT_COLOR);
|
||||
text_->writeShadowed(anchor_item + desp_x, anchor3 + space_between_item_lines * 2, lang::getText(19), SHADOW_TEXT_COLOR);
|
||||
text_->writeShadowed(anchor_item + desp_x, anchor3 + space_between_item_lines * 3, lang::getText(20), SHADOW_TEXT_COLOR);
|
||||
text_->writeShadowed(anchor_item + desp_x, anchor3 + space_between_item_lines * 4, lang::getText(21), SHADOW_TEXT_COLOR);
|
||||
text_->writeShadowed(ANCHOR_ITEM + desp_x, anchor3 + space_between_item_lines * 0, lang::getText("INSTRUCTIONS_17"), SHADOW_TEXT_COLOR);
|
||||
text_->writeShadowed(ANCHOR_ITEM + desp_x, anchor3 + space_between_item_lines * 1, lang::getText("INSTRUCTIONS_18"), SHADOW_TEXT_COLOR);
|
||||
text_->writeShadowed(ANCHOR_ITEM + desp_x, anchor3 + space_between_item_lines * 2, lang::getText("INSTRUCTIONS_19"), SHADOW_TEXT_COLOR);
|
||||
text_->writeShadowed(ANCHOR_ITEM + desp_x, anchor3 + space_between_item_lines * 3, lang::getText("INSTRUCTIONS_20"), SHADOW_TEXT_COLOR);
|
||||
text_->writeShadowed(ANCHOR_ITEM + desp_x, anchor3 + space_between_item_lines * 4, lang::getText("INSTRUCTIONS_21"), SHADOW_TEXT_COLOR);
|
||||
|
||||
// Deja el renderizador como estaba
|
||||
SDL_SetRenderTarget(renderer_, temp);
|
||||
|
||||
// Da valor a la variable
|
||||
sprite_pos_.x = anchor_item;
|
||||
sprite_pos_.x = ANCHOR_ITEM;
|
||||
sprite_pos_.y = anchor3 - ((param.game.item_size - text_->getCharacterSize()) / 2);
|
||||
}
|
||||
|
||||
|
||||
@@ -396,39 +396,39 @@ void Intro::initTexts()
|
||||
}
|
||||
|
||||
// Un dia qualsevol de l'any 2000
|
||||
texts_.at(0)->setCaption(lang::getText(27));
|
||||
texts_.at(0)->setCaption(lang::getText("INTRO_27"));
|
||||
texts_.at(0)->setSpeed(8);
|
||||
|
||||
// Tot esta tranquil a la UPV
|
||||
texts_.at(1)->setCaption(lang::getText(28));
|
||||
texts_.at(1)->setCaption(lang::getText("INTRO_28"));
|
||||
texts_.at(1)->setSpeed(8);
|
||||
|
||||
// Fins que un desaprensiu...
|
||||
texts_.at(2)->setCaption(lang::getText(29));
|
||||
texts_.at(2)->setCaption(lang::getText("INTRO_29"));
|
||||
texts_.at(2)->setSpeed(12);
|
||||
|
||||
// HEY! ME ANE A FERME UN CORTAET...
|
||||
texts_.at(3)->setCaption(lang::getText(30));
|
||||
texts_.at(3)->setCaption(lang::getText("INTRO_30"));
|
||||
texts_.at(3)->setSpeed(8);
|
||||
|
||||
// UAAAAAAAAAAAAA!!!
|
||||
texts_.at(4)->setCaption(lang::getText(31));
|
||||
texts_.at(4)->setCaption(lang::getText("INTRO_31"));
|
||||
texts_.at(4)->setSpeed(1);
|
||||
|
||||
// Espera un moment...
|
||||
texts_.at(5)->setCaption(lang::getText(32));
|
||||
texts_.at(5)->setCaption(lang::getText("INTRO_32"));
|
||||
texts_.at(5)->setSpeed(16);
|
||||
|
||||
// Si resulta que no tinc solt!
|
||||
texts_.at(6)->setCaption(lang::getText(33));
|
||||
texts_.at(6)->setCaption(lang::getText("INTRO_33"));
|
||||
texts_.at(6)->setSpeed(2);
|
||||
|
||||
// MERDA DE MAQUINA!
|
||||
texts_.at(7)->setCaption(lang::getText(34));
|
||||
texts_.at(7)->setCaption(lang::getText("INTRO_34"));
|
||||
texts_.at(7)->setSpeed(3);
|
||||
|
||||
// Blop... blop... blop...
|
||||
texts_.at(8)->setCaption(lang::getText(35));
|
||||
texts_.at(8)->setCaption(lang::getText("INTRO_35"));
|
||||
texts_.at(8)->setSpeed(20);
|
||||
|
||||
for (auto &text : texts_)
|
||||
|
||||
25526
source/json.hpp
Normal file
25526
source/json.hpp
Normal file
File diff suppressed because it is too large
Load Diff
@@ -1,51 +1,57 @@
|
||||
#include "lang.h"
|
||||
#include <fstream> // Para basic_ifstream, basic_istream, ifstream
|
||||
#include <vector> // Para vector
|
||||
#include <fstream>
|
||||
#include <unordered_map>
|
||||
#include "json.hpp"
|
||||
|
||||
using json = nlohmann::json;
|
||||
|
||||
namespace lang
|
||||
{
|
||||
std::vector<std::string> texts; // Vector con los textos
|
||||
std::unordered_map<std::string, std::string> texts;
|
||||
|
||||
// Inicializa los textos del juego en el idioma seleccionado
|
||||
bool loadFromFile(const std::string &file_path)
|
||||
{
|
||||
texts.clear();
|
||||
|
||||
bool success = false;
|
||||
|
||||
std::ifstream rfile(file_path);
|
||||
if (rfile.is_open() && rfile.good())
|
||||
{
|
||||
success = true;
|
||||
std::string line;
|
||||
if (!rfile.is_open())
|
||||
return false;
|
||||
|
||||
// Lee el resto de datos del fichero
|
||||
while (std::getline(rfile, line))
|
||||
try
|
||||
{
|
||||
json j;
|
||||
rfile >> j;
|
||||
|
||||
for (auto &el : j.items())
|
||||
{
|
||||
// Almacena solo las lineas que no empiezan por # o no esten vacias
|
||||
const bool TEST1 = line.substr(0, 1) != "#";
|
||||
const bool TEST2 = !line.empty();
|
||||
if (TEST1 && TEST2)
|
||||
{
|
||||
texts.push_back(line);
|
||||
}
|
||||
};
|
||||
texts[el.key()] = el.value();
|
||||
}
|
||||
}
|
||||
catch (const std::exception &e)
|
||||
{
|
||||
// Puedes loguear el error si quieres
|
||||
return false;
|
||||
}
|
||||
|
||||
return success;
|
||||
return true;
|
||||
}
|
||||
|
||||
// Obtiene la cadena de texto del indice
|
||||
std::string getText(int index)
|
||||
// Obtiene el texto por clave
|
||||
std::string getText(const std::string &key)
|
||||
{
|
||||
return texts.at(index);
|
||||
auto it = texts.find(key);
|
||||
if (it != texts.end())
|
||||
return it->second;
|
||||
else
|
||||
return "[missing text: " + key + "]";
|
||||
}
|
||||
|
||||
// Obtiene el codigo del idioma del siguiente idioma
|
||||
// Obtiene el código del siguiente idioma disponible
|
||||
Code getNextLangCode(Code lang)
|
||||
{
|
||||
auto index = static_cast<int>(lang);
|
||||
index = (index + 1) % 3;
|
||||
return static_cast<Code>(index);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,23 +1,23 @@
|
||||
#pragma once
|
||||
|
||||
#include <string> // Para std::string
|
||||
#include <string>
|
||||
|
||||
namespace lang
|
||||
{
|
||||
// --- Códigos de idioma soportados ---
|
||||
enum class Code : int
|
||||
{
|
||||
es_ES = 0, // Español
|
||||
ba_BA = 1, // Bable/Asturiano
|
||||
en_UK = 2, // Inglés (Reino Unido)
|
||||
SPANISH = 0,
|
||||
VALENCIAN = 1,
|
||||
ENGLISH = 2
|
||||
};
|
||||
|
||||
// Inicializa los textos del juego en el idioma seleccionado
|
||||
// Carga los textos desde el fichero JSON especificado
|
||||
bool loadFromFile(const std::string &file_path);
|
||||
|
||||
// Obtiene la cadena de texto correspondiente al índice
|
||||
std::string getText(int index);
|
||||
// Obtiene un texto a partir de una clave
|
||||
std::string getText(const std::string &key);
|
||||
|
||||
// Obtiene el código del siguiente idioma disponible
|
||||
// Obtiene el código del siguiente idioma (circular)
|
||||
Code getNextLangCode(Code lang);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -37,7 +37,7 @@ void initOptions()
|
||||
|
||||
// Opciones de juego
|
||||
options.game.difficulty = GameDifficulty::NORMAL;
|
||||
options.game.language = lang::Code::ba_BA;
|
||||
options.game.language = lang::Code::VALENCIAN;
|
||||
options.game.autofire = true;
|
||||
options.game.clear_last_hi_score_entries();
|
||||
|
||||
@@ -92,11 +92,11 @@ bool loadOptionsFile(std::string file_path)
|
||||
}
|
||||
|
||||
// Normaliza los valores
|
||||
if (options.game.language != lang::Code::en_UK &&
|
||||
options.game.language != lang::Code::ba_BA &&
|
||||
options.game.language != lang::Code::es_ES)
|
||||
if (options.game.language != lang::Code::ENGLISH &&
|
||||
options.game.language != lang::Code::VALENCIAN &&
|
||||
options.game.language != lang::Code::SPANISH)
|
||||
{
|
||||
options.game.language = lang::Code::en_UK;
|
||||
options.game.language = lang::Code::ENGLISH;
|
||||
}
|
||||
|
||||
return success;
|
||||
|
||||
@@ -282,10 +282,10 @@ void Resource::createTextures()
|
||||
{"game_text_1000_points", "1.000"},
|
||||
{"game_text_2500_points", "2.500"},
|
||||
{"game_text_5000_points", "5.000"},
|
||||
{"game_text_powerup", lang::getText(117)},
|
||||
{"game_text_one_hit", lang::getText(118)},
|
||||
{"game_text_stop", lang::getText(119)},
|
||||
{"game_text_1000000_points", lang::getText(76)}};
|
||||
{"game_text_powerup", lang::getText("GAME_TEXT_117")},
|
||||
{"game_text_one_hit", lang::getText("GAME_TEXT_118")},
|
||||
{"game_text_stop", lang::getText("GAME_TEXT_119")},
|
||||
{"game_text_1000000_points", lang::getText("GAMEPLAY_76")}};
|
||||
|
||||
auto text = getText("04b_25");
|
||||
for (const auto &s : strings)
|
||||
@@ -297,9 +297,9 @@ void Resource::createTextures()
|
||||
// Tamaño doble
|
||||
std::vector<NameAndText> strings2X = {
|
||||
{"game_text_100000_points", "100.000"},
|
||||
{"game_text_get_ready", lang::getText(75)},
|
||||
{"game_text_last_stage", lang::getText(79)},
|
||||
{"game_text_congratulations", lang::getText(50)},
|
||||
{"game_text_get_ready", lang::getText("GAMEPLAY_75")},
|
||||
{"game_text_last_stage", lang::getText("GAME_TEXT_79")},
|
||||
{"game_text_congratulations", lang::getText("GAME_COMPLETION_TEXT_50")},
|
||||
{"game_text_game_over", "Game Over"}};
|
||||
|
||||
auto text2 = getText("04b_25_2x");
|
||||
|
||||
@@ -177,7 +177,7 @@ void Scoreboard::fillPanelTextures()
|
||||
text_scoreboard_->writeCentered(slot4_2_.x, slot4_2_.y, updateScoreText(score_[i]));
|
||||
|
||||
// MULT
|
||||
text_scoreboard_->writeCentered(slot4_3_.x, slot4_3_.y, lang::getText(55));
|
||||
text_scoreboard_->writeCentered(slot4_3_.x, slot4_3_.y, lang::getText("SCOREBOARD_55"));
|
||||
text_scoreboard_->writeCentered(slot4_4_.x, slot4_4_.y, "x" + std::to_string(mult_[i]).substr(0, 3));
|
||||
break;
|
||||
}
|
||||
@@ -185,13 +185,13 @@ void Scoreboard::fillPanelTextures()
|
||||
case ScoreboardMode::DEMO:
|
||||
{
|
||||
// DEMO MODE
|
||||
text_scoreboard_->writeCentered(slot4_1_.x, slot4_1_.y + 4, lang::getText(101));
|
||||
text_scoreboard_->writeCentered(slot4_1_.x, slot4_1_.y + 4, lang::getText("SCOREBOARD_101"));
|
||||
|
||||
// PRESS START TO PLAY
|
||||
if (time_counter_ % 10 < 8)
|
||||
{
|
||||
text_scoreboard_->writeCentered(slot4_3_.x, slot4_3_.y - 2, lang::getText(103));
|
||||
text_scoreboard_->writeCentered(slot4_4_.x, slot4_4_.y - 2, lang::getText(104));
|
||||
text_scoreboard_->writeCentered(slot4_3_.x, slot4_3_.y - 2, lang::getText("SCOREBOARD_103"));
|
||||
text_scoreboard_->writeCentered(slot4_4_.x, slot4_4_.y - 2, lang::getText("SCOREBOARD_104"));
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -199,13 +199,13 @@ void Scoreboard::fillPanelTextures()
|
||||
case ScoreboardMode::WAITING:
|
||||
{
|
||||
// GAME OVER
|
||||
text_scoreboard_->writeCentered(slot4_1_.x, slot4_1_.y + 4, lang::getText(102));
|
||||
text_scoreboard_->writeCentered(slot4_1_.x, slot4_1_.y + 4, lang::getText("SCOREBOARD_102"));
|
||||
|
||||
// PRESS START TO PLAY
|
||||
if (time_counter_ % 10 < 8)
|
||||
{
|
||||
text_scoreboard_->writeCentered(slot4_3_.x, slot4_3_.y - 2, lang::getText(103));
|
||||
text_scoreboard_->writeCentered(slot4_4_.x, slot4_4_.y - 2, lang::getText(104));
|
||||
text_scoreboard_->writeCentered(slot4_3_.x, slot4_3_.y - 2, lang::getText("SCOREBOARD_103"));
|
||||
text_scoreboard_->writeCentered(slot4_4_.x, slot4_4_.y - 2, lang::getText("SCOREBOARD_104"));
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -213,13 +213,13 @@ void Scoreboard::fillPanelTextures()
|
||||
case ScoreboardMode::GAME_OVER:
|
||||
{
|
||||
// GAME OVER
|
||||
text_scoreboard_->writeCentered(slot4_1_.x, slot4_1_.y + 4, lang::getText(102));
|
||||
text_scoreboard_->writeCentered(slot4_1_.x, slot4_1_.y + 4, lang::getText("SCOREBOARD_102"));
|
||||
|
||||
// PLEASE WAIT
|
||||
if (time_counter_ % 10 < 8)
|
||||
{
|
||||
text_scoreboard_->writeCentered(slot4_3_.x, slot4_3_.y - 2, lang::getText(114));
|
||||
text_scoreboard_->writeCentered(slot4_4_.x, slot4_4_.y - 2, lang::getText(115));
|
||||
text_scoreboard_->writeCentered(slot4_3_.x, slot4_3_.y - 2, lang::getText("SCOREBOARD_114"));
|
||||
text_scoreboard_->writeCentered(slot4_4_.x, slot4_4_.y - 2, lang::getText("SCOREBOARD_115"));
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -227,7 +227,7 @@ void Scoreboard::fillPanelTextures()
|
||||
case ScoreboardMode::STAGE_INFO:
|
||||
{
|
||||
// STAGE
|
||||
text_scoreboard_->writeCentered(slot4_1_.x, slot4_1_.y, lang::getText(57) + std::to_string(stage_));
|
||||
text_scoreboard_->writeCentered(slot4_1_.x, slot4_1_.y, lang::getText("SCOREBOARD_57") + std::to_string(stage_));
|
||||
|
||||
// POWERMETER
|
||||
power_meter_sprite_->setSpriteClip(0, 0, 40, 7);
|
||||
@@ -236,7 +236,7 @@ void Scoreboard::fillPanelTextures()
|
||||
power_meter_sprite_->render();
|
||||
|
||||
// HI-SCORE
|
||||
text_scoreboard_->writeCentered(slot4_3_.x, slot4_3_.y, lang::getText(56));
|
||||
text_scoreboard_->writeCentered(slot4_3_.x, slot4_3_.y, lang::getText("SCOREBOARD_56"));
|
||||
const std::string name = hi_score_name_ == "" ? "" : hi_score_name_ + " - ";
|
||||
text_scoreboard_->writeCentered(slot4_4_.x, slot4_4_.y, name + updateScoreText(hi_score_));
|
||||
break;
|
||||
@@ -249,7 +249,7 @@ void Scoreboard::fillPanelTextures()
|
||||
text_scoreboard_->writeCentered(slot4_2_.x, slot4_2_.y, updateScoreText(score_[i]));
|
||||
|
||||
// CONTINUE
|
||||
text_scoreboard_->writeCentered(slot4_3_.x, slot4_3_.y, lang::getText(105));
|
||||
text_scoreboard_->writeCentered(slot4_3_.x, slot4_3_.y, lang::getText("SCOREBOARD_105"));
|
||||
text_scoreboard_->writeCentered(slot4_4_.x, slot4_4_.y, std::to_string(continue_counter_[i]));
|
||||
break;
|
||||
}
|
||||
@@ -262,7 +262,7 @@ void Scoreboard::fillPanelTextures()
|
||||
|
||||
// ENTER NAME
|
||||
{
|
||||
text_scoreboard_->writeCentered(slot4_3_.x, slot4_3_.y, lang::getText(106));
|
||||
text_scoreboard_->writeCentered(slot4_3_.x, slot4_3_.y, lang::getText("SCOREBOARD_106"));
|
||||
SDL_FRect rect = {enter_name_pos_.x, enter_name_pos_.y, 5.0f, 7.0f};
|
||||
|
||||
// Recorre todos los slots de letras del nombre
|
||||
@@ -298,7 +298,7 @@ void Scoreboard::fillPanelTextures()
|
||||
text_scoreboard_->writeCentered(slot4_2_.x, slot4_2_.y, updateScoreText(score_[i]));
|
||||
|
||||
// NAME
|
||||
text_scoreboard_->writeCentered(slot4_3_.x, slot4_3_.y, lang::getText(106));
|
||||
text_scoreboard_->writeCentered(slot4_3_.x, slot4_3_.y, lang::getText("SCOREBOARD_106"));
|
||||
/* TEXTO CENTRADO */
|
||||
// text_scoreboard_->writeDX(TEXT_CENTER | TEXT_COLOR, slot4_4_.x, slot4_4_.y, record_name_[i], 1, getColorLikeKnightRider(name_colors_, loop_counter_ / 5));
|
||||
|
||||
@@ -309,12 +309,12 @@ void Scoreboard::fillPanelTextures()
|
||||
case ScoreboardMode::GAME_COMPLETED:
|
||||
{
|
||||
// GAME OVER
|
||||
text_scoreboard_->writeCentered(slot4_1_.x, slot4_1_.y + 4, lang::getText(102));
|
||||
text_scoreboard_->writeCentered(slot4_1_.x, slot4_1_.y + 4, lang::getText("SCOREBOARD_102"));
|
||||
|
||||
// SCORE
|
||||
if (time_counter_ % 10 < 8)
|
||||
{
|
||||
text_scoreboard_->writeCentered(slot4_3_.x, slot4_3_.y - 2, lang::getText(120));
|
||||
text_scoreboard_->writeCentered(slot4_3_.x, slot4_3_.y - 2, lang::getText("SCOREBOARD_120"));
|
||||
text_scoreboard_->writeCentered(slot4_4_.x, slot4_4_.y - 2, updateScoreText(score_[i]));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
#include "options.h"
|
||||
#include "section.h" // Para Name, name, Options, options, AttractMode
|
||||
#include "audio.h"
|
||||
#include <unordered_map>
|
||||
|
||||
// Singleton
|
||||
ServiceMenu *ServiceMenu::instance_ = nullptr;
|
||||
@@ -15,13 +16,13 @@ ServiceMenu *ServiceMenu::instance_ = nullptr;
|
||||
// Inicializa la instancia única del singleton
|
||||
void ServiceMenu::init() { ServiceMenu::instance_ = new ServiceMenu(); }
|
||||
|
||||
// Libera la instancia
|
||||
// Libera la instancia única del singleton
|
||||
void ServiceMenu::destroy() { delete ServiceMenu::instance_; }
|
||||
|
||||
// Obtiene la instancia
|
||||
// Devuelve la instancia única del singleton
|
||||
ServiceMenu *ServiceMenu::get() { return ServiceMenu::instance_; }
|
||||
|
||||
// Constructor
|
||||
// Constructor de ServiceMenu
|
||||
ServiceMenu::ServiceMenu()
|
||||
: element_text_(Resource::get()->getText("04b_25_flat")),
|
||||
title_text_(Resource::get()->getText("04b_25_flat_2x")),
|
||||
@@ -33,12 +34,14 @@ ServiceMenu::ServiceMenu()
|
||||
updateMenu(current_settings_group_);
|
||||
}
|
||||
|
||||
// Alterna la visibilidad del menú de servicio
|
||||
void ServiceMenu::toggle()
|
||||
{
|
||||
enabled_ = !enabled_;
|
||||
reset();
|
||||
}
|
||||
|
||||
// Dibuja el menú de servicio en pantalla
|
||||
void ServiceMenu::render()
|
||||
{
|
||||
if (enabled_)
|
||||
@@ -62,7 +65,7 @@ void ServiceMenu::render()
|
||||
SDL_SetRenderDrawColor(Screen::get()->getRenderer(), title_color_.r, title_color_.g, title_color_.b, 255);
|
||||
SDL_RenderRect(Screen::get()->getRenderer(), &rect_);
|
||||
|
||||
// SERVICE MENU
|
||||
// TITULO
|
||||
y += line_height_;
|
||||
title_text_->writeDX(TEXT_COLOR | TEXT_CENTER, param.game.game_area.center_x, y, "SERVICE MENU", -4, title_color_);
|
||||
|
||||
@@ -71,7 +74,7 @@ void ServiceMenu::render()
|
||||
SDL_SetRenderDrawColor(Screen::get()->getRenderer(), title_color_.r, title_color_.g, title_color_.b, 255);
|
||||
SDL_RenderLine(Screen::get()->getRenderer(), rect_.x + OPTIONS_HORIZONTAL_PADDING_, y, rect_.x + rect_.w - OPTIONS_HORIZONTAL_PADDING_, y);
|
||||
|
||||
// LIST
|
||||
// OPCIONES
|
||||
for (size_t i = 0; i < option_pairs_.size(); ++i)
|
||||
{
|
||||
y += line_height_;
|
||||
@@ -99,6 +102,7 @@ void ServiceMenu::render()
|
||||
}
|
||||
}
|
||||
|
||||
// Actualiza el estado del menú de servicio (colores, animaciones, etc.)
|
||||
void ServiceMenu::update()
|
||||
{
|
||||
if (enabled_)
|
||||
@@ -108,6 +112,7 @@ void ServiceMenu::update()
|
||||
}
|
||||
}
|
||||
|
||||
// Calcula y establece los anclajes y dimensiones del menú
|
||||
void ServiceMenu::setAnchors()
|
||||
{
|
||||
line_height_ = element_text_->getCharacterSize() + 5;
|
||||
@@ -120,6 +125,7 @@ void ServiceMenu::setAnchors()
|
||||
static_cast<float>(height_)};
|
||||
}
|
||||
|
||||
// Actualiza el contador interno para animaciones o efectos visuales
|
||||
void ServiceMenu::updateCounter()
|
||||
{
|
||||
static Uint64 lastUpdate = SDL_GetTicks();
|
||||
@@ -131,7 +137,8 @@ void ServiceMenu::updateCounter()
|
||||
}
|
||||
}
|
||||
|
||||
Color ServiceMenu::getSelectedColor()
|
||||
// Devuelve el color actual del elemento seleccionado (animado)
|
||||
Color ServiceMenu::getSelectedColor() const
|
||||
{
|
||||
static std::array<Color, 12> colors = {
|
||||
Color(0xFF, 0xFB, 0x8A), // Amarillo suave
|
||||
@@ -153,31 +160,51 @@ Color ServiceMenu::getSelectedColor()
|
||||
return colors.at(index);
|
||||
}
|
||||
|
||||
// Método privado para reproducir el sonido del menú
|
||||
void ServiceMenu::playMenuSound()
|
||||
{
|
||||
Audio::get()->playSound(MENU_SOUND_);
|
||||
}
|
||||
|
||||
// Mueve el selector hacia arriba en la lista de opciones
|
||||
void ServiceMenu::setSelectorUp()
|
||||
{
|
||||
if (display_options_.empty())
|
||||
return;
|
||||
selected_ = (selected_ > 0) ? --selected_ : display_options_.size() - 1;
|
||||
Audio::get()->playSound(MENU_SOUND_);
|
||||
playMenuSound();
|
||||
}
|
||||
|
||||
// Mueve el selector hacia abajo en la lista de opciones
|
||||
void ServiceMenu::setSelectorDown()
|
||||
{
|
||||
if (display_options_.empty())
|
||||
return;
|
||||
selected_ = (selected_ + 1) % display_options_.size();
|
||||
Audio::get()->playSound(MENU_SOUND_);
|
||||
playMenuSound();
|
||||
}
|
||||
|
||||
// Ajusta el valor de la opción seleccionada (si es ajustable)
|
||||
void ServiceMenu::adjustOption(bool adjust_up)
|
||||
{
|
||||
if (display_options_.empty() || selected_ >= display_options_.size())
|
||||
return;
|
||||
|
||||
if (display_options_.at(selected_).behavior == OptionBehavior::ADJUST)
|
||||
{
|
||||
display_options_.at(selected_).adjustValue(adjust_up);
|
||||
option_pairs_ = getOptionPairs(current_settings_group_);
|
||||
applySettings(current_settings_group_);
|
||||
Audio::get()->playSound(MENU_SOUND_);
|
||||
playMenuSound();
|
||||
}
|
||||
}
|
||||
|
||||
// Ejecuta la acción de la opción seleccionada o navega a un submenú
|
||||
void ServiceMenu::selectOption()
|
||||
{
|
||||
if (display_options_.empty() || selected_ >= display_options_.size())
|
||||
return;
|
||||
|
||||
// Carpeta
|
||||
if (display_options_.at(selected_).type == ValueType::FOLDER)
|
||||
{
|
||||
@@ -185,7 +212,7 @@ void ServiceMenu::selectOption()
|
||||
current_settings_group_ = display_options_.at(selected_).target_group;
|
||||
updateMenu(current_settings_group_);
|
||||
selected_ = 0;
|
||||
Audio::get()->playSound(MENU_SOUND_);
|
||||
playMenuSound();
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -214,6 +241,7 @@ void ServiceMenu::selectOption()
|
||||
}
|
||||
}
|
||||
|
||||
// Vuelve al grupo de opciones anterior o cierra el menú si está en el principal
|
||||
void ServiceMenu::moveBack()
|
||||
{
|
||||
if (current_settings_group_ == SettingsGroup::MAIN)
|
||||
@@ -226,10 +254,11 @@ void ServiceMenu::moveBack()
|
||||
selected_ = 0;
|
||||
current_settings_group_ = previous_settings_group_;
|
||||
updateMenu(current_settings_group_);
|
||||
Audio::get()->playSound(MENU_SOUND_);
|
||||
playMenuSound();
|
||||
}
|
||||
}
|
||||
|
||||
// Inicializa todas las opciones del menú de servicio
|
||||
void ServiceMenu::initializeOptions()
|
||||
{
|
||||
// Video
|
||||
@@ -261,6 +290,7 @@ void ServiceMenu::initializeOptions()
|
||||
options_.emplace_back("SYSTEM", SettingsGroup::MAIN, OptionBehavior::SELECT, SettingsGroup::SYSTEM);
|
||||
}
|
||||
|
||||
// Devuelve las opciones del grupo como pares (nombre, valor)
|
||||
ServiceMenu::OptionPairs ServiceMenu::getOptionPairs(ServiceMenu::SettingsGroup group) const
|
||||
{
|
||||
OptionPairs optionPairs;
|
||||
@@ -276,6 +306,7 @@ ServiceMenu::OptionPairs ServiceMenu::getOptionPairs(ServiceMenu::SettingsGroup
|
||||
return optionPairs;
|
||||
}
|
||||
|
||||
// Devuelve las opciones del grupo como un vector de OptionEntry
|
||||
std::vector<ServiceMenu::OptionEntry> ServiceMenu::getOptionsByGroup(SettingsGroup group) const
|
||||
{
|
||||
std::vector<OptionEntry> filteredOptions;
|
||||
@@ -291,6 +322,7 @@ std::vector<ServiceMenu::OptionEntry> ServiceMenu::getOptionsByGroup(SettingsGro
|
||||
return filteredOptions;
|
||||
}
|
||||
|
||||
// Aplica la configuración correspondiente al grupo seleccionado
|
||||
void ServiceMenu::applySettings(ServiceMenu::SettingsGroup group)
|
||||
{
|
||||
switch (group)
|
||||
@@ -308,12 +340,14 @@ void ServiceMenu::applySettings(ServiceMenu::SettingsGroup group)
|
||||
}
|
||||
}
|
||||
|
||||
// Actualiza las opciones mostradas según el grupo seleccionado
|
||||
void ServiceMenu::updateMenu(SettingsGroup group)
|
||||
{
|
||||
option_pairs_ = getOptionPairs(group);
|
||||
display_options_ = getOptionsByGroup(group);
|
||||
}
|
||||
|
||||
// Reinicia el menú al estado inicial (grupo principal y opción seleccionada)
|
||||
void ServiceMenu::reset()
|
||||
{
|
||||
selected_ = 0;
|
||||
@@ -321,30 +355,28 @@ void ServiceMenu::reset()
|
||||
updateMenu(current_settings_group_);
|
||||
}
|
||||
|
||||
int ServiceMenu::calculateMenuHeight()
|
||||
// Calcula la altura total del menú en píxeles
|
||||
int ServiceMenu::calculateMenuHeight() const
|
||||
{
|
||||
return ((4 + findLargestGroupSize() + 1) * line_height_) - 5;
|
||||
}
|
||||
|
||||
int ServiceMenu::findLargestGroupSize()
|
||||
// Devuelve el tamaño (número de opciones) del grupo más grande
|
||||
int ServiceMenu::findLargestGroupSize() const
|
||||
{
|
||||
std::unordered_map<SettingsGroup, int> group_counts;
|
||||
for (const auto &option : options_)
|
||||
++group_counts[option.group];
|
||||
|
||||
int max_size = 0;
|
||||
// Recorremos todos los posibles grupos
|
||||
for (int group = static_cast<int>(SettingsGroup::VIDEO); group <= static_cast<int>(SettingsGroup::MAIN); ++group)
|
||||
{
|
||||
int count = 0;
|
||||
for (const auto &option : options_)
|
||||
{
|
||||
if (static_cast<int>(option.group) == group)
|
||||
++count;
|
||||
}
|
||||
if (count > max_size)
|
||||
max_size = count;
|
||||
}
|
||||
for (const auto &pair : group_counts)
|
||||
if (pair.second > max_size)
|
||||
max_size = pair.second;
|
||||
return max_size;
|
||||
}
|
||||
|
||||
ServiceMenu::GroupAlignment ServiceMenu::getGroupAlignment(SettingsGroup group)
|
||||
// Devuelve la alineación de las opciones para el grupo dado
|
||||
ServiceMenu::GroupAlignment ServiceMenu::getGroupAlignment(SettingsGroup group) const
|
||||
{
|
||||
switch (group)
|
||||
{
|
||||
|
||||
@@ -12,45 +12,48 @@ class Text;
|
||||
class ServiceMenu
|
||||
{
|
||||
public:
|
||||
// --- Métodos de singleton ---
|
||||
static void init(); // Inicializa el objeto ServiceMenu
|
||||
static void destroy(); // Libera el objeto ServiceMenu
|
||||
static ServiceMenu *get(); // Obtiene el puntero al objeto ServiceMenu
|
||||
// --- Métodos de Singleton ---
|
||||
static void init(); // Inicializa la instancia única de ServiceMenu
|
||||
static void destroy(); // Libera la instancia única de ServiceMenu
|
||||
static ServiceMenu *get(); // Devuelve el puntero a la instancia única
|
||||
|
||||
// -- Métodos ---
|
||||
void toggle();
|
||||
void render();
|
||||
void update();
|
||||
// --- Métodos principales ---
|
||||
void toggle(); // Muestra u oculta el menú de servicio
|
||||
void render(); // Dibuja el menú de servicio en pantalla
|
||||
void update(); // Actualiza el estado del menú de servicio
|
||||
|
||||
// --- Métodos de control ---
|
||||
void setSelectorUp();
|
||||
void setSelectorDown();
|
||||
void adjustOption(bool adjust_up);
|
||||
void selectOption();
|
||||
void moveBack();
|
||||
// --- Métodos de control de navegación ---
|
||||
void setSelectorUp(); // Mueve el selector hacia arriba
|
||||
void setSelectorDown(); // Mueve el selector hacia abajo
|
||||
void adjustOption(bool adjust_up); // Ajusta el valor de la opción seleccionada
|
||||
void selectOption(); // Selecciona la opción actual
|
||||
void moveBack(); // Vuelve al grupo de opciones anterior
|
||||
|
||||
// --- Getters ---
|
||||
bool isEnabled() const { return enabled_; }
|
||||
bool isEnabled() const { return enabled_; } // Indica si el menú de servicio está activo
|
||||
|
||||
private:
|
||||
// --- Tipos internos ---
|
||||
using OptionPairs = std::vector<std::pair<std::string, std::string>>;
|
||||
|
||||
static constexpr const char *MENU_SOUND_ = "clock.wav";
|
||||
static constexpr int OPTIONS_HORIZONTAL_PADDING_ = 20;
|
||||
// --- Constantes ---
|
||||
static constexpr const char *MENU_SOUND_ = "clock.wav"; // Sonido al navegar por el menú
|
||||
static constexpr int OPTIONS_HORIZONTAL_PADDING_ = 20; // Relleno horizontal de las opciones
|
||||
|
||||
// --- Enumeraciones internas ---
|
||||
enum class Aspect
|
||||
{
|
||||
ASPECT1, // Fondo opaco y proyecta sombra
|
||||
ASPECT2 // Fondo translucido
|
||||
ASPECT2 // Fondo translúcido
|
||||
};
|
||||
|
||||
enum class SettingsGroup
|
||||
{
|
||||
VIDEO, // Configuraciones relacionadas con la calidad y resolución de imagen
|
||||
AUDIO, // Opciones de sonido y volumen
|
||||
GAME, // Ajustes de jugabilidad y mecánicas
|
||||
SYSTEM, // Preferencias generales y configuraciones del sistema
|
||||
MAIN // Raíz
|
||||
VIDEO, // Configuraciones de vídeo
|
||||
AUDIO, // Opciones de audio
|
||||
GAME, // Opciones de juego
|
||||
SYSTEM, // Opciones del sistema
|
||||
MAIN // Menú principal
|
||||
};
|
||||
|
||||
enum class OptionBehavior
|
||||
@@ -61,18 +64,19 @@ private:
|
||||
|
||||
enum class ValueType
|
||||
{
|
||||
BOOL,
|
||||
INT,
|
||||
FOLDER,
|
||||
NONE
|
||||
BOOL, // Valor booleano
|
||||
INT, // Valor entero
|
||||
FOLDER, // Referencia a otro grupo
|
||||
NONE // Sin valor asociado
|
||||
};
|
||||
|
||||
enum class GroupAlignment
|
||||
{
|
||||
CENTERED,
|
||||
LEFT
|
||||
CENTERED, // Opciones centradas
|
||||
LEFT // Opciones alineadas a la izquierda
|
||||
};
|
||||
|
||||
// --- Estructura de opción del menú ---
|
||||
struct OptionEntry
|
||||
{
|
||||
std::string caption; // Texto visible en el menú
|
||||
@@ -102,7 +106,7 @@ private:
|
||||
: caption(cap), group(grp), behavior(beh), linked_variable(nullptr), type(ValueType::FOLDER),
|
||||
min_value(0), max_value(0), step_value(0), target_group(tgtGrp) {}
|
||||
|
||||
// Método para modificar el valor
|
||||
// Método para modificar el valor de la opción
|
||||
void adjustValue(bool adjust_up)
|
||||
{
|
||||
if (linked_variable)
|
||||
@@ -111,14 +115,12 @@ private:
|
||||
{
|
||||
int &value = *(static_cast<int *>(linked_variable));
|
||||
int newValue = adjust_up ? value + step_value : value - step_value;
|
||||
|
||||
// Asegurar que el nuevo valor se mantenga dentro de los límites
|
||||
value = std::clamp(newValue, min_value, max_value);
|
||||
}
|
||||
else if (type == ValueType::BOOL)
|
||||
{
|
||||
bool &value = *(static_cast<bool *>(linked_variable));
|
||||
value = !value; // Invierte el valor booleano
|
||||
value = !value;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -138,49 +140,58 @@ private:
|
||||
}
|
||||
};
|
||||
|
||||
// -- Variables internas ---
|
||||
// --- Variables internas ---
|
||||
bool enabled_ = false; // Indica si el menú de servicio está activo
|
||||
SDL_FRect rect_; // Rectangulo para definir el area del menú de servicio
|
||||
std::shared_ptr<Text> element_text_; // Objeto para escribir texto;
|
||||
std::shared_ptr<Text> title_text_; // Objeto para escribir texto;
|
||||
size_t selected_ = 0; // Elemento del menú seleccionado
|
||||
SDL_FRect rect_; // Rectángulo que define el área del menú de servicio
|
||||
std::shared_ptr<Text> element_text_; // Objeto para escribir el texto de los elementos
|
||||
std::shared_ptr<Text> title_text_; // Objeto para escribir el texto del título
|
||||
size_t selected_ = 0; // Índice del elemento del menú seleccionado
|
||||
Uint32 counter_ = 0; // Contador interno
|
||||
std::vector<OptionEntry> options_; // Listado con todas las opciones del menú de servicio
|
||||
std::vector<OptionEntry> display_options_; // Listado con todas las opciones del menú de servicio que se estan mostrando
|
||||
OptionPairs option_pairs_; // Listado con las opciones de menu actuales (filtradas por grupo)
|
||||
SettingsGroup current_settings_group_; // Grupo actual
|
||||
SettingsGroup previous_settings_group_; // Grupo anterior
|
||||
Aspect aspect_ = Aspect::ASPECT2;
|
||||
std::vector<OptionEntry> display_options_; // Opciones actualmente mostradas en pantalla
|
||||
OptionPairs option_pairs_; // Opciones actuales del menú (filtradas por grupo)
|
||||
SettingsGroup current_settings_group_; // Grupo de opciones actualmente activo
|
||||
SettingsGroup previous_settings_group_; // Grupo de opciones anterior
|
||||
Aspect aspect_ = Aspect::ASPECT2; // Estilo visual del menú
|
||||
|
||||
// -- Aspecto --
|
||||
// --- Variables de aspecto ---
|
||||
Color bg_color_ = SERV_MENU_BG_COLOR; // Color de fondo
|
||||
Color title_color_ = SERV_MENU_TITLE_COLOR; // Color del título del menu
|
||||
Color text_color_ = SERV_MENU_TEXT_COLOR; // Color para el texto de los elementos
|
||||
Color selected_color_ = SERV_MENU_SELECTED_COLOR; // Color para el elemento seleccionado
|
||||
Color title_color_ = SERV_MENU_TITLE_COLOR; // Color del título del menú
|
||||
Color text_color_ = SERV_MENU_TEXT_COLOR; // Color del texto de los elementos
|
||||
Color selected_color_ = SERV_MENU_SELECTED_COLOR; // Color del elemento seleccionado
|
||||
int width_; // Ancho del menú
|
||||
int height_; // Alto del menu
|
||||
int line_height_; // Espacio entre elementos del menu
|
||||
int height_; // Alto del menú
|
||||
int line_height_; // Espacio entre elementos del menú
|
||||
|
||||
// -- Métodos internos ---
|
||||
void setAnchors(); // Establece el valor de las variables de anclaje
|
||||
void updateCounter(); // Actualiza el contador interno
|
||||
Color getSelectedColor(); // Devuelve el color del elemento seleccionado
|
||||
void initializeOptions(); // Crea todas las opciones del menú de servicio
|
||||
OptionPairs getOptionPairs(SettingsGroup group) const;
|
||||
std::vector<OptionEntry> getOptionsByGroup(SettingsGroup group) const;
|
||||
void applySettings(SettingsGroup group);
|
||||
void updateMenu(SettingsGroup group);
|
||||
void reset();
|
||||
int calculateMenuHeight();
|
||||
int findLargestGroupSize();
|
||||
GroupAlignment getGroupAlignment(SettingsGroup group);
|
||||
// --- Métodos internos: Anclaje y aspecto ---
|
||||
void setAnchors(); // Establece el valor de las variables de anclaje
|
||||
Color getSelectedColor() const; // Devuelve el color del elemento seleccionado
|
||||
|
||||
// --- Métodos internos: Gestión de opciones ---
|
||||
void initializeOptions(); // Crea todas las opciones del menú de servicio
|
||||
OptionPairs getOptionPairs(SettingsGroup group) const; // Devuelve las opciones como pares de strings para un grupo
|
||||
std::vector<OptionEntry> getOptionsByGroup(SettingsGroup group) const; // Devuelve las opciones de un grupo
|
||||
|
||||
// --- Métodos internos: Lógica de menú ---
|
||||
void applySettings(SettingsGroup group); // Aplica la configuración de un grupo
|
||||
void updateMenu(SettingsGroup group); // Actualiza las opciones mostradas según el grupo
|
||||
void reset(); // Reinicia el menú al estado inicial
|
||||
|
||||
// --- Métodos internos: Utilidades ---
|
||||
void updateCounter(); // Actualiza el contador interno
|
||||
int calculateMenuHeight() const; // Calcula la altura del menú
|
||||
int findLargestGroupSize() const; // Devuelve el tamaño del grupo más grande
|
||||
GroupAlignment getGroupAlignment(SettingsGroup group) const; // Devuelve la alineación del grupo
|
||||
|
||||
// --- Patrón Singleton ---
|
||||
ServiceMenu(); // Constructor privado
|
||||
~ServiceMenu() = default; // Destructor privado
|
||||
ServiceMenu(const ServiceMenu &) = delete; // Evitar copia
|
||||
ServiceMenu &operator=(const ServiceMenu &) = delete; // Evitar asignación
|
||||
ServiceMenu(const ServiceMenu &) = delete; // Evita la copia
|
||||
ServiceMenu &operator=(const ServiceMenu &) = delete; // Evita la asignación
|
||||
|
||||
// --- Singleton ---
|
||||
static ServiceMenu *instance_;
|
||||
// --- Instancia Singleton ---
|
||||
static ServiceMenu *instance_; // Instancia única del menú de servicio
|
||||
|
||||
// --- Método para reproducir el sonido del menú ---
|
||||
void playMenuSound(); // Reproduce el sonido del menú
|
||||
};
|
||||
@@ -112,7 +112,7 @@ void Title::render()
|
||||
// 'PRESS TO PLAY'
|
||||
if (counter_ % 50 > 14 && !define_buttons_->isEnabled())
|
||||
{
|
||||
text_->writeDX(TEXT_CENTER | TEXT_SHADOW, param.game.game_area.center_x, param.title.press_start_position, lang::getText(23), 1, NO_COLOR, 1, shadow);
|
||||
text_->writeDX(TEXT_CENTER | TEXT_SHADOW, param.game.game_area.center_x, param.title.press_start_position, lang::getText("TITLE_23"), 1, NO_COLOR, 1, shadow);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -121,7 +121,7 @@ void Title::render()
|
||||
// 'PRESS TO PLAY'
|
||||
if (counter_ % 10 > 4 && !define_buttons_->isEnabled())
|
||||
{
|
||||
text_->writeDX(TEXT_CENTER | TEXT_SHADOW, param.game.game_area.center_x, param.title.press_start_position, lang::getText(23), 1, NO_COLOR, 1, shadow);
|
||||
text_->writeDX(TEXT_CENTER | TEXT_SHADOW, param.game.game_area.center_x, param.title.press_start_position, lang::getText("TITLE_23"), 1, NO_COLOR, 1, shadow);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -277,7 +277,7 @@ void Title::swapControllers()
|
||||
void Title::swapKeyboard()
|
||||
{
|
||||
swapOptionsKeyboard();
|
||||
std::string text = lang::getText(100) + std::to_string(getPlayerWhoUsesKeyboard()) + ": " + lang::getText(69);
|
||||
std::string text = lang::getText("DEFINE_BUTTONS_100") + std::to_string(getPlayerWhoUsesKeyboard()) + ": " + lang::getText("MENU_OPTIONS_69");
|
||||
Notifier::get()->show({text});
|
||||
}
|
||||
|
||||
@@ -302,7 +302,7 @@ void Title::showControllers()
|
||||
const size_t index = player_controller_index.at(i);
|
||||
if (options.controllers.at(index).plugged)
|
||||
{
|
||||
text.at(i) = lang::getText(100) + std::to_string(i + 1) + ": " + options.controllers.at(index).name;
|
||||
text.at(i) = lang::getText("DEFINE_BUTTONS_100") + std::to_string(i + 1) + ": " + options.controllers.at(index).name;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -129,7 +129,7 @@ std::string boolToString(bool value)
|
||||
// Convierte un valor booleano en una cadena "on" o "off"
|
||||
std::string boolToOnOff(bool value)
|
||||
{
|
||||
return value ? lang::getText(128) : lang::getText(129);
|
||||
return value ? lang::getText("MISC_128") : lang::getText("MISC_129");
|
||||
}
|
||||
|
||||
// Convierte una cadena a minusculas
|
||||
|
||||
Reference in New Issue
Block a user