using System; namespace Server.PathAlgorithms { public abstract class PathAlgorithm { private static readonly Direction[] m_CalcDirections = new Direction[9] { Direction.Up, Direction.North, Direction.Right, Direction.West, Direction.North, Direction.East, Direction.Left, Direction.South, Direction.Down }; public abstract bool CheckCondition(IPoint3D p, Map map, Point3D start, Point3D goal); public abstract Direction[] Find(IPoint3D p, Map map, Point3D start, Point3D goal); public Direction GetDirection(int xSource, int ySource, int xDest, int yDest) { int x = xDest + 1 - xSource; int y = yDest + 1 - ySource; int v = (y * 3) + x; if (v < 0 || v >= 9) return Direction.North; return m_CalcDirections[v]; } } }