From 5302e1606405ae0caebc07a6b4cbed30694b18f5 Mon Sep 17 00:00:00 2001 From: Sergio Valor Date: Wed, 2 Nov 2022 17:25:42 +0100 Subject: [PATCH] Arreglado el color del marcador al cambiar de paleta --- data/room/29.tmx | 18 ++++++------ data/room/30.room | 58 ++++++++++++++++++++++++++++--------- data/room/30.tmx | 32 ++++++++++---------- data/tilesets/standard.png | Bin 7685 -> 7665 bytes source/common/utils.cpp | 10 +++++++ source/common/utils.h | 3 ++ source/game.cpp | 36 ++++++++++++++++------- source/game.h | 25 +++++++++------- source/player.cpp | 22 +++++--------- source/player.h | 7 ----- 10 files changed, 130 insertions(+), 81 deletions(-) diff --git a/data/room/29.tmx b/data/room/29.tmx index 8f27104..da5e13f 100644 --- a/data/room/29.tmx +++ b/data/room/29.tmx @@ -3,22 +3,22 @@ -133,133,133,133,133,133,133,131,131,133,133,133,132,132,133,133,133,132,132,133,133,133,131,131,133,133,0,0,0,0,505,133, -133,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,505,0,133, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,505,133, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,505,0,133, 133,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,505,0,0,133, 133,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,505,0,0,0,133, 133,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,505,0,0,0,0,133, -133,133,0,0,228,228,228,0,0,228,228,228,0,0,228,228,228,0,0,228,228,228,0,0,228,228,0,0,228,0,0,133, +133,133,0,0,234,234,234,0,0,234,234,234,0,0,234,234,234,0,0,234,234,234,0,0,234,234,0,0,234,0,0,133, 133,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133, -133,133,228,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,230,133, -133,133,228,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133, +133,133,234,234,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,231,133, +133,133,234,234,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133, 133,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133, -133,133,0,0,228,228,228,0,0,229,228,228,0,0,228,228,228,0,0,228,228,228,0,0,228,228,0,0,0,0,0,133, -133,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,228,133, +133,133,0,0,234,234,234,0,0,230,234,234,0,0,234,234,234,0,0,234,234,234,0,0,234,234,0,0,0,0,0,133, +133,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,234,133, 133,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,228,0,0,0,0,133, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,234,0,0,0,0,133, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133, -133,133,133,133,133,133,133,131,131,133,133,133,132,132,133,133,133,132,132,133,133,133,131,131,133,133,133,133,133,133,133,133 +133,133,133,133,133,133,133,129,129,133,133,133,130,130,133,133,133,130,130,133,133,133,129,129,133,133,133,133,133,133,133,133 diff --git a/data/room/30.room b/data/room/30.room index d6c6965..071fcb6 100644 --- a/data/room/30.room +++ b/data/room/30.room @@ -1,5 +1,5 @@ name=QVOID IS A JAILGAME! -bgColor=bright_black +bgColor=blue border=bright_black tileMapFile=30.tmx tileSetFile=standard.png @@ -9,25 +9,57 @@ roomLeft=0 roomRight=29.room [enemy] -tileSetFile=diskette.png -animation=diskette.ani +tileSetFile=qvoid.png +animation=qvoid.ani width=16 height=16 -x=2 -y=2 -vx=0 +x=1 +y=1 +vx=0.7 vy=0 -x1=2 -y1=2 -x2=2 -y2=2 -color=magenta +x1=1 +y1=1 +x2=29 +y2=1 +color=white +[/enemy] + +[enemy] +tileSetFile=qvoid.png +animation=qvoid.ani +width=16 +height=16 +x=29 +y=1 +vx=-0.7 +vy=0 +x1=1 +y1=1 +x2=29 +y2=1 +color=red +[/enemy] + +[enemy] +tileSetFile=qvoid.png +animation=qvoid.ani +width=16 +height=16 +x=6 +y=7 +vx=-0.5 +vy=0 +x1=1 +y1=7 +x2=27 +y2=7 +color=green [/enemy] [item] tileSetFile=items.png -tile=1 +tile=20 x=1 -y=1 +y=2 counter=1 [/item] \ No newline at end of file diff --git a/data/room/30.tmx b/data/room/30.tmx index c04c806..96fc950 100644 --- a/data/room/30.tmx +++ b/data/room/30.tmx @@ -3,22 +3,22 @@ -133,133,133,133,133,133,133,133,133,133,133,133,133,133,133,133,133,133,133,0,0,0,0,0,0,0,0,0,0,0,0,133, -133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133, -133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133, -133,228,228,0,0,228,228,0,0,228,228,0,0,228,228,0,0,228,228,0,0,0,0,0,0,0,0,0,0,0,0,133, -133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133, -133,0,0,228,228,0,0,228,228,0,0,228,228,0,0,228,228,0,0,0,228,228,0,0,0,228,228,548,0,0,0,133, -133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,548,0,0,133, -133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,0,133, -133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133, -133,0,0,0,0,0,0,0,0,485,485,485,0,0,0,228,228,0,0,0,485,485,485,0,0,0,228,228,0,0,0,133, -133,0,0,0,228,228,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133, -133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,133, -133,228,228,548,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133, -133,0,0,0,548,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -133,0,0,0,0,548,0,0,0,0,0,555,0,0,0,0,0,0,0,0,0,555,0,0,0,0,0,0,0,0,0,0, -133,555,555,555,555,555,485,485,485,485,485,485,485,485,485,485,485,485,485,485,485,485,485,485,485,485,485,485,485,133,133,133 +127,128,129,130,131,132,133,127,128,129,130,131,132,133,127,128,129,130,131,132,133,127,128,129,130,131,132,133,127,128,129,130, +132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,128, +131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129, +130,228,229,0,0,230,231,0,0,232,233,0,0,234,228,0,0,229,230,0,0,0,0,0,0,0,0,0,0,0,0,130, +129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131, +128,0,0,231,232,0,0,233,234,0,0,228,229,0,0,230,231,0,0,0,232,233,0,0,0,0,0,0,0,0,0,132, +127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,228,231,548,0,0,133, +127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,231,127, +128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128, +128,0,0,0,0,0,0,0,0,232,233,228,0,0,0,485,485,0,0,0,230,231,232,0,0,0,485,485,0,0,0,129, +129,0,0,0,229,230,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130, +130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,131, +131,232,233,548,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132, +132,0,0,0,548,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +132,0,0,0,0,548,0,0,0,0,0,555,0,0,0,0,0,0,0,0,0,555,0,0,0,0,0,0,0,0,0,0, +133,555,555,555,555,555,127,128,129,130,131,132,485,485,485,485,485,485,485,485,485,128,129,130,131,132,133,127,128,129,130,131 diff --git a/data/tilesets/standard.png b/data/tilesets/standard.png index 594c7601076a07231342d5e46d86db2346edb432..e893ca3728a37a95a24ba55cb65a1d73d91b9845 100644 GIT binary patch delta 7173 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 diff --git a/source/common/utils.cpp b/source/common/utils.cpp index df6a3dd..e05dc28 100644 --- a/source/common/utils.cpp +++ b/source/common/utils.cpp @@ -575,4 +575,14 @@ std::string boolToString(bool value) { return "false"; } +} + +// Compara dos colores +bool colorAreEqual(color_t color1, color_t color2) +{ + const bool r = color1.r == color2.r; + const bool g = color1.g == color2.g; + const bool b = color1.b == color2.b; + + return (r && g && b); } \ No newline at end of file diff --git a/source/common/utils.h b/source/common/utils.h index 7b9b1f9..4a5c892 100644 --- a/source/common/utils.h +++ b/source/common/utils.h @@ -125,4 +125,7 @@ bool stringToBool(std::string str); // Convierte un valor booleano en una cadena std::string boolToString(bool value); +// Compara dos colores +bool colorAreEqual(color_t color1, color_t color2); + #endif \ No newline at end of file diff --git a/source/game.cpp b/source/game.cpp index 247530a..44a87aa 100644 --- a/source/game.cpp +++ b/source/game.cpp @@ -52,8 +52,8 @@ Game::Game(SDL_Renderer *renderer, Screen *screen, Resource *resource, Asset *as blackScreen = false; blackScreenCounter = 0; - this->player->setInvincible(debug->getEnabled()); - board.music = !debug->getEnabled(); + // this->player->setInvincible(debug->getEnabled()); + // board.music = !debug->getEnabled(); section.name = SECTION_PROG_GAME; section.subsection = 0; @@ -100,7 +100,7 @@ void Game::checkEventHandler() case SDL_SCANCODE_D: debug->switchEnabled(); - player->setInvincible(debug->getEnabled()); + options->invincible = debug->getEnabled(); board.music = !debug->getEnabled(); board.music ? JA_ResumeMusic() : JA_PauseMusic(); break; @@ -312,11 +312,9 @@ bool Game::changeRoom(std::string file) // Crea un objeto habitación nuevo a partir del fichero room = new Room(resource->getRoom(file), renderer, screen, asset, options, itemTracker, &board.items, debug); - // Actualiza el marcador - const color_t c = room->getBorderColor(); // Obtiene el color del vorde - const color_t cBlack = stringToColor(options->palette, "black"); - board.color = (c.r == cBlack.r && c.g == cBlack.g && c.b == cBlack.b) ? stringToColor(options->palette, "white") : c; // Si el color es negro lo cambia a blanco - // board.color = (c.r + c.g + c.b == 0) ? stringToColor(options->palette, "white") : c; // Si el color es negro lo cambia a blanco + // Pone el color del marcador en función del color del borde de la habitación + setScoreBoardColor(); + if (roomTracker->addRoom(file)) { // Incrementa el contador de habitaciones visitadas board.rooms++; @@ -384,7 +382,7 @@ void Game::checkEndGame() // Mata al jugador void Game::killPlayer() { - if (this->player->getInvincible() || options->invincible) + if (options->invincible) { return; } @@ -437,12 +435,13 @@ void Game::switchPalette() // Modifica la variable options->palette = (options->palette == p_zxspectrum) ? p_zxarne : p_zxspectrum; + // Recarga las paletas room->reLoadPalette(); player->reLoadPalette(); scoreboard->reLoadPalette(); - const color_t c = room->getBorderColor(); - board.color = (c.r + c.g + c.b == 0) ? stringToColor(options->palette, "white") : c; // Si el color es negro lo cambia a blanco + // Pone el color del marcador en función del color del borde de la habitación + setScoreBoardColor(); } // Establece la pantalla en negro @@ -477,4 +476,19 @@ void Game::renderBlackScreen() screen->clean(); screen->setBorderColor(stringToColor(options->palette, "black")); } +} + +// Pone el color del marcador en función del color del borde de la habitación +void Game::setScoreBoardColor() +{ + // Obtiene el color del borde + const color_t c = room->getBorderColor(); + + // Si el color es negro lo cambia a blanco + const color_t cBlack = stringToColor(options->palette, "black"); + board.color = colorAreEqual(c, cBlack) ? stringToColor(options->palette, "white") : c; + + // Si el color es negro brillante lo cambia a blanco + const color_t cBrightBlack = stringToColor(options->palette, "bright_black"); + board.color = colorAreEqual(c, cBrightBlack) ? stringToColor(options->palette, "white") : c; } \ No newline at end of file diff --git a/source/game.h b/source/game.h index 0e424ef..3f1eb0b 100644 --- a/source/game.h +++ b/source/game.h @@ -43,17 +43,17 @@ private: Test *test; // Variables - JA_Music music; // Musica que suena durante el juego - Uint32 ticks; // Contador de ticks para ajustar la velocidad del programa - Uint32 ticksSpeed; // Velocidad a la que se repiten los bucles del programa - section_t section; // Seccion actual dentro del juego - std::string currentRoom; // Fichero de la habitación actual - playerSpawn_t spawnPoint; // Lugar de la habitación donde aparece el jugador - JA_Sound deathSound; // Sonido a reproducir cuando muere el jugador - board_t board; // Estructura con los datos del marcador - bool paused; // Indica si el juego se encuentra en pausa - bool blackScreen; // Indica si la pantalla está en negro. Se utiliza para la muerte del jugador - int blackScreenCounter; // Contador para temporizar la pantalla en negro + JA_Music music; // Musica que suena durante el juego + Uint32 ticks; // Contador de ticks para ajustar la velocidad del programa + Uint32 ticksSpeed; // Velocidad a la que se repiten los bucles del programa + section_t section; // Seccion actual dentro del juego + std::string currentRoom; // Fichero de la habitación actual + playerSpawn_t spawnPoint; // Lugar de la habitación donde aparece el jugador + JA_Sound deathSound; // Sonido a reproducir cuando muere el jugador + board_t board; // Estructura con los datos del marcador + bool paused; // Indica si el juego se encuentra en pausa + bool blackScreen; // Indica si la pantalla está en negro. Se utiliza para la muerte del jugador + int blackScreenCounter; // Contador para temporizar la pantalla en negro // Actualiza el juego, las variables, comprueba la entrada, etc. void update(); @@ -109,6 +109,9 @@ private: // Dibuja la pantalla negra void renderBlackScreen(); + // Pone el color del marcador en función del color del borde de la habitación + void setScoreBoardColor(); + public: // Constructor Game(SDL_Renderer *renderer, Screen *screen, Resource *resource, Asset *asset, options_t *options, Input *input, Debug *debug); diff --git a/source/player.cpp b/source/player.cpp index 22f64e2..bf2f3ee 100644 --- a/source/player.cpp +++ b/source/player.cpp @@ -21,7 +21,6 @@ Player::Player(player_t player) color = stringToColor(options->palette, "white"); onBorder = false; border = BORDER_TOP; - invincible = false; autoMovement = false; alive = true; maxFallHeight = BLOCK * 4; @@ -433,6 +432,13 @@ void Player::move() autoMovement = false; } + // Si ha salido de una superficie automatica, detiene el movimiento automatico + if (state == s_standing && isOnFloor() && !isOnAutoSurface()) + { + // Deja de estar enganchado a la superficie automatica + autoMovement = false; + } + // Se mueve hacia arriba if (vy < 0.0f) { @@ -688,7 +694,7 @@ playerSpawn_t Player::getSpawnParams() void Player::reLoadTexture() { sprite->getTexture()->reLoad(); - //texture->reLoad(); + // texture->reLoad(); } // Recarga la paleta @@ -729,18 +735,6 @@ void Player::updateFeet() feet[1] = {p.x + 7, p.y + h - 1}; } -// Obtiene el valor de la variable -bool Player::getInvincible() -{ - return invincible; -} - -// Establece el valor de la variable -void Player::setInvincible(bool value) -{ - invincible = value; -} - // Cambia el estado del jugador void Player::setState(state_e value) { diff --git a/source/player.h b/source/player.h index 74683b7..f709ecf 100644 --- a/source/player.h +++ b/source/player.h @@ -76,7 +76,6 @@ public: state_e prevState; // Estado previo en el que se encontraba el jugador bool onBorder; // Indica si el jugador esta en uno de los cuatro bordes de la pantalla int border; // Indica en cual de los cuatro bordes se encuentra - bool invincible; // Si es invencible, no puede morir bool autoMovement; // Indica si esta siendo arrastrado por una superficie automatica bool paused; // Indica si el jugador esta en modo pausa SDL_Rect lastPosition; // Contiene la ultima posición del jugador, por si hay que deshacer algun movimiento @@ -181,12 +180,6 @@ public: // Establece el valor de la variable void setRoom(Room *room); - // Obtiene el valor de la variable - bool getInvincible(); - - // Establece el valor de la variable - void setInvincible(bool value); - // Comprueba si el jugador esta vivo bool isAlive();