From 3d0400fe88533a2172570fda5201f8905297ef63 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sergio=20Valor=20Mart=C3=ADnez?= Date: Sun, 6 Nov 2022 08:28:55 +0100 Subject: [PATCH] Ya se puede entrar a la Jail --- data/room/02.room | 2 +- data/room/03.room | 2 +- data/room/07.room | 2 +- data/room/10.room | 2 +- data/room/13.room | 2 +- data/room/15.room | 2 +- data/room/16.room | 2 +- data/room/17.room | 2 +- data/room/18.room | 2 +- data/room/19.room | 2 +- data/room/22.room | 2 +- data/room/23.room | 2 +- data/room/26.room | 2 +- data/room/27.room | 2 +- data/room/38.room | 2 +- data/room/39.room | 2 +- data/room/40.room | 2 +- data/room/41.room | 2 +- data/room/42.room | 2 +- data/room/43.room | 2 +- data/room/44.room | 2 +- data/room/47.room | 2 +- data/room/48.room | 2 +- data/room/49.room | 2 +- data/room/50.room | 2 +- data/room/51.room | 2 +- data/room/52.room | 2 +- data/room/53.room | 2 +- data/room/54.room | 2 +- data/room/55.room | 2 +- data/room/56.room | 2 +- data/room/57.room | 2 +- data/room/58.room | 2 +- data/room/59.room | 2 +- data/room/60.room | 2 +- source/demo.cpp | 4 ++-- source/game.cpp | 13 ++++++------- source/room.cpp | 29 ++++++++++++++++++++++++++++- source/room.h | 6 +++++- 39 files changed, 76 insertions(+), 46 deletions(-) diff --git a/data/room/02.room b/data/room/02.room index 536140a..ab80d4e 100644 --- a/data/room/02.room +++ b/data/room/02.room @@ -1,4 +1,4 @@ -name=road to the jail +name=ROAD TO THE JAIL bgColor=black border=cyan tileMapFile=02.tmx diff --git a/data/room/03.room b/data/room/03.room index b3b006d..d8e0247 100644 --- a/data/room/03.room +++ b/data/room/03.room @@ -1,4 +1,4 @@ -name=void main +name=VOID MAIN bgColor=black border=magenta tileMapFile=03.tmx diff --git a/data/room/07.room b/data/room/07.room index 30df62d..aeda556 100644 --- a/data/room/07.room +++ b/data/room/07.room @@ -1,4 +1,4 @@ -name=sigmasua +name=SIGMASUA bgColor=black border=black tileMapFile=07.tmx diff --git a/data/room/10.room b/data/room/10.room index 69b912e..be4813f 100644 --- a/data/room/10.room +++ b/data/room/10.room @@ -1,4 +1,4 @@ -name=the hall +name=THE HALL bgColor=black border=magenta tileMapFile=10.tmx diff --git a/data/room/13.room b/data/room/13.room index 3c6fe18..1a95cd3 100644 --- a/data/room/13.room +++ b/data/room/13.room @@ -1,4 +1,4 @@ -name=matatunos +name=TUNOKILLER bgColor=black border=blue tileMapFile=13.tmx diff --git a/data/room/15.room b/data/room/15.room index f84adb0..585389f 100644 --- a/data/room/15.room +++ b/data/room/15.room @@ -1,4 +1,4 @@ -name=now this is the batcave! +name=NOW THIS IS THE BATCAVE! bgColor=black border=black tileMapFile=15.tmx diff --git a/data/room/16.room b/data/room/16.room index 0810e60..d2f6ee7 100644 --- a/data/room/16.room +++ b/data/room/16.room @@ -1,4 +1,4 @@ -name=The Fridge +name=THE FRIDGE bgColor=blue border=blue itemColor1=bright_cyan diff --git a/data/room/17.room b/data/room/17.room index b949645..49fa536 100644 --- a/data/room/17.room +++ b/data/room/17.room @@ -1,4 +1,4 @@ -name=i remember this one too +name=I REMEMBER THIS ONE TOO bgColor=black border=magenta tileMapFile=17.tmx diff --git a/data/room/18.room b/data/room/18.room index db27352..a4edd30 100644 --- a/data/room/18.room +++ b/data/room/18.room @@ -1,4 +1,4 @@ -name=make money +name=MAKE MONEY bgColor=black border=magenta tileMapFile=18.tmx diff --git a/data/room/19.room b/data/room/19.room index ff77970..9b16466 100644 --- a/data/room/19.room +++ b/data/room/19.room @@ -1,4 +1,4 @@ -name=this can't be the batcave +name=THIS CAN'T BE THE BATCAVE bgColor=black border=cyan tileMapFile=19.tmx diff --git a/data/room/22.room b/data/room/22.room index 24cca9f..128043c 100644 --- a/data/room/22.room +++ b/data/room/22.room @@ -1,4 +1,4 @@ -name=AEE2 never came out +name=AEE2 NEVER CAME OUT bgColor=black border=yellow tileMapFile=22.tmx diff --git a/data/room/23.room b/data/room/23.room index 78223bb..11f6f2c 100644 --- a/data/room/23.room +++ b/data/room/23.room @@ -1,4 +1,4 @@ -name=inner chamber +name=INNER CHAMBER bgColor=black border=bright_yellow tileMapFile=23.tmx diff --git a/data/room/26.room b/data/room/26.room index 6815b2d..c3e49a3 100644 --- a/data/room/26.room +++ b/data/room/26.room @@ -1,4 +1,4 @@ -name=jingle bells +name=JINGLE BELLS bgColor=blue border=yellow tileMapFile=26.tmx diff --git a/data/room/27.room b/data/room/27.room index a1778dc..72a3fbf 100644 --- a/data/room/27.room +++ b/data/room/27.room @@ -1,4 +1,4 @@ -name=the backyard +name=THE BACKYARD bgColor=blue border=cyan tileMapFile=27.tmx diff --git a/data/room/38.room b/data/room/38.room index 05bf078..281b9b4 100644 --- a/data/room/38.room +++ b/data/room/38.room @@ -1,4 +1,4 @@ -name=the final crossover +name=THE FINAL CROSSOVER bgColor=black border=yellow tileMapFile=38.tmx diff --git a/data/room/39.room b/data/room/39.room index fe37504..d0192b9 100644 --- a/data/room/39.room +++ b/data/room/39.room @@ -1,4 +1,4 @@ -name=you'll believe arounder can fly +name=YOU'LL BELIEVE AROUNDER CAN FLY bgColor=black border=cyan tileMapFile=39.tmx diff --git a/data/room/40.room b/data/room/40.room index d37ca56..3fe77f8 100644 --- a/data/room/40.room +++ b/data/room/40.room @@ -1,4 +1,4 @@ -name=prevent the crisis +name=PREVENT THE CRISIS bgColor=black border=bright_magenta tileMapFile=40.tmx diff --git a/data/room/41.room b/data/room/41.room index 0330fbf..89f4e6f 100644 --- a/data/room/41.room +++ b/data/room/41.room @@ -1,4 +1,4 @@ -name=around with me +name=AROUND WITH ME bgColor=black border=blue tileMapFile=41.tmx diff --git a/data/room/42.room b/data/room/42.room index 264082d..f8dee01 100644 --- a/data/room/42.room +++ b/data/room/42.room @@ -1,4 +1,4 @@ -name=P.A.C.O. on the go +name=P.A.C.O. ON THE GO bgColor=black border=black tileMapFile=42.tmx diff --git a/data/room/43.room b/data/room/43.room index e2368af..55fdb37 100644 --- a/data/room/43.room +++ b/data/room/43.room @@ -1,4 +1,4 @@ -name=the tube +name=THE TUBE bgColor=black border=blue tileMapFile=43.tmx diff --git a/data/room/44.room b/data/room/44.room index 2a27ecf..818f583 100644 --- a/data/room/44.room +++ b/data/room/44.room @@ -1,4 +1,4 @@ -name=the kitchen +name=THE KITCHEN bgColor=black border=cyan tileMapFile=44.tmx diff --git a/data/room/47.room b/data/room/47.room index 384e717..57ec921 100644 --- a/data/room/47.room +++ b/data/room/47.room @@ -1,4 +1,4 @@ -name=the battle never ends +name=THE BATTLE NEVER ENDS bgColor=black border=white tileMapFile=47.tmx diff --git a/data/room/48.room b/data/room/48.room index 8aa51c7..3ddf3d7 100644 --- a/data/room/48.room +++ b/data/room/48.room @@ -1,4 +1,4 @@ -name=welcome to the jailbattle +name=WELCOME TO THE JAILBATTLE bgColor=green border=bright_green tileMapFile=48.tmx diff --git a/data/room/49.room b/data/room/49.room index 72a0177..98adcb3 100644 --- a/data/room/49.room +++ b/data/room/49.room @@ -1,4 +1,4 @@ -name=bamba +name=BAMBA bgColor=black border=red tileMapFile=49.tmx diff --git a/data/room/50.room b/data/room/50.room index 3d2d4d5..ef91863 100644 --- a/data/room/50.room +++ b/data/room/50.room @@ -1,4 +1,4 @@ -name=stored jailgames +name=STORED JAILGAMES bgColor=black border=blue tileMapFile=50.tmx diff --git a/data/room/51.room b/data/room/51.room index a73b06f..b913f3d 100644 --- a/data/room/51.room +++ b/data/room/51.room @@ -1,4 +1,4 @@ -name=mini ascii +name=MINI ASCII bgColor=black border=black tileMapFile=51.tmx diff --git a/data/room/52.room b/data/room/52.room index 75946c1..6c1adb9 100644 --- a/data/room/52.room +++ b/data/room/52.room @@ -1,4 +1,4 @@ -name=breakout.lua +name=BREAKOUT.LUA bgColor=black border=black tileMapFile=52.tmx diff --git a/data/room/53.room b/data/room/53.room index 1257552..904a25d 100644 --- a/data/room/53.room +++ b/data/room/53.room @@ -1,4 +1,4 @@ -name=P.A.C.O workshop +name=P.A.C.O WORKSHOP bgColor=black border=yellow tileMapFile=53.tmx diff --git a/data/room/54.room b/data/room/54.room index 4c6162d..2bef86e 100644 --- a/data/room/54.room +++ b/data/room/54.room @@ -1,4 +1,4 @@ -name=the basement +name=THE BASEMENT bgColor=black border=green tileMapFile=54.tmx diff --git a/data/room/55.room b/data/room/55.room index 8230cf4..003b5be 100644 --- a/data/room/55.room +++ b/data/room/55.room @@ -1,4 +1,4 @@ -name=that's a guitar +name=THAT'S A GUITAR bgColor=black border=black tileMapFile=55.tmx diff --git a/data/room/56.room b/data/room/56.room index ea37fc3..ac2ee1a 100644 --- a/data/room/56.room +++ b/data/room/56.room @@ -1,4 +1,4 @@ -name=heavy demons on leggins +name=HEAVY DEMONS ON LEGGINS bgColor=black border=black tileMapFile=56.tmx diff --git a/data/room/57.room b/data/room/57.room index b1a23fa..0a9a32c 100644 --- a/data/room/57.room +++ b/data/room/57.room @@ -1,4 +1,4 @@ -name=jailgames go to hell +name=JAILGAMES GO TO HELL bgColor=red border=bright_red tileMapFile=57.tmx diff --git a/data/room/58.room b/data/room/58.room index 969a36b..4148376 100644 --- a/data/room/58.room +++ b/data/room/58.room @@ -1,4 +1,4 @@ -name=chirping +name=CHIRPING bgColor=black border=magenta tileMapFile=58.tmx diff --git a/data/room/59.room b/data/room/59.room index a5e725c..e901f79 100644 --- a/data/room/59.room +++ b/data/room/59.room @@ -1,4 +1,4 @@ -name=static +name=STATIC bgColor=black border=bright_magenta tileMapFile=59.tmx diff --git a/data/room/60.room b/data/room/60.room index b6ee864..a51852c 100644 --- a/data/room/60.room +++ b/data/room/60.room @@ -1,4 +1,4 @@ -name=magnetic fields +name=MAGNETIC FIELDS bgColor=black border=red tileMapFile=60.tmx diff --git a/source/demo.cpp b/source/demo.cpp index c34f5ec..d507b45 100644 --- a/source/demo.cpp +++ b/source/demo.cpp @@ -87,7 +87,7 @@ Demo::Demo(SDL_Renderer *renderer, Screen *screen, Resource *resource, Asset *as // Crea los objetos itemTracker = new ItemTracker(); scoreboard = new ScoreBoard(renderer, resource, asset, options, &board); - room = new Room(resource->getRoom(currentRoom), renderer, screen, asset, options, itemTracker, &board.items, debug); + room = new Room(resource->getRoom(currentRoom), renderer, screen, asset, options, itemTracker, &board.items, false, debug); eventHandler = new SDL_Event(); text = new Text(resource->getOffset("smb2.txt"), resource->getTexture("smb2.png"), renderer); @@ -287,7 +287,7 @@ bool Demo::changeRoom(std::string file) room = nullptr; // Crea un objeto habitación nuevo a partir del fichero - room = new Room(resource->getRoom(file), renderer, screen, asset, options, itemTracker, &board.items, debug); + room = new Room(resource->getRoom(file), renderer, screen, asset, options, itemTracker, &board.items, false, debug); // Pone el color del marcador en función del color del borde de la habitación setScoreBoardColor(); diff --git a/source/game.cpp b/source/game.cpp index 37286a4..91b8d5a 100644 --- a/source/game.cpp +++ b/source/game.cpp @@ -19,8 +19,7 @@ Game::Game(SDL_Renderer *renderer, Screen *screen, Resource *resource, Asset *as this->options = options; // **** - // this->debug->setEnabled(true); - currentRoom = "27.room"; + currentRoom = "01.room"; const int x = 29; const int y = 13; spawnPoint = {x * 8, y * 8, 0, 0, 0, s_standing, SDL_FLIP_HORIZONTAL}; @@ -30,7 +29,7 @@ Game::Game(SDL_Renderer *renderer, Screen *screen, Resource *resource, Asset *as scoreboard = new ScoreBoard(renderer, resource, asset, options, &board); itemTracker = new ItemTracker(); roomTracker = new RoomTracker(); - room = new Room(resource->getRoom(currentRoom), renderer, screen, asset, options, itemTracker, &board.items, debug); + room = new Room(resource->getRoom(currentRoom), renderer, screen, asset, options, itemTracker, &board.items, false, debug); const player_t player = {spawnPoint, "player.png", "player.ani", renderer, resource, asset, options, input, room, debug}; this->player = new Player(player); eventHandler = new SDL_Event(); @@ -45,9 +44,9 @@ Game::Game(SDL_Renderer *renderer, Screen *screen, Resource *resource, Asset *as board.lives = 9; board.items = 0; board.rooms = 1; - setScoreBoardColor(); board.music = true; board.jailEnabled = false; + setScoreBoardColor(); roomTracker->addRoom(currentRoom); paused = false; blackScreen = false; @@ -310,7 +309,7 @@ bool Game::changeRoom(std::string file) room = nullptr; // Crea un objeto habitación nuevo a partir del fichero - room = new Room(resource->getRoom(file), renderer, screen, asset, options, itemTracker, &board.items, debug); + room = new Room(resource->getRoom(file), renderer, screen, asset, options, itemTracker, &board.items, board.jailEnabled, debug); // Pone el color del marcador en función del color del borde de la habitación setScoreBoardColor(); @@ -404,7 +403,7 @@ void Game::killPlayer() setBlackScreen(); // Crea la nueva habitación y el nuevo jugador - room = new Room(resource->getRoom(currentRoom), renderer, screen, asset, options, itemTracker, &board.items, debug); + room = new Room(resource->getRoom(currentRoom), renderer, screen, asset, options, itemTracker, &board.items, board.jailEnabled, debug); const player_t player = {spawnPoint, "player.png", "player.ani", renderer, resource, asset, options, input, room, debug}; this->player = new Player(player); @@ -504,7 +503,7 @@ bool Game::checkEndGame() const bool a = room->getName() == "THE JAIL"; const bool b = board.items >= 5; - const bool c = player->getRect().x < 152; + const bool c = player->getRect().x <= 128; if (b) { diff --git a/source/room.cpp b/source/room.cpp index ecaa419..a1387dc 100644 --- a/source/room.cpp +++ b/source/room.cpp @@ -377,7 +377,7 @@ bool setItem(item_t *item, std::string var, std::string value) } // Constructor -Room::Room(room_t *room, SDL_Renderer *renderer, Screen *screen, Asset *asset, options_t *options, ItemTracker *itemTracker, int *itemsPicked, Debug *debug) +Room::Room(room_t *room, SDL_Renderer *renderer, Screen *screen, Asset *asset, options_t *options, ItemTracker *itemTracker, int *itemsPicked, bool jailEnabled, Debug *debug) { // Copia los punteros a objetos this->renderer = renderer; @@ -404,6 +404,7 @@ Room::Room(room_t *room, SDL_Renderer *renderer, Screen *screen, Asset *asset, o textureB = room->textureB; tileMap = room->tileMap; texture = (options->palette == p_zxspectrum) ? textureA : textureB; + this->jailEnabled = jailEnabled; // Inicializa variables tileSize = 8; @@ -438,6 +439,12 @@ Room::Room(room_t *room, SDL_Renderer *renderer, Screen *screen, Asset *asset, o // Carga los sonidos itemSound = JA_LoadSound(asset->get("item.wav").c_str()); + // Abre la jail para poder entrar + if (jailEnabled) + { + openTheJail(); + } + // Calcula las superficies setBottomSurfaces(); setTopSurfaces(); @@ -1463,4 +1470,24 @@ void Room::resume() int Room::getAutoSurfaceDirection() { return autoSurfaceDirection; +} + +// Abre la jail para poder entrar +void Room::openTheJail() +{ + if (name == "THE JAIL") + { + // Cambia el color de fondo + bgColor = "red"; + + // Elimina el último enemigo (Bry debe ser el ultimo enemigo definido en el fichero) + delete enemies.back(); + enemies.pop_back(); + + // Abre las puertas + const int tileA = 16 + (13 * 32); + const int tileB = 16 + (14 * 32); + tileMap->at(tileA) = -1; + tileMap->at(tileB) = -1; + } } \ No newline at end of file diff --git a/source/room.h b/source/room.h index 81764eb..c93e23e 100644 --- a/source/room.h +++ b/source/room.h @@ -117,6 +117,7 @@ private: int mapWidth; // Ancho del mapa en tiles int mapHeight; // Alto del mapa en tiles int tileSetWidth; // Ancho del tileset en tiles + bool jailEnabled; // Indica si hay acceso a la Jail // Pinta el mapa de la habitación en la textura void fillMapTexture(); @@ -154,9 +155,12 @@ private: // Devuelve el tipo de tile que hay en ese indice tile_e getTile(int index); + // Abre la jail para poder entrar + void openTheJail(); + public: // Constructor - Room(room_t *room, SDL_Renderer *renderer, Screen *screen, Asset *asset, options_t *options, ItemTracker *itemTracker, int *itemsPicked, Debug *debug); + Room(room_t *room, SDL_Renderer *renderer, Screen *screen, Asset *asset, options_t *options, ItemTracker *itemTracker, int *itemsPicked, bool jailEnabled, Debug *debug); // Destructor ~Room();