Trabajando en las nuevas colisiones

This commit is contained in:
2022-09-04 15:39:12 +02:00
parent 5eaf44d0b8
commit 8630a0ae56
5 changed files with 224 additions and 161 deletions

View File

@@ -8,6 +8,7 @@
#include "input.h"
#include "const.h"
#include <string>
#include <vector>
#ifndef PLAYER_H
#define PLAYER_H
@@ -34,17 +35,23 @@ struct player_t
// Clase Player
class Player
{
private:
LTexture *texture; // Textura con los graficos del enemigo
Input *input; // Objeto para gestionar la entrada
SDL_Renderer *renderer; // El renderizador de la ventana
Asset *asset; // Objeto con la ruta a todos los ficheros de recursos
color_t color; // Color del jugador
SDL_Rect collider; // Caja de colisión
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
public:
float x; // Posición del jugador en el eje X
float y; // Posición del jugador en el eje Y
float vx; // Velocidad/desplazamiento del jugador en el eje X
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
Asset *asset; // Objeto con la ruta a todos los ficheros de recursos
Room *room; // Objeto encargado de gestionar cada habitación del juego
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
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
// Comprueba las entradas y modifica variables
void checkInput();
@@ -67,6 +74,21 @@ private:
// Comprueba si ha finalizado el salto
void checkJump();
// Comprueba si el jugador esta sobre el suelo
void checkOnFloor();
// 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
@@ -94,12 +116,6 @@ public:
// Cambia al jugador de un borde al opuesto. Util para el cambio de pantalla
void switchBorders();
// Obtiene el valor del pixel inferior izquierdo del jugador
SDL_Point getLeftFoot();
// Obtiene el valor del pixel inferior derecho del jugador
SDL_Point getRightFoot();
// Cambia el estado del jugador
void setStatus(int value);
@@ -123,6 +139,9 @@ public:
// Recarga la textura
void reLoadTexture();
// Establece el valor de la variable
void setRoom(Room *room);
};
#endif