forked from jaildesigner-jailgames/jaildoctors_dilemma
Colisiones casi acabadas
This commit is contained in:
@@ -13,13 +13,12 @@
|
||||
#ifndef PLAYER_H
|
||||
#define PLAYER_H
|
||||
|
||||
//#define VX 0.6
|
||||
#define STATUS_STANDING 0
|
||||
#define STATUS_JUMPING 1
|
||||
#define STATUS_FALLING 2
|
||||
|
||||
#define GRAVITY 0.035f
|
||||
#define MAX_VY 1.2f
|
||||
enum state_e
|
||||
{
|
||||
s_standing,
|
||||
s_jumping,
|
||||
s_falling
|
||||
};
|
||||
|
||||
struct player_t
|
||||
{
|
||||
@@ -28,7 +27,7 @@ struct player_t
|
||||
float vx;
|
||||
float vy;
|
||||
int jump_ini;
|
||||
int status;
|
||||
state_e state;
|
||||
SDL_RendererFlip flip;
|
||||
};
|
||||
|
||||
@@ -42,17 +41,23 @@ public:
|
||||
float vy; // Velocidad/desplazamiento del jugador en el eje Y
|
||||
int w; // Ancho del jugador
|
||||
int h; // ALto del jugador
|
||||
LTexture *texture; // Textura con los graficos del enemigo
|
||||
Input *input; // Objeto para gestionar la entrada
|
||||
SDL_Renderer *renderer; // El renderizador de la ventana
|
||||
Input *input; // Objeto para gestionar la entrada
|
||||
Asset *asset; // Objeto con la ruta a todos los ficheros de recursos
|
||||
Room *room; // Objeto encargado de gestionar cada habitación del juego
|
||||
LTexture *texture; // Textura con los graficos del enemigo
|
||||
AnimatedSprite *sprite; // Sprite del enemigo
|
||||
color_t color; // Color del jugador
|
||||
SDL_Rect colliderBox; // Caja de colisión con los enemigos u objetos
|
||||
std::vector<SDL_Point> colliderPoints; // Puntos de colisión con el mapa
|
||||
std::vector<SDL_Point> underFeet; // Contiene los puntos que hay bajo cada pie del jugador
|
||||
state_e state; // Estado en el que se encuentra el jugador. Util apara saber si está saltando o cayendo
|
||||
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
|
||||
SDL_Rect lastPosition; // Contiene la ultima posición del jugador, por si hay que deshacer algun movimiento
|
||||
int jump_ini; // Valor del eje Y en el que se inicia el salto
|
||||
float maxVY; // Velocidad máxima que puede alcanzar al desplazarse en vertical
|
||||
|
||||
// Comprueba las entradas y modifica variables
|
||||
void checkInput();
|
||||
@@ -60,6 +65,9 @@ public:
|
||||
// Comprueba si se halla en alguno de los cuatro bordes
|
||||
void checkBorders();
|
||||
|
||||
// Comprueba el estado del jugador
|
||||
void checkState();
|
||||
|
||||
// Asigna velocidad negativa en el eje Y al jugador
|
||||
void jump();
|
||||
|
||||
@@ -75,27 +83,19 @@ public:
|
||||
// Comprueba si ha finalizado el salto al alcanzar la altura de inicio
|
||||
void checkJumpEnd();
|
||||
|
||||
// Comprueba si el jugador esta sobre el suelo
|
||||
void checkOnFloor();
|
||||
// Comprueba si el jugador tiene suelo debajo de los pies
|
||||
bool isOnFloor();
|
||||
|
||||
// Comprueba que el jugador no atraviese ninguna pared
|
||||
bool checkWalls();
|
||||
|
||||
// Obtiene el valor del pixel inferior izquierdo del jugador
|
||||
SDL_Point getLeftFoot();
|
||||
|
||||
// Obtiene el valor del pixel inferior derecho del jugador
|
||||
SDL_Point getRightFoot();
|
||||
|
||||
// Actualiza los puntos de colisión
|
||||
void updateColliderPoints();
|
||||
|
||||
public:
|
||||
AnimatedSprite *sprite; // Sprite del enemigo
|
||||
SDL_Rect lastPosition; // Contiene la ultima posición del jugador, por si hay que deshacer algun movimiento
|
||||
int jump_ini; // Valor del eje Y en el que se inicia el salto
|
||||
int status; // Estado en el que se encuentra el jugador. Util apara saber si está saltando o cayendo
|
||||
// Actualiza los puntos de los pies
|
||||
void updateFeet();
|
||||
|
||||
public:
|
||||
// Constructor
|
||||
Player(player_t ini, std::string tileset, std::string animation, SDL_Renderer *renderer, Asset *asset, Input *input, Room *room);
|
||||
|
||||
@@ -117,12 +117,6 @@ public:
|
||||
// Cambia al jugador de un borde al opuesto. Util para el cambio de pantalla
|
||||
void switchBorders();
|
||||
|
||||
// Cambia el estado del jugador
|
||||
void setStatus(int value);
|
||||
|
||||
// Obtiene el estado del jugador
|
||||
int getStatus();
|
||||
|
||||
// Obtiene el rectangulo que delimita al jugador
|
||||
SDL_Rect getRect();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user