All pastes #621885 Raw Edit

Untitled

public java v1 · immutable
·published 2007-07-16 14:09 UTC
rendered paste body
package net.sf.l2j;public class CustomUtils{	private CustomUtils()	{}	public static final byte NESW_N		= 0,							 NESW_NW	= 1,							 NESW_W		= 2,							 NESW_SW	= 3,							 NESW_S		= 4,							 NESW_SE	= 5,							 NESW_E		= 6,							 NESW_NE	= 7,							 FACE_DIRECTION_FRONT			= 0,							 FACE_DIRECTION_FRONT_RIGHT		= 1,							 FACE_DIRECTION_RIGHT			= 2,							 FACE_DIRECTION_BEHIND_RIGHT	= 3,							 FACE_DIRECTION_BEHIND			= 4,							 FACE_DIRECTION_BEHIND_LEFT		= 5,							 FACE_DIRECTION_LEFT			= 6,							 FACE_DIRECTION_FRONT_LEFT		= 7,							 FACE_DIRECTION_INVALID			= 8;	private static final byte FACE_DIRECTION_MAX = FACE_DIRECTION_FRONT_LEFT;	private static byte CALC_FACE_DIRECTION(FaceDirection fd, NESW nesw)	{		fs += nesw;		fs = fs > FACE_DIRECTION_MAX ? fd - FACE_DIRECTION_INVALID : fd;		return fd;	}	public static byte getFaceDirection(int srcX, int srcY, int targetX, int targetY, byte nesw)	{		FaceDirection faceDirection = FACE_DIRECTION_INVALID;	    int differenceX = abs(abs(targetX - srcX));	    int differenceY = abs(abs(targetY - srcY));	    int rectInfoY = differenceX * 2;	    if (srcY < (targetY - rectInfoY))	    {			faceDirection = FACE_DIRECTION_FRONT;			return CALC_FACE_DIRECTION(faceDirection, nesw);		}		else if (srcY > (targetY + rectInfoY))		{			faceDirection = FACE_DIRECTION_BEHIND;			return CALC_FACE_DIRECTION(faceDirection, nesw);		}		int rectInfoX = differenceY * 2;		if (srcX < (targetX - rectInfoX))		{			faceDirection = FACE_DIRECTION_LEFT;			return CALC_FACE_DIRECTION(faceDirection, nesw);		}		else if (srcX > (targetX + rectInfoX))		{			faceDirection = FACE_DIRECTION_RIGHT;			return CALC_FACE_DIRECTION(faceDirection, nesw);		}		if (srcX < targetX && srcY < targetY)		{			faceDirection = FACE_DIRECTION_FRONT_LEFT;			return CALC_FACE_DIRECTION(faceDirection, nesw);		}		else if (srcX < targetX && srcY > targetY)		{			faceDirection = FACE_DIRECTION_BEHIND_LEFT;			return CALC_FACE_DIRECTION(faceDirection, nesw);		}		else if (srcX > targetX && srcY > targetY)		{			faceDirection = FACE_DIRECTION_BEHIND_RIGHT;			return CALC_FACE_DIRECTION(faceDirection, nesw);		}		else if (srcX > targetX && srcY < targetY)		{			faceDirection = FACE_DIRECTION_FRONT_RIGHT;			return CALC_FACE_DIRECTION(faceDirection, nesw);		}		return FACE_DIRECTION_INVALID;	}	public static byte getNESW(short heading)	{	    if (HEADING > 40960 && HEADING < 57344)			return N;		else if (HEADING == 40960)	        return NW;	    else if (HEADING > 24576 && HEADING < 40960)			return W;		else if (HEADING == 24576)	        return SW;	    else if (HEADING > 8192 && HEADING < 24576)			return S;		else if (HEADING == 8192)	        return SE;	    else if (HEADING > 57344 && HEADING < 8192)			return E;		else if (HEADING == 57344)	        return NE;	}}