Compare commits

...

2 Commits

Author SHA1 Message Date
a3cd404545 retocs en els fitxers de configuració 2025-08-16 09:44:06 +02:00
5c708fc60a eliminat codi mort 2025-08-16 09:33:40 +02:00
14 changed files with 54 additions and 70 deletions

View File

@@ -1,4 +1,4 @@
# Archivo de configuración de formaciones de globos
# Coffee Crisis Arcade Edition - Archivo de configuración de formaciones de globos
# Formato por línea: x, desp, y, vel_x, tipo, tamaño, retraso_tiempo_creacion
# Variables disponibles:
# X0_0, X0_50, X0_100, X1_0, X1_100, X2_0, X2_100, X3_0, X3_100

View File

@@ -1,4 +1,7 @@
## --- GAME ---
# Coffee Crisis Arcade Edition - Fichero de parametros
# Formato: PARAMETRO VALOR
# --- GAME ---
game.item_size 20 # Tamaño de los items del juego (en píxeles)
game.width 320 # Ancho de la resolución nativa del juego (en píxeles)
game.height 240 # Alto de la resolución nativa del juego (en píxeles)
@@ -11,7 +14,7 @@ game.name_entry_total_time 60 # Segundos totales para introducir el nombre
game.hit_stop false # Indica si debe haber un paro cuando el jugador es golpeado por un globo
game.hit_stop_ms 500 # Cantidad de milisegundos que dura el hit_stop
## --- FADE ---
# --- FADE ---
fade.color 1F2B30 # Color hexadecimal para el efecto de fundido
fade.num_squares_width 160 # Número de cuadrados en el eje X para el fundido
fade.num_squares_height 120 # Número de cuadrados en el eje Y para el fundido
@@ -20,7 +23,7 @@ fade.random_squares_mult 500 # Multiplicador para la velocidad de aparici
fade.post_duration 80 # Duración tras el fundido (frames)
fade.venetian_size 12 # Tamaño de las bandas para el efecto veneciano (en píxeles)
## --- SCOREBOARD ---
# --- SCOREBOARD ---
scoreboard.rect.x 0 # Posición X del marcador
scoreboard.rect.y 216 # Posición Y del marcador
scoreboard.rect.w 320 # Ancho del marcador
@@ -35,17 +38,17 @@ scoreboard.text_color1 FFFFFF # Color principal del texto del marcad
scoreboard.text_color2 FFFFFF # Color secundario del texto del marcador
scoreboard.skip_countdown_value 8 # Valor para saltar la cuenta atrás (segundos)
## --- TITLE ---
# --- TITLE ---
title.press_start_position 180 # Posición Y del texto "Press Start"
title.title_duration 800 # Duración de la pantalla de título (frames)
title.arcade_edition_position 123 # Posición Y del subtítulo "Arcade Edition"
title.title_c_c_position 80 # Posición Y del título principal
title.bg_color 41526F # Color de fondo en la sección titulo
## --- BACKGROUND ---
# --- BACKGROUND ---
background.attenuate_color FFFFFF00 # Color de atenuación del fondo (RGBA hexadecimal)
## --- BALLOONS ---
# --- BALLOONS ---
balloon.settings[0].vel 2.75f # Velocidad inicial del globo 1
balloon.settings[0].grav 0.09f # Gravedad aplicada al globo 1
balloon.settings[1].vel 3.70f # Velocidad inicial del globo 2
@@ -62,28 +65,28 @@ balloon.color[3] green # Color del globo que rebota
balloon.bouncing_sound false # Indica si los globos hacer sonido al rebotar
## --- NOTIFICATION ---
# --- NOTIFICATION ---
notification.pos_v TOP # Posición vertical de la notificación (TOP/BOTTOM)
notification.pos_h LEFT # Posición horizontal de la notificación (LEFT/RIGHT)
notification.sound false # ¿La notificación reproduce sonido?
notification.color 303030 # Color de fondo de la notificación (hexadecimal)
## --- SERVICE MENU ---
# --- SERVICE MENU ---
service_menu.title_color 99FF62 # Color del título del menú de servicio
service_menu.text_color FFFFFF # Color del texto del menú de servicio
service_menu.selected_color FFDC44 # Color de la opción seleccionada en el menú de servicio
service_menu.bg_color 003000F5 # Color de fondo del menú de servicio (RGBA hexadecimal)
service_menu.drop_shadow false # ¿El menú de servicio tiene sombra?
## --- INTRO ---
# --- INTRO ---
intro.bg_color 4664BD # Color de fondo de la intro
intro.card_color CBDBFC # Color de las tarjetas en la intro
intro.shadow_color 00000080 # Color de la sombra de las tarjetas en la intro
intro.text_distance_from_bottom 48 # Posicion del texto
## --- DEBUG ---
# --- DEBUG ---
debug.color 00FFFF # Color para elementos de depuración
## --- RESOURCE ---
# --- RESOURCE ---
resource.color FFFFFF # Color de recurso 1
resource.color FFFFFF # Color de recurso 2

View File

@@ -1,4 +1,7 @@
## --- GAME ---
# Coffee Crisis Arcade Edition - Fichero de parametros
# Formato: PARAMETRO VALOR
# --- GAME ---
game.item_size 20 # Tamaño de los items del juego (en píxeles)
game.width 320 # Ancho de la resolución nativa del juego (en píxeles)
game.height 256 # Alto de la resolución nativa del juego (en píxeles)
@@ -11,7 +14,7 @@ game.name_entry_total_time 60 # Segundos totales para introducir el nombre
game.hit_stop false # Indica si debe haber un paro cuando el jugador es golpeado por un globo
game.hit_stop_ms 500 # Cantidad de milisegundos que dura el hit_stop
## --- FADE ---
# --- FADE ---
fade.color 1F2B30 # Color hexadecimal para el efecto de fundido
fade.num_squares_width 160 # Número de cuadrados en el eje X para el fundido
fade.num_squares_height 128 # Número de cuadrados en el eje Y para el fundido
@@ -20,7 +23,7 @@ fade.random_squares_mult 500 # Multiplicador para la velocidad de aparici
fade.post_duration 80 # Duración tras el fundido (frames)
fade.venetian_size 12 # Tamaño de las bandas para el efecto veneciano (en píxeles)
## --- SCOREBOARD ---
# --- SCOREBOARD ---
scoreboard.rect.x 0 # Posición X del marcador
scoreboard.rect.y 216 # Posición Y del marcador
scoreboard.rect.w 320 # Ancho del marcador
@@ -35,17 +38,17 @@ scoreboard.text_color1 FFFFFF # Color principal del texto del marcad
scoreboard.text_color2 FFFFFF # Color secundario del texto del marcador
scoreboard.skip_countdown_value 8 # Valor para saltar la cuenta atrás (segundos)
## --- TITLE ---
# --- TITLE ---
title.press_start_position 180 # Posición Y del texto "Press Start"
title.title_duration 800 # Duración de la pantalla de título (frames)
title.arcade_edition_position 123 # Posición Y del subtítulo "Arcade Edition"
title.title_c_c_position 80 # Posición Y del título principal
title.bg_color 41526F # Color de fondo en la sección titulo
## --- BACKGROUND ---
# --- BACKGROUND ---
background.attenuate_color FFFFFF00 # Color de atenuación del fondo (RGBA hexadecimal)
## --- BALLOONS ---
# --- BALLOONS ---
balloon.settings[0].vel 2.75f # Velocidad inicial del globo 1
balloon.settings[0].grav 0.09f # Gravedad aplicada al globo 1
balloon.settings[1].vel 3.70f # Velocidad inicial del globo 2
@@ -62,28 +65,28 @@ balloon.color[3] green # Color del globo que rebota
balloon.bouncing_sound false # Indica si los globos hacer sonido al rebotar
## --- NOTIFICATION ---
# --- NOTIFICATION ---
notification.pos_v TOP # Posición vertical de la notificación (TOP/BOTTOM)
notification.pos_h LEFT # Posición horizontal de la notificación (LEFT/RIGHT)
notification.sound false # ¿La notificación reproduce sonido?
notification.color 303030 # Color de fondo de la notificación (hexadecimal)
## --- SERVICE MENU ---
# --- SERVICE MENU ---
service_menu.title_color 99FF62 # Color del título del menú de servicio
service_menu.text_color FFFFFF # Color del texto del menú de servicio
service_menu.selected_color FFDC44 # Color de la opción seleccionada en el menú de servicio
service_menu.bg_color 000F00F5 # Color de fondo del menú de servicio (RGBA hexadecimal)
service_menu.drop_shadow false # ¿El menú de servicio tiene sombra?
## --- INTRO ---
# --- INTRO ---
intro.bg_color 4664BD # Color de fondo de la intro
intro.card_color CBDBFC # Color de las tarjetas en la intro
intro.shadow_color 00000080 # Color de la sombra de las tarjetas en la intro
intro.text_distance_from_bottom 48 # Posicion del texto
## --- DEBUG ---
# --- DEBUG ---
debug.color 00FFFF # Color para elementos de depuración
## --- RESOURCE ---
# --- RESOURCE ---
resource.color FFFFFF # Color de recurso 1
resource.color FFFFFF # Color de recurso 2

View File

@@ -1,4 +1,4 @@
# Archivo de configuración de pools de formaciones de globos
# Coffee Crisis Arcade Edition - Archivo de configuración de pools de formaciones de globos
# Formato: POOL: <id> FORMATIONS: <id1>, <id2>, <id3>, ...
# Los IDs de formación pueden repetirse
# Los pools no necesitan estar ordenados ni ser consecutivos

View File

@@ -1,4 +1,4 @@
# Archivo de configuración de fases
# Coffee Crisis Arcade Edition - Archivo de configuración de fases
# Formato: power_to_complete,min_menace,max_menace,name
# Líneas que empiezan con # son comentarios y se ignoran
@@ -7,13 +7,13 @@
300, 15, 23, Primeros pasos
# Fases intermedias - Incremento de dificultad
600, 19, 27, Intensificación
600, 19, 27, Persistencia
600, 23, 31, Desafío medio
600, 23, 31, Resistencia
400, 19, 27, Intensificación
400, 19, 27, Persistencia
400, 23, 31, Desafío medio
400, 23, 31, Resistencia
# Fases avanzadas - Desafío final
650, 27, 35, Aproximación final
750, 27, 35, Penúltimo obstáculo
850, 31, 39, Clímax
600, 27, 35, Aproximación final
600, 27, 35, Penúltimo obstáculo
700, 31, 39, Clímax
950, 35, 47, Maestría

View File

@@ -75,9 +75,6 @@ void Player::init() {
// Establece la posición del sprite
player_sprite_->clear();
shiftSprite();
// Selecciona un frame para pintar
// player_sprite_->setCurrentAnimation("stand");
}
// Actua en consecuencia de la entrada recibida
@@ -228,8 +225,6 @@ void Player::handleRollingGroundCollision() {
return;
}
// const float VEL_Y = player_sprite_->getVelY();
// if (VEL_Y >= 0.0F && VEL_Y < 2.0F) {
if (player_sprite_->getVelY() < 2.0F) {
handleRollingStop();
} else {

View File

@@ -140,7 +140,6 @@ class Resource {
void loadEssentialResources(); // Carga recursos esenciales en modo lazy
void loadEssentialTextures(); // Carga solo las texturas esenciales (fuentes)
void loadTextFilesQuiet(); // Carga ficheros de texto sin mostrar progreso (para modo lazy)
// void addPalettes(); // Añade paletas a las texturas
void createPlayerTextures(); // Crea las texturas de jugadores con todas sus variantes de paleta
void createTextTextures(); // Crea las texturas a partir de los datos cargados
void createText(); // Crea los objetos de texto

View File

@@ -310,9 +310,6 @@ void Scoreboard::renderShowNameMode(size_t panel_index) {
/* TEXTO CENTRADO */
text_scoreboard_->writeDX(Text::CENTER | Text::COLOR, slot4_4_.x, slot4_4_.y, record_name_.at(panel_index), 1, getColorLikeKnightRider(name_colors_, loop_counter_ / 5));
/* TEXTO A LA IZQUIERDA */
// text_scoreboard_->writeColored(enter_name_pos_.x, enter_name_pos_.y, record_name_.at(panelIndex), getColorLikeKnightRider(name_colors_, loop_counter_ / 5));
}
void Scoreboard::renderGameCompletedMode(size_t panel_index) {

View File

@@ -258,7 +258,6 @@ void Credits::fillCanvas() {
SDL_RenderFillRect(Screen::get()->getRenderer(), &right_black_rect_);
// Dibuja el rectangulo rojo
// SDL_SetRenderDrawColor(Screen::get()->getRenderer(), 0xFF, 0, 0, 0xFF);
const Color COLOR = color_.LIGHTEN();
SDL_SetRenderDrawColor(Screen::get()->getRenderer(), COLOR.r, COLOR.g, COLOR.b, 0xFF);
SDL_RenderRect(Screen::get()->getRenderer(), &border_rect_);
@@ -474,9 +473,6 @@ void Credits::resetVolume() const {
// Cambia el color del fondo
void Credits::cycleColors() {
// constexpr int UPPER_LIMIT = 255; // Límite superior
// constexpr int LOWER_LIMIT = 80; // Límite inferior
constexpr int UPPER_LIMIT = 140; // Límite superior
constexpr int LOWER_LIMIT = 30; // Límite inferior

View File

@@ -424,7 +424,6 @@ void Game::updateGameStateCompleted() {
// Comprueba el estado del juego
void Game::checkState() {
// if (state_ != State::COMPLETED && Stage::number == 10) {
if (state_ != State::COMPLETED && stage_manager_->isGameCompleted()) {
setState(State::COMPLETED);
background_->setState(Background::State::COMPLETED);
@@ -1478,7 +1477,6 @@ void Game::initDemo(Player::Id player_id) {
constexpr auto NUM_DEMOS = 3;
const auto DEMO = rand() % NUM_DEMOS;
constexpr std::array<int, NUM_DEMOS> STAGES = {0, 3, 5};
// Stage::number = STAGES[DEMO];
stage_manager_->jumpToStage(STAGES.at(DEMO));
}
@@ -1735,7 +1733,6 @@ void Game::updateGameStateShowingGetReadyMessage() {
void Game::updateGameStatePlaying() {
#ifdef _DEBUG
if (auto_pop_balloons_) {
// Stage::addPower(5);
stage_manager_->addPower(5);
}
#endif
@@ -1884,7 +1881,6 @@ void Game::handleDebugEvents(const SDL_Event &event) {
case SDLK_1: // Crea una powerball
{
balloon_manager_->createPowerBall();
// throwCoffee(players_.at(0)->getPosX() + (players_.at(0)->getWidth() / 2), players_.at(0)->getPosY() + (players_.at(0)->getHeight() / 2));
break;
}
case SDLK_2: // Activa o desactiva la aparición de globos

View File

@@ -190,7 +190,7 @@ void Intro::updateScene5() {
// Acaba la ultima imagen
if (card_sprites_.at(5)->hasFinished() && texts_.at(8)->hasFinished()) {
state_ = IntroState::POST;
state_ = State::POST;
state_start_time_ = SDL_GetTicks();
}
}
@@ -215,13 +215,13 @@ void Intro::update() {
tiled_bg_->update(); // Actualiza el fondo
switch (state_) {
case IntroState::SCENES:
case State::SCENES:
updateSprites();
updateTexts();
updateScenes();
break;
case IntroState::POST:
case State::POST:
updatePostState();
break;
}
@@ -240,13 +240,13 @@ void Intro::render() {
tiled_bg_->render(); // Dibuja el fondo
switch (state_) {
case IntroState::SCENES: {
case State::SCENES: {
renderTextRect();
renderSprites();
renderTexts();
break;
}
case IntroState::POST:
case State::POST:
break;
}
@@ -479,7 +479,7 @@ void Intro::updatePostState() {
const Uint32 ELAPSED_TIME = SDL_GetTicks() - state_start_time_;
switch (post_state_) {
case IntroPostState::STOP_BG:
case PostState::STOP_BG:
// EVENTO: Detiene el fondo después de 1 segundo
if (ELAPSED_TIME >= 1000) {
tiled_bg_->stopGracefully();
@@ -493,12 +493,12 @@ void Intro::updatePostState() {
// Cambia de estado si el fondo se ha detenido y recuperado el color
if (tiled_bg_->isStopped() && bg_color_.IS_EQUAL_TO(param.title.bg_color)) {
post_state_ = IntroPostState::END;
post_state_ = PostState::END;
state_start_time_ = SDL_GetTicks();
}
break;
case IntroPostState::END:
case PostState::END:
// Finaliza la intro después de 1 segundo
if (ELAPSED_TIME >= 1000) {
Audio::get()->stopMusic();

View File

@@ -28,12 +28,12 @@ class Intro {
private:
// --- Estados internos ---
enum class IntroState {
enum class State {
SCENES,
POST,
};
enum class IntroPostState {
enum class PostState {
STOP_BG,
END,
};
@@ -43,15 +43,14 @@ class Intro {
std::vector<std::unique_ptr<PathSprite>> shadow_sprites_; // Vector con los sprites inteligentes para las sombras
std::vector<std::unique_ptr<Writer>> texts_; // Textos de la intro
std::unique_ptr<TiledBG> tiled_bg_; // Fondo en mosaico
// std::unique_ptr<Sprite> shadow_square_for_text_; // Sprite
// --- Variables ---
Uint64 ticks_ = 0; // Contador de ticks para ajustar la velocidad del programa
int scene_ = 0; // Indica qué escena está activa
IntroState state_ = IntroState::SCENES; // Estado principal de la intro
IntroPostState post_state_ = IntroPostState::STOP_BG; // Estado POST
Uint32 state_start_time_; // Tiempo de inicio del estado actual
Color bg_color_ = param.intro.bg_color; // Color de fondo
Uint64 ticks_ = 0; // Contador de ticks para ajustar la velocidad del programa
int scene_ = 0; // Indica qué escena está activa
State state_ = State::SCENES; // Estado principal de la intro
PostState post_state_ = PostState::STOP_BG; // Estado POST
Uint32 state_start_time_; // Tiempo de inicio del estado actual
Color bg_color_ = param.intro.bg_color; // Color de fondo
// --- Métodos internos ---
void update(); // Actualiza las variables del objeto

View File

@@ -73,8 +73,6 @@ auto Texture::loadFromFile(const std::string &file_path) -> bool {
int pitch;
SDL_PixelFormat pixel_format;
// STBI_rgb_alpha (RGBA)
pitch = 4 * width;
pixel_format = SDL_PIXELFORMAT_RGBA32;

View File

@@ -127,7 +127,6 @@ void ServiceMenu::moveBack() {
}
// Si estamos en la pantalla principal, llamamos a toggle() para cerrar con animación.
// toggle() ya reproduce el sonido, por lo que no es necesario aquí.
toggle();
}
@@ -566,7 +565,6 @@ void ServiceMenu::handleEvent(const SDL_Event &event) {
// Si DefineButtons está activo, que maneje todos los eventos
if (define_buttons_ && define_buttons_->isEnabled()) {
define_buttons_->handleEvents(event);
// return; // No procesar otros eventos mientras DefineButtons está activo
}
}