#include "c2d2/chien2d2.h"

#define porta 4

extern int jogador_pos_y;
extern int objeto_e_chave;//marca qual objeto é uma chave
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 jogador_pos_x;
extern int objetos_tamanho_x[6];//define o tamanho horizontal do objeto
extern int jogador_tamanho_x;
extern bool player_possui_chave;//armazena informação se player pegou a chave

extern int chave_setor;
extern int porta_chave;
extern int porta_setor;
extern int jogador_setor;
extern unsigned int objetos_sprites[6];
extern unsigned int jogador;

bool player_abaixou(){// 1 se abaixou 0 caso contrario
	bool abaixou=false;
	C2D2_Botao *teclas = C2D2_PegaTeclas();
	if(teclas[C2D2_BAIXO].pressionado) abaixou=true;//baseado no código do pause.cpp
	return abaixou;
}

//completo falta testar
bool player_pegou_chave(){//1 se pegou a chave 0 caso contrario
	bool pegou_chave=false;
	int i=objeto_e_chave;
	if(jogador_setor==chave_setor){//caso tenha uma chave no mapa
		if(player_abaixou()){
			if(objetos[i]){//se o objeto existe
				if(C2D2_ColidiuSprites(jogador,0,jogador_pos_x,jogador_pos_y,objetos_sprites[objetos[i]],0,objetos_posx[i],objetos_posy[i]))
					pegou_chave=true;
			}
		}
	}
	return pegou_chave;
}
bool player_abriu_porta(){
	bool abriu=false;
	int portax=-1;
	C2D2_Botao *teclas = C2D2_PegaTeclas();
	int i=porta_chave;
	if(teclas[C2D2_CIMA].pressionado || teclas[C2D2_W].pressionado){
		if(player_possui_chave && porta_setor==jogador_setor){
			if(objetos[i]==porta-1){
				if(C2D2_ColidiuSprites(jogador,0,jogador_pos_x,jogador_pos_y,objetos_sprites[objetos[i]],0,objetos_posx[i],objetos_posy[i]))
					abriu=true;
			}
		}else{
			if(objetos[i]==porta-1){
				if(C2D2_ColidiuSprites(jogador,0,jogador_pos_x,jogador_pos_y,objetos_sprites[objetos[i]],0,objetos_posx[i],objetos_posy[i])) printf("porta correta mas requer chave\n");
			}
		}
	}
	return abriu;
}
int detecta_se_player_selecionou_um_item(){//função que retorna se o player ao ativar a ação de abaixar, caso ele abaixe em uma chave será retornado 1, caso seja uma porta retorna 2, caso contrário retorna zer
	int saida=0;
	if(player_abaixou()){
		if(player_pegou_chave()){
			saida=1;
			player_possui_chave=true;
		}else{
			player_abriu_porta();
			saida=2;
		}
	}
	return saida;
}

void move_gatos(){
	int i=0;
	while(i<6){
		if(objetos[i]==1){
			if(objetos_posx[i]+62>0)objetos_posx[i]-=2;
			else;
		}
		i++;
	}
}