mirror of
https://github.com/runuo/runuo
synced 2026-08-11 22:26:04 -04:00
35 lines
826 B
C#
35 lines
826 B
C#
|
|
using System;
|
||
|
|
|
||
|
|
namespace Server.PathAlgorithms
|
||
|
|
{
|
||
|
|
public abstract class PathAlgorithm
|
||
|
|
{
|
||
|
|
public abstract bool CheckCondition( Mobile m, Map map, Point3D start, Point3D goal );
|
||
|
|
public abstract Direction[] Find( Mobile m, Map map, Point3D start, Point3D goal );
|
||
|
|
|
||
|
|
private static 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 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];
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|