forked from jaildesigner-jailgames/jaildoctors_dilemma
Muerte y reaparición del jugador
This commit is contained in:
@@ -9,3 +9,16 @@ room_right=0
|
|||||||
[tilemap]
|
[tilemap]
|
||||||
room2.tmx
|
room2.tmx
|
||||||
[tilemap-end]
|
[tilemap-end]
|
||||||
|
|
||||||
|
[enemy]
|
||||||
|
tileset=enemy01.png
|
||||||
|
x=120
|
||||||
|
y=8
|
||||||
|
vx=0
|
||||||
|
vy=1
|
||||||
|
x1=120
|
||||||
|
x2=120
|
||||||
|
y1=8
|
||||||
|
y2=104
|
||||||
|
color=purple
|
||||||
|
[enemy-end]
|
||||||
@@ -4,17 +4,17 @@
|
|||||||
<layer id="1" name="Capa de patrones 1" width="32" height="16">
|
<layer id="1" name="Capa de patrones 1" width="32" height="16">
|
||||||
<data encoding="csv">
|
<data encoding="csv">
|
||||||
41,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,41,
|
41,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,41,
|
||||||
41,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,41,
|
41,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,
|
||||||
41,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,41,
|
41,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,
|
||||||
41,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,41,
|
41,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,
|
||||||
41,0,0,0,0,41,41,41,41,41,41,41,41,41,41,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,
|
41,0,0,0,0,41,41,41,41,41,41,41,41,41,41,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
41,0,0,41,41,41,41,41,0,0,0,0,0,0,0,0,0,81,0,0,0,0,0,0,0,0,0,0,0,0,0,41,
|
41,0,0,41,41,41,41,41,0,0,0,0,0,0,0,0,0,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
41,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,41,
|
41,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,
|
||||||
41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,41,0,0,0,0,0,0,0,0,0,0,0,0,41,
|
41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,41,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
41,41,41,0,0,0,0,0,0,0,0,0,0,0,41,41,41,41,41,41,41,41,0,0,0,0,0,0,0,0,0,41,
|
41,41,41,0,0,0,0,0,0,0,0,0,0,0,41,41,41,41,41,41,41,41,0,0,0,0,0,41,41,41,41,41,
|
||||||
41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,0,0,0,0,0,0,41,
|
41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,0,0,0,0,0,0,0,
|
||||||
41,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,41,
|
41,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,
|
||||||
41,0,0,0,0,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,0,0,0,0,0,41,
|
41,0,0,0,0,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,0,0,0,0,0,0,
|
||||||
41,0,0,0,0,0,0,0,0,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
41,0,0,0,0,0,0,0,0,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
41,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,
|
41,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,
|
||||||
41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,
|
41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,
|
||||||
|
|||||||
@@ -4,17 +4,17 @@
|
|||||||
<layer id="1" name="Capa de patrones 1" width="32" height="16">
|
<layer id="1" name="Capa de patrones 1" width="32" height="16">
|
||||||
<data encoding="csv">
|
<data encoding="csv">
|
||||||
43,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,43,
|
43,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,43,
|
||||||
43,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,43,
|
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,43,
|
||||||
43,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,43,
|
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,43,
|
||||||
43,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,43,
|
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,43,
|
||||||
43,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,43,
|
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,43,
|
||||||
43,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,43,
|
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,43,
|
||||||
43,0,0,0,0,0,0,0,0,0,0,83,83,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,
|
0,0,0,0,0,0,0,0,0,0,0,83,83,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,
|
||||||
43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,43,43,43,43,0,0,0,0,0,0,0,0,0,43,
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,43,43,43,43,0,0,0,0,0,0,0,0,0,43,
|
||||||
43,0,0,0,0,0,0,0,0,83,0,0,0,0,0,0,0,0,0,3,0,0,0,0,83,83,0,0,0,0,0,43,
|
43,43,43,43,43,43,0,0,0,83,0,0,0,0,0,0,0,0,0,3,0,0,0,0,83,83,0,0,0,0,0,43,
|
||||||
43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,43,
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,43,
|
||||||
43,0,0,0,0,0,0,0,0,83,0,0,0,0,0,0,0,0,0,3,0,0,0,0,83,83,0,0,0,0,0,43,
|
0,0,0,0,0,0,0,0,0,83,0,0,0,0,0,0,0,0,0,3,0,0,0,0,83,83,0,0,0,0,0,43,
|
||||||
43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,43,
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,43,
|
||||||
0,0,0,0,0,0,0,83,83,83,83,83,83,0,0,0,0,0,0,3,0,0,0,0,83,83,0,0,0,0,0,43,
|
0,0,0,0,0,0,0,83,83,83,83,83,83,0,0,0,0,0,0,3,0,0,0,0,83,83,0,0,0,0,0,43,
|
||||||
0,0,0,0,0,83,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,43,
|
0,0,0,0,0,83,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,43,
|
||||||
63,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,43,43,43,43,43,43,43,43,43,43,43,63,
|
63,43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,43,43,43,43,43,43,43,43,43,43,43,63,
|
||||||
|
|||||||
@@ -3,6 +3,10 @@
|
|||||||
// Constructor
|
// Constructor
|
||||||
Game::Game(SDL_Window *window, SDL_Renderer *renderer, Asset *asset, Lang *lang, Input *input)
|
Game::Game(SDL_Window *window, SDL_Renderer *renderer, Asset *asset, Lang *lang, Input *input)
|
||||||
{
|
{
|
||||||
|
// Inicia variables
|
||||||
|
mCurrentRoom = "01.room";
|
||||||
|
mSpawnPoint = {2 * 8, 12 * 8, 0, 0, 0, STATUS_STANDING, SDL_FLIP_NONE};
|
||||||
|
|
||||||
// Copia los punteros
|
// Copia los punteros
|
||||||
mRenderer = renderer;
|
mRenderer = renderer;
|
||||||
mAsset = asset;
|
mAsset = asset;
|
||||||
@@ -11,8 +15,8 @@ Game::Game(SDL_Window *window, SDL_Renderer *renderer, Asset *asset, Lang *lang,
|
|||||||
|
|
||||||
// Crea los objetos
|
// Crea los objetos
|
||||||
mScreen = new Screen(window, renderer);
|
mScreen = new Screen(window, renderer);
|
||||||
mRoom = new Room(mAsset->get("01.room"), mRenderer, mAsset);
|
mRoom = new Room(mAsset->get(mCurrentRoom), mRenderer, mAsset);
|
||||||
mPlayer = new Player(mAsset->get("player01.png"), mRenderer, mAsset, mInput, mRoom);
|
mPlayer = new Player(mSpawnPoint, mAsset->get("player01.png"), mRenderer, mAsset, mInput, mRoom);
|
||||||
mEventHandler = new SDL_Event();
|
mEventHandler = new SDL_Event();
|
||||||
mTextureText = new LTexture();
|
mTextureText = new LTexture();
|
||||||
mText = new Text(mAsset->get("smb2.txt"), mTextureText, renderer);
|
mText = new Text(mAsset->get("smb2.txt"), mTextureText, renderer);
|
||||||
@@ -118,6 +122,16 @@ void Game::update()
|
|||||||
checkPlayerAndWalls(); // Debe ir detras del player update, por si se ha metido en algun muro
|
checkPlayerAndWalls(); // Debe ir detras del player update, por si se ha metido en algun muro
|
||||||
checkPlayerOnBorder();
|
checkPlayerOnBorder();
|
||||||
checkPlayerOnFloor();
|
checkPlayerOnFloor();
|
||||||
|
if (checkPlayerAndEnemies())
|
||||||
|
{
|
||||||
|
// Destruye la habitacion y el jugador
|
||||||
|
delete mRoom;
|
||||||
|
delete mPlayer;
|
||||||
|
|
||||||
|
// Crea la nueva habitación y el nuevo jugador
|
||||||
|
mRoom = new Room(mAsset->get(mCurrentRoom), mRenderer, mAsset);
|
||||||
|
mPlayer = new Player(mSpawnPoint, mAsset->get("player01.png"), mRenderer, mAsset, mInput, mRoom);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -207,9 +221,12 @@ void Game::checkPlayerOnBorder()
|
|||||||
{
|
{
|
||||||
if (mPlayer->getOnBorder())
|
if (mPlayer->getOnBorder())
|
||||||
{
|
{
|
||||||
if (changeRoom(mRoom->getRoom(mPlayer->getBorder())))
|
const std::string room_name = mRoom->getRoom(mPlayer->getBorder());
|
||||||
|
if (changeRoom(room_name))
|
||||||
{
|
{
|
||||||
mPlayer->switchBorders();
|
mPlayer->switchBorders();
|
||||||
|
mCurrentRoom = room_name;
|
||||||
|
mSpawnPoint = mPlayer->getSpawnParams();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -37,6 +37,8 @@ private:
|
|||||||
Uint32 mTicks; // Contador de ticks para ajustar la velocidad del programa
|
Uint32 mTicks; // Contador de ticks para ajustar la velocidad del programa
|
||||||
Uint8 mTicksSpeed; // Velocidad a la que se repiten los bucles del programa
|
Uint8 mTicksSpeed; // Velocidad a la que se repiten los bucles del programa
|
||||||
section_t mSection; // Seccion actual dentro del juego
|
section_t mSection; // Seccion actual dentro del juego
|
||||||
|
std::string mCurrentRoom; // Fichero de la habitación actual
|
||||||
|
player_t mSpawnPoint; // Lugar de la habitación donde aparece el jugador
|
||||||
|
|
||||||
// Inicializa las variables
|
// Inicializa las variables
|
||||||
void init();
|
void init();
|
||||||
|
|||||||
@@ -294,6 +294,12 @@ void MovingSprite::setFlip(SDL_RendererFlip flip)
|
|||||||
mFlip = flip;
|
mFlip = flip;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Obtiene el valor de la variable
|
||||||
|
SDL_RendererFlip MovingSprite::getFlip()
|
||||||
|
{
|
||||||
|
return mFlip;
|
||||||
|
}
|
||||||
|
|
||||||
// Devuelve el rectangulo donde está el sprite
|
// Devuelve el rectangulo donde está el sprite
|
||||||
SDL_Rect MovingSprite::getRect()
|
SDL_Rect MovingSprite::getRect()
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -138,6 +138,9 @@ public:
|
|||||||
// Establece el valor de la variable
|
// Establece el valor de la variable
|
||||||
void setFlip(SDL_RendererFlip flip);
|
void setFlip(SDL_RendererFlip flip);
|
||||||
|
|
||||||
|
// Obtiene el valor de la variable
|
||||||
|
SDL_RendererFlip getFlip();
|
||||||
|
|
||||||
// Devuelve el rectangulo donde está el sprite
|
// Devuelve el rectangulo donde está el sprite
|
||||||
SDL_Rect getRect();
|
SDL_Rect getRect();
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
// CAUTION!!!!! si no se gasta al final, quitar la referencia a la habitación
|
// CAUTION!!!!! si no se gasta al final, quitar la referencia a la habitación
|
||||||
|
|
||||||
// Constructor
|
// Constructor
|
||||||
Player::Player(std::string _tileset, SDL_Renderer *_renderer, Asset *_asset, Input *_input, Room *_room)
|
Player::Player(player_t ini, std::string _tileset, SDL_Renderer *_renderer, Asset *_asset, Input *_input, Room *_room)
|
||||||
{
|
{
|
||||||
// Obten punteros a objetos
|
// Obten punteros a objetos
|
||||||
asset = _asset;
|
asset = _asset;
|
||||||
@@ -24,15 +24,14 @@ Player::Player(std::string _tileset, SDL_Renderer *_renderer, Asset *_asset, Inp
|
|||||||
onBorder = false;
|
onBorder = false;
|
||||||
border = BORDER_TOP;
|
border = BORDER_TOP;
|
||||||
|
|
||||||
jump_ini = 0;
|
jump_ini = ini.jump_ini;
|
||||||
status = STATUS_STANDING;
|
status = ini.status;
|
||||||
|
|
||||||
|
sprite->setPosX(ini.x);
|
||||||
|
sprite->setPosY(ini.y);
|
||||||
|
sprite->setVelX(ini.vx);
|
||||||
|
sprite->setVelY(ini.vy);
|
||||||
|
|
||||||
sprite->setPosX(2 * 8);
|
|
||||||
sprite->setPosX(10 * 8);
|
|
||||||
sprite->setPosY(12 * 8);
|
|
||||||
sprite->setPosY(6 * 8);
|
|
||||||
sprite->setVelX(0);
|
|
||||||
sprite->setVelY(0);
|
|
||||||
sprite->setWidth(8);
|
sprite->setWidth(8);
|
||||||
sprite->setHeight(16);
|
sprite->setHeight(16);
|
||||||
sprite->setCurrentFrame(0);
|
sprite->setCurrentFrame(0);
|
||||||
@@ -46,6 +45,8 @@ Player::Player(std::string _tileset, SDL_Renderer *_renderer, Asset *_asset, Inp
|
|||||||
sprite->setAnimationFrames(0, 3, 8 * 3, 0, 8, 16);
|
sprite->setAnimationFrames(0, 3, 8 * 3, 0, 8, 16);
|
||||||
sprite->setSpriteClip(sprite->getAnimationClip(0, 0));
|
sprite->setSpriteClip(sprite->getAnimationClip(0, 0));
|
||||||
|
|
||||||
|
sprite->setFlip(ini.flip);
|
||||||
|
|
||||||
lastPosition = getRect();
|
lastPosition = getRect();
|
||||||
collider = getRect();
|
collider = getRect();
|
||||||
}
|
}
|
||||||
@@ -282,3 +283,19 @@ void Player::checkJump()
|
|||||||
status = STATUS_FALLING;
|
status = STATUS_FALLING;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Obtiene algunos parametros del jugador
|
||||||
|
player_t Player::getSpawnParams()
|
||||||
|
{
|
||||||
|
player_t params;
|
||||||
|
|
||||||
|
params.x = sprite->getPosX();
|
||||||
|
params.y = sprite->getPosY();
|
||||||
|
params.vx = sprite->getVelX();
|
||||||
|
params.vy = sprite->getVelY();
|
||||||
|
params.jump_ini = jump_ini;
|
||||||
|
params.status = status;
|
||||||
|
params.flip = sprite->getFlip();
|
||||||
|
|
||||||
|
return params;
|
||||||
|
}
|
||||||
@@ -19,6 +19,17 @@
|
|||||||
#define GRAVITY 0.035f
|
#define GRAVITY 0.035f
|
||||||
#define MAX_VY 1.2f
|
#define MAX_VY 1.2f
|
||||||
|
|
||||||
|
struct player_t
|
||||||
|
{
|
||||||
|
float x;
|
||||||
|
float y;
|
||||||
|
float vx;
|
||||||
|
float vy;
|
||||||
|
int jump_ini;
|
||||||
|
int status;
|
||||||
|
SDL_RendererFlip flip;
|
||||||
|
};
|
||||||
|
|
||||||
// Clase Player
|
// Clase Player
|
||||||
class Player
|
class Player
|
||||||
{
|
{
|
||||||
@@ -62,7 +73,7 @@ public:
|
|||||||
int status; // Estado en el que se encuentra el jugador. Util apara saber si está saltando o cayendo
|
int status; // Estado en el que se encuentra el jugador. Util apara saber si está saltando o cayendo
|
||||||
|
|
||||||
// Constructor
|
// Constructor
|
||||||
Player(std::string _tileset, SDL_Renderer *_renderer, Asset *_asset, Input *_input, Room *_room);
|
Player(player_t ini, std::string _tileset, SDL_Renderer *_renderer, Asset *_asset, Input *_input, Room *_room);
|
||||||
|
|
||||||
// Destructor
|
// Destructor
|
||||||
~Player();
|
~Player();
|
||||||
@@ -105,6 +116,9 @@ public:
|
|||||||
|
|
||||||
// Deshace el ultimo movimiento
|
// Deshace el ultimo movimiento
|
||||||
void undoLastMove();
|
void undoLastMove();
|
||||||
|
|
||||||
|
// Obtiene algunos parametros del jugador
|
||||||
|
player_t getSpawnParams();
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
Reference in New Issue
Block a user