public static int[] GetSight(SnakeController sc) { GameMaster mygm = GetInstance(); int[] sight = new int[0]; int dir = (int)sc.compas; Vector2 v2 = sc.transform.position; Vector2 v2a = (Vector2)mygm.a.transform.position - v2; if (PlayerPrefs.GetInt("idvision") == 1) { //Checks for 3 directional positions (empty/wall/apple) sight = new int[3]; Vector2[] v2Possible = new Vector2[4]; //Add apple to board Vector2 v2apple = AdjustPosToBoard((Vector2)mygm.a.transform.position); mygm.board[(int)v2apple.x, (int)v2apple.y] = 2; v2Possible[0] = v2 + new Vector2(0, 1); v2Possible[1] = v2 + new Vector2(1, 0); v2Possible[2] = v2 + new Vector2(0, -1); v2Possible[3] = v2 + new Vector2(-1, 0); for (int i = 0, m = dir - 1; i < 3; i++, m++) { sight[i] = mygm.CheckSurrounding(v2Possible[SnakeController.Mod(m, 4)]); DebugDrawLine(sight[i], v2, v2Possible[SnakeController.Mod(m, 4)]); } } else if (PlayerPrefs.GetInt("idvision") == 2) { //Checks for 3 directional positions (empty/wall) & apple sight = new int[5]; Vector2[] v2Possible = new Vector2[4]; v2Possible[0] = v2 + new Vector2(0, 1); v2Possible[1] = v2 + new Vector2(1, 0); v2Possible[2] = v2 + new Vector2(0, -1); v2Possible[3] = v2 + new Vector2(-1, 0); for (int i = 0, m = dir - 1; i < 3; i++, m++) { sight[i] = mygm.CheckSurrounding(v2Possible[SnakeController.Mod(m, 4)]); DebugDrawLine(sight[i], v2, v2Possible[SnakeController.Mod(m, 4)]); } v2a = GetAppleSight(dir, v2a); sight[3] = (int)v2a.x; sight[4] = (int)v2a.y; } else if (PlayerPrefs.GetInt("idvision") == 3) { //Checks for 3 directional positions (empty/wall/apple) & apple sight = new int[5]; Vector2[] v2Possible = new Vector2[4]; //Add apple to board Vector2 v2apple = AdjustPosToBoard((Vector2)mygm.a.transform.position); mygm.board[(int)v2apple.x, (int)v2apple.y] = 2; v2Possible[0] = v2 + new Vector2(0, 1); v2Possible[1] = v2 + new Vector2(1, 0); v2Possible[2] = v2 + new Vector2(0, -1); v2Possible[3] = v2 + new Vector2(-1, 0); for (int i = 0, m = dir - 1; i < 3; i++, m++) { sight[i] = mygm.CheckSurrounding(v2Possible[SnakeController.Mod(m, 4)]); DebugDrawLine(sight[i], v2, v2Possible[SnakeController.Mod(m, 4)]); } v2a = GetAppleSight(dir, v2a); sight[3] = (int)v2a.x; sight[4] = (int)v2a.y; } else if (PlayerPrefs.GetInt("idvision") == 4) { //Checks for 7 directional positions (empty/wall/apple) sight = new int[7]; Vector2[] v2Possible = new Vector2[8]; //Add apple to board Vector2 v2apple = AdjustPosToBoard((Vector2)mygm.a.transform.position); mygm.board[(int)v2apple.x, (int)v2apple.y] = 2; v2Possible[0] = v2 + new Vector2(0, 1); v2Possible[1] = v2 + new Vector2(1, 1); v2Possible[2] = v2 + new Vector2(1, 0); v2Possible[3] = v2 + new Vector2(1, -1); v2Possible[4] = v2 + new Vector2(0, -1); v2Possible[5] = v2 + new Vector2(-1, -1); v2Possible[6] = v2 + new Vector2(-1, 0); v2Possible[7] = v2 + new Vector2(-1, 1); for (int i = 0, m = 2 * (dir - 1) - 1; i < 7; i++, m++) { sight[i] = mygm.CheckSurrounding(v2Possible[SnakeController.Mod(m, 8)]); DebugDrawLine(sight[i], v2, v2Possible[SnakeController.Mod(m, 8)]); } } else if (PlayerPrefs.GetInt("idvision") == 5) { //Checks for 7 directional positions (empty/wall) & apple sight = new int[9]; Vector2[] v2Possible = new Vector2[9]; v2Possible[0] = v2 + new Vector2(0, 1); v2Possible[1] = v2 + new Vector2(1, 1); v2Possible[2] = v2 + new Vector2(1, 0); v2Possible[3] = v2 + new Vector2(1, -1); v2Possible[4] = v2 + new Vector2(0, -1); v2Possible[5] = v2 + new Vector2(-1, -1); v2Possible[6] = v2 + new Vector2(-1, 0); v2Possible[7] = v2 + new Vector2(-1, 1); for (int i = 0, m = 2 * (dir - 1) - 1; i < 7; i++, m++) { sight[i] = mygm.CheckSurrounding(v2Possible[SnakeController.Mod(m, 8)]); DebugDrawLine(sight[i], v2, v2Possible[SnakeController.Mod(m, 8)]); } v2a = GetAppleSight(dir, v2a); sight[7] = (int)v2a.x; sight[8] = (int)v2a.y; } else if (PlayerPrefs.GetInt("idvision") == 6) { //Checks for 7 directional positions (empty/wall/apple) & apple sight = new int[9]; Vector2[] v2Possible = new Vector2[9]; //Add apple to board Vector2 v2apple = AdjustPosToBoard((Vector2)mygm.a.transform.position); mygm.board[(int)v2apple.x, (int)v2apple.y] = 2; v2Possible[0] = v2 + new Vector2(0, 1); v2Possible[1] = v2 + new Vector2(1, 1); v2Possible[2] = v2 + new Vector2(1, 0); v2Possible[3] = v2 + new Vector2(1, -1); v2Possible[4] = v2 + new Vector2(0, -1); v2Possible[5] = v2 + new Vector2(-1, -1); v2Possible[6] = v2 + new Vector2(-1, 0); v2Possible[7] = v2 + new Vector2(-1, 1); for (int i = 0, m = 2 * (dir - 1) - 1; i < 7; i++, m++) { sight[i] = mygm.CheckSurrounding(v2Possible[SnakeController.Mod(m, 8)]); DebugDrawLine(sight[i], v2, v2Possible[SnakeController.Mod(m, 8)]); } v2a = GetAppleSight(dir, v2a); sight[7] = (int)v2a.x; sight[8] = (int)v2a.y; } //robot sight return(sight); }