#pragma once
#include <list>
#include "SDL2/SDL.h"
#include "GameInfo.h"
#include "DrawManager.h"
#include "InputManager.h"
#include "MusicManager.h"
#include "AiguaProcesor.h"
#include "MarcadorProcesor.h"
#include "ArounderProcesor.h"

class GameController
{
public:
	GameController(DrawManager *p_drawManager, InputManager *p_inputManager);
	~GameController();

	bool Init();
	void Go(GameInfo *pGameInfo);
	void Finalize(void);

private:
	DrawManager *drawManager;
	InputManager *inputManager;
	AiguaProcesor *aiguaProcesor;
	MarcadorProcesor *marcadorProcesor;

	ArounderProcesor *primerArounder;
	ArounderProcesor *arounderSeleccionat;

	SDL_Surface *mapa;
	SDL_Surface *fondo;
	SDL_Surface *sprites;
	SDL_Surface *puerta;
	SDL_Surface *font1;
	SDL_Surface *cursor;
	SDL_Surface *marca;
	SDL_Surface *menu;

	GameInfo *gameInfo;

	int startTicks;
	int currentTicks;

	int xInicial;
	int yInicial;
	int xFinal;
	int yFinal;

	void PintarEscena();
	void PintarCursor();
	bool Pausa();
	bool Menu(const bool bypass = false);
	void CarregarMapa(const int numMapa);
	const char *formatejar(const int numero);

};
