ja es poden redefinir les tecles
renombrat achievements a projects
This commit is contained in:
@@ -325,7 +325,17 @@ void Title::updateCheevosMenu(float delta_time) {
|
|||||||
void Title::updateControlsMenu(float delta_time) {
|
void Title::updateControlsMenu(float delta_time) {
|
||||||
// Actualiza la marquesina (sigue visible en fondo)
|
// Actualiza la marquesina (sigue visible en fondo)
|
||||||
updateMarquee(delta_time);
|
updateMarquee(delta_time);
|
||||||
// No incrementar state_time_ (no timeout en este estado)
|
|
||||||
|
// Si estamos mostrando las teclas definidas, esperar antes de guardar
|
||||||
|
if (controls_menu_state_ == ControlsMenuState::KEYBOARD_REMAP_COMPLETE) {
|
||||||
|
state_time_ += delta_time;
|
||||||
|
if (state_time_ >= KEYBOARD_REMAP_DISPLAY_DELAY) {
|
||||||
|
// Aplicar y guardar las teclas
|
||||||
|
applyKeyboardRemap();
|
||||||
|
// Volver al menu principal
|
||||||
|
transitionToState(State::MAIN_MENU);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Actualiza el estado FADE_MENU
|
// Actualiza el estado FADE_MENU
|
||||||
@@ -413,7 +423,7 @@ void Title::createCheevosTexture() {
|
|||||||
cheevos_surface_->clear(CHEEVOS_BG_COLOR);
|
cheevos_surface_->clear(CHEEVOS_BG_COLOR);
|
||||||
|
|
||||||
// Escribe la lista de logros en la textura
|
// Escribe la lista de logros en la textura
|
||||||
const std::string CHEEVOS_OWNER = "ACHIEVEMENTS";
|
const std::string CHEEVOS_OWNER = "PROJECTS";
|
||||||
const std::string CHEEVOS_LIST_CAPTION = CHEEVOS_OWNER + " (" + std::to_string(Cheevos::get()->getTotalUnlockedAchievements()) + " / " + std::to_string(Cheevos::get()->size()) + ")";
|
const std::string CHEEVOS_LIST_CAPTION = CHEEVOS_OWNER + " (" + std::to_string(Cheevos::get()->getTotalUnlockedAchievements()) + " / " + std::to_string(Cheevos::get()->size()) + ")";
|
||||||
int pos = 2;
|
int pos = 2;
|
||||||
TEXT->writeDX(TEXT_CENTER | TEXT_COLOR, cheevos_surface_->getWidth() / 2, pos, CHEEVOS_LIST_CAPTION, 1, stringToColor("bright_green"));
|
TEXT->writeDX(TEXT_CENTER | TEXT_COLOR, cheevos_surface_->getWidth() / 2, pos, CHEEVOS_LIST_CAPTION, 1, stringToColor("bright_green"));
|
||||||
@@ -460,7 +470,7 @@ void Title::renderMainMenu() {
|
|||||||
const int TEXT_SIZE = menu_text_->getCharacterSize();
|
const int TEXT_SIZE = menu_text_->getCharacterSize();
|
||||||
menu_text_->writeDX(TEXT_CENTER | TEXT_COLOR, PLAY_AREA_CENTER_X, 11 * TEXT_SIZE, "1. PLAY", 1, COLOR);
|
menu_text_->writeDX(TEXT_CENTER | TEXT_COLOR, PLAY_AREA_CENTER_X, 11 * TEXT_SIZE, "1. PLAY", 1, COLOR);
|
||||||
menu_text_->writeDX(TEXT_CENTER | TEXT_COLOR, PLAY_AREA_CENTER_X, 13 * TEXT_SIZE, "2. CONTROLS", 1, COLOR);
|
menu_text_->writeDX(TEXT_CENTER | TEXT_COLOR, PLAY_AREA_CENTER_X, 13 * TEXT_SIZE, "2. CONTROLS", 1, COLOR);
|
||||||
menu_text_->writeDX(TEXT_CENTER | TEXT_COLOR, PLAY_AREA_CENTER_X, 15 * TEXT_SIZE, "3. ACHIEVEMENTS", 1, COLOR);
|
menu_text_->writeDX(TEXT_CENTER | TEXT_COLOR, PLAY_AREA_CENTER_X, 15 * TEXT_SIZE, "3. PROJECTS", 1, COLOR);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Dibuja el menu de logros
|
// Dibuja el menu de logros
|
||||||
@@ -471,7 +481,8 @@ void Title::renderCheevosMenu() {
|
|||||||
// Dibuja el menu de controles
|
// Dibuja el menu de controles
|
||||||
void Title::renderControlsMenu() {
|
void Title::renderControlsMenu() {
|
||||||
// Delegar al render apropiado segun el subestado
|
// Delegar al render apropiado segun el subestado
|
||||||
if (controls_menu_state_ == ControlsMenuState::KEYBOARD_REMAP) {
|
if (controls_menu_state_ == ControlsMenuState::KEYBOARD_REMAP ||
|
||||||
|
controls_menu_state_ == ControlsMenuState::KEYBOARD_REMAP_COMPLETE) {
|
||||||
renderKeyboardRemap();
|
renderKeyboardRemap();
|
||||||
} else {
|
} else {
|
||||||
// Menu principal de controles
|
// Menu principal de controles
|
||||||
@@ -479,6 +490,7 @@ void Title::renderControlsMenu() {
|
|||||||
const int TEXT_SIZE = menu_text_->getCharacterSize();
|
const int TEXT_SIZE = menu_text_->getCharacterSize();
|
||||||
menu_text_->writeDX(TEXT_CENTER | TEXT_COLOR, PLAY_AREA_CENTER_X, 11 * TEXT_SIZE, "1. REDEFINE KEYBOARD", 1, COLOR);
|
menu_text_->writeDX(TEXT_CENTER | TEXT_COLOR, PLAY_AREA_CENTER_X, 11 * TEXT_SIZE, "1. REDEFINE KEYBOARD", 1, COLOR);
|
||||||
menu_text_->writeDX(TEXT_CENTER | TEXT_COLOR, PLAY_AREA_CENTER_X, 13 * TEXT_SIZE, "2. REDEFINE JOYSTICK", 1, COLOR);
|
menu_text_->writeDX(TEXT_CENTER | TEXT_COLOR, PLAY_AREA_CENTER_X, 13 * TEXT_SIZE, "2. REDEFINE JOYSTICK", 1, COLOR);
|
||||||
|
menu_text_->writeDX(TEXT_CENTER | TEXT_COLOR, PLAY_AREA_CENTER_X, 17 * TEXT_SIZE, "ENTER TO GO BACK", 1, COLOR);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -529,13 +541,6 @@ void Title::fillTitleSurface() {
|
|||||||
void Title::handleControlsMenuKeyboardRemap(const SDL_Event& event) {
|
void Title::handleControlsMenuKeyboardRemap(const SDL_Event& event) {
|
||||||
SDL_Scancode scancode = event.key.scancode;
|
SDL_Scancode scancode = event.key.scancode;
|
||||||
|
|
||||||
// Si presiona ESC, cancela y vuelve al menu principal de controles
|
|
||||||
if (scancode == SDL_SCANCODE_ESCAPE) {
|
|
||||||
controls_menu_state_ = ControlsMenuState::MAIN;
|
|
||||||
remap_error_message_.clear();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Valida la tecla
|
// Valida la tecla
|
||||||
if (!isKeyValid(scancode)) {
|
if (!isKeyValid(scancode)) {
|
||||||
remap_error_message_ = "INVALID KEY! TRY ANOTHER";
|
remap_error_message_ = "INVALID KEY! TRY ANOTHER";
|
||||||
@@ -553,10 +558,10 @@ void Title::handleControlsMenuKeyboardRemap(const SDL_Event& event) {
|
|||||||
remap_error_message_.clear();
|
remap_error_message_.clear();
|
||||||
remap_step_++;
|
remap_step_++;
|
||||||
|
|
||||||
// Si completamos los 3 pasos, aplicar y guardar
|
// Si completamos los 3 pasos, mostrar resultado y esperar
|
||||||
if (remap_step_ >= 3) {
|
if (remap_step_ >= 3) {
|
||||||
applyKeyboardRemap();
|
controls_menu_state_ = ControlsMenuState::KEYBOARD_REMAP_COMPLETE;
|
||||||
controls_menu_state_ = ControlsMenuState::MAIN;
|
state_time_ = 0.0F; // Resetear el timer para el delay de 1 segundo
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -625,12 +630,16 @@ void Title::renderKeyboardRemap() {
|
|||||||
const int TEXT_SIZE = menu_text_->getCharacterSize();
|
const int TEXT_SIZE = menu_text_->getCharacterSize();
|
||||||
|
|
||||||
// Titulo
|
// Titulo
|
||||||
menu_text_->writeDX(TEXT_CENTER | TEXT_COLOR, PLAY_AREA_CENTER_X, 9 * TEXT_SIZE, "REDEFINE KEYBOARD", 1, COLOR);
|
//menu_text_->writeDX(TEXT_CENTER | TEXT_COLOR, PLAY_AREA_CENTER_X, 9 * TEXT_SIZE, "REDEFINE KEYBOARD", 1, COLOR);
|
||||||
|
|
||||||
// Mensaje principal: "PRESS KEY FOR [ACTION]"
|
// Mensaje principal: "PRESS KEY FOR [ACTION]" o "KEYS DEFINED" si completado
|
||||||
const std::string ACTION = getActionName(remap_step_);
|
if (remap_step_ >= 3) {
|
||||||
const std::string MESSAGE = "PRESS KEY FOR " + ACTION;
|
menu_text_->writeDX(TEXT_CENTER | TEXT_COLOR, PLAY_AREA_CENTER_X, 12 * TEXT_SIZE, "KEYS DEFINED", 1, COLOR);
|
||||||
menu_text_->writeDX(TEXT_CENTER | TEXT_COLOR, PLAY_AREA_CENTER_X, 12 * TEXT_SIZE, MESSAGE, 1, COLOR);
|
} else {
|
||||||
|
const std::string ACTION = getActionName(remap_step_);
|
||||||
|
const std::string MESSAGE = "PRESS KEY FOR " + ACTION;
|
||||||
|
menu_text_->writeDX(TEXT_CENTER | TEXT_COLOR, PLAY_AREA_CENTER_X, 12 * TEXT_SIZE, MESSAGE, 1, COLOR);
|
||||||
|
}
|
||||||
|
|
||||||
// Mostrar teclas ya capturadas
|
// Mostrar teclas ya capturadas
|
||||||
if (remap_step_ > 0) {
|
if (remap_step_ > 0) {
|
||||||
@@ -643,12 +652,14 @@ void Title::renderKeyboardRemap() {
|
|||||||
const std::string RIGHT_MSG = "RIGHT: " + RIGHT_KEY;
|
const std::string RIGHT_MSG = "RIGHT: " + RIGHT_KEY;
|
||||||
menu_text_->writeDX(TEXT_CENTER | TEXT_COLOR, PLAY_AREA_CENTER_X, 15 * TEXT_SIZE, RIGHT_MSG, 1, COLOR);
|
menu_text_->writeDX(TEXT_CENTER | TEXT_COLOR, PLAY_AREA_CENTER_X, 15 * TEXT_SIZE, RIGHT_MSG, 1, COLOR);
|
||||||
}
|
}
|
||||||
|
if (remap_step_ >= 3) {
|
||||||
|
const std::string JUMP_KEY = SDL_GetScancodeName(temp_keys_[2]);
|
||||||
|
const std::string JUMP_MSG = "JUMP: " + JUMP_KEY;
|
||||||
|
menu_text_->writeDX(TEXT_CENTER | TEXT_COLOR, PLAY_AREA_CENTER_X, 16 * TEXT_SIZE, JUMP_MSG, 1, COLOR);
|
||||||
|
}
|
||||||
|
|
||||||
// Mensaje de error si existe
|
// Mensaje de error si existe
|
||||||
if (!remap_error_message_.empty()) {
|
if (!remap_error_message_.empty()) {
|
||||||
menu_text_->writeDX(TEXT_CENTER | TEXT_COLOR, PLAY_AREA_CENTER_X, 17 * TEXT_SIZE, remap_error_message_, 1, ERROR_COLOR);
|
menu_text_->writeDX(TEXT_CENTER | TEXT_COLOR, PLAY_AREA_CENTER_X, 18 * TEXT_SIZE, remap_error_message_, 1, ERROR_COLOR);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Instrucciones para cancelar
|
|
||||||
menu_text_->writeDX(TEXT_CENTER | TEXT_COLOR, PLAY_AREA_CENTER_X, 19 * TEXT_SIZE, "(ESC TO CANCEL)", 1, COLOR);
|
|
||||||
}
|
}
|
||||||
@@ -41,17 +41,19 @@ class Title {
|
|||||||
};
|
};
|
||||||
|
|
||||||
enum class ControlsMenuState {
|
enum class ControlsMenuState {
|
||||||
MAIN, // Mostrar menu principal de controles
|
MAIN, // Mostrar menu principal de controles
|
||||||
KEYBOARD_REMAP, // Redefinir teclas del teclado
|
KEYBOARD_REMAP, // Redefinir teclas del teclado
|
||||||
JOYSTICK_REMAP, // Redefinir botones del joystick (futuro)
|
KEYBOARD_REMAP_COMPLETE,// Mostrar teclas definidas antes de guardar
|
||||||
|
JOYSTICK_REMAP, // Redefinir botones del joystick (futuro)
|
||||||
};
|
};
|
||||||
|
|
||||||
// --- Constantes de tiempo (en segundos) ---
|
// --- Constantes de tiempo (en segundos) ---
|
||||||
static constexpr float SHOW_LOADING_DURATION = 5.0F; // Tiempo mostrando loading screen (antes 500 frames)
|
static constexpr float SHOW_LOADING_DURATION = 5.0F; // Tiempo mostrando loading screen (antes 500 frames)
|
||||||
static constexpr float FADE_STEP_INTERVAL = 0.05F; // Intervalo entre pasos de fade (antes cada 4 frames)
|
static constexpr float FADE_STEP_INTERVAL = 0.05F; // Intervalo entre pasos de fade (antes cada 4 frames)
|
||||||
static constexpr float POST_FADE_DELAY = 1.0F; // Delay después del fade (pantalla en negro)
|
static constexpr float POST_FADE_DELAY = 1.0F; // Delay después del fade (pantalla en negro)
|
||||||
static constexpr float MAIN_MENU_IDLE_TIMEOUT = 20.0F; // Timeout para ir a créditos (antes 2200 frames)
|
static constexpr float MAIN_MENU_IDLE_TIMEOUT = 20.0F; // Timeout para ir a créditos (antes 2200 frames)
|
||||||
static constexpr float MARQUEE_SPEED = 100.0F; // Velocidad de marquesina (pixels/segundo)
|
static constexpr float KEYBOARD_REMAP_DISPLAY_DELAY = 2.0F; // Tiempo mostrando teclas definidas antes de guardar
|
||||||
|
static constexpr float MARQUEE_SPEED = 100.0F; // Velocidad de marquesina (pixels/segundo)
|
||||||
static constexpr float CHEEVOS_SCROLL_SPEED = 120.0F; // Velocidad de scroll de logros (pixels/segundo)
|
static constexpr float CHEEVOS_SCROLL_SPEED = 120.0F; // Velocidad de scroll de logros (pixels/segundo)
|
||||||
|
|
||||||
// --- Constantes de marquesina ---
|
// --- Constantes de marquesina ---
|
||||||
|
|||||||
Reference in New Issue
Block a user