#include "SFML_graphical.h"

SFML_graphical::SFML_graphical(std:: string title)
: screen_pixel(1360,768),
  video_pixel(screen_pixel.x,screen_pixel.y),
  door(video_pixel,"PIXEL ver 0.0.6.22",sf::Style::Default){
if (title!="default"){ printf("String Error in argument SFML_graphical\n");exit(0);}
//SFML_graphical* door=window();
/*
while(door.isOpen()){
while (door.pollEvent(event_)) {
			switch (event_.type){
			case sf::Event::Closed:
				door.close();
				break;
			case sf::Event::Resized:
				break;
}}}
*/

};


void SFML_graphical::plot_map(sf::RenderWindow &window){
for(int x=0; x<ELEMENTS; x++){
	for(int y=0; y<ELEMENTS; y++){
window.draw(world_zone[x][y]);
	}
}

};
//SFML_graphical*/*
/*
void SFML_graphical::window(sf::RectangleShape* world_zone) {
while(door.isOpen()){
while (door.pollEvent(event_)) {
			switch (event_.type){
			case sf::Event::Closed:
				door.close();
				break;
			case sf::Event::Resized:
				break;
	case sf::Event::KeyPressed:
				switch (event_.key.code){
				case sf::Keyboard::Up:
				//	SFML_base::moveup();
					break;
				case sf::Keyboard::Down:
				//	SFML_base::movedown();
					break;
				case sf::Keyboard::Right:
				//	SFML_base::moveright();
					break;
				case sf::Keyboard::Left:
				//	SFML_base::moveleft();
					break;
}}}
door.clear(sf::Color::Black);
for(int x=0; x<70; x++){
	for(int y=0; y<70; y++){
door.draw(&world_zone[x][y]);
	}
}
	//	world_generate.disegna_menu3(finestra);
	//	finestra.draw(zona);
		door.display();}

};
*/
void SFML_graphical::window(){

while(door.isOpen()){
while (door.pollEvent(event_)) {
			switch (event_.type){
			case sf::Event::Closed:
				door.close();
				break;
			case sf::Event::Resized:
				break;
	case sf::Event::KeyPressed:
				switch (event_.key.code){
				case sf::Keyboard::Up:
				cursor(1);
					break;
				case sf::Keyboard::Down:
				cursor(2);
					break;
				case sf::Keyboard::Right:
				cursor(4);
					break;
				case sf::Keyboard::Left:
				cursor(3);
					break;
}}}
door.clear(sf::Color::Black);
//for(int x=0; x<ELEMENTS; x++){
//	for(int y=0; y<ELEMENTS; y++){
//door.draw(world_zone[x][y]);
plot_map(door);

		world_zone[count1][count2].setSize(sf::Vector2f(x_vector-thick*2,y_vector-thick*2));	
		world_zone[count1][count2].setPosition(x_position+(count1*x_vector)+(thick), y_position-((count2-1)*y_vector)+(thick));
		world_zone[count1][count2].setOutlineColor(sf::Color::Blue);
		world_zone[count1][count2].setOutlineThickness(thick);

		door.draw(world_zone[count1][count2]);
	


door.display();
	}


	
//door.display();}




};


void SFML_graphical::cursor(int x){
if(x==1)MoveUp();
else if(x==2)MoveDown();
else if(x==3)MoveLeft();
else if(x==4)MoveRight();
else return;
};


void SFML_graphical::menu() {

return;
};
void SFML_graphical::mouse() {

return;
};


void SFML_graphical::MoveUp() {
	if (count2==ELEMENTS-1)return; else {
		++count2;
		world_zone[count1][count2].setSize(sf::Vector2f(x_vector-thick*2,y_vector-thick*2));	
		world_zone[count1][count2].setPosition(x_position+(count1*x_vector)+(thick), y_position-((count2-1)*y_vector)+(thick));
		world_zone[count1][count2].setOutlineColor(sf::Color::Blue);
		world_zone[count1][count2].setOutlineThickness(thick);


		world_zone[count1][count2-1].setOutlineThickness(0.0);
		world_zone[count1][count2-1].setSize(sf::Vector2f(x_vector,y_vector));
		world_zone[count1][count2-1].setPosition(x_position+(count1*x_vector),y_position-((count2-2)*y_vector));
	//	count2++;
		}


};


void SFML_graphical::MoveDown() {
	if (count2 - 1 >= 0 ) {
		--count2;

		world_zone[count1][count2].setSize(sf::Vector2f(x_vector-thick*2,y_vector-thick*2));	
		world_zone[count1][count2].setPosition(x_position+(count1*x_vector)+(thick), y_position-((count2+1)*y_vector)+(thick));
		world_zone[count1][count2].setOutlineColor(sf::Color::Blue);
		world_zone[count1][count2].setOutlineThickness(thick);
	
//		sf::Vector2f pos=world_zone[count1][count2+1].getPosition();	
		world_zone[count1][count2+1].setOutlineThickness(0.0);
		
		world_zone[count1][count2+1].setSize(sf::Vector2f(x_vector,y_vector));	
		world_zone[count1][count2+1].setPosition(x_position+(count1*x_vector),y_position-((count2)*y_vector));
//count2--;
	}
};

void SFML_graphical::MoveRight() {
if (count1 + 1 <ELEMENTS ) {
		++count1;
		world_zone[count1][count2].setSize(sf::Vector2f(x_vector-thick*2,y_vector-thick*2));	
		world_zone[count1][count2].setPosition(x_position+(count1*x_vector)+(thick), y_position-(count2*y_vector)+(thick));
		world_zone[count1][count2].setOutlineColor(sf::Color::Blue);
		world_zone[count1][count2].setOutlineThickness(thick);
	
	//	sf::Vector2f posD=world_zone[count1-1][count2].getPosition();	
		world_zone[count1-1][count2].setOutlineThickness(0.0);

		world_zone[count1-1][count2].setSize(sf::Vector2f(x_vector,y_vector));	
		world_zone[count1-1][count2].setPosition(x_position+((count1-1)*x_vector),y_position-((count2-1)*y_vector));
//count1++;
	}

};

void SFML_graphical::MoveLeft() {
if (count1 - 1 >= 0 ) {
		--count1;
		
		world_zone[count1][count2].setSize(sf::Vector2f(x_vector-thick*2,y_vector-thick*2));	
		world_zone[count1][count2].setPosition(x_position+(count1*x_vector)+(thick), y_position-(count2*y_vector)+(thick));
		world_zone[count1][count2].setOutlineColor(sf::Color::Blue);
		world_zone[count1][count2].setOutlineThickness(thick);
	
	//	sf::Vector2f posD=world_zone[count1+1][count2].getPosition();	
		world_zone[count1+1][count2].setOutlineThickness(0.0);
		
		world_zone[count1+1][count2].setSize(sf::Vector2f(x_vector,y_vector));	
		world_zone[count1+1][count2].setPosition(x_position+((count1+1)*x_vector),y_position-((count2-1)*y_vector));

	//count1--;
	}
};
