#pragma once

#include "struct.h"
#include "spriteanimated.h"
#include "const.h"
#include "globals.h"
#include "globals2.h"

#ifndef PLAYER_H
#define PLAYER_H

//The player
class Player
{
public:
	//Constructor
	Player();

	//Iniciador
	void init();

	//Comprueba la entrada (teclado, gamepad) y actua en consecuencia
	void checkInput(Uint8 input);
	
	//Mueve el jugador a la posición y animación que le corresponde
	void move();

	//Pinta el jugador en pantalla
	void render();

	//Establece el estado del jugador
	void setStatus(int status);

	//Establece la animación correspondiente al estado
	void setAnimation();

	//Obtiene el valor de la variable
	int getPosX();
	
	//Obtiene el valor de la variable
	int getPosY();
	
	//Obtiene el valor de la variable
	int getWidth();
	
	//Obtiene el valor de la variable
	int getHeight();
	
	//Indica si el jugador puede disparar
	bool canFire();

	//Establece el valor de la variable
	void setFireCooldown(int time);

	//Actualiza el valor de la variable
	void updateCooldown();

	//Actualiza al jugador a su posicion, animación y controla los contadores
	void update();

	//Obtiene la puntuación del jugador
	int getScore();

	//Establece la puntuación del jugador
	void setScore(int score);

	//Añade a la puntuación del jugador
	void addScore(int score);

	//Obtiene el circulo de colisión
	Circle &getCollider();

private:
	//Posición X, Y del jugador
	float mPosX;
	int mPosY;

	//Altura y anchura del jugador
	Uint8 mWidth;
	Uint8 mHeight;

	//Velocidad X, Y del jugador
	float mVelX;
	int mVelY;

	//Velocidad base del jugador
	float mBaseSpeed;

	//Contador durante el cual no puede disparar
	int mCooldown;

	//Vidas actuales del jugador
	Uint8 mLives;

	//Vidas iniciales del jugador
	Uint8 mStartingLives;

	//Puntos del jugador
	int mScore;

	//Estado del jugador
	Uint8 mStatus;

	//Sprite para dibujar al jugador en pantalla
	SpriteAnimated mSprite;

	//Circulo de colisión del jugador
	Circle mCollider;

	//Actualiza el circulo de colisión a la posición del jugador
	void shiftColliders();
};

#endif