Compare commits
2 Commits
960ee367df
...
a3cd404545
| Author | SHA1 | Date | |
|---|---|---|---|
| a3cd404545 | |||
| 5c708fc60a |
@@ -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
|
||||
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
@@ -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 {
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user