From 2f3c8cada9fe1b5a24108a628ee2dec90cd8fd70 Mon Sep 17 00:00:00 2001 From: Sergio Valor Martinez Date: Tue, 8 Nov 2022 10:17:55 +0100 Subject: [PATCH] Cambio de paleta en los finales --- source/director.cpp | 12 ++++++++- source/ending.cpp | 66 ++++++++++++++++++++++++++++++++------------- source/ending.h | 3 +++ source/ending2.cpp | 60 +++++++++++++++++++++++++++-------------- source/ending2.h | 3 +++ 5 files changed, 104 insertions(+), 40 deletions(-) diff --git a/source/director.cpp b/source/director.cpp index 835f119..db0c7ce 100644 --- a/source/director.cpp +++ b/source/director.cpp @@ -9,7 +9,7 @@ Director::Director(int argc, char *argv[]) section.name = SECTION_PROG_LOGO; section.subsection = SUBSECTION_LOGO_TO_INTRO; - section.name = SECTION_PROG_GAME; + section.name = SECTION_PROG_ENDING2; // Crea e inicializa las opciones del programa iniOptions(); @@ -309,10 +309,15 @@ void Director::loadResources(section_t section) // Texturas std::vector textureList; textureList.push_back("ending1.png"); + textureList.push_back("ending1_zxarne.png"); textureList.push_back("ending2.png"); + textureList.push_back("ending2_zxarne.png"); textureList.push_back("ending3.png"); + textureList.push_back("ending3_zxarne.png"); textureList.push_back("ending4.png"); + textureList.push_back("ending4_zxarne.png"); textureList.push_back("ending5.png"); + textureList.push_back("ending5_zxarne.png"); textureList.push_back("smb2.png"); resource->loadTextures(textureList); @@ -1248,10 +1253,15 @@ bool Director::setFileList() // Ending asset->add("/data/ending/ending1.png", t_bitmap); + asset->add("/data/ending/ending1_zxarne.png", t_bitmap); asset->add("/data/ending/ending2.png", t_bitmap); + asset->add("/data/ending/ending2_zxarne.png", t_bitmap); asset->add("/data/ending/ending3.png", t_bitmap); + asset->add("/data/ending/ending3_zxarne.png", t_bitmap); asset->add("/data/ending/ending4.png", t_bitmap); + asset->add("/data/ending/ending4_zxarne.png", t_bitmap); asset->add("/data/ending/ending5.png", t_bitmap); + asset->add("/data/ending/ending5_zxarne.png", t_bitmap); // Credits asset->add("/data/credits/shine.png", t_bitmap); diff --git a/source/ending.cpp b/source/ending.cpp index 1ca76b0..2bda162 100644 --- a/source/ending.cpp +++ b/source/ending.cpp @@ -191,15 +191,7 @@ void Ending::checkEventHandler() break; case SDL_SCANCODE_F5: - // switchPalette(); - break; - - case SDL_SCANCODE_RIGHT: - ++scene %= 5; - break; - - case SDL_SCANCODE_LEFT: - --scene %= 5; + switchPalette(); break; default: @@ -319,13 +311,24 @@ void Ending::iniTexts() void Ending::iniPics() { // Vector con las rutas y la posición - std::vector texts; + std::vector pics; - texts.push_back({"ending1.png", 48}); - texts.push_back({"ending2.png", 26}); - texts.push_back({"ending3.png", 29}); - texts.push_back({"ending4.png", 63}); - texts.push_back({"ending5.png", 53}); + if (options->palette == p_zxspectrum) + { + pics.push_back({"ending1.png", 48}); + pics.push_back({"ending2.png", 26}); + pics.push_back({"ending3.png", 29}); + pics.push_back({"ending4.png", 63}); + pics.push_back({"ending5.png", 53}); + } + else + { + pics.push_back({"ending1_zxarne.png", 48}); + pics.push_back({"ending2_zxarne.png", 26}); + pics.push_back({"ending3_zxarne.png", 29}); + pics.push_back({"ending4_zxarne.png", 63}); + pics.push_back({"ending5_zxarne.png", 53}); + } // Crea los sprites for (auto sp : spritePics) @@ -336,18 +339,18 @@ void Ending::iniPics() } spritePics.clear(); - for (auto t : texts) + for (auto p : pics) { endingTexture_t sp; // Crea la texture - sp.texture = resource->getTexture(t.caption); + sp.texture = resource->getTexture(p.caption); const int width = sp.texture->getWidth(); const int height = sp.texture->getHeight(); // Crea el sprite sp.sprite = new Sprite({0, 0, width, height}, sp.texture, renderer); - sp.sprite->setPos({(GAMECANVAS_WIDTH - width) / 2, t.pos}); + sp.sprite->setPos({(GAMECANVAS_WIDTH - width) / 2, p.pos}); // Crea la coverTexture sp.coverTexture = new Texture(renderer); @@ -381,7 +384,7 @@ void Ending::iniPics() // Crea el sprite sp.coverSprite = new Sprite({0, 0, sp.coverTexture->getWidth(), sp.coverTexture->getHeight() - 8}, sp.coverTexture, renderer); - sp.coverSprite->setPos({(GAMECANVAS_WIDTH - sp.coverTexture->getWidth()) / 2, t.pos}); + sp.coverSprite->setPos({(GAMECANVAS_WIDTH - sp.coverTexture->getWidth()) / 2, p.pos}); sp.coverSprite->setSpriteClip(0, 8, -1, -1); // Inicializa variables @@ -624,4 +627,29 @@ void Ending::updateMusicVolume() const int volume = 128 * step; JA_SetVolume(volume); } +} + +// Cambia la paleta +void Ending::switchPalette() +{ + if (options->palette == p_zxspectrum) + { + options->palette = p_zxarne; + + spritePics.at(0).sprite->setTexture(resource->getTexture("ending1_zxarne.png")); + spritePics.at(1).sprite->setTexture(resource->getTexture("ending2_zxarne.png")); + spritePics.at(2).sprite->setTexture(resource->getTexture("ending3_zxarne.png")); + spritePics.at(3).sprite->setTexture(resource->getTexture("ending4_zxarne.png")); + spritePics.at(4).sprite->setTexture(resource->getTexture("ending5_zxarne.png")); + } + else + { + options->palette = p_zxspectrum; + + spritePics.at(0).sprite->setTexture(resource->getTexture("ending1.png")); + spritePics.at(1).sprite->setTexture(resource->getTexture("ending2.png")); + spritePics.at(2).sprite->setTexture(resource->getTexture("ending3.png")); + spritePics.at(3).sprite->setTexture(resource->getTexture("ending4.png")); + spritePics.at(4).sprite->setTexture(resource->getTexture("ending5.png")); + } } \ No newline at end of file diff --git a/source/ending.h b/source/ending.h index 278a3d1..d17fe87 100644 --- a/source/ending.h +++ b/source/ending.h @@ -108,6 +108,9 @@ private: // Actualiza el volumen de la musica void updateMusicVolume(); + // Cambia la paleta + void switchPalette(); + public: // Constructor Ending(SDL_Renderer *renderer, Screen *screen, Resource *resource, Asset *asset, options_t *options); diff --git a/source/ending2.cpp b/source/ending2.cpp index 91f42b2..87ba065 100644 --- a/source/ending2.cpp +++ b/source/ending2.cpp @@ -225,7 +225,7 @@ void Ending2::checkEventHandler() break; case SDL_SCANCODE_F5: - // switchPalette(); + switchPalette(); break; default: @@ -284,49 +284,63 @@ void Ending2::iniSpriteList() spriteList.clear(); // Añade los valores - spriteList.push_back("abad"); - spriteList.push_back("abad_bell"); + spriteList.push_back("bin"); + spriteList.push_back("diskette"); + spriteList.push_back("bird"); + spriteList.push_back("chip"); + spriteList.push_back("code"); + spriteList.push_back("paco"); + spriteList.push_back("printer"); + + spriteList.push_back("bell"); + spriteList.push_back("dong"); + spriteList.push_back("amstrad_cs"); + spriteList.push_back("breakout"); + spriteList.push_back("arounder_fly"); spriteList.push_back("arounder_stop"); spriteList.push_back("arounder_walk"); spriteList.push_back("arounders_door"); spriteList.push_back("arounders_machine"); + + spriteList.push_back("abad"); + spriteList.push_back("abad_bell"); + spriteList.push_back("bat"); spriteList.push_back("batman_bell"); spriteList.push_back("batman_fire"); spriteList.push_back("batman"); - spriteList.push_back("bell"); - spriteList.push_back("bin"); - spriteList.push_back("bird"); - spriteList.push_back("breakout"); - spriteList.push_back("bry"); - spriteList.push_back("chip"); - spriteList.push_back("code"); + spriteList.push_back("demon"); spriteList.push_back("heavy"); spriteList.push_back("dimallas"); - spriteList.push_back("diskette"); - spriteList.push_back("dong"); spriteList.push_back("guitar"); + spriteList.push_back("jb_alien"); spriteList.push_back("jb_human"); + + spriteList.push_back("bry"); spriteList.push_back("jailer"); spriteList.push_back("jailer2"); spriteList.push_back("jailer3"); + spriteList.push_back("lamp"); spriteList.push_back("macaronni_ted"); + spriteList.push_back("matatunos"); - spriteList.push_back("mummy"); - spriteList.push_back("paco"); - spriteList.push_back("printer"); - spriteList.push_back("qvoid"); - spriteList.push_back("sam"); - spriteList.push_back("sigmasua"); - spriteList.push_back("spider"); spriteList.push_back("tuno"); + + spriteList.push_back("mummy"); + spriteList.push_back("sam"); + + spriteList.push_back("qvoid"); + spriteList.push_back("sigmasua"); + spriteList.push_back("tv_panel"); spriteList.push_back("tv"); + + spriteList.push_back("spider"); spriteList.push_back("shock"); spriteList.push_back("wave"); @@ -531,7 +545,7 @@ void Ending2::createTexts() // Crea los últimos textos // El primer texto va a continuación del ultimo spriteText - const int start = spriteTexts.back()->getPosY() + text->getCharacterSize() * 6; + const int start = spriteTexts.back()->getPosY() + text->getCharacterSize() * 15; list.clear(); list.push_back("THANK YOU"); list.push_back("FOR PLAYING!"); @@ -612,4 +626,10 @@ void Ending2::updateMusicVolume() const int volume = 128 * step; JA_SetVolume(volume); } +} + +// Cambia la paleta +void Ending2::switchPalette() +{ + options->palette = (options->palette == p_zxspectrum) ? p_zxarne : p_zxspectrum; } \ No newline at end of file diff --git a/source/ending2.h b/source/ending2.h index 918890e..9469b66 100644 --- a/source/ending2.h +++ b/source/ending2.h @@ -110,6 +110,9 @@ private: // Actualiza el volumen de la musica void updateMusicVolume(); + // Cambia la paleta + void switchPalette(); + public: // Constructor Ending2(SDL_Renderer *renderer, Screen *screen, Resource *resource, Asset *asset, options_t *options);