Fase 1e: cierre de naming sweep (#pragma once, locals, comentarios castellano)
Tres tareas de pulido para cerrar la Fase 1 por completo: #pragma once uniforme: - sdl_manager.hpp y game_scene.hpp pasan de #ifndef/#define guards a #pragma once. Los archivos externos (stb_vorbis.h, fkyaml_node.hpp) se mantienen intactos (codigo de terceros). Variables locales y parametros restantes (catalan -> ingles): - fitxer -> file, moviment -> movement, inici -> start - comptador -> counter, escalada -> scaled - missatges -> messages, llista -> list - alçada -> height, amplada -> width, llargada -> length - origen -> origin, distancia -> distance, valor -> value, desti -> target - neteja -> clear, presenta -> present (SDLManager) - total_enemics -> total_enemies, configurar -> configure, iniciar -> start Comentarios catalan -> castellano: - Cabeceras de fichero actualizadas con nombres nuevos (escena_joc.hpp -> game_scene.hpp, etc.) - Palabras tecnicas: trasllacio->traslacion, col-lisio->colision, inicialitzacio->inicializacion, posicio->posicion, rotacio->rotacion, velocitat->velocidad, acceleracio->aceleracion, explosio->explosion, renderitzat->renderizado, calcul->calculo, transicio->transicion, comprovacio->comprobacion, substitucio->sustitucion, utilitzacio->utilizacion, opcio->opcion, configuracio->configuracion, funcio->funcion, distancia, animacio->animacion - Determinantes y conectores: aquest->este, aquesta->esta, amb->con, sense->sin, pero->pero, mai->nunca, nomes->solo, tambe->tambien, sempre->siempre, ja->ya, mateix->mismo, vegada->vez, dintre->dentro, fora->fuera, dreta->derecha, esquerra->izquierda, sortir->salir, sortida->salida, petit->pequeno, gran->grande, nou->nuevo, vell->viejo, molt->mucho, els->los, les->las, totes les->todas las, d'->de, com->como, quan->cuando, mentre->mientras, despres->despues, abans->antes, durant->durante, fins->hasta, encara->aun, llavors->entonces, aixi->asi, perque->porque - Sustantivos: classe->clase, metode->metodo, parametre->parametro, versio->version, entitat->entidad, joc->juego, nivell->nivel, enemic->enemigo, naus->naves, bales->balas, fitxer->archivo, pentagon->pentagono, pun- tuacio->puntuacion, flotant->flotante, titol->titulo, objectiu->objetivo, mostra->muestra, tipus->tipo Strings literales preservados en valenciano segun decision del usuario: el texto del HUD del juego (puntuaciones, mensajes en pantalla, archivo de config) se mantiene en valenciano original. 70 fitxers tocats, +1117 / -1123. Compila i enllaca. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
// escena_logo.cpp - Implementació de l'escena logo
|
||||
// logo_scene.cpp - Implementació de l'escena logo
|
||||
// © 2025 Port a C++20
|
||||
|
||||
#include "logo_scene.hpp"
|
||||
@@ -22,8 +22,8 @@ using SceneManager::SceneContext;
|
||||
using SceneType = SceneContext::SceneType;
|
||||
using Option = SceneContext::Option;
|
||||
|
||||
// Helper: calcular el progrés individual d'una lletra
|
||||
// en funció del progrés global (efecte seqüencial)
|
||||
// Helper: calcular el progrés individual de una lletra
|
||||
// en función del progrés global (efecte seqüencial)
|
||||
static float calcular_progress_letra(size_t letra_index, size_t num_letras, float global_progress, float threshold) {
|
||||
if (num_letras == 0) {
|
||||
return 1.0F;
|
||||
@@ -37,7 +37,7 @@ static float calcular_progress_letra(size_t letra_index, size_t num_letras, floa
|
||||
|
||||
// Interpolar progrés
|
||||
if (global_progress < start) {
|
||||
return 0.0F; // Encara no ha començat
|
||||
return 0.0F; // Aún no ha començat
|
||||
}
|
||||
if (global_progress >= end) {
|
||||
return 1.0F; // Completament apareguda
|
||||
@@ -55,7 +55,7 @@ LogoScene::LogoScene(SDLManager& sdl, SceneContext& context)
|
||||
temps_des_ultima_explosio_(0.0F) {
|
||||
std::cout << "SceneType Logo: Inicialitzant...\n";
|
||||
|
||||
// Consumir opcions (LOGO no processa opcions actualment)
|
||||
// Consumir opciones (LOGO no processa opciones actualment)
|
||||
auto option = context_.consumeOption();
|
||||
(void)option; // Suprimir warning
|
||||
|
||||
@@ -64,9 +64,9 @@ LogoScene::LogoScene(SDLManager& sdl, SceneContext& context)
|
||||
}
|
||||
|
||||
LogoScene::~LogoScene() {
|
||||
// Aturar tots els sons i la música
|
||||
// Aturar todos los sons y la música
|
||||
Audio::get()->stopAllSounds();
|
||||
std::cout << "SceneType Logo: Sons aturats\n";
|
||||
std::cout << "SceneType Logo: Sons parados\n";
|
||||
}
|
||||
|
||||
void LogoScene::run() {
|
||||
@@ -79,16 +79,16 @@ void LogoScene::run() {
|
||||
float delta_time = (current_time - last_time) / 1000.0F;
|
||||
last_time = current_time;
|
||||
|
||||
// Limitar delta_time per evitar grans salts
|
||||
// Limitar delta_time per evitar grandes salts
|
||||
delta_time = std::min(delta_time, 0.05F);
|
||||
|
||||
// Actualitzar comptador de FPS
|
||||
// Actualitzar counter de FPS
|
||||
sdl_.updateFPS(delta_time);
|
||||
|
||||
// Actualitzar visibilitat del cursor (auto-ocultar)
|
||||
Mouse::updateCursorVisibility();
|
||||
|
||||
// Actualitzar sistema d'input ABANS del event loop
|
||||
// Actualitzar sistema de input ABANS del event loop
|
||||
Input::get()->update();
|
||||
|
||||
// Processar events SDL
|
||||
@@ -103,17 +103,17 @@ void LogoScene::run() {
|
||||
continue;
|
||||
}
|
||||
|
||||
// Processar events de l'escena (qualsevol tecla/clic salta al joc)
|
||||
// Processar events de l'escena (qualsevol tecla/clic salta al juego)
|
||||
processar_events(event);
|
||||
}
|
||||
|
||||
// Actualitzar lògica
|
||||
// Actualitzar lógica
|
||||
update(delta_time);
|
||||
|
||||
// Actualitzar colors oscil·lats (efecte verd global)
|
||||
sdl_.updateColors(delta_time);
|
||||
|
||||
// Actualitzar context de renderitzat (factor d'scale global)
|
||||
// Actualitzar context de renderizado (factor de scale global)
|
||||
sdl_.updateRenderingContext();
|
||||
|
||||
// Dibuixar
|
||||
@@ -126,8 +126,8 @@ void LogoScene::run() {
|
||||
void LogoScene::inicialitzar_lletres() {
|
||||
using namespace Graphics;
|
||||
|
||||
// Llista de fitxers .shp (A repetida per a les dues A's)
|
||||
std::vector<std::string> fitxers = {
|
||||
// Llista de archivos .shp (A repetida para las dues A's)
|
||||
std::vector<std::string> archivos = {
|
||||
"logo/letra_j.shp",
|
||||
"logo/letra_a.shp",
|
||||
"logo/letra_i.shp",
|
||||
@@ -138,13 +138,13 @@ void LogoScene::inicialitzar_lletres() {
|
||||
"logo/letra_e.shp",
|
||||
"logo/letra_s.shp"};
|
||||
|
||||
// Pas 1: Carregar totes les formes i calcular amplades
|
||||
// Pas 1: Carregar todas las formes i calcular amplades
|
||||
float ancho_total = 0.0F;
|
||||
|
||||
for (const auto& fitxer : fitxers) {
|
||||
auto shape = ShapeLoader::load(fitxer);
|
||||
for (const auto& file : archivos) {
|
||||
auto shape = ShapeLoader::load(file);
|
||||
if (!shape || !shape->isValid()) {
|
||||
std::cerr << "[LogoScene] Error carregant " << fitxer << '\n';
|
||||
std::cerr << "[LogoScene] Error carregant " << file << '\n';
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -161,23 +161,23 @@ void LogoScene::inicialitzar_lletres() {
|
||||
|
||||
float ancho_sin_escalar = max_x - min_x;
|
||||
|
||||
// IMPORTANT: Escalar ancho i offset amb ESCALA_FINAL
|
||||
// per que les posicions finals coincideixin amb la mida real de les lletres
|
||||
// IMPORTANT: Escalar ancho i offset con ESCALA_FINAL
|
||||
// per que las posicions finals coincideixin con la mida real de las lletres
|
||||
float ancho = ancho_sin_escalar * ESCALA_FINAL;
|
||||
float offset_centre = (shape->getCenter().x - min_x) * ESCALA_FINAL;
|
||||
|
||||
lletres_.push_back({shape,
|
||||
{.x = 0.0F, .y = 0.0F}, // Posició es calcularà després
|
||||
{.x = 0.0F, .y = 0.0F}, // Posición es calcularà después
|
||||
ancho,
|
||||
offset_centre});
|
||||
|
||||
ancho_total += ancho;
|
||||
}
|
||||
|
||||
// Pas 2: Afegir espaiat entre lletres
|
||||
// Pas 2: Añadir espaiat entre lletres
|
||||
ancho_total += ESPAI_ENTRE_LLETRES * (lletres_.size() - 1);
|
||||
|
||||
// Pas 3: Calcular posició inicial (centrat horitzontal)
|
||||
// Pas 3: Calcular posición inicial (centrat horitzontal)
|
||||
constexpr float PANTALLA_ANCHO = 640.0F;
|
||||
constexpr float PANTALLA_ALTO = 480.0F;
|
||||
|
||||
@@ -188,13 +188,13 @@ void LogoScene::inicialitzar_lletres() {
|
||||
float x_actual = x_inicial;
|
||||
|
||||
for (auto& lletra : lletres_) {
|
||||
// Posicionar el centre de la shape (shape_centre) en pantalla
|
||||
// Posicionar el centro de la shape (shape_centre) en pantalla
|
||||
// Usar offset_centre en lloc de ancho/2 perquè shape_centre
|
||||
// pot no estar exactament al mig del bounding box
|
||||
lletra.position.x = x_actual + lletra.offset_centre;
|
||||
lletra.position.y = y_centre;
|
||||
|
||||
// Avançar per a següent lletra
|
||||
// Avançar para següent lletra
|
||||
x_actual += lletra.ancho + ESPAI_ENTRE_LLETRES;
|
||||
}
|
||||
|
||||
@@ -206,12 +206,12 @@ void LogoScene::canviar_estat(AnimationState nou_estat) {
|
||||
estat_actual_ = nou_estat;
|
||||
temps_estat_actual_ = 0.0F; // Reset time
|
||||
|
||||
// Inicialitzar state d'explosió
|
||||
// Inicialitzar state de explosión
|
||||
if (nou_estat == AnimationState::EXPLOSION) {
|
||||
lletra_explosio_index_ = 0;
|
||||
temps_des_ultima_explosio_ = 0.0F;
|
||||
|
||||
// Generar ordre aleatori d'explosions
|
||||
// Generar ordre aleatori de explosions
|
||||
ordre_explosio_.clear();
|
||||
for (size_t i = 0; i < lletres_.size(); i++) {
|
||||
ordre_explosio_.push_back(i);
|
||||
@@ -228,14 +228,14 @@ void LogoScene::canviar_estat(AnimationState nou_estat) {
|
||||
}
|
||||
|
||||
bool LogoScene::totes_lletres_completes() const {
|
||||
// Quan global_progress = 1.0, totes les lletres tenen letra_progress = 1.0
|
||||
// Cuando global_progress = 1.0, todas las lletres tenen letra_progress = 1.0
|
||||
return temps_estat_actual_ >= DURACIO_ZOOM;
|
||||
}
|
||||
|
||||
void LogoScene::actualitzar_explosions(float delta_time) {
|
||||
temps_des_ultima_explosio_ += delta_time;
|
||||
|
||||
// Comprovar si és el moment d'explode la següent lletra
|
||||
// Comprovar si es el moment de explode la següent lletra
|
||||
if (temps_des_ultima_explosio_ >= DELAY_ENTRE_EXPLOSIONS) {
|
||||
if (lletra_explosio_index_ < lletres_.size()) {
|
||||
// Explotar lletra actual (en ordre aleatori)
|
||||
@@ -244,12 +244,12 @@ void LogoScene::actualitzar_explosions(float delta_time) {
|
||||
|
||||
debris_manager_->explode(
|
||||
lletra.shape, // Forma a explode
|
||||
lletra.position, // Posició
|
||||
0.0F, // Angle (sense rotació)
|
||||
lletra.position, // Posición
|
||||
0.0F, // Angle (sin rotación)
|
||||
ESCALA_FINAL, // Escala (lletres a scale final)
|
||||
VELOCITAT_EXPLOSIO, // Velocitat base
|
||||
VELOCITAT_EXPLOSIO, // Velocidad base
|
||||
1.0F, // Brightness màxim (per defecte)
|
||||
{.x = 0.0F, .y = 0.0F} // Sense velocity (per defecte)
|
||||
{.x = 0.0F, .y = 0.0F} // Sin velocity (per defecte)
|
||||
);
|
||||
|
||||
std::cout << "[LogoScene] Explota lletra " << lletra_explosio_index_ << "\n";
|
||||
@@ -258,7 +258,7 @@ void LogoScene::actualitzar_explosions(float delta_time) {
|
||||
lletra_explosio_index_++;
|
||||
temps_des_ultima_explosio_ = 0.0F;
|
||||
} else {
|
||||
// Totes les lletres han explotat, transició a POST_EXPLOSION
|
||||
// Todas las lletres han explotat, transición a POST_EXPLOSION
|
||||
canviar_estat(AnimationState::POST_EXPLOSION);
|
||||
}
|
||||
}
|
||||
@@ -275,7 +275,7 @@ void LogoScene::update(float delta_time) {
|
||||
break;
|
||||
|
||||
case AnimationState::ANIMATION: {
|
||||
// Reproduir so per cada lletra quan comença a aparèixer
|
||||
// Reproduir so per cada lletra cuando comença a aparèixer
|
||||
float global_progress = std::min(temps_estat_actual_ / DURACIO_ZOOM, 1.0F);
|
||||
|
||||
for (size_t i = 0; i < lletres_.size() && i < so_reproduit_.size(); i++) {
|
||||
@@ -286,7 +286,7 @@ void LogoScene::update(float delta_time) {
|
||||
global_progress,
|
||||
THRESHOLD_LETRA);
|
||||
|
||||
// Reproduir so quan la lletra comença a aparèixer (progress > 0)
|
||||
// Reproduir so cuando la lletra comença a aparèixer (progress > 0)
|
||||
if (letra_progress > 0.0F) {
|
||||
Audio::get()->playSound(Defaults::Sound::LOGO, Audio::Group::GAME);
|
||||
so_reproduit_[i] = true;
|
||||
@@ -312,7 +312,7 @@ void LogoScene::update(float delta_time) {
|
||||
|
||||
case AnimationState::POST_EXPLOSION:
|
||||
if (temps_estat_actual_ >= DURACIO_POST_EXPLOSION) {
|
||||
// Transició a pantalla de títol
|
||||
// Transición a pantalla de título
|
||||
context_.setNextScene(SceneType::TITLE);
|
||||
SceneManager::actual = SceneType::TITLE;
|
||||
}
|
||||
@@ -325,21 +325,21 @@ void LogoScene::update(float delta_time) {
|
||||
SceneManager::actual = SceneType::TITLE;
|
||||
}
|
||||
|
||||
// Actualitzar animacions de debris
|
||||
// Actualitzar animaciones de debris
|
||||
debris_manager_->update(delta_time);
|
||||
}
|
||||
|
||||
void LogoScene::draw() {
|
||||
// Fons negre
|
||||
sdl_.neteja(0, 0, 0);
|
||||
sdl_.clear(0, 0, 0);
|
||||
|
||||
// PRE_ANIMATION: Només pantalla negra
|
||||
// PRE_ANIMATION: Solo pantalla negra
|
||||
if (estat_actual_ == AnimationState::PRE_ANIMATION) {
|
||||
sdl_.presenta();
|
||||
return; // No renderitzar lletres
|
||||
sdl_.present();
|
||||
return; // No renderizar lletres
|
||||
}
|
||||
|
||||
// ANIMATION o POST_ANIMATION: Dibuixar lletres amb animació
|
||||
// ANIMATION o POST_ANIMATION: Dibuixar lletres con animación
|
||||
if (estat_actual_ == AnimationState::ANIMATION ||
|
||||
estat_actual_ == AnimationState::POST_ANIMATION) {
|
||||
float global_progress =
|
||||
@@ -383,15 +383,15 @@ void LogoScene::draw() {
|
||||
}
|
||||
}
|
||||
|
||||
// EXPLOSION: Dibuixar només lletres que encara no han explotat
|
||||
// EXPLOSION: Dibuixar solo lletres que aún no han explotat
|
||||
if (estat_actual_ == AnimationState::EXPLOSION) {
|
||||
// Crear conjunt de lletres ja explotades
|
||||
// Crear conjunt de lletres ya explotades
|
||||
std::set<size_t> explotades;
|
||||
for (size_t i = 0; i < lletra_explosio_index_; i++) {
|
||||
explotades.insert(ordre_explosio_[i]);
|
||||
}
|
||||
|
||||
// Dibuixar només lletres que NO han explotat
|
||||
// Dibuixar solo lletres que NO han explotat
|
||||
for (size_t i = 0; i < lletres_.size(); i++) {
|
||||
if (!explotades.contains(i)) {
|
||||
const auto& lletra = lletres_[i];
|
||||
@@ -407,12 +407,12 @@ void LogoScene::draw() {
|
||||
}
|
||||
}
|
||||
|
||||
// POST_EXPLOSION: No draw lletres, només debris (a baix)
|
||||
// POST_EXPLOSION: No draw lletres, solo debris (a baix)
|
||||
|
||||
// Sempre draw debris (si n'hi ha d'active)
|
||||
// Siempre draw debris (si n'hay de active)
|
||||
debris_manager_->draw();
|
||||
|
||||
sdl_.presenta();
|
||||
sdl_.present();
|
||||
}
|
||||
|
||||
auto LogoScene::checkSkipButtonPressed() -> bool {
|
||||
|
||||
Reference in New Issue
Block a user