areaeditor/
/*
** AreaEditor - a program for editing SMAUG and ROM area files.
** Author: Nick Gammon
** http://www.gammon.com.au/
** See Copyright Notice at the end of AreaEditor.h
*/

// EditSocialDlg.cpp : implementation file
//

#include "stdafx.h"
#include "AreaEditor.h"
#include "EditSocialDlg.h"

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

/////////////////////////////////////////////////////////////////////////////
// CEditSocialDlg dialog


CEditSocialDlg::CEditSocialDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CEditSocialDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CEditSocialDlg)
	m_char_auto = _T("");
	m_char_found = _T("");
	m_char_no_arg = _T("");
	m_name = _T("");
	m_others_auto = _T("");
	m_others_found = _T("");
	m_others_no_arg = _T("");
	m_vict_found = _T("");
	//}}AFX_DATA_INIT

  m_bAdd = false;

}


void CEditSocialDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CEditSocialDlg)
	DDX_Text(pDX, IDC_CHAR_AUTO, m_char_auto);
	DDX_Text(pDX, IDC_CHAR_FOUND, m_char_found);
	DDX_Text(pDX, IDC_CHAR_NO_ARG, m_char_no_arg);
	DDX_Text(pDX, IDC_NAME, m_name);
	DDX_Text(pDX, IDC_OTHERS_AUTO, m_others_auto);
	DDX_Text(pDX, IDC_OTHERS_FOUND, m_others_found);
	DDX_Text(pDX, IDC_OTHERS_NO_ARG, m_others_no_arg);
	DDX_Text(pDX, IDC_VICT_FOUND, m_vict_found);
	//}}AFX_DATA_MAP

  if (pDX->m_bSaveAndValidate)
    {
  
    m_name.TrimLeft ();
    m_name.TrimRight ();

    if (m_name.IsEmpty ())
      {
      ::AfxMessageBox ("Social must have a name");
      DDX_Text(pDX, IDC_NAME, m_name);
      pDX->Fail();
      }
            
    m_name.MakeLower ();    // I think this is wise

    m_char_no_arg.TrimLeft ();
    m_char_no_arg.TrimRight ();

    if (m_char_no_arg.IsEmpty ())
      {
      ::AfxMessageBox ("Social must have a \"Char no-arg\" entry.");
      DDX_Text(pDX, IDC_CHAR_NO_ARG, m_char_no_arg);
      pDX->Fail();
      }

    // look for duplicates

    if (m_bAdd)
      for (POSITION socialPos = App.m_SocialList.GetHeadPosition (); socialPos; )
        {
        CSocial * social = App.m_SocialList.GetNext (socialPos);

        if (social->name.CompareNoCase (m_name) == 0)
          {
          ::AfxMessageBox (CFormat ("There is already a social called \"%s\"",
                          (LPCTSTR) m_name));
          DDX_Text(pDX, IDC_NAME, m_name);
          pDX->Fail();
          }
        }

    CheckForTilde (pDX, IDC_CHAR_AUTO, m_char_auto);
    CheckForTilde (pDX, IDC_CHAR_FOUND, m_char_found);
    CheckForTilde (pDX, IDC_CHAR_NO_ARG, m_char_no_arg);
    CheckForTilde (pDX, IDC_NAME, m_name);
    CheckForTilde (pDX, IDC_OTHERS_AUTO, m_others_auto);
    CheckForTilde (pDX, IDC_OTHERS_FOUND, m_others_found);
    CheckForTilde (pDX, IDC_OTHERS_NO_ARG, m_others_no_arg);
    CheckForTilde (pDX, IDC_VICT_FOUND, m_vict_found);

    }   // end of save and validate

}


BEGIN_MESSAGE_MAP(CEditSocialDlg, CDialog)
	//{{AFX_MSG_MAP(CEditSocialDlg)
		// NOTE: the ClassWizard will add message map macros here
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CEditSocialDlg message handlers