#include <time.h>
#include "c2d2/chien2d2.h"
#include "Pause.h"
#include "c2d2/chienaudio2.h"
#include "desenha_cenario.h"
#include "randomiza_cenario.h"
#include "objetos_randomicos.h"
#include "personagem.h"
#include "interage_objetos.h"
#include "randomiza.h"

extern int objetos[6];//Possui três objetos ou menos, cada objeto irá armazenar um número que irá fazer referência a qual objeto está na tela
extern int objetos_posx[6];//Posição horizontal dos objetos
extern int objetos_posy[6];//Posição vertical dos objetos
extern int textura_chao;
extern int textura_teto;
extern int textura_parede;
extern int jogador_pos_x;
extern unsigned int sons[2];//efeitos sonoros do jogo...
extern int objeto_e_chave;//marca qual objeto é uma chave
extern int chave_setor;
extern int porta_chave;
extern int porta_setor;
extern int jogador_setor;


int mat_objetos[6][6]={{-2,-2,-2,-2,-2,-2},{-2,-2,-2,-2,-2,-2},{-2,-2,-2,-2,-2,-2},{-2,-2,-2,-2,-2,-2},{-2,-2,-2,-2,-2,-2},{-2,-2,-2,-2,-2,-2}};//Possui três objetos ou menos, cada objeto irá armazenar um número que irá fazer referência a qual objeto está na tela
int mat_objetos_posx[6][6]={{-2,-2,-2,-2,-2,-2},{-2,-2,-2,-2,-2,-2},{-2,-2,-2,-2,-2,-2},{-2,-2,-2,-2,-2,-2},{-2,-2,-2,-2,-2,-2},{-2,-2,-2,-2,-2,-2}};//Posição horizontal dos objetos
int mat_objetos_posy[6][6]={{-2,-2,-2,-2,-2,-2},{-2,-2,-2,-2,-2,-2},{-2,-2,-2,-2,-2,-2},{-2,-2,-2,-2,-2,-2},{-2,-2,-2,-2,-2,-2},{-2,-2,-2,-2,-2,-2}};//Posição vertical dos objetos
int vet_textura_chao[6]={-2.-2.-2.-2.-2.-2};
int vet_textura_teto[6]={-2.-2.-2.-2.-2.-2};
int vet_textura_parede[6]={-2.-2.-2.-2.-2.-2};

extern int estadoatual;
extern int sai_fase;
extern bool encerra;
extern unsigned int musicas[2];//musicas do jogo...
extern unsigned int sons[2];//efeitos sonoros do jogo...
extern unsigned int fonte32;

void tocasom(unsigned int som){
	CA2_TocaEfeito(som, 0);
}

extern bool randomiza_coisas;

int pos=0;

void seleciona_chave();
void seleciona_porta();

void Fase(){
	C2D2_Botao *teclas = C2D2_PegaTeclas();
	C2D2_Sincroniza(C2D2_FPS_PADRAO);
	CA2_TocaMusica(musicas[1],-1);
	int i=0;
	int j=0;
	char text_vel[40] = "No key yet...\0";
	for(i=0;i<6;i++){
			seleciona_teto();
			vet_textura_teto[i]=textura_teto;
			seleciona_chao();
			vet_textura_chao[i]=textura_chao;
			seleciona_parede();
			vet_textura_parede[i]=textura_parede;
			seleciona_objeto_randomico();
			for(j=0;j<6;j++){
				mat_objetos_posx[i][j]=objetos_posx[j];
				mat_objetos_posy[i][j]=objetos_posy[j];
				mat_objetos[i][j]=objetos[j];
			}
			zera_objetos();
	}
	seleciona_chave();
	seleciona_porta();	//Seleciona Porta
	do{
		if(randomiza_coisas){
			jogador_setor=pos;
			textura_chao=vet_textura_chao[pos];
			textura_teto=vet_textura_teto[pos];
			textura_parede=vet_textura_parede[pos];

			for(j=0;j<6;j++){
				objetos_posx[j]=mat_objetos_posx[pos][j];
				objetos_posy[j]=mat_objetos_posy[pos][j];
				objetos[j]=mat_objetos[pos][j];
			}

			randomiza_coisas=false;
		}
		if(teclas[C2D2_ESC].pressionado){
            estadoatual=4;
			TelaPause();
			if(estadoatual == 1){
				estadoatual = 1; //FORÇA A SAIR PARA O MENU PRINCIPAL
				sai_fase = 1;
			}
			if(encerra == true){
				encerra = true; //FORÇA A ENCERRAR
				sai_fase = 1;
			}
		}move_gatos();
		jogador_processa_teclado();
		i=detecta_se_player_selecionou_um_item();
		if(player_pegou_chave()){
			tocasom(sons[1]);
			objetos[objeto_e_chave]=0;//-----------------------------------------------
			objetos_posx[objeto_e_chave] = -32;//-----------------------------------------------'
			mat_objetos[chave_setor][objeto_e_chave]=0;//-----------------------------------------------
			mat_objetos_posx[chave_setor][objeto_e_chave]=-32;//-----------------------------------------------
			sprintf(text_vel, "%s", "You picked up the right key!\0");
		}else if(player_abriu_porta()){
			tocasom(sons[0]);
			estadoatual = 10;
			sai_fase = 1;
		}
		i=move_jogador();
		if(i){
			if(i==2){
				if(pos>0)pos--;
				else jogador_pos_x=1;

			}else if(pos<5) pos++;
			else{
				jogador_pos_x=799-32;

			}
			randomiza_coisas=true;
		}
		renderiza_cenario();
		C2D2_DesenhaTexto(fonte32, 50, 50, text_vel, C2D2_TEXTO_ESQUERDA);
 		C2D2_Sincroniza(C2D2_FPS_PADRAO);
	}while(sai_fase==0);//ZIMER //while(estadoatual==5)
}

void seleciona_chave(){
	int i;
	int j;
	bool out=false;
	do{
		i=randomiza(0,5);
		for(j=0;mat_objetos[i][j]!=2 && mat_objetos[i][j]!=4 && j<6;j++);
		if(j<6){
			objeto_e_chave=j;
			chave_setor=i;
			out=true;
		}
	}while(!out);
}

void seleciona_porta(){
	int i;
	int j;
	bool out=false;
	do{
		i=randomiza(0,5);
		for(j=0;mat_objetos[i][j]!=3 && j<6;j++);
		if(j<6){
			porta_chave=j;
			porta_setor=i;
			out=true;
		}
	}while(!out);
}