public static void ContextMenuResponse( NetState state, PacketReader pvSrc )
{
Mobile from = state.Mobile;
if ( from != null )
{
ContextMenu menu = from.ContextMenu;
from.ContextMenu = null;
if ( menu != null && from != null && from == menu.From )
{
IEntity entity = World.FindEntity( pvSrc.ReadInt32() );
if ( entity != null && entity == menu.Target && from.CanSee( entity ) )
{
Point3D p;
if ( entity is Mobile )
p = entity.Location;
else if ( entity is Item )
p = ((Item)entity).GetWorldLocation();
else
return;
int index = pvSrc.ReadUInt16();
if ( index >= 0 && index < menu.Entries.Length )
{
ContextMenuEntry e = menu.Entries[index];
int range = e.Range;
if ( range == -1 )
range = 18;
if ( e.Enabled && from.InRange( p, range ) )
e.OnClick();
}
}
}
}
}