Files
volcano_2022/source/player.h

69 lines
1.9 KiB
C++

#pragma once
#include <SDL2/SDL.h>
#include "jail_audio.h"
#include "utils.h"
#include "input.h"
#include "animatedsprite.h"
#include "asset.h"
#include "map.h"
#ifndef PLAYER_H
#define PLAYER_H
// The player
class Player
{
private:
Asset *asset; // Objeto con la ruta a todos los ficheros de recursos
SDL_Renderer *renderer; // El renderizador de la ventana
Input *input; // Objeto Input para gestionar las entradas
AnimatedSprite *sprite; // Objeto con los graficos, animaciones y posición del jugador
LTexture *texture; // Textura con los graficos del jugador
Map *map; // Objeto con el mapa
bool can_jump; // Si puede saltar
bool enabled; // Si está habilitado
bool standing; // Si esta de pie (o quieto?)
bool invulnerable; // Si es invulnerable
int coins; // Cantidad de monedas
int cooldown; // Tiempo de inhabilitación
int jumpforce; // Cantidad de pixels a desplazarse y velocidad que pilla al saltar
int lifes; // Cantidad de vidas
float gravity; // Gravedad
std::vector<bool> key; // Indica las llaves que posee el jugador
std::vector<SDL_Point> collider; // Contiene los puntos de colisión del jugador con el mapa
JA_Sound sound_coin; // Sonido al coger monedas
JA_Sound sound_death; // Sonido al morir
JA_Sound sound_jump; // Sonido al saltar
// Comprueba las entradas y modifica variables
void checkInput();
// Aplica la gravedad
void addGravity();
// Actualiza los puntos de colisión
void updateColliders();
// Compruena las colisiones con el mapa
void checkMapCollisions();
// Deshace el último movimiento
void undoMove();
public:
// Constructor
Player(SDL_Renderer *renderer, Asset *asset, Input *input, Map *map);
// Destructor
~Player();
// Actualiza todas las variables
void update();
// Dibuja el objeto
void render();
};
#endif