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
*/

// MobileBodyPartsPage.cpp : implementation file
//

#include "stdafx.h"
#include "AreaEditor.h"
#include "AreaEditorDoc.h"

#include "MobileBodyPartsPage.h"

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

/////////////////////////////////////////////////////////////////////////////
// CMobileBodyPartsPage dialog


CMobileBodyPartsPage::CMobileBodyPartsPage(CWnd* pParent /*=NULL*/)
	: CDialog(CMobileBodyPartsPage::IDD, pParent)
{
	//{{AFX_DATA_INIT(CMobileBodyPartsPage)
	m_arms = FALSE;
	m_beak = FALSE;
	m_brains = FALSE;
	m_claws = FALSE;
	m_ear = FALSE;
	m_eye = FALSE;
	m_eyestalks = FALSE;
	m_fangs = FALSE;
	m_feathers = FALSE;
	m_feet = FALSE;
	m_fins = FALSE;
	m_fingers = FALSE;
	m_forelegs = FALSE;
	m_guts = FALSE;
	m_hands = FALSE;
	m_haunch = FALSE;
	m_head = FALSE;
	m_heart = FALSE;
	m_horns = FALSE;
	m_legs = FALSE;
	m_paws = FALSE;
	m_scales = FALSE;
	m_sharpscales = FALSE;
	m_tail = FALSE;
	m_tailattack = FALSE;
	m_tentacles = FALSE;
	m_tusks = FALSE;
	m_wings = FALSE;
	m_hooves = FALSE;
	m_long_tongue = FALSE;
	//}}AFX_DATA_INIT

  m_mob = NULL;

}

#undef LOAD_FLAG
#define LOAD_FLAG(field, flag)  \
  field = IS_SET (m_mob->xflags, flag);

#undef UNLOAD_FLAG
#define UNLOAD_FLAG(field, flag)  \
  if (field != IS_SET (m_mob->xflags, flag)) bChanged = true; \
  if (field)                      \
    SET_BIT (m_mob->xflags, flag);\
  else                            \
    REMOVE_BIT (m_mob->xflags, flag)

void CMobileBodyPartsPage::DoDataExchange(CDataExchange* pDX)
{
bool bChanged = false;

  if (!pDX->m_bSaveAndValidate)
    {
	  LOAD_FLAG (m_arms, PART_ARMS);
	  LOAD_FLAG (m_beak, PART_BEAK);
	  LOAD_FLAG (m_brains, PART_BRAINS);
	  LOAD_FLAG (m_claws, PART_CLAWS);
	  LOAD_FLAG (m_ear, PART_EAR);
	  LOAD_FLAG (m_eye, PART_EYE);
	  LOAD_FLAG (m_eyestalks, PART_EYESTALKS);
	  LOAD_FLAG (m_fangs, PART_FANGS);
	  LOAD_FLAG (m_feathers, PART_FEATHERS);
	  LOAD_FLAG (m_feet, PART_FEET);
	  LOAD_FLAG (m_fins, PART_FINS);
	  LOAD_FLAG (m_fingers, PART_FINGERS);
	  LOAD_FLAG (m_forelegs, PART_FORELEGS);
	  LOAD_FLAG (m_guts, PART_GUTS);
	  LOAD_FLAG (m_hands, PART_HANDS);
	  LOAD_FLAG (m_haunch, PART_HAUNCH);
	  LOAD_FLAG (m_head, PART_HEAD);
	  LOAD_FLAG (m_hooves, PART_HOOVES);
	  LOAD_FLAG (m_heart, PART_HEART);
	  LOAD_FLAG (m_horns, PART_HORNS);
	  LOAD_FLAG (m_legs, PART_LEGS);
	  LOAD_FLAG (m_long_tongue, PART_LONG_TONGUE);
	  LOAD_FLAG (m_paws, PART_PAWS);
	  LOAD_FLAG (m_scales, PART_SCALES);
	  LOAD_FLAG (m_sharpscales, PART_SHARPSCALES);
	  LOAD_FLAG (m_tail, PART_TAIL);
	  LOAD_FLAG (m_tailattack, PART_TAILATTACK);
	  LOAD_FLAG (m_tentacles, PART_TENTACLES);
	  LOAD_FLAG (m_tusks, PART_TUSKS);
	  LOAD_FLAG (m_wings, PART_WINGS);

    }

	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CMobileBodyPartsPage)
	DDX_Check(pDX, IDC_ARMS, m_arms);
	DDX_Check(pDX, IDC_BEAK, m_beak);
	DDX_Check(pDX, IDC_BRAINS, m_brains);
	DDX_Check(pDX, IDC_CLAWS, m_claws);
	DDX_Check(pDX, IDC_EAR, m_ear);
	DDX_Check(pDX, IDC_EYE, m_eye);
	DDX_Check(pDX, IDC_EYESTALKS, m_eyestalks);
	DDX_Check(pDX, IDC_FANGS, m_fangs);
	DDX_Check(pDX, IDC_FEATHERS, m_feathers);
	DDX_Check(pDX, IDC_FEET, m_feet);
	DDX_Check(pDX, IDC_FINS, m_fins);
	DDX_Check(pDX, IDC_FINGERS, m_fingers);
	DDX_Check(pDX, IDC_FORELEGS, m_forelegs);
	DDX_Check(pDX, IDC_GUTS, m_guts);
	DDX_Check(pDX, IDC_HANDS, m_hands);
	DDX_Check(pDX, IDC_HAUNCH, m_haunch);
	DDX_Check(pDX, IDC_HEAD, m_head);
	DDX_Check(pDX, IDC_HEART, m_heart);
	DDX_Check(pDX, IDC_HORNS, m_horns);
	DDX_Check(pDX, IDC_LEGS, m_legs);
	DDX_Check(pDX, IDC_PAWS, m_paws);
	DDX_Check(pDX, IDC_SCALES, m_scales);
	DDX_Check(pDX, IDC_SHARPSCALES, m_sharpscales);
	DDX_Check(pDX, IDC_TAIL, m_tail);
	DDX_Check(pDX, IDC_TAILATTACK, m_tailattack);
	DDX_Check(pDX, IDC_TENTACLES, m_tentacles);
	DDX_Check(pDX, IDC_TUSKS, m_tusks);
	DDX_Check(pDX, IDC_WINGS, m_wings);
	DDX_Check(pDX, IDC_HOOVES, m_hooves);
	DDX_Check(pDX, IDC_LONG_TONGUE, m_long_tongue);
	//}}AFX_DATA_MAP

  if (pDX->m_bSaveAndValidate)
    {
	  UNLOAD_FLAG (m_arms, PART_ARMS);
	  UNLOAD_FLAG (m_beak, PART_BEAK);
	  UNLOAD_FLAG (m_brains, PART_BRAINS);
	  UNLOAD_FLAG (m_claws, PART_CLAWS);
	  UNLOAD_FLAG (m_ear, PART_EAR);
	  UNLOAD_FLAG (m_eye, PART_EYE);
	  UNLOAD_FLAG (m_eyestalks, PART_EYESTALKS);
	  UNLOAD_FLAG (m_fangs, PART_FANGS);
	  UNLOAD_FLAG (m_feathers, PART_FEATHERS);
	  UNLOAD_FLAG (m_feet, PART_FEET);
	  UNLOAD_FLAG (m_fins, PART_FINS);
	  UNLOAD_FLAG (m_fingers, PART_FINGERS);
	  UNLOAD_FLAG (m_forelegs, PART_FORELEGS);
	  UNLOAD_FLAG (m_guts, PART_GUTS);
	  UNLOAD_FLAG (m_hands, PART_HANDS);
	  UNLOAD_FLAG (m_haunch, PART_HAUNCH);
	  UNLOAD_FLAG (m_head, PART_HEAD);
	  UNLOAD_FLAG (m_hooves, PART_HOOVES);
	  UNLOAD_FLAG (m_heart, PART_HEART);
	  UNLOAD_FLAG (m_horns, PART_HORNS);
	  UNLOAD_FLAG (m_legs, PART_LEGS);
	  UNLOAD_FLAG (m_long_tongue, PART_LONG_TONGUE);
	  UNLOAD_FLAG (m_paws, PART_PAWS);
	  UNLOAD_FLAG (m_scales, PART_SCALES);
	  UNLOAD_FLAG (m_sharpscales, PART_SHARPSCALES);
	  UNLOAD_FLAG (m_tail, PART_TAIL);
	  UNLOAD_FLAG (m_tailattack, PART_TAILATTACK);
	  UNLOAD_FLAG (m_tentacles, PART_TENTACLES);
	  UNLOAD_FLAG (m_tusks, PART_TUSKS);
	  UNLOAD_FLAG (m_wings, PART_WINGS);

     if (bChanged)
       m_mob->m_pDoc->SetModifiedFlag ();
    }

}


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

/////////////////////////////////////////////////////////////////////////////
// CMobileBodyPartsPage message handlers