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

// AreaVnumsView.cpp : implementation file
//

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

#include "AreaVnumsView.h"

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

/////////////////////////////////////////////////////////////////////////////
// CAreaVnumsView dialog


CAreaVnumsView::CAreaVnumsView(CWnd* pParent /*=NULL*/)
	: CDialog(CAreaVnumsView::IDD, pParent)
{
	//{{AFX_DATA_INIT(CAreaVnumsView)
	m_mob_hi_vnum = 0;
	m_mob_low_vnum = 0;
	m_obj_hi_vnum = 0;
	m_obj_low_vnum = 0;
	m_room_hi_vnum = 0;
	m_room_low_vnum = 0;
	//}}AFX_DATA_INIT

  m_area = NULL;

}

#undef LOAD_VALUE
#define LOAD_VALUE(field, value)  \
  field = m_area->value

#undef UNLOAD_VALUE
#define UNLOAD_VALUE(field, value)  \
  if (field != m_area->value) bChanged = true; \
  m_area->value = field

void CAreaVnumsView::DoDataExchange(CDataExchange* pDX)
{

bool bChanged = false;

  if (!pDX->m_bSaveAndValidate && m_area)
    {
	  LOAD_VALUE (m_mob_hi_vnum,  mob_hi_vnum);
	  LOAD_VALUE (m_mob_low_vnum, mob_low_vnum);
	  LOAD_VALUE (m_obj_hi_vnum,  obj_hi_vnum);
	  LOAD_VALUE (m_obj_low_vnum, obj_low_vnum);
	  LOAD_VALUE (m_room_hi_vnum, room_hi_vnum);
	  LOAD_VALUE (m_room_low_vnum,room_low_vnum);
    }

	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CAreaVnumsView)
	//}}AFX_DATA_MAP

  //vnums
	DDX_Text(pDX, IDC_MOB_HIGH_VNUM, m_mob_hi_vnum);
	DDV_MinMaxInt(pDX, m_mob_hi_vnum, 1, iMaxVnum);
	DDX_Text(pDX, IDC_MOB_LOW_VNUM, m_mob_low_vnum);
	DDV_MinMaxInt(pDX, m_mob_low_vnum, 1, iMaxVnum);
	DDX_Text(pDX, IDC_OBJ_HIGH_VNUM, m_obj_hi_vnum);
	DDV_MinMaxInt(pDX, m_obj_hi_vnum, 1, iMaxVnum);
	DDX_Text(pDX, IDC_OBJ_LOW_VNUM, m_obj_low_vnum);
	DDV_MinMaxInt(pDX, m_obj_low_vnum, 1, iMaxVnum);
	DDX_Text(pDX, IDC_ROOM_HIGH_VNUM, m_room_hi_vnum);
	DDV_MinMaxInt(pDX, m_room_hi_vnum, 1, iMaxVnum);
	DDX_Text(pDX, IDC_ROOM_LOW_VNUM, m_room_low_vnum);
	DDV_MinMaxInt(pDX, m_room_low_vnum, 1, iMaxVnum);

  // put stuff back
  if (pDX->m_bSaveAndValidate && m_area)
    {
	  UNLOAD_VALUE (m_mob_hi_vnum,  mob_hi_vnum);
	  UNLOAD_VALUE (m_mob_low_vnum, mob_low_vnum);
	  UNLOAD_VALUE (m_obj_hi_vnum,  obj_hi_vnum);
	  UNLOAD_VALUE (m_obj_low_vnum, obj_low_vnum);
	  UNLOAD_VALUE (m_room_hi_vnum, room_hi_vnum);
	  UNLOAD_VALUE (m_room_low_vnum,room_low_vnum);
     if (bChanged)
       m_area->m_pDoc->SetModifiedFlag ();
    }

}


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

/////////////////////////////////////////////////////////////////////////////
// CAreaVnumsView message handlers