package position;

/**
 * A position csomagban hozzuk létre a nyilvános Direction felsorolási típust a
 * következő értékekkel: UP_LEFT, UP_RIGHT, DOWN_LEFT, DOWN_RIGHT.
 */
public enum Direction {

	UP_LEFT, UP_RIGHT, DOWN_LEFT, DOWN_RIGHT;

	/**
	 * A Direction típuson belül adjunk meg egy osztályszintű fromDistance
	 * metódust, mely Direction-t ad vissza, és paraméterül egy (kételemű)
	 * egészekből álló tömböt vár.
	 * @param distances A tömbben rendre két játékmező közti vízszintes és
	 * függőleges távolság van megadva.
	 * @return Hasonlóan a Descartes-féle derékszögű koordináta-rendszerhez, a
	 * vízszintes távolság pozitív, akkor az irány jobbra mutat, ha negatív,
	 * akkor balra. Ha a függőleges távolság pozitív, akkor az irány felfele
	 * mutat, ha negatív, akkor lefele. Tehát az irány UP_LEFT lesz, ha a
	 * vízszintes távolság negatív, a függőleges pozitív, és így tovább.
	 */
	public static Direction fromDistance(int[] distances) {
		//Feltesszük, hogy a tömbnek pontosan két eleme van,
		//és a két távolság közül egyik sem 0,
		//ezeket tehát nem kell ellenőrizni.

		//-10, -34 -> down_left
		// 41, -55 -> down_right
		//-13,   6 -> up_left
		// 42,   9 -> up_right
		if (distances[0] < 0) {
			if (distances[1] < 0) {
				return DOWN_LEFT;
			} else {
				return UP_LEFT;
			}
		} else {
			if (distances[1] < 0) {
				return DOWN_RIGHT;
			} else {
				return UP_RIGHT;
			}
		}
	}

}
