using System;
using Server;
using Server.Targeting;
namespace Arya.Chess
{
public delegate void ChessTargetCallback( Mobile from, object targeted );
///
/// General purpose target for the chess system
///
public class ChessTarget : Target
{
///
/// The message for the target request
///
private string m_Message;
///
/// The callback for this target
///
private ChessTargetCallback m_Callback;
///
/// The chess game managing this target
///
private ChessGame m_Game;
///
/// Flag for a target used outside a game
///
private bool m_IgnoreGame = false;
public ChessTarget( ChessGame game, Mobile m, string message, ChessTargetCallback callback ) : base( -1, true, TargetFlags.None )
{
m_Message = message;
m_Callback = callback;
m_Game = game;
if ( message != null )
m.SendMessage( 0x40, message );
}
public ChessTarget( Mobile m, string message, ChessTargetCallback callback ) : base( -1, true, TargetFlags.None )
{
m_IgnoreGame = true;
m_Message = message;
m_Callback = callback;
if ( message != null )
m.SendMessage( 0x40, message );
}
protected override void OnTarget(Mobile from, object targeted)
{
if ( !m_IgnoreGame && ( m_Game == null || !m_Game.AllowTarget ) )
return;
if ( m_Callback != null )
{
try
{
m_Callback.DynamicInvoke( new object[] { from, targeted } );
}
catch ( Exception err )
{
Console.WriteLine( err.ToString() );
}
}
}
public void Remove( Mobile m )
{
Invoke( m, new Point3D( 0, 0, 0 ) );
}
}
}