package taslar;

public class Vezir {
	public boolean alive = true;
	public boolean sonuc;
	public String tasIsim = "vezir";
	public char isim;
	public char renk;
	public int konumSatir, konumSutun;
	public boolean kaleMisali;
	
	public Vezir(char is, char re) {
		this.isim = is;
		this.renk = re;
	}
	
	public void setPosition(int x, int y) {
		this.konumSatir = x;
		this.konumSutun = y;
	}
	
	public boolean checkMove(char[][] T, int x, int y) {
		Character hedefChar = T[x][y];
		sonuc = true;
		
		if((this.renk == 'b') && (hedefChar.hashCode()>95)) {
			sonuc = false;
		} else if((this.renk == 's') && (hedefChar.hashCode() < 95) && (hedefChar.hashCode()>50)) {
			sonuc = false;
		}
		
		//-- çapraz test için 2 int;
		int a = Math.abs(konumSatir - x);
		int b = Math.abs(konumSutun - y);
		
		//-- hareket sınırları
		kaleMisali = true;
		if((this.konumSatir != x) && (this.konumSutun != y))	{//-- bu kısım kale ile aynı
			
			
			if(a==b) {
				kaleMisali = false;
			}
			
			if(a!=b) {
				sonuc = false;
			}
			
			
		}
		
		if(kaleMisali == true) {
					
			//-- önünde taş var mı? varsa sonuc = false yap ki gidemesin
			//-- x veya y koordinatlarında ( yani dikey veya yatay giderken ) 
			//-- sola kontrol
			if((konumSutun-y)>0) {
				//-- konumu azalt
				for(int i = 1; i<(konumSutun-y); i++) {
					if(T[konumSatir][konumSutun-i]!='0') {
						sonuc = false;
					}
				}
			}
			//-- sağa kontrol
			else if((konumSutun-y)<0) {
				//-- konumu arttır
				for(int i = 1; i<Math.abs((konumSutun-y)); i++) {
					if(T[konumSatir][konumSutun+i]!='0') {
						sonuc = false;
					}
				}
			}
	
			//-- yukarı kontrol
			else if((konumSatir-x)>0) {
				//-- satırı azalt
				for(int i = 1; i<(konumSatir-x); i++) {
					if(T[konumSatir-i][konumSutun]!='0') {
						sonuc = false;
					}
				}
			}
	
			//-- aşağı kontrol
			else if((konumSatir-x)<0) {
				//-- satırı arttır
				for(int i = 1; i<Math.abs((konumSatir-x)); i++) {
					if(T[konumSatir+i][konumSutun]!='0') {
						sonuc = false;
					}
				}
			}
		
		} else { //-- kale misali == false; (fil gibi gibi)
			//-- sağ alt çapraza kontrol
			if((konumSutun-y)<0 && (konumSatir-x)<0) { 
				for(int i = 1; i<a; i++) {
					if(T[konumSatir+i][konumSutun+i]!='0') {
						sonuc = false;
					}
				}
			}
			//-- sol üst çapraza kontrol
			else if((konumSutun-y)>0 && (konumSatir-x)>0) {
				for(int i = 1; i<a; i++) {
					if(T[konumSatir-i][konumSutun-i]!='0') {
						sonuc = false;
					}
				}
			}

			//-- sağ üst çapraza kontrol
			else if((konumSatir-x)>0 && (konumSutun-y)<0) {
				for(int i = 1; i<a; i++) {
					if(T[konumSatir-i][konumSutun+i]!='0') {
						sonuc = false;
					}
				}
			}

			//-- sol alt çapraza
			else if((konumSatir-x)<0 && (konumSutun-y)>0) {
				for(int i = 1; i<a; i++) {
					if(T[konumSatir+i][konumSutun-i]!='0') {
						sonuc = false;
					}
				}
			}
		}
		//-#! debug System.out.println(sonuc);
		return sonuc;
	}		
}
