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

// MobileAttacksPage.cpp : implementation file
//

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

#include "MobileAttacksPage.h"

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

/////////////////////////////////////////////////////////////////////////////
// CMobileAttacksPage dialog


CMobileAttacksPage::CMobileAttacksPage(CWnd* pParent /*=NULL*/)
	: CDialog(CMobileAttacksPage::IDD, pParent)
{
	//{{AFX_DATA_INIT(CMobileAttacksPage)
	m_acidbreath = FALSE;
	m_backstab = FALSE;
	m_bash = FALSE;
	m_bite = FALSE;
	m_blindness = FALSE;
	m_causecritical = FALSE;
	m_causeserious = FALSE;
	m_claws = FALSE;
	m_colorspray = FALSE;
	m_curse = FALSE;
	m_drain = FALSE;
	m_earthquake = FALSE;
	m_feed = FALSE;
	m_fireball = FALSE;
	m_firebreath = FALSE;
	m_flamestrike = FALSE;
	m_frostbreath = FALSE;
	m_gasbreath = FALSE;
	m_gaze = FALSE;
	m_gouge = FALSE;
	m_harm = FALSE;
	m_kick = FALSE;
	m_lightnbreath = FALSE;
	m_nastypoison = FALSE;
	m_poison = FALSE;
	m_punch = FALSE;
	m_spiralblast = FALSE;
	m_sting = FALSE;
	m_stun = FALSE;
	m_tail = FALSE;
	m_trip = FALSE;
	m_weaken = FALSE;
	//}}AFX_DATA_INIT

  m_mob = NULL;

}

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

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

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

  if (!pDX->m_bSaveAndValidate)
    {
	  LOAD_FLAG (m_acidbreath, ATCK_ACIDBREATH);
	  LOAD_FLAG (m_backstab, ATCK_BACKSTAB);
	  LOAD_FLAG (m_bash, ATCK_BASH);
	  LOAD_FLAG (m_bite, ATCK_BITE);
	  LOAD_FLAG (m_blindness, ATCK_BLINDNESS);
	  LOAD_FLAG (m_causecritical, ATCK_CAUSECRITICAL);
	  LOAD_FLAG (m_causeserious, ATCK_CAUSESERIOUS);
	  LOAD_FLAG (m_claws, ATCK_CLAWS);
	  LOAD_FLAG (m_colorspray, ATCK_COLORSPRAY);
	  LOAD_FLAG (m_curse, ATCK_CURSE);
	  LOAD_FLAG (m_drain, ATCK_DRAIN);
	  LOAD_FLAG (m_earthquake, ATCK_EARTHQUAKE);
	  LOAD_FLAG (m_feed, ATCK_FEED);
	  LOAD_FLAG (m_fireball, ATCK_FIREBALL);
	  LOAD_FLAG (m_firebreath, ATCK_FIREBREATH);
	  LOAD_FLAG (m_flamestrike, ATCK_FLAMESTRIKE);
	  LOAD_FLAG (m_frostbreath, ATCK_FROSTBREATH);
	  LOAD_FLAG (m_gasbreath, ATCK_GASBREATH);
	  LOAD_FLAG (m_gaze, ATCK_GAZE);
	  LOAD_FLAG (m_gouge, ATCK_GOUGE);
	  LOAD_FLAG (m_harm, ATCK_HARM);
	  LOAD_FLAG (m_kick, ATCK_KICK);
	  LOAD_FLAG (m_lightnbreath, ATCK_LIGHTNBREATH);
	  LOAD_FLAG (m_nastypoison, ATCK_NASTYPOISON);
	  LOAD_FLAG (m_poison, ATCK_POISON);
	  LOAD_FLAG (m_punch, ATCK_PUNCH);
	  LOAD_FLAG (m_spiralblast, ATCK_SPIRALBLAST);
	  LOAD_FLAG (m_sting, ATCK_STING);
	  LOAD_FLAG (m_stun, ATCK_STUN);
	  LOAD_FLAG (m_tail, ATCK_TAIL);
	  LOAD_FLAG (m_trip, ATCK_TRIP);
	  LOAD_FLAG (m_weaken, ATCK_WEAKEN);

    }

	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CMobileAttacksPage)
	DDX_Check(pDX, IDC_ACIDBREATH, m_acidbreath);
	DDX_Check(pDX, IDC_BACKSTAB, m_backstab);
	DDX_Check(pDX, IDC_BASH, m_bash);
	DDX_Check(pDX, IDC_BITE, m_bite);
	DDX_Check(pDX, IDC_BLINDNESS, m_blindness);
	DDX_Check(pDX, IDC_CAUSECRITICAL, m_causecritical);
	DDX_Check(pDX, IDC_CAUSESERIOUS, m_causeserious);
	DDX_Check(pDX, IDC_CLAWS, m_claws);
	DDX_Check(pDX, IDC_COLORSPRAY, m_colorspray);
	DDX_Check(pDX, IDC_CURSE, m_curse);
	DDX_Check(pDX, IDC_DRAIN, m_drain);
	DDX_Check(pDX, IDC_EARTHQUAKE, m_earthquake);
	DDX_Check(pDX, IDC_FEED, m_feed);
	DDX_Check(pDX, IDC_FIREBALL, m_fireball);
	DDX_Check(pDX, IDC_FIREBREATH, m_firebreath);
	DDX_Check(pDX, IDC_FLAMESTRIKE, m_flamestrike);
	DDX_Check(pDX, IDC_FROSTBREATH, m_frostbreath);
	DDX_Check(pDX, IDC_GASBREATH, m_gasbreath);
	DDX_Check(pDX, IDC_GAZE, m_gaze);
	DDX_Check(pDX, IDC_GOUGE, m_gouge);
	DDX_Check(pDX, IDC_HARM, m_harm);
	DDX_Check(pDX, IDC_KICK, m_kick);
	DDX_Check(pDX, IDC_LIGHTNBREATH, m_lightnbreath);
	DDX_Check(pDX, IDC_NASTYPOISON, m_nastypoison);
	DDX_Check(pDX, IDC_POISON, m_poison);
	DDX_Check(pDX, IDC_PUNCH, m_punch);
	DDX_Check(pDX, IDC_SPIRALBLAST, m_spiralblast);
	DDX_Check(pDX, IDC_STING, m_sting);
	DDX_Check(pDX, IDC_STUN, m_stun);
	DDX_Check(pDX, IDC_TAIL, m_tail);
	DDX_Check(pDX, IDC_TRIP, m_trip);
	DDX_Check(pDX, IDC_WEAKEN, m_weaken);
	//}}AFX_DATA_MAP

  if (pDX->m_bSaveAndValidate)
    {
	  UNLOAD_FLAG (m_acidbreath, ATCK_ACIDBREATH);
	  UNLOAD_FLAG (m_backstab, ATCK_BACKSTAB);
	  UNLOAD_FLAG (m_bash, ATCK_BASH);
	  UNLOAD_FLAG (m_bite, ATCK_BITE);
	  UNLOAD_FLAG (m_blindness, ATCK_BLINDNESS);
	  UNLOAD_FLAG (m_causecritical, ATCK_CAUSECRITICAL);
	  UNLOAD_FLAG (m_causeserious, ATCK_CAUSESERIOUS);
	  UNLOAD_FLAG (m_claws, ATCK_CLAWS);
	  UNLOAD_FLAG (m_colorspray, ATCK_COLORSPRAY);
	  UNLOAD_FLAG (m_curse, ATCK_CURSE);
	  UNLOAD_FLAG (m_drain, ATCK_DRAIN);
	  UNLOAD_FLAG (m_earthquake, ATCK_EARTHQUAKE);
	  UNLOAD_FLAG (m_feed, ATCK_FEED);
	  UNLOAD_FLAG (m_fireball, ATCK_FIREBALL);
	  UNLOAD_FLAG (m_firebreath, ATCK_FIREBREATH);
	  UNLOAD_FLAG (m_flamestrike, ATCK_FLAMESTRIKE);
	  UNLOAD_FLAG (m_frostbreath, ATCK_FROSTBREATH);
	  UNLOAD_FLAG (m_gasbreath, ATCK_GASBREATH);
	  UNLOAD_FLAG (m_gaze, ATCK_GAZE);
	  UNLOAD_FLAG (m_gouge, ATCK_GOUGE);
	  UNLOAD_FLAG (m_harm, ATCK_HARM);
	  UNLOAD_FLAG (m_kick, ATCK_KICK);
	  UNLOAD_FLAG (m_lightnbreath, ATCK_LIGHTNBREATH);
	  UNLOAD_FLAG (m_nastypoison, ATCK_NASTYPOISON);
	  UNLOAD_FLAG (m_poison, ATCK_POISON);
	  UNLOAD_FLAG (m_punch, ATCK_PUNCH);
	  UNLOAD_FLAG (m_spiralblast, ATCK_SPIRALBLAST);
	  UNLOAD_FLAG (m_sting, ATCK_STING);
	  UNLOAD_FLAG (m_stun, ATCK_STUN);
	  UNLOAD_FLAG (m_tail, ATCK_TAIL);
	  UNLOAD_FLAG (m_trip, ATCK_TRIP);
	  UNLOAD_FLAG (m_weaken, ATCK_WEAKEN);

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

}


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

/////////////////////////////////////////////////////////////////////////////
// CMobileAttacksPage message handlers