#pragma once
#include "animatedsprite.h"
#include "jail_audio.h"
#include "utils.h"

#ifndef PLAYER_H
#define PLAYER_H

// The player
class Player
{
public:
	// Constructor
	Player(SDL_Renderer *renderer, LTexture *texture);

	// Destructor
	~Player();

	// Inicializa todas las variables
	void init(SDL_Renderer *renderer, LTexture *texture);

	// Resetea ciertas variables
	void reset();

	// Actualiza todas las variables
	void update();

	// Dibuja el objeto
	void render();

private:
	bool can_jump;			  // Si puede saltar
	bool enabled;			  // Si está habilitado
	bool jump_pressed_before; // Si se ha pulsado el botón de salto previamente
	bool jump_pressed_now;	  // Si se acaba de pulsar el salto
	bool key[6];			  // Indica las llaves que posee el jugador
	bool standing;			  // Si esta de pie (o quieto?)
	bool was_on_background;	  // Si viene de una zona atravesable
	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 respawn_x;			  // Coordenadas para revivir
	int respawn_y;			  // Coordenades para revivir
	int speed_x;			  // Cantidad de pixeles a desplazarse
	int speed_y;			  // Cantidad de pixels a desplazarse
	JA_Sound sound_coin;	  // Sonido al coger monedas
	JA_Sound sound_death;	  // Sonido al morir
	JA_Sound sound_jump;	  // Sonido al saltar
	SDL_Rect rect;			  // Rectangulo con la posición del jugador
	AnimatedSprite *sprite;	  // Sprite con los graficos y animaciones
	Uint8 active_animation;	  // Animación activa
	Uint8 direction;		  // Sentido del desplazamiento
	Uint8 lifes;			  // Cantidad de vidas
	Uint8 respawn_direction;  // Dirección para revivir
};

#endif
