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

// MobileSummaryPage.cpp : implementation file
//

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

#include "MobileSummaryPage.h"

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

/////////////////////////////////////////////////////////////////////////////
// CMobileSummaryPage dialog


CMobileSummaryPage::CMobileSummaryPage(CWnd* pParent /*=NULL*/)
	: CDialog(CMobileSummaryPage::IDD /* , pParent */)
{
	//{{AFX_DATA_INIT(CMobileSummaryPage)
	m_player_name = _T("");
	m_short_descr = _T("");
	m_long_descr = _T("");
	m_strActions = _T("");
	m_vnum = 0;
	m_strAffectedBy = _T("");
	m_level = 0;
	m_strStats = _T("");
	m_strBodyParts = _T("");
	m_strAttacks = _T("");
	m_strDefenses = _T("");
	m_strResistant = _T("");
	m_strImmune = _T("");
	m_strSusceptible = _T("");
	m_strSpeaks = _T("");
	m_strSpeaking = _T("");
	m_strDefensesLabel = _T("");
	m_strSex = _T("");
	m_strAverage = _T("");
	//}}AFX_DATA_INIT

  m_mob = NULL;

}

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


void CMobileSummaryPage::DoDataExchange(CDataExchange* pDX)
{

  if (!pDX->m_bSaveAndValidate)
    {
  	LOAD_VALUE (m_vnum, vnum);
    LOAD_VALUE (m_level, level);
	  LOAD_VALUE (m_player_name, player_name);
	  LOAD_VALUE (m_short_descr, short_descr);
	  LOAD_VALUE (m_long_descr , long_descr);  

    m_strActions = convert_actflag (m_mob->act);
    m_strAffectedBy = convert_affectflag (m_mob->affected_by);
    m_strBodyParts = convert_partflag (m_mob->xflags);
    m_strAttacks = convert_attackflag (m_mob->attacks);

    int avgHit = (m_mob->hitnodice * m_mob->hitsizedice + m_mob->hitplus) / 2;
    int avgDam = (m_mob->damnodice * m_mob->damsizedice + m_mob->damplus) / 2;
    int avgMana = (m_mob->mananodice * m_mob->manasizedice + m_mob->manaplus) / 2;

    m_strAverage = CFormat ("Hit = %i, Damage = %i", avgHit, avgDam);

    if (m_mob->m_pDoc->m_AreaType == eROM)
      {
      m_strAverage += CFormat (", Mana = %i", avgMana);
      m_strDefensesLabel = "Form:";
      m_strDefenses = convert_formflag (m_mob->form);
      }
    else
      {
      m_strDefensesLabel = "Defenses:";
      m_strDefenses = convert_defenseflag (m_mob->defenses);
      }
    m_strResistant = convert_risflag (m_mob->resistant);
    m_strImmune = convert_risflag (m_mob->immune);
    m_strSusceptible = convert_risflag (m_mob->susceptible);
	  m_strSpeaks = convert_languages (m_mob->speaks);
	  m_strSpeaking = convert_languages (m_mob->speaking);
    m_strSex = MobSexList.ReturnName (m_mob->sex, false);

    m_strStats = CFormat (
      "Str: %i, Int: %i, Wis: %i, Dex: %i, Con: %i, Cha: %i, Lck: %i",
      m_mob->perm_str, m_mob->perm_int, m_mob->perm_wis, 
      m_mob->perm_dex, m_mob->perm_con, m_mob->perm_cha, m_mob->perm_lck);

    }

	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CMobileSummaryPage)
	DDX_Control(pDX, IDC_SPEAKING_LABEL, m_ctlSpeakingLabel);
	DDX_Control(pDX, IDC_SPEAKING, m_ctlSpeaking);
	DDX_Control(pDX, IDC_SPEAKS, m_ctlSpeaks);
	DDX_Control(pDX, IDC_SPEAKS_LABEL, m_ctlSpeaksLabel);
	DDX_Text(pDX, IDC_NAME, m_player_name);
	DDX_Text(pDX, IDC_SHORT_DESCRIPTION, m_short_descr);
	DDX_Text(pDX, IDC_LONG_DESCRIPTION, m_long_descr);
	DDX_Text(pDX, IDC_ACTIONS, m_strActions);
	DDX_Text(pDX, IDC_VNUM, m_vnum);
	DDX_Text(pDX, IDC_AFFECTEDBY, m_strAffectedBy);
	DDX_Text(pDX, IDC_LEVEL, m_level);
	DDX_Text(pDX, IDC_STATS, m_strStats);
	DDX_Text(pDX, IDC_BODYPARTS, m_strBodyParts);
	DDX_Text(pDX, IDC_ATTACKS, m_strAttacks);
	DDX_Text(pDX, IDC_DEFENSES, m_strDefenses);
	DDX_Text(pDX, IDC_RESISTANT, m_strResistant);
	DDX_Text(pDX, IDC_IMMUNE, m_strImmune);
	DDX_Text(pDX, IDC_SUSCEPTIBLE, m_strSusceptible);
	DDX_Text(pDX, IDC_SPEAKS, m_strSpeaks);
	DDX_Text(pDX, IDC_SPEAKING, m_strSpeaking);
	DDX_Text(pDX, IDC_DEFENSES_LABEL, m_strDefensesLabel);
	DDX_Text(pDX, IDC_SEX, m_strSex);
	DDX_Text(pDX, IDC_AVERAGE, m_strAverage);
	//}}AFX_DATA_MAP


  if (!pDX->m_bSaveAndValidate)
    {

    if (m_mob->m_pDoc->m_AreaType != eSMAUG)
      {
      m_ctlSpeakingLabel.ShowWindow (SW_HIDE);
      m_ctlSpeaking.ShowWindow (SW_HIDE);
      m_ctlSpeaks.ShowWindow (SW_HIDE);
      m_ctlSpeaksLabel.ShowWindow (SW_HIDE);
      }   // end of not SMAUG
    }   // end of not saving

}


BEGIN_MESSAGE_MAP(CMobileSummaryPage, CDialog)
	//{{AFX_MSG_MAP(CMobileSummaryPage)
	ON_WM_KEYDOWN()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CMobileSummaryPage message handlers

void CMobileSummaryPage::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags) 
{
	// TODO: Add your message handler code here and/or call default
	
	CDialog::OnKeyDown(nChar, nRepCnt, nFlags);
}