/* ** 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 */ // AreaRangesView.cpp : implementation file // #include "stdafx.h" #include "AreaEditor.h" #include "AreaEditorDoc.h" #include "defaults.h" #include "AreaRangesView.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CAreaRangesView dialog CAreaRangesView::CAreaRangesView(CWnd* pParent /*=NULL*/) : CDialog(CAreaRangesView::IDD, pParent) { //{{AFX_DATA_INIT(CAreaRangesView) m_high_economy = 0; m_low_economy = 0; m_high_hard_range = 0; m_high_soft_range = 0; m_low_hard_range = 0; m_low_soft_range = 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 CAreaRangesView::DoDataExchange(CDataExchange* pDX) { bool bChanged = false; if (!pDX->m_bSaveAndValidate && m_area) { LOAD_VALUE (m_low_soft_range , low_soft_range); LOAD_VALUE (m_high_soft_range , hi_soft_range ); LOAD_VALUE (m_low_hard_range , low_hard_range ); LOAD_VALUE (m_high_hard_range , hi_hard_range ); LOAD_VALUE (m_high_economy , high_economy ); LOAD_VALUE (m_low_economy , low_economy ); } CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CAreaRangesView) DDX_Control(pDX, IDC_TOTAL_ECONOMY, m_ctlTotalEconomy); DDX_Control(pDX, IDC_HIGH_ECONOMY, m_ctlHighEconomy); DDX_Control(pDX, IDC_LOW_ECONOMY, m_ctlLowEconomy); DDX_Text(pDX, IDC_HIGH_ECONOMY, m_high_economy); DDV_MinMaxInt(pDX, m_high_economy, 0, 999999999); DDX_Text(pDX, IDC_LOW_ECONOMY, m_low_economy); DDV_MinMaxInt(pDX, m_low_economy, 0, 999999999); //}}AFX_DATA_MAP // calculate total economy if (!pDX->m_bSaveAndValidate) OnChangeEconomy (); // ranges DDX_Text(pDX, IDC_LOW_SOFT_RANGE, m_low_soft_range); DDV_MinMaxInt(pDX, m_low_soft_range, 0, iMaxLevel); DDX_Text(pDX, IDC_LOW_HARD_RANGE, m_low_hard_range); DDV_MinMaxInt(pDX, m_low_hard_range, 0, iMaxLevel); DDX_Text(pDX, IDC_HIGH_HARD_RANGE, m_high_hard_range); DDV_MinMaxInt(pDX, m_high_hard_range, 0, iMaxLevel); DDX_Text(pDX, IDC_HIGH_SOFT_RANGE, m_high_soft_range); DDV_MinMaxInt(pDX, m_high_soft_range, 0, iMaxLevel); // put stuff back if (pDX->m_bSaveAndValidate && m_area) { UNLOAD_VALUE (m_low_soft_range , low_soft_range); UNLOAD_VALUE (m_high_soft_range , hi_soft_range ); UNLOAD_VALUE (m_low_hard_range , low_hard_range ); UNLOAD_VALUE (m_high_hard_range , hi_hard_range ); UNLOAD_VALUE (m_high_economy , high_economy ); if (bChanged) m_area->m_pDoc->SetModifiedFlag (); } } BEGIN_MESSAGE_MAP(CAreaRangesView, CDialog) //{{AFX_MSG_MAP(CAreaRangesView) ON_EN_CHANGE(IDC_LOW_ECONOMY, OnChangeEconomy) ON_EN_CHANGE(IDC_HIGH_ECONOMY, OnChangeEconomy) //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CAreaRangesView message handlers void CAreaRangesView::OnChangeEconomy() { CString strField; // get text of window m_ctlLowEconomy.GetWindowText(strField); // convert to number int iLowEconomy = atoi (strField); // get text of window m_ctlHighEconomy.GetWindowText(strField); // convert to number int iHighEconomy = atoi (strField); __int64 economy = (__int64) iHighEconomy * 1000000000 + (__int64) iLowEconomy; char sTotalEconomy [30]; sprintf (sTotalEconomy, "%I64d", economy); m_ctlTotalEconomy.SetWindowText (sTotalEconomy); }