// KickDlg.cpp : Implementation file
//

#include "stdafx.h"
#include "RemoteTest.h"
#include "KickDlg.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CKickDlg  dialog


CKickDlg::CKickDlg(CVAIBO *vaibo, CWnd* pParent /*=NULL*/)
	: CDialog(CKickDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CKickDlg)
	//}}AFX_DATA_INIT
	m_vaibo = vaibo;
}


void CKickDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CKickDlg)
	DDX_Control(pDX, IDC_COMBO_TARGET, m_comboTarget);
	DDX_Control(pDX, IDC_COMBO_SPEED, m_comboSpeed);
	DDX_Control(pDX, IDC_EDIT_H, m_editH);
	DDX_Control(pDX, IDC_EDIT_V, m_editV);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CKickDlg, CDialog)
	//{{AFX_MSG_MAP(CKickDlg)
	ON_WM_DESTROY()
	ON_BN_CLICKED(IDC_BTN_HEADER_FORWARD, OnBtnHeaderForward)
	ON_BN_CLICKED(IDC_BTN_KICK_LEFT, OnBtnKickLeft)
	ON_BN_CLICKED(IDC_BTN_KICK_LEFT_FORWARD, OnBtnKickLeftForward)
	ON_BN_CLICKED(IDC_BTN_KICK_RIGHT, OnBtnKickRight)
	ON_BN_CLICKED(IDC_BTN_KICK_RIGHT_FORWARD, OnBtnKickRightForward)
	ON_BN_CLICKED( IDC_BUTTON_TRACK_TARGET, OnButtonTrackTarget )
	ON_BN_CLICKED( IDC_BUTTON_TRACK_HV, OnButtonTrackHV )
	ON_BN_CLICKED( IDC_BUTTON_TRACK_FACE_TARGET, OnButtonTrackFaceTarget )
	ON_BN_CLICKED( IDC_BUTTON_TRACK_FACE_HV, OnButtonTrackFaceHV )
	ON_BN_CLICKED( IDC_BUTTON_TRACK_PHOTO_HV, OnButtonTrackPhotoHV )
	ON_BN_CLICKED( IDC_BUTTON_LOOK_TARGET, OnButtonLookTarget )
	ON_BN_CLICKED( IDC_BUTTON_LOOK_HV, OnButtonLookHV )
	ON_BN_CLICKED( IDC_BUTTON_LOOK_LOST_TARGET, OnButtonLookLostTarget )
	ON_BN_CLICKED( IDC_BUTTON_LOOKREL_HV, OnButtonLookRelHV )
	ON_BN_CLICKED( IDC_BUTTON_SEARCH_TARGET_NORMAL, OnButtonSearchTargetNormal )
	ON_BN_CLICKED( IDC_BUTTON_SEARCH_TARGET_FRONT, OnButtonSearchTargetFront )
	ON_BN_CLICKED( IDC_BUTTON_SEARCH_TARGET_LOWER, OnButtonSearchTargetLower )
	ON_BN_CLICKED( IDC_BUTTON_SEARCH_TARGET_UPPER, OnButtonSearchTargetUpper )
	ON_BN_CLICKED( IDC_BUTTON_SEARCH_TARGET_HORIZ, OnButtonSearchTargetHorizon )
	ON_BN_CLICKED( IDC_BUTTON_SEARCH_TARGET_WIDE, OnButtonSearchTargetWide )
	ON_BN_CLICKED( IDC_BUTTON_SEARCH_TARGET_POLE, OnButtonSearchTargetPole )
	ON_BN_CLICKED( IDC_BUTTON_SEARCH_TRACK_TARGET_NORMAL, OnButtonSearchTrackTargetNormal )
	ON_BN_CLICKED( IDC_BUTTON_SEARCH_TRACK_TARGET_FRONT, OnButtonSearchTrackTargetFront )
	ON_BN_CLICKED( IDC_BUTTON_SEARCH_TRACK_TARGET_LOWER, OnButtonSearchTrackTargetLower )
	ON_BN_CLICKED( IDC_BUTTON_SEARCH_TRACK_TARGET_UPPER, OnButtonSearchTrackTargetUpper )
	ON_BN_CLICKED( IDC_BUTTON_SEARCH_TRACK_TARGET_HORIZ, OnButtonSearchTrackTargetHorizon )
	ON_BN_CLICKED( IDC_BUTTON_SEARCH_TRACK_TARGET_WIDE, OnButtonSearchTrackTargetWide )
	ON_BN_CLICKED( IDC_BUTTON_SEARCH_TRACK_TARGET_POLE, OnButtonSearchTrackTargetPole )
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CKickDlg message handlers


BOOL	CKickDlg::OnInitDialog()
{
	CDialog::OnInitDialog();

	m_comboTarget.SetCurSel( E_TARGET_PINK );
	m_comboSpeed.SetCurSel( E_SPEED_NORMAL );
	m_editH.SetWindowText( "0" );
	m_editV.SetWindowText( "0" );

	return TRUE;   // return TRUE  unless you set the focus to a control
}

void	CKickDlg::OnDestroy() 
{
	CDialog::OnDestroy();
}




void CKickDlg::OnBtnHeaderForward() 
{
	m_vaibo->DoHeader( DH_FORWARD );
}

void CKickDlg::OnBtnKickLeft() 
{
	m_vaibo->DoKick( DK_LEFT );
}

void CKickDlg::OnBtnKickLeftForward() 
{
	m_vaibo->DoKick( DK_LEFT_FORWARD );
}

void CKickDlg::OnBtnKickRight() 
{
	m_vaibo->DoKick( DK_RIGHT );
}

void CKickDlg::OnBtnKickRightForward() 
{
	m_vaibo->DoKick( DK_RIGHT_FORWARD );
}

void	CKickDlg::OnButtonTrackTarget()
{
	long	lLmsParam = ( 0x0a << 24 ) | ( 0x00 << 16 ) | ( 0x04 << 8 ) | GetSpeed();

	unsigned long	ulTarget;
	GetTargetID( ulTarget );

	if ( m_vaibo ) {
		m_vaibo->PlayMotion( lLmsParam, false/*exdF*/, false/*WaitF*/, false/*InfF*/, ulTarget );
	}
}

void	CKickDlg::OnButtonTrackHV()
{
	long	lLmsParam = ( 0x0a << 24 ) | ( 0x00 << 16 ) | ( 0x04 << 8 ) | GetSpeed();

	int		nH, nV;
	GetHV( nH, nV );

	if ( m_vaibo ) {
		m_vaibo->PlayMotionWithAngle( lLmsParam, nH, nV, false/*exdF*/, false/*WaitF*/, false/*InfF*/, 0xFFFFFFFF );
	}
}

void	CKickDlg::OnButtonTrackFaceTarget()
{
	long	lLmsParam = ( 0x0a << 24 ) | ( 0x00 << 16 ) | ( 0x05 << 8 ) | GetSpeed();

	unsigned long	ulTarget;
	GetTargetID( ulTarget );

	if ( m_vaibo ) {
		m_vaibo->PlayMotion( lLmsParam, false/*exdF*/, false/*WaitF*/, false/*InfF*/, ulTarget );
	}
}

void	CKickDlg::OnButtonTrackFaceHV()
{
	long	lLmsParam = ( 0x0a << 24 ) | ( 0x00 << 16 ) | ( 0x05 << 8 ) | GetSpeed();

	int		nH, nV;
	GetHV( nH, nV );

	if ( m_vaibo ) {
		m_vaibo->PlayMotionWithAngle( lLmsParam, nH, nV, false/*exdF*/, false/*WaitF*/, false/*InfF*/, 0xFFFFFFFF );
	}
}

void	CKickDlg::OnButtonTrackPhotoHV()
{
	long	lLmsParam = ( 0x0a << 24 ) | ( 0x00 << 16 ) | ( 0x06 << 8 ) | GetSpeed();

	int		nH, nV;
	GetHV( nH, nV );

	if ( m_vaibo ) {
		m_vaibo->PlayMotionWithAngle( lLmsParam, nH, nV, false/*exdF*/, false/*WaitF*/, false/*InfF*/, 0xFFFFFFFF );
	}
}

void	CKickDlg::OnButtonLookTarget()
{
	long	lLmsParam = ( 0x08 << 24 ) | ( 0x00 << 16 ) | ( 0x05 << 8 ) | GetSpeed();

	unsigned long	ulTarget;
	GetTargetID( ulTarget );

	if ( m_vaibo ) {
		m_vaibo->PlayMotion( lLmsParam, false/*exdF*/, false/*WaitF*/, false/*InfF*/, ulTarget );
	}
}

void	CKickDlg::OnButtonLookHV()
{
	long	lLmsParam = ( 0x08 << 24 ) | ( 0x00 << 16 ) | ( 0x05 << 8 ) | GetSpeed();

	int		nH, nV;
	GetHV( nH, nV );

	if ( m_vaibo ) {
		m_vaibo->PlayMotionWithAngle( lLmsParam, nH, nV, false/*exdF*/, false/*WaitF*/, false/*InfF*/, 0xFFFFFFFF );
	}
}

void	CKickDlg::OnButtonLookLostTarget()
{
	long	lLmsParam = ( 0x08 << 24 ) | ( 0x00 << 16 ) | ( 0x06 << 8 ) | GetSpeed();

	unsigned long	ulTarget;
	GetTargetID( ulTarget );

	if ( m_vaibo ) {
		m_vaibo->PlayMotion( lLmsParam, false/*exdF*/, false/*WaitF*/, false/*InfF*/, ulTarget );
	}
}

void	CKickDlg::OnButtonLookRelHV()
{
	long	lLmsParam = ( 0x08 << 24 ) | ( 0x00 << 16 ) | ( 0x07 << 8 ) | GetSpeed();

	int		nH, nV;
	GetHV( nH, nV );

	if ( m_vaibo ) {
		m_vaibo->PlayMotionWithAngle( lLmsParam, nH, nV, false/*exdF*/, false/*WaitF*/, false/*InfF*/, 0xFFFFFFFF );
	}
}

void	CKickDlg::OnButtonSearchTargetNormal()
{
	long	lLmsParam = ( 0x09 << 24 ) | ( 0x00 << 16 ) | ( 0x21 << 8 ) | GetSpeed();

	unsigned long	ulTarget;
	GetTargetID( ulTarget );

	if ( m_vaibo ) {
		m_vaibo->PlayMotion( lLmsParam, false/*exdF*/, false/*WaitF*/, false/*InfF*/, ulTarget );
	}
}

void	CKickDlg::OnButtonSearchTargetFront()
{
	long	lLmsParam = ( 0x09 << 24 ) | ( 0x00 << 16 ) | ( 0x20 << 8 ) | GetSpeed();

	unsigned long	ulTarget;
	GetTargetID( ulTarget );

	if ( m_vaibo ) {
		m_vaibo->PlayMotion( lLmsParam, false/*exdF*/, false/*WaitF*/, false/*InfF*/, ulTarget );
	}
}

void	CKickDlg::OnButtonSearchTargetLower()
{
	long	lLmsParam = ( 0x09 << 24 ) | ( 0x00 << 16 ) | ( 0x23 << 8 ) | GetSpeed();

	unsigned long	ulTarget;
	GetTargetID( ulTarget );

	if ( m_vaibo ) {
		m_vaibo->PlayMotion( lLmsParam, false/*exdF*/, false/*WaitF*/, false/*InfF*/, ulTarget );
	}
}

void	CKickDlg::OnButtonSearchTargetUpper()
{
	long	lLmsParam = ( 0x09 << 24 ) | ( 0x00 << 16 ) | ( 0x24 << 8 ) | GetSpeed();

	unsigned long	ulTarget;
	GetTargetID( ulTarget );

	if ( m_vaibo ) {
		m_vaibo->PlayMotion( lLmsParam, false/*exdF*/, false/*WaitF*/, false/*InfF*/, ulTarget );
	}
}

void	CKickDlg::OnButtonSearchTargetHorizon()
{
	long	lLmsParam = ( 0x09 << 24 ) | ( 0x00 << 16 ) | ( 0x22 << 8 ) | GetSpeed();

	unsigned long	ulTarget;
	GetTargetID( ulTarget );

	if ( m_vaibo ) {
		m_vaibo->PlayMotion( lLmsParam, false/*exdF*/, false/*WaitF*/, false/*InfF*/, ulTarget );
	}
}

void	CKickDlg::OnButtonSearchTargetWide()
{
	long	lLmsParam = ( 0x09 << 24 ) | ( 0x00 << 16 ) | ( 0x25 << 8 ) | GetSpeed();

	unsigned long	ulTarget;
	GetTargetID( ulTarget );

	if ( m_vaibo ) {
		m_vaibo->PlayMotion( lLmsParam, false/*exdF*/, false/*WaitF*/, false/*InfF*/, ulTarget );
	}
}

void	CKickDlg::OnButtonSearchTargetPole()
{
	long	lLmsParam = ( 0x09 << 24 ) | ( 0x00 << 16 ) | ( 0x26 << 8 ) | GetSpeed();

	unsigned long	ulTarget;
	GetTargetID( ulTarget );

	if ( m_vaibo ) {
		m_vaibo->PlayMotion( lLmsParam, false/*exdF*/, false/*WaitF*/, false/*InfF*/, ulTarget );
	}
}

void	CKickDlg::OnButtonSearchTrackTargetNormal()
{
	long	lLmsParam = ( 0x19 << 24 ) | ( 0x00 << 16 ) | ( 0x21 << 8 ) | GetSpeed();

	unsigned long	ulTarget;
	GetTargetID( ulTarget );

	if ( m_vaibo ) {
		m_vaibo->PlayMotion( lLmsParam, true/*exdF*/, false/*WaitF*/, false/*InfF*/, ulTarget );
	}
}

void	CKickDlg::OnButtonSearchTrackTargetFront()
{
	long	lLmsParam = ( 0x19 << 24 ) | ( 0x00 << 16 ) | ( 0x20 << 8 ) | GetSpeed();

	unsigned long	ulTarget;
	GetTargetID( ulTarget );

	if ( m_vaibo ) {
		m_vaibo->PlayMotion( lLmsParam, true/*exdF*/, false/*WaitF*/, false/*InfF*/, ulTarget );
	}
}

void	CKickDlg::OnButtonSearchTrackTargetLower()
{
	long	lLmsParam = ( 0x19 << 24 ) | ( 0x00 << 16 ) | ( 0x23 << 8 ) | GetSpeed();

	unsigned long	ulTarget;
	GetTargetID( ulTarget );

	if ( m_vaibo ) {
		m_vaibo->PlayMotion( lLmsParam, true/*exdF*/, false/*WaitF*/, false/*InfF*/, ulTarget );
	}
}

void	CKickDlg::OnButtonSearchTrackTargetUpper()
{
	long	lLmsParam = ( 0x19 << 24 ) | ( 0x00 << 16 ) | ( 0x24 << 8 ) | GetSpeed();

	unsigned long	ulTarget;
	GetTargetID( ulTarget );

	if ( m_vaibo ) {
		m_vaibo->PlayMotion( lLmsParam, true/*exdF*/, false/*WaitF*/, false/*InfF*/, ulTarget );
	}
}

void	CKickDlg::OnButtonSearchTrackTargetHorizon()
{
	long	lLmsParam = ( 0x19 << 24 ) | ( 0x00 << 16 ) | ( 0x22 << 8 ) | GetSpeed();

	unsigned long	ulTarget;
	GetTargetID( ulTarget );

	if ( m_vaibo ) {
		m_vaibo->PlayMotion( lLmsParam, true/*exdF*/, false/*WaitF*/, false/*InfF*/, ulTarget );
	}
}

void	CKickDlg::OnButtonSearchTrackTargetWide()
{
	long	lLmsParam = ( 0x19 << 24 ) | ( 0x00 << 16 ) | ( 0x25 << 8 ) | GetSpeed();

	unsigned long	ulTarget;
	GetTargetID( ulTarget );

	if ( m_vaibo ) {
		m_vaibo->PlayMotion( lLmsParam, true/*exdF*/, false/*WaitF*/, false/*InfF*/, ulTarget );
	}
}

void	CKickDlg::OnButtonSearchTrackTargetPole()
{
	long	lLmsParam = ( 0x19 << 24 ) | ( 0x00 << 16 ) | ( 0x26 << 8 ) | GetSpeed();

	unsigned long	ulTarget;
	GetTargetID( ulTarget );

	if ( m_vaibo ) {
		m_vaibo->PlayMotion( lLmsParam, true/*exdF*/, false/*WaitF*/, false/*InfF*/, ulTarget );
	}
}


void	CKickDlg::GetTargetID( unsigned long& ulTarget )
{
	switch ( m_comboTarget.GetCurSel() ) {
		case E_TARGET_NONE:
			ulTarget = VAIBO_TARGET_NONE;
			break;
		case E_TARGET_PINK:
			ulTarget = VAIBO_TARGET_PINK;
			break;
		case E_TARGET_BALL:
			ulTarget = VAIBO_TARGET_BALL;
			break;
		case E_TARGET_BONE:
			ulTarget = VAIBO_TARGET_BONE;
			break;
		case E_TARGET_FACE:
			ulTarget = VAIBO_TARGET_FACE;
			break;
		case E_TARGET_CARD:
			ulTarget = VAIBO_TARGET_ECARD1;
			break;
		case E_TARGET_HAND:
			ulTarget = VAIBO_TARGET_HAND;
			break;
		default:
			ulTarget = VAIBO_TARGET_NONE;
			break;
	}
}

void	CKickDlg::GetHV( int& nH, int& nV )
{
	char	strH[ 4 ], strV[ 4 ];
	m_editH.GetWindowText( strH, 4 );
	m_editV.GetWindowText( strV, 4 );

	nH = atoi( strH );
	nV = atoi( strV );
}

int		CKickDlg::GetSpeed()
{
	// speed  
	switch ( m_comboSpeed.GetCurSel() ) {
		case E_SPEED_VERY_QUICK:	// Very quick
			return 0x80;
		case E_SPEED_QUICK:			// Quick
			return 0x40;
		case E_SPEED_NORMAL:		// Normal 
			return 0x20;
		case E_SPEED_SLOW:			// Slow
			return 0x10;
		default:
			return 0x20;
	}
}

