Ya se puede entrar a la Jail

This commit is contained in:
2022-11-06 08:28:55 +01:00
parent 45fc923be9
commit 3d0400fe88
39 changed files with 76 additions and 46 deletions

View File

@@ -1,4 +1,4 @@
name=road to the jail name=ROAD TO THE JAIL
bgColor=black bgColor=black
border=cyan border=cyan
tileMapFile=02.tmx tileMapFile=02.tmx

View File

@@ -1,4 +1,4 @@
name=void main name=VOID MAIN
bgColor=black bgColor=black
border=magenta border=magenta
tileMapFile=03.tmx tileMapFile=03.tmx

View File

@@ -1,4 +1,4 @@
name=sigmasua name=SIGMASUA
bgColor=black bgColor=black
border=black border=black
tileMapFile=07.tmx tileMapFile=07.tmx

View File

@@ -1,4 +1,4 @@
name=the hall name=THE HALL
bgColor=black bgColor=black
border=magenta border=magenta
tileMapFile=10.tmx tileMapFile=10.tmx

View File

@@ -1,4 +1,4 @@
name=matatunos name=TUNOKILLER
bgColor=black bgColor=black
border=blue border=blue
tileMapFile=13.tmx tileMapFile=13.tmx

View File

@@ -1,4 +1,4 @@
name=now this is the batcave! name=NOW THIS IS THE BATCAVE!
bgColor=black bgColor=black
border=black border=black
tileMapFile=15.tmx tileMapFile=15.tmx

View File

@@ -1,4 +1,4 @@
name=The Fridge name=THE FRIDGE
bgColor=blue bgColor=blue
border=blue border=blue
itemColor1=bright_cyan itemColor1=bright_cyan

View File

@@ -1,4 +1,4 @@
name=i remember this one too name=I REMEMBER THIS ONE TOO
bgColor=black bgColor=black
border=magenta border=magenta
tileMapFile=17.tmx tileMapFile=17.tmx

View File

@@ -1,4 +1,4 @@
name=make money name=MAKE MONEY
bgColor=black bgColor=black
border=magenta border=magenta
tileMapFile=18.tmx tileMapFile=18.tmx

View File

@@ -1,4 +1,4 @@
name=this can't be the batcave name=THIS CAN'T BE THE BATCAVE
bgColor=black bgColor=black
border=cyan border=cyan
tileMapFile=19.tmx tileMapFile=19.tmx

View File

@@ -1,4 +1,4 @@
name=AEE2 never came out name=AEE2 NEVER CAME OUT
bgColor=black bgColor=black
border=yellow border=yellow
tileMapFile=22.tmx tileMapFile=22.tmx

View File

@@ -1,4 +1,4 @@
name=inner chamber name=INNER CHAMBER
bgColor=black bgColor=black
border=bright_yellow border=bright_yellow
tileMapFile=23.tmx tileMapFile=23.tmx

View File

@@ -1,4 +1,4 @@
name=jingle bells name=JINGLE BELLS
bgColor=blue bgColor=blue
border=yellow border=yellow
tileMapFile=26.tmx tileMapFile=26.tmx

View File

@@ -1,4 +1,4 @@
name=the backyard name=THE BACKYARD
bgColor=blue bgColor=blue
border=cyan border=cyan
tileMapFile=27.tmx tileMapFile=27.tmx

View File

@@ -1,4 +1,4 @@
name=the final crossover name=THE FINAL CROSSOVER
bgColor=black bgColor=black
border=yellow border=yellow
tileMapFile=38.tmx tileMapFile=38.tmx

View File

@@ -1,4 +1,4 @@
name=you'll believe arounder can fly name=YOU'LL BELIEVE AROUNDER CAN FLY
bgColor=black bgColor=black
border=cyan border=cyan
tileMapFile=39.tmx tileMapFile=39.tmx

View File

@@ -1,4 +1,4 @@
name=prevent the crisis name=PREVENT THE CRISIS
bgColor=black bgColor=black
border=bright_magenta border=bright_magenta
tileMapFile=40.tmx tileMapFile=40.tmx

View File

@@ -1,4 +1,4 @@
name=around with me name=AROUND WITH ME
bgColor=black bgColor=black
border=blue border=blue
tileMapFile=41.tmx tileMapFile=41.tmx

View File

@@ -1,4 +1,4 @@
name=P.A.C.O. on the go name=P.A.C.O. ON THE GO
bgColor=black bgColor=black
border=black border=black
tileMapFile=42.tmx tileMapFile=42.tmx

View File

@@ -1,4 +1,4 @@
name=the tube name=THE TUBE
bgColor=black bgColor=black
border=blue border=blue
tileMapFile=43.tmx tileMapFile=43.tmx

View File

@@ -1,4 +1,4 @@
name=the kitchen name=THE KITCHEN
bgColor=black bgColor=black
border=cyan border=cyan
tileMapFile=44.tmx tileMapFile=44.tmx

View File

@@ -1,4 +1,4 @@
name=the battle never ends name=THE BATTLE NEVER ENDS
bgColor=black bgColor=black
border=white border=white
tileMapFile=47.tmx tileMapFile=47.tmx

View File

@@ -1,4 +1,4 @@
name=welcome to the jailbattle name=WELCOME TO THE JAILBATTLE
bgColor=green bgColor=green
border=bright_green border=bright_green
tileMapFile=48.tmx tileMapFile=48.tmx

View File

@@ -1,4 +1,4 @@
name=bamba name=BAMBA
bgColor=black bgColor=black
border=red border=red
tileMapFile=49.tmx tileMapFile=49.tmx

View File

@@ -1,4 +1,4 @@
name=stored jailgames name=STORED JAILGAMES
bgColor=black bgColor=black
border=blue border=blue
tileMapFile=50.tmx tileMapFile=50.tmx

View File

@@ -1,4 +1,4 @@
name=mini ascii name=MINI ASCII
bgColor=black bgColor=black
border=black border=black
tileMapFile=51.tmx tileMapFile=51.tmx

View File

@@ -1,4 +1,4 @@
name=breakout.lua name=BREAKOUT.LUA
bgColor=black bgColor=black
border=black border=black
tileMapFile=52.tmx tileMapFile=52.tmx

View File

@@ -1,4 +1,4 @@
name=P.A.C.O workshop name=P.A.C.O WORKSHOP
bgColor=black bgColor=black
border=yellow border=yellow
tileMapFile=53.tmx tileMapFile=53.tmx

View File

@@ -1,4 +1,4 @@
name=the basement name=THE BASEMENT
bgColor=black bgColor=black
border=green border=green
tileMapFile=54.tmx tileMapFile=54.tmx

View File

@@ -1,4 +1,4 @@
name=that's a guitar name=THAT'S A GUITAR
bgColor=black bgColor=black
border=black border=black
tileMapFile=55.tmx tileMapFile=55.tmx

View File

@@ -1,4 +1,4 @@
name=heavy demons on leggins name=HEAVY DEMONS ON LEGGINS
bgColor=black bgColor=black
border=black border=black
tileMapFile=56.tmx tileMapFile=56.tmx

View File

@@ -1,4 +1,4 @@
name=jailgames go to hell name=JAILGAMES GO TO HELL
bgColor=red bgColor=red
border=bright_red border=bright_red
tileMapFile=57.tmx tileMapFile=57.tmx

View File

@@ -1,4 +1,4 @@
name=chirping name=CHIRPING
bgColor=black bgColor=black
border=magenta border=magenta
tileMapFile=58.tmx tileMapFile=58.tmx

View File

@@ -1,4 +1,4 @@
name=static name=STATIC
bgColor=black bgColor=black
border=bright_magenta border=bright_magenta
tileMapFile=59.tmx tileMapFile=59.tmx

View File

@@ -1,4 +1,4 @@
name=magnetic fields name=MAGNETIC FIELDS
bgColor=black bgColor=black
border=red border=red
tileMapFile=60.tmx tileMapFile=60.tmx

View File

@@ -87,7 +87,7 @@ Demo::Demo(SDL_Renderer *renderer, Screen *screen, Resource *resource, Asset *as
// Crea los objetos // Crea los objetos
itemTracker = new ItemTracker(); itemTracker = new ItemTracker();
scoreboard = new ScoreBoard(renderer, resource, asset, options, &board); 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(); eventHandler = new SDL_Event();
text = new Text(resource->getOffset("smb2.txt"), resource->getTexture("smb2.png"), renderer); text = new Text(resource->getOffset("smb2.txt"), resource->getTexture("smb2.png"), renderer);
@@ -287,7 +287,7 @@ bool Demo::changeRoom(std::string file)
room = nullptr; room = nullptr;
// Crea un objeto habitación nuevo a partir del fichero // 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 // Pone el color del marcador en función del color del borde de la habitación
setScoreBoardColor(); setScoreBoardColor();

View File

@@ -19,8 +19,7 @@ Game::Game(SDL_Renderer *renderer, Screen *screen, Resource *resource, Asset *as
this->options = options; this->options = options;
// **** // ****
// this->debug->setEnabled(true); currentRoom = "01.room";
currentRoom = "27.room";
const int x = 29; const int x = 29;
const int y = 13; const int y = 13;
spawnPoint = {x * 8, y * 8, 0, 0, 0, s_standing, SDL_FLIP_HORIZONTAL}; 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); scoreboard = new ScoreBoard(renderer, resource, asset, options, &board);
itemTracker = new ItemTracker(); itemTracker = new ItemTracker();
roomTracker = new RoomTracker(); 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}; const player_t player = {spawnPoint, "player.png", "player.ani", renderer, resource, asset, options, input, room, debug};
this->player = new Player(player); this->player = new Player(player);
eventHandler = new SDL_Event(); eventHandler = new SDL_Event();
@@ -45,9 +44,9 @@ Game::Game(SDL_Renderer *renderer, Screen *screen, Resource *resource, Asset *as
board.lives = 9; board.lives = 9;
board.items = 0; board.items = 0;
board.rooms = 1; board.rooms = 1;
setScoreBoardColor();
board.music = true; board.music = true;
board.jailEnabled = false; board.jailEnabled = false;
setScoreBoardColor();
roomTracker->addRoom(currentRoom); roomTracker->addRoom(currentRoom);
paused = false; paused = false;
blackScreen = false; blackScreen = false;
@@ -310,7 +309,7 @@ bool Game::changeRoom(std::string file)
room = nullptr; room = nullptr;
// Crea un objeto habitación nuevo a partir del fichero // 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 // Pone el color del marcador en función del color del borde de la habitación
setScoreBoardColor(); setScoreBoardColor();
@@ -404,7 +403,7 @@ void Game::killPlayer()
setBlackScreen(); setBlackScreen();
// Crea la nueva habitación y el nuevo jugador // 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}; const player_t player = {spawnPoint, "player.png", "player.ani", renderer, resource, asset, options, input, room, debug};
this->player = new Player(player); this->player = new Player(player);
@@ -504,7 +503,7 @@ bool Game::checkEndGame()
const bool a = room->getName() == "THE JAIL"; const bool a = room->getName() == "THE JAIL";
const bool b = board.items >= 5; const bool b = board.items >= 5;
const bool c = player->getRect().x < 152; const bool c = player->getRect().x <= 128;
if (b) if (b)
{ {

View File

@@ -377,7 +377,7 @@ bool setItem(item_t *item, std::string var, std::string value)
} }
// Constructor // 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 // Copia los punteros a objetos
this->renderer = renderer; this->renderer = renderer;
@@ -404,6 +404,7 @@ Room::Room(room_t *room, SDL_Renderer *renderer, Screen *screen, Asset *asset, o
textureB = room->textureB; textureB = room->textureB;
tileMap = room->tileMap; tileMap = room->tileMap;
texture = (options->palette == p_zxspectrum) ? textureA : textureB; texture = (options->palette == p_zxspectrum) ? textureA : textureB;
this->jailEnabled = jailEnabled;
// Inicializa variables // Inicializa variables
tileSize = 8; tileSize = 8;
@@ -438,6 +439,12 @@ Room::Room(room_t *room, SDL_Renderer *renderer, Screen *screen, Asset *asset, o
// Carga los sonidos // Carga los sonidos
itemSound = JA_LoadSound(asset->get("item.wav").c_str()); itemSound = JA_LoadSound(asset->get("item.wav").c_str());
// Abre la jail para poder entrar
if (jailEnabled)
{
openTheJail();
}
// Calcula las superficies // Calcula las superficies
setBottomSurfaces(); setBottomSurfaces();
setTopSurfaces(); setTopSurfaces();
@@ -1463,4 +1470,24 @@ void Room::resume()
int Room::getAutoSurfaceDirection() int Room::getAutoSurfaceDirection()
{ {
return autoSurfaceDirection; 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;
}
} }

View File

@@ -117,6 +117,7 @@ private:
int mapWidth; // Ancho del mapa en tiles int mapWidth; // Ancho del mapa en tiles
int mapHeight; // Alto del mapa en tiles int mapHeight; // Alto del mapa en tiles
int tileSetWidth; // Ancho del tileset 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 // Pinta el mapa de la habitación en la textura
void fillMapTexture(); void fillMapTexture();
@@ -154,9 +155,12 @@ private:
// Devuelve el tipo de tile que hay en ese indice // Devuelve el tipo de tile que hay en ese indice
tile_e getTile(int index); tile_e getTile(int index);
// Abre la jail para poder entrar
void openTheJail();
public: public:
// Constructor // 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 // Destructor
~Room(); ~Room();