eliminades locales no utilitzades
modificats textos de ui a case tipo frase notificacions llargues pasen a multilinea
This commit is contained in:
@@ -2,7 +2,6 @@
|
|||||||
# lang: ca
|
# lang: ca
|
||||||
|
|
||||||
title:
|
title:
|
||||||
marquee: "EI JAILERS!! ESTEM EN 2022 I ENCARA HO PETEM COM EN 1998!! QUÉ, HO HEU SENTIT O NO? ELS JAILGAMES HAN TORNAT!! SÍ, COLLONS, HAN TORNAT!! MÉS DE 10 TÍTOLS QUE EL JAILDOC TÉ EN LA CUINA A FOC LENT!! MOLT LENT!! AIXÒ ÉS UNA BARBARITAT, PERÒ... QUIN EIXIRÀ PRIMER? I ATENCIÓ, QUE HI HA UN APARELLET NOU QUE VOS FARÀ VOLAR EL CAP: EL P.A.C.O.! PERÒ UN MOMENT... QUÈ ÉS AQUELLA COSETA QUE VE PER ALLÀ? OOOH, AQUELLA MINIASCII ÉS AMOR DEL BO!! LI PEGARIA UNA LLEPAETA A CADA BYTE! OSTRES! I NO VOS OBLIDEU DE PUJAR AQUELLS JAILGAMES VELLS I PANXUTS DE MS-DOS A GITHUB, QUE SI NO ES PERDRAN!! QUIN SERÀ EL PRÒXIM PROJECTE DE JAILDOC? SERÀ UN PROJECTE DE MERDA? AI MARE... NI IDEA, PERÒ ACÍ PODEU SABER-HO SI RESOLEU EL DILEMA DEL JAILDOCTOR... VOS ATREVIU O QUÈ? VAAAAA!!!"
|
|
||||||
menu:
|
menu:
|
||||||
play: "1. JUGAR"
|
play: "1. JUGAR"
|
||||||
keyboard: "2. REDEFINIR TECLES"
|
keyboard: "2. REDEFINIR TECLES"
|
||||||
@@ -24,78 +23,42 @@ title:
|
|||||||
defined: "BOTONS DEFINITS"
|
defined: "BOTONS DEFINITS"
|
||||||
already_used: "BOTÓ JA USAT! PROVA'N UN ALTRE"
|
already_used: "BOTÓ JA USAT! PROVA'N UN ALTRE"
|
||||||
|
|
||||||
game_over:
|
|
||||||
title: "G A M E O V E R"
|
|
||||||
items: "OBJECTES: "
|
|
||||||
rooms: "SALES: "
|
|
||||||
|
|
||||||
ending:
|
|
||||||
t0: "FINALMENT HO VA ACONSEGUIR"
|
|
||||||
t1: "ARRIBAR A LA JAIL"
|
|
||||||
t2: "AMB TOTS ELS SEUS PROJECTES"
|
|
||||||
t3: "A PUNT D'ALLIBERAR-LOS"
|
|
||||||
t4: "ALLÍ ESTAVEN TOTS ELS JAILERS"
|
|
||||||
t5: "ESPERANT QUE ELS JAILGAMES"
|
|
||||||
t6: "FOREN ALLIBERATS"
|
|
||||||
t7: "HI HAVIA FINS I TOT BARRULLS"
|
|
||||||
t8: "I BEGGINERS ENTRE LA GENT"
|
|
||||||
t9: "BRY ESTAVA PLORANT..."
|
|
||||||
t10: "PERÒ DE SOBTE ALGUNA COSA"
|
|
||||||
t11: "LI VA CRIDAR L'ATENCIÓ"
|
|
||||||
t12: "UN MUNT DE FERRALLA!"
|
|
||||||
t13: "PLE DE TRASTOS QUE NI ANAVEN!!"
|
|
||||||
t14: "I ALESHORES,"
|
|
||||||
t15: "QUARANTA PROJECTES NOUS"
|
|
||||||
t16: "VAN NÀIXER..."
|
|
||||||
|
|
||||||
ending2:
|
|
||||||
starring: "PROTAGONISTES"
|
|
||||||
jaildoctor: "JAILDOCTOR"
|
|
||||||
thank_you: "GRÀCIES"
|
|
||||||
for_playing: "PER JUGAR!"
|
|
||||||
|
|
||||||
credits:
|
|
||||||
instructions: "INSTRUCCIONS:"
|
|
||||||
l0: "AJUDA A JAILDOC A RECUPERAR"
|
|
||||||
l1: "ELS SEUS PROJECTES I ARRIBAR"
|
|
||||||
l2: "A LA JAIL PER ACABAR-LOS"
|
|
||||||
keys: "TECLES:"
|
|
||||||
keys_move: "CURSORS PER A MOURE I SALTAR"
|
|
||||||
f8: "F8 ACTIVAR/DESACTIVAR MÚSICA"
|
|
||||||
f11: "F11 PAUSAR EL JOC"
|
|
||||||
f1f2: "F1-F2 MIDA DE LA FINESTRA"
|
|
||||||
f3: "F3 PANTALLA COMPLETA"
|
|
||||||
f9: "F9 VORA DE LA PANTALLA"
|
|
||||||
author: "UN JOC DE JAILDESIGNER"
|
|
||||||
date: "FET A L'ESTIU/TARDOR DEL 2022"
|
|
||||||
love: "I LOVE JAILGAMES! "
|
|
||||||
|
|
||||||
achievements:
|
achievements:
|
||||||
header: "ASSOLIMENT DESBLOQUEJAT!"
|
header: "ASSOLIMENT DESBLOQUEJAT!"
|
||||||
|
|
||||||
ui:
|
ui:
|
||||||
press_again_menu: "PREM DE NOU PER TORNAR AL MENÚ"
|
press_again_menu: "Prem de nou per tornar al menú"
|
||||||
press_again_exit: "PREM DE NOU PER EIXIR"
|
press_again_exit: "Prem de nou per eixir"
|
||||||
border_enabled: "VORA ACTIVADA"
|
border_enabled: "Vora activada"
|
||||||
border_disabled: "VORA DESACTIVADA"
|
border_disabled: "Vora desactivada"
|
||||||
fullscreen_enabled: "PANTALLA COMPLETA ACTIVADA"
|
fullscreen_enabled: "Pantalla completa activada"
|
||||||
fullscreen_disabled: "PANTALLA COMPLETA DESACTIVADA"
|
fullscreen_disabled: "Pantalla completa desactivada"
|
||||||
window_zoom: "ZOOM FINESTRA x"
|
window_zoom: "Zoom finestra x"
|
||||||
shaders_enabled: "SHADERS ACTIVATS"
|
shaders_enabled: "Shaders activats"
|
||||||
shaders_disabled: "SHADERS DESACTIVATS"
|
shaders_disabled: "Shaders desactivats"
|
||||||
shader: "SHADER"
|
shader: "Shader"
|
||||||
postfx: "POSTFX"
|
postfx: "PostFX"
|
||||||
crtpi: "CRTPI"
|
crtpi: "CRTPi"
|
||||||
supersampling_enabled: "SUPERMOSTREIG ACTIVAT"
|
palette: "Paleta"
|
||||||
supersampling_disabled: "SUPERMOSTREIG DESACTIVAT"
|
palette_sort: "Ordenació paleta"
|
||||||
palette: "PALETA"
|
integer_scale_enabled: "Escalat sencer activat"
|
||||||
palette_sort: "ORDENACIÓ PALETA"
|
integer_scale_disabled: "Escalat sencer desactivat"
|
||||||
integer_scale_enabled: "ESCALAT SENCER ACTIVAT"
|
vsync_enabled: "V-Sync activat"
|
||||||
integer_scale_disabled: "ESCALAT SENCER DESACTIVAT"
|
vsync_disabled: "V-Sync desactivat"
|
||||||
vsync_enabled: "V-SYNC ACTIVAT"
|
gamepad_connected: "connectat"
|
||||||
vsync_disabled: "V-SYNC DESACTIVAT"
|
gamepad_disconnected: "desconnectat"
|
||||||
gamepad_connected: "CONNECTAT"
|
music_enabled: "Música activada"
|
||||||
gamepad_disconnected: "DESCONNECTAT"
|
music_disabled: "Música desactivada"
|
||||||
|
paused: "Joc en pausa"
|
||||||
|
running: "Joc en marxa"
|
||||||
|
enabled: " activat"
|
||||||
|
disabled: " desactivat"
|
||||||
|
cheat_infinite_lives: "Vides infinites"
|
||||||
|
cheat_invincible: "Invencible"
|
||||||
|
debug_enabled: "Debug activat"
|
||||||
|
debug_disabled: "Debug desactivat"
|
||||||
|
editor_enabled: "Editor activat"
|
||||||
|
editor_disabled: "Editor desactivat"
|
||||||
|
|
||||||
scoreboard:
|
scoreboard:
|
||||||
lives: "vides "
|
lives: "vides "
|
||||||
@@ -104,18 +67,3 @@ scoreboard:
|
|||||||
music_on: "musica"
|
music_on: "musica"
|
||||||
cheat_infinite_lives: "vides infinites"
|
cheat_infinite_lives: "vides infinites"
|
||||||
cheat_invincibility: "invencibilitat"
|
cheat_invincibility: "invencibilitat"
|
||||||
|
|
||||||
game:
|
|
||||||
music_enabled: "MÚSICA ACTIVADA"
|
|
||||||
music_disabled: "MÚSICA DESACTIVADA"
|
|
||||||
paused: "JOC EN PAUSA"
|
|
||||||
running: "JOC EN MARXA"
|
|
||||||
enabled: " ACTIVAT"
|
|
||||||
disabled: " DESACTIVAT"
|
|
||||||
cheat_infinite_lives: "VIDES INFINITES"
|
|
||||||
cheat_invincible: "INVENCIBLE"
|
|
||||||
cheat_jail_open: "JAIL OBERTA"
|
|
||||||
debug_enabled: "DEBUG ACTIVAT"
|
|
||||||
debug_disabled: "DEBUG DESACTIVAT"
|
|
||||||
editor_enabled: "EDITOR ACTIVAT"
|
|
||||||
editor_disabled: "EDITOR DESACTIVAT"
|
|
||||||
|
|||||||
@@ -2,7 +2,6 @@
|
|||||||
# lang: en
|
# lang: en
|
||||||
|
|
||||||
title:
|
title:
|
||||||
marquee: "HEY JAILERS!! IT'S 2022 AND WE'RE STILL ROCKING LIKE IT'S 1998!!! HAVE YOU HEARD IT? JAILGAMES ARE BACK!! YEEESSS BACK!! MORE THAN 10 TITLES ON JAILDOC'S KITCHEN!! THATS A LOOOOOOT OF JAILGAMES, BUT WHICH ONE WILL STRIKE FIRST? THERE IS ALSO A NEW DEVICE TO COME THAT WILL BLOW YOUR MIND WITH JAILGAMES ON THE GO: P.A.C.O. BUT WAIT! WHAT'S THAT BEAUTY I'M SEEING RIGHT OVER THERE?? OOOH THAT TINY MINIASCII IS PURE LOVE!! I WANT TO LICK EVERY BYTE OF IT!! OH SHIT! AND DON'T FORGET TO BRING BACK THOSE OLD AND FAT MS-DOS JAILGAMES TO GITHUB TO KEEP THEM ALIVE!! WHAT WILL BE THE NEXT JAILDOC RELEASE? WHAT WILL BE THE NEXT PROJECT TO COME ALIVE?? OH BABY WE DON'T KNOW BUT HERE YOU CAN FIND THE ANSWER, YOU JUST HAVE TO COMPLETE JAILDOCTOR'S DILEMMA ... COULD YOU?"
|
|
||||||
menu:
|
menu:
|
||||||
play: "1. PLAY"
|
play: "1. PLAY"
|
||||||
keyboard: "2. REDEFINE KEYBOARD"
|
keyboard: "2. REDEFINE KEYBOARD"
|
||||||
@@ -24,78 +23,42 @@ title:
|
|||||||
defined: "BUTTONS DEFINED"
|
defined: "BUTTONS DEFINED"
|
||||||
already_used: "BUTTON ALREADY USED! TRY ANOTHER"
|
already_used: "BUTTON ALREADY USED! TRY ANOTHER"
|
||||||
|
|
||||||
game_over:
|
|
||||||
title: "G A M E O V E R"
|
|
||||||
items: "ITEMS: "
|
|
||||||
rooms: "ROOMS: "
|
|
||||||
|
|
||||||
ending:
|
|
||||||
t0: "HE FINALLY MANAGED"
|
|
||||||
t1: "TO GET TO THE JAIL"
|
|
||||||
t2: "WITH ALL HIS PROJECTS"
|
|
||||||
t3: "READY TO BE FREED"
|
|
||||||
t4: "ALL THE JAILERS WERE THERE"
|
|
||||||
t5: "WAITING FOR THE JAILGAMES"
|
|
||||||
t6: "TO BE RELEASED"
|
|
||||||
t7: "THERE WERE EVEN BARRULLS AND"
|
|
||||||
t8: "BEGINNERS AMONG THE CROWD"
|
|
||||||
t9: "BRY WAS CRYING..."
|
|
||||||
t10: "BUT SUDDENLY SOMETHING"
|
|
||||||
t11: "CAUGHT HIS ATTENTION"
|
|
||||||
t12: "A PILE OF JUNK!"
|
|
||||||
t13: "FULL OF NON WORKING TRASH!!"
|
|
||||||
t14: "AND THEN,"
|
|
||||||
t15: "FOURTY NEW PROJECTS"
|
|
||||||
t16: "WERE BORN..."
|
|
||||||
|
|
||||||
ending2:
|
|
||||||
starring: "STARRING"
|
|
||||||
jaildoctor: "JAILDOCTOR"
|
|
||||||
thank_you: "THANK YOU"
|
|
||||||
for_playing: "FOR PLAYING!"
|
|
||||||
|
|
||||||
credits:
|
|
||||||
instructions: "INSTRUCTIONS:"
|
|
||||||
l0: "HELP JAILDOC TO GET BACK ALL"
|
|
||||||
l1: "HIS PROJECTS AND GO TO THE"
|
|
||||||
l2: "JAIL TO FINISH THEM"
|
|
||||||
keys: "KEYS:"
|
|
||||||
keys_move: "CURSORS TO MOVE AND JUMP"
|
|
||||||
f8: "F8 TOGGLE THE MUSIC"
|
|
||||||
f11: "F11 PAUSE THE GAME"
|
|
||||||
f1f2: "F1-F2 WINDOWS SIZE"
|
|
||||||
f3: "F3 TOGGLE FULLSCREEN"
|
|
||||||
f9: "F9 TOOGLE BORDER SCREEN"
|
|
||||||
author: "A GAME BY JAILDESIGNER"
|
|
||||||
date: "MADE ON SUMMER/FALL 2022"
|
|
||||||
love: "I LOVE JAILGAMES! "
|
|
||||||
|
|
||||||
achievements:
|
achievements:
|
||||||
header: "ACHIEVEMENT UNLOCKED!"
|
header: "ACHIEVEMENT UNLOCKED!"
|
||||||
|
|
||||||
ui:
|
ui:
|
||||||
press_again_menu: "PRESS AGAIN TO RETURN TO MENU"
|
press_again_menu: "Press again to return to menu"
|
||||||
press_again_exit: "PRESS AGAIN TO EXIT"
|
press_again_exit: "Press again to exit"
|
||||||
border_enabled: "BORDER ENABLED"
|
border_enabled: "Border enabled"
|
||||||
border_disabled: "BORDER DISABLED"
|
border_disabled: "Border disabled"
|
||||||
fullscreen_enabled: "FULLSCREEN ENABLED"
|
fullscreen_enabled: "Fullscreen enabled"
|
||||||
fullscreen_disabled: "FULLSCREEN DISABLED"
|
fullscreen_disabled: "Fullscreen disabled"
|
||||||
window_zoom: "WINDOW ZOOM x"
|
window_zoom: "Window zoom x"
|
||||||
shaders_enabled: "SHADERS ON"
|
shaders_enabled: "Shaders on"
|
||||||
shaders_disabled: "SHADERS OFF"
|
shaders_disabled: "Shaders off"
|
||||||
shader: "SHADER"
|
shader: "Shader"
|
||||||
postfx: "POSTFX"
|
postfx: "PostFX"
|
||||||
crtpi: "CRTPI"
|
crtpi: "CRTPi"
|
||||||
supersampling_enabled: "SUPERSAMPLING ON"
|
palette: "Palette"
|
||||||
supersampling_disabled: "SUPERSAMPLING OFF"
|
palette_sort: "Palette sort"
|
||||||
palette: "PALETTE"
|
integer_scale_enabled: "Integer scale enabled"
|
||||||
palette_sort: "PALETTE SORT"
|
integer_scale_disabled: "Integer scale disabled"
|
||||||
integer_scale_enabled: "INTEGER SCALE ENABLED"
|
vsync_enabled: "V-Sync enabled"
|
||||||
integer_scale_disabled: "INTEGER SCALE DISABLED"
|
vsync_disabled: "V-Sync disabled"
|
||||||
vsync_enabled: "V-SYNC ENABLED"
|
gamepad_connected: "connected"
|
||||||
vsync_disabled: "V-SYNC DISABLED"
|
gamepad_disconnected: "disconnected"
|
||||||
gamepad_connected: "CONNECTED"
|
music_enabled: "Music enabled"
|
||||||
gamepad_disconnected: "DISCONNECTED"
|
music_disabled: "Music disabled"
|
||||||
|
paused: "Game paused"
|
||||||
|
running: "Game running"
|
||||||
|
enabled: " enabled"
|
||||||
|
disabled: " disabled"
|
||||||
|
cheat_infinite_lives: "Infinite lives"
|
||||||
|
cheat_invincible: "Invincible"
|
||||||
|
debug_enabled: "Debug enabled"
|
||||||
|
debug_disabled: "Debug disabled"
|
||||||
|
editor_enabled: "Editor enabled"
|
||||||
|
editor_disabled: "Editor disabled"
|
||||||
|
|
||||||
scoreboard:
|
scoreboard:
|
||||||
lives: "lives "
|
lives: "lives "
|
||||||
@@ -104,18 +67,3 @@ scoreboard:
|
|||||||
music_on: "music"
|
music_on: "music"
|
||||||
cheat_infinite_lives: "infinite lives"
|
cheat_infinite_lives: "infinite lives"
|
||||||
cheat_invincibility: "invincibility"
|
cheat_invincibility: "invincibility"
|
||||||
|
|
||||||
game:
|
|
||||||
music_enabled: "MUSIC ENABLED"
|
|
||||||
music_disabled: "MUSIC DISABLED"
|
|
||||||
paused: "GAME PAUSED"
|
|
||||||
running: "GAME RUNNING"
|
|
||||||
enabled: " ENABLED"
|
|
||||||
disabled: " DISABLED"
|
|
||||||
cheat_infinite_lives: "INFINITE LIVES"
|
|
||||||
cheat_invincible: "INVINCIBLE"
|
|
||||||
cheat_jail_open: "JAIL IS OPEN"
|
|
||||||
debug_enabled: "DEBUG ENABLED"
|
|
||||||
debug_disabled: "DEBUG DISABLED"
|
|
||||||
editor_enabled: "EDITOR ENABLED"
|
|
||||||
editor_disabled: "EDITOR DISABLED"
|
|
||||||
|
|||||||
@@ -211,10 +211,10 @@ void Game::handleEvents() {
|
|||||||
if (event.type == SDL_EVENT_KEY_DOWN && event.key.key == KeyConfig::get()->key("EDITOR", "toggle") && static_cast<int>(event.key.repeat) == 0) {
|
if (event.type == SDL_EVENT_KEY_DOWN && event.key.key == KeyConfig::get()->key("EDITOR", "toggle") && static_cast<int>(event.key.repeat) == 0) {
|
||||||
if (MapEditor::get()->isActive()) {
|
if (MapEditor::get()->isActive()) {
|
||||||
GameControl::exit_editor();
|
GameControl::exit_editor();
|
||||||
Notifier::get()->show({Locale::get()->get("game.editor_disabled")});
|
Notifier::get()->show({Locale::get()->get("ui.editor_disabled")});
|
||||||
} else {
|
} else {
|
||||||
GameControl::enter_editor();
|
GameControl::enter_editor();
|
||||||
Notifier::get()->show({Locale::get()->get("game.editor_enabled")});
|
Notifier::get()->show({Locale::get()->get("ui.editor_enabled")});
|
||||||
}
|
}
|
||||||
} else if (event.type == SDL_EVENT_KEY_DOWN && event.key.key == KeyConfig::get()->key("EDITOR", "grid") && static_cast<int>(event.key.repeat) == 0 && MapEditor::get()->isActive()) {
|
} else if (event.type == SDL_EVENT_KEY_DOWN && event.key.key == KeyConfig::get()->key("EDITOR", "grid") && static_cast<int>(event.key.repeat) == 0 && MapEditor::get()->isActive()) {
|
||||||
MapEditor::get()->showGrid(!MapEditor::get()->isGridEnabled());
|
MapEditor::get()->showGrid(!MapEditor::get()->isGridEnabled());
|
||||||
@@ -236,7 +236,7 @@ void Game::handleInput() {
|
|||||||
if (Input::get()->checkAction(InputAction::TOGGLE_IN_GAME_MUSIC, Input::DO_NOT_ALLOW_REPEAT)) {
|
if (Input::get()->checkAction(InputAction::TOGGLE_IN_GAME_MUSIC, Input::DO_NOT_ALLOW_REPEAT)) {
|
||||||
scoreboard_data_->music = !scoreboard_data_->music;
|
scoreboard_data_->music = !scoreboard_data_->music;
|
||||||
scoreboard_data_->music ? Audio::get()->resumeMusic() : Audio::get()->pauseMusic();
|
scoreboard_data_->music ? Audio::get()->resumeMusic() : Audio::get()->pauseMusic();
|
||||||
Notifier::get()->show({scoreboard_data_->music ? Locale::get()->get("game.music_enabled") : Locale::get()->get("game.music_disabled")});
|
Notifier::get()->show({scoreboard_data_->music ? Locale::get()->get("ui.music_enabled") : Locale::get()->get("ui.music_disabled")});
|
||||||
}
|
}
|
||||||
|
|
||||||
// Si la consola está activa, no procesar inputs del juego
|
// Si la consola está activa, no procesar inputs del juego
|
||||||
@@ -262,7 +262,7 @@ void Game::handleInput() {
|
|||||||
// Input de pausa solo en estado PLAYING
|
// Input de pausa solo en estado PLAYING
|
||||||
if (Input::get()->checkAction(InputAction::PAUSE, Input::DO_NOT_ALLOW_REPEAT)) {
|
if (Input::get()->checkAction(InputAction::PAUSE, Input::DO_NOT_ALLOW_REPEAT)) {
|
||||||
togglePause();
|
togglePause();
|
||||||
Notifier::get()->show({paused_ ? Locale::get()->get("game.paused") : Locale::get()->get("game.running")});
|
Notifier::get()->show({paused_ ? Locale::get()->get("ui.paused") : Locale::get()->get("ui.running")});
|
||||||
}
|
}
|
||||||
|
|
||||||
GlobalInputs::handle();
|
GlobalInputs::handle();
|
||||||
@@ -612,7 +612,7 @@ void Game::renderPostFadeEnding() {
|
|||||||
static void toggleCheat(Options::Cheat::State& cheat, const std::string& label) {
|
static void toggleCheat(Options::Cheat::State& cheat, const std::string& label) {
|
||||||
cheat = (cheat == Options::Cheat::State::ENABLED) ? Options::Cheat::State::DISABLED : Options::Cheat::State::ENABLED;
|
cheat = (cheat == Options::Cheat::State::ENABLED) ? Options::Cheat::State::DISABLED : Options::Cheat::State::ENABLED;
|
||||||
const bool ENABLED = (cheat == Options::Cheat::State::ENABLED);
|
const bool ENABLED = (cheat == Options::Cheat::State::ENABLED);
|
||||||
Notifier::get()->show({label + (ENABLED ? Locale::get()->get("game.enabled") : Locale::get()->get("game.disabled"))}, Notifier::Style::DEFAULT, -1, true);
|
Notifier::get()->show({label + (ENABLED ? Locale::get()->get("ui.enabled") : Locale::get()->get("ui.disabled"))}, Notifier::Style::DEFAULT, -1, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Pone la información de debug en pantalla
|
// Pone la información de debug en pantalla
|
||||||
@@ -655,9 +655,9 @@ void Game::handleDebugEvents(const SDL_Event& event) {
|
|||||||
} else if (KEY == kc->key("DEBUG", "nav_right")) {
|
} else if (KEY == kc->key("DEBUG", "nav_right")) {
|
||||||
changeRoom(room_->getRoom(Room::Border::RIGHT));
|
changeRoom(room_->getRoom(Room::Border::RIGHT));
|
||||||
} else if (KEY == kc->key("DEBUG", "infinite_lives")) {
|
} else if (KEY == kc->key("DEBUG", "infinite_lives")) {
|
||||||
toggleCheat(Options::cheats.infinite_lives, Locale::get()->get("game.cheat_infinite_lives"));
|
toggleCheat(Options::cheats.infinite_lives, Locale::get()->get("ui.cheat_infinite_lives"));
|
||||||
} else if (KEY == kc->key("DEBUG", "invincibility")) {
|
} else if (KEY == kc->key("DEBUG", "invincibility")) {
|
||||||
toggleCheat(Options::cheats.invincible, Locale::get()->get("game.cheat_invincible"));
|
toggleCheat(Options::cheats.invincible, Locale::get()->get("ui.cheat_invincible"));
|
||||||
} else if (KEY == kc->key("DEBUG", "test_cheevo")) {
|
} else if (KEY == kc->key("DEBUG", "test_cheevo")) {
|
||||||
Notifier::get()->show({Locale::get()->get("achievements.header"), Locale::get()->get("achievements.c11")}, Notifier::Style::CHEEVO, -1, false, "F7");
|
Notifier::get()->show({Locale::get()->get("achievements.header"), Locale::get()->get("achievements.c11")}, Notifier::Style::CHEEVO, -1, false, "F7");
|
||||||
} else if (KEY == kc->key("DEBUG", "debug_mode")) {
|
} else if (KEY == kc->key("DEBUG", "debug_mode")) {
|
||||||
@@ -666,7 +666,7 @@ void Game::handleDebugEvents(const SDL_Event& event) {
|
|||||||
invincible_before_debug_ = (Options::cheats.invincible == Options::Cheat::State::ENABLED);
|
invincible_before_debug_ = (Options::cheats.invincible == Options::Cheat::State::ENABLED);
|
||||||
}
|
}
|
||||||
Debug::get()->toggleEnabled();
|
Debug::get()->toggleEnabled();
|
||||||
Notifier::get()->show({Debug::get()->isEnabled() ? Locale::get()->get("game.debug_enabled") : Locale::get()->get("game.debug_disabled")});
|
Notifier::get()->show({Debug::get()->isEnabled() ? Locale::get()->get("ui.debug_enabled") : Locale::get()->get("ui.debug_disabled")});
|
||||||
room_->redrawMap();
|
room_->redrawMap();
|
||||||
if (Debug::get()->isEnabled()) {
|
if (Debug::get()->isEnabled()) {
|
||||||
Options::cheats.invincible = Options::Cheat::State::ENABLED;
|
Options::cheats.invincible = Options::Cheat::State::ENABLED;
|
||||||
|
|||||||
@@ -22,6 +22,41 @@
|
|||||||
// [SINGLETON]
|
// [SINGLETON]
|
||||||
Notifier* Notifier::notifier = nullptr;
|
Notifier* Notifier::notifier = nullptr;
|
||||||
|
|
||||||
|
// Parte un texto en varias líneas cuando no cabe en max_width píxeles.
|
||||||
|
// Divide por espacios; si una palabra sola excede el ancho, queda en su propia línea.
|
||||||
|
static auto wrapToWidth(const std::string& text, int max_width, Text* text_obj, int kerning = 1) -> std::vector<std::string> {
|
||||||
|
if (max_width <= 0 || text_obj->length(text, kerning) <= max_width) {
|
||||||
|
return {text};
|
||||||
|
}
|
||||||
|
|
||||||
|
std::vector<std::string> lines;
|
||||||
|
std::string current;
|
||||||
|
std::string word;
|
||||||
|
|
||||||
|
auto flush_word = [&]() {
|
||||||
|
if (word.empty()) { return; }
|
||||||
|
const std::string CANDIDATE = current.empty() ? word : current + " " + word;
|
||||||
|
if (text_obj->length(CANDIDATE, kerning) <= max_width) {
|
||||||
|
current = CANDIDATE;
|
||||||
|
} else {
|
||||||
|
if (!current.empty()) { lines.push_back(current); }
|
||||||
|
current = word;
|
||||||
|
}
|
||||||
|
word.clear();
|
||||||
|
};
|
||||||
|
|
||||||
|
for (const char c : text) {
|
||||||
|
if (c == ' ') {
|
||||||
|
flush_word();
|
||||||
|
} else {
|
||||||
|
word += c;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
flush_word();
|
||||||
|
if (!current.empty()) { lines.push_back(current); }
|
||||||
|
return lines;
|
||||||
|
}
|
||||||
|
|
||||||
// Definición de estilos predefinidos
|
// Definición de estilos predefinidos
|
||||||
const Notifier::Style Notifier::Style::DEFAULT = {
|
const Notifier::Style Notifier::Style::DEFAULT = {
|
||||||
.bg_color = Defaults::Notification::BG_COLOR,
|
.bg_color = Defaults::Notification::BG_COLOR,
|
||||||
@@ -149,14 +184,6 @@ void Notifier::show(std::vector<std::string> texts, const Style& style, int icon
|
|||||||
auto result = std::ranges::remove_if(texts, [](const std::string& s) -> bool { return s.empty(); });
|
auto result = std::ranges::remove_if(texts, [](const std::string& s) -> bool { return s.empty(); });
|
||||||
texts.erase(result.begin(), result.end());
|
texts.erase(result.begin(), result.end());
|
||||||
|
|
||||||
// Encuentra la cadena más larga
|
|
||||||
std::string longest;
|
|
||||||
for (const auto& text : texts) {
|
|
||||||
if (text.length() > longest.length()) {
|
|
||||||
longest = text;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Inicializa variables
|
// Inicializa variables
|
||||||
constexpr float TEXT_SIZE = LINE_HEIGHT;
|
constexpr float TEXT_SIZE = LINE_HEIGHT;
|
||||||
const auto PADDING_IN_H = TEXT_SIZE;
|
const auto PADDING_IN_H = TEXT_SIZE;
|
||||||
@@ -164,6 +191,17 @@ void Notifier::show(std::vector<std::string> texts, const Style& style, int icon
|
|||||||
const int ICON_SPACE = icon >= 0 ? ICON_SIZE + PADDING_IN_H : 0;
|
const int ICON_SPACE = icon >= 0 ? ICON_SIZE + PADDING_IN_H : 0;
|
||||||
const TextAlign TEXT_IS = ICON_SPACE > 0 ? TextAlign::LEFT : style.text_align;
|
const TextAlign TEXT_IS = ICON_SPACE > 0 ? TextAlign::LEFT : style.text_align;
|
||||||
const float WIDTH = Options::game.width - (PADDING_OUT * 2);
|
const float WIDTH = Options::game.width - (PADDING_OUT * 2);
|
||||||
|
const int MAX_TEXT_WIDTH = static_cast<int>(WIDTH - (PADDING_IN_H * 2) - ICON_SPACE);
|
||||||
|
|
||||||
|
// Si un texto no cabe en una línea, parte por espacios en varias líneas
|
||||||
|
std::vector<std::string> wrapped;
|
||||||
|
wrapped.reserve(texts.size());
|
||||||
|
for (const auto& t : texts) {
|
||||||
|
auto lines = wrapToWidth(t, MAX_TEXT_WIDTH, text_.get());
|
||||||
|
wrapped.insert(wrapped.end(), std::make_move_iterator(lines.begin()), std::make_move_iterator(lines.end()));
|
||||||
|
}
|
||||||
|
texts = std::move(wrapped);
|
||||||
|
|
||||||
const float HEIGHT = (TEXT_SIZE * texts.size()) + (PADDING_IN_V * 2);
|
const float HEIGHT = (TEXT_SIZE * texts.size()) + (PADDING_IN_V * 2);
|
||||||
const auto SHAPE = style.shape;
|
const auto SHAPE = style.shape;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user