using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Chop.Game.Rooms { public static class AWAPathfinder { public static byte[] GetNext(byte x, byte y, byte dX, byte dY, SquareState[,] map) { if (x == dX && y == dY) return new byte[0]; if(map[dX, dY] == SquareState.Closed) return new byte[0]; if(dX != x) if (x > dX) // go back { if (map[x - 1, y] != SquareState.Open && map[x + 1, y] != SquareState.Open) { y--; } else // nothing in the way { x--; } return new byte[] { (byte)(x), y }; } else // go forward { if (map[x + 1, y] != SquareState.Open) { y++; } else { x++; } return new byte[] { (byte)(x), y }; } if (dY != y) if (y > dY) // go back { if (map[x, y - 1] != SquareState.Open) { x--; } else // nothing in the way { y--; } } else // go forward { if (map[x, y + 1] != SquareState.Open) { x--; } else { y++; } } byte[] next = new byte[] { (byte)(x), y }; //if ((dX - x) < (dY - y)) //{ // next[0] = (byte)(y - 1); //} //else if ((dX - x) > (dY - y)) //{ // next[1] = (byte)(x - 1); //} return next; } } }