/*
 *  Arcanum Editor - ROM area editor
 *  Copyright (C) 1999  Lucas Wall <kthulhu@usa.net>
 *
 *  This program is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation; either version 2 of the License, or
 *  any later version.
 *
 *  This program is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with this program; if not, write to the Free Software
 *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 *
 *
 *  If you make changes to the source and want to make the public you can
 *  mail the diferences to me <kthulhu@usa.net> and I'll add them to the
 *  main distribution. Of course your name will be added to the program with
 *  information about the changes you made.
 *
 *
 *  Packed on Thu Aug 19 03:02:20 1999
 *
 */


/*
 * File: MercDataEd.cpp
 *
 * Changes:
 *
 * 19/08/99 Lucas Wall <kthulhu@usa.net>
 *          First source release. Its quite messy and has no
 *          comments. I never planed to release the source code... :-)
 *
 */


// MercDataEd.cpp : implementation file
//

#include "stdafx.h"
#include "arcaed.h"
#include "MercDataEd.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CMercDataEd dialog


CMercDataEd::CMercDataEd(CWnd* pParent /*=NULL*/)
	: CDialog(CMercDataEd::IDD, pParent)
{
	//{{AFX_DATA_INIT(CMercDataEd)
	m_Clan = _T("");
	m_Rank = 0;
	m_SkillNum = 0;
	m_Msg = _T("");
	//}}AFX_DATA_INIT
}


void CMercDataEd::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CMercDataEd)
	DDX_Control(pDX, IDC_MERCED_MERCMSGLIST, m_MsgList);
	DDX_Control(pDX, IDC_MERCED_SKILL_NUM_SPIN, m_SkillNumSpin);
	DDX_Control(pDX, IDC_MERCED_SKILL_LIST, m_SkillList);
	DDX_Control(pDX, IDC_MERCED_RANK_SPIN, m_RankSpin);
	DDX_Text(pDX, IDC_MERCED_CLAN, m_Clan);
	DDX_Text(pDX, IDC_MERCED_RANK, m_Rank);
	DDV_MinMaxInt(pDX, m_Rank, 1, 32767);
	DDX_Text(pDX, IDC_MERCED_SKILL_NUM, m_SkillNum);
	DDV_MinMaxInt(pDX, m_SkillNum, 0, 100);
	DDX_Text(pDX, IDC_MERCED_MERCMSG, m_Msg);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CMercDataEd, CDialog)
	//{{AFX_MSG_MAP(CMercDataEd)
	ON_LBN_SELCHANGE(IDC_MERCED_SKILL_LIST, OnSelchangeMercedSkillList)
	ON_EN_CHANGE(IDC_MERCED_SKILL_NUM, OnChangeMercedSkillNum)
	ON_CBN_SELCHANGE(IDC_MERCED_MERCMSGLIST, OnSelchangeMercedMercmsglist)
	ON_EN_CHANGE(IDC_MERCED_MERCMSG, OnChangeMercedMercmsg)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CMercDataEd message handlers

BOOL CMercDataEd::OnInitDialog() 
{
	CDialog::OnInitDialog();

	int i, index;

	m_RankSpin.SetBuddy( GetDlgItem( IDC_MERCED_RANK ) );
	m_RankSpin.SetRange( 1, 32767 );

	m_SkillNumSpin.SetBuddy( GetDlgItem( IDC_MERCED_SKILL_NUM ) );
	m_SkillNumSpin.SetRange( 0, 100 );

	for ( i = 0; i < m_skills.GetSize(); i++ )
	{
		index = m_SkillList.AddString( m_skills[i]->m_skill );
		ASSERT( index != LB_ERR && index != LB_ERRSPACE );
		m_SkillList.SetItemData( index, i );
	}
	m_SkillList.SetCurSel( 0 );
	OnSelchangeMercedSkillList();

	for ( i = 0; i < tables.m_mercmsg.GetSize(); i++ )
	{
		index = m_MsgList.AddString( tables.m_mercmsg[i]->m_text );
		ASSERT( index != CB_ERR && index != CB_ERRSPACE );
		m_MsgList.SetItemData( index, i );
	}
	m_MsgList.SetCurSel( 0 );
	OnSelchangeMercedMercmsglist();

	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CMercDataEd::OnSelchangeMercedSkillList() 
{
	int sel;

	if ( ( sel = m_SkillList.GetCurSel() ) == LB_ERR )
		return;
	int i = m_SkillList.GetItemData( sel );
	m_SkillNumSpin.SetPos( m_skills[i]->m_percent );
}

void CMercDataEd::OnChangeMercedSkillNum() 
{
	int sel;

	UpdateData( TRUE );

	if ( ( sel = m_SkillList.GetCurSel() ) == LB_ERR )
	{
		m_SkillNumSpin.SetPos( 0 );
		return;
	}

	int i = m_SkillList.GetItemData( sel );
	m_skills[i]->m_percent = m_SkillNum;
}

void CMercDataEd::OnSelchangeMercedMercmsglist() 
{
	int sel;

	if ( ( sel = m_MsgList.GetCurSel() ) == LB_ERR )
		return;

	UpdateData( TRUE );

	int i = m_MsgList.GetItemData( sel );
	m_Msg = m_mercmsg[i];

	UpdateData( FALSE );
}

void CMercDataEd::OnChangeMercedMercmsg() 
{
	int sel;

	UpdateData( TRUE );

	if ( ( sel = m_MsgList.GetCurSel() ) == LB_ERR )
	{
		m_Msg = "";
		UpdateData( FALSE );
		return;
	}

	int i = m_MsgList.GetItemData( sel );
	m_mercmsg[i] = m_Msg;
}