Files
FC1/Editor/MissionSelectDialog.cpp
romkazvo 34d6c5d489 123
2023-08-07 19:29:24 +08:00

121 lines
2.7 KiB
C++

// MissionSelectDialog.cpp : implementation file
//
#include "stdafx.h"
#include "MissionSelectDialog.h"
#include "Mission.h"
#include "cryeditdoc.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CMissionSelectDialog dialog
CMissionSelectDialog::CMissionSelectDialog(CWnd* pParent /*=NULL*/)
: CDialog(CMissionSelectDialog::IDD, pParent)
{
//{{AFX_DATA_INIT(CMissionSelectDialog)
m_description = _T("");
m_selected = _T("");
//}}AFX_DATA_INIT
}
void CMissionSelectDialog::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CMissionSelectDialog)
DDX_Control(pDX, IDC_MISSIONS, m_missions);
DDX_Text(pDX, IDC_DESCRIPTION, m_description);
DDX_LBString(pDX, IDC_MISSIONS, m_selected);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CMissionSelectDialog, CDialog)
//{{AFX_MSG_MAP(CMissionSelectDialog)
ON_LBN_SELCHANGE(IDC_MISSIONS, OnSelectMission)
ON_LBN_DBLCLK(IDC_MISSIONS, OnDblclkMissions)
ON_EN_UPDATE(IDC_DESCRIPTION, OnUpdateDescription)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CMissionSelectDialog message handlers
void CMissionSelectDialog::OnOK()
{
CCryEditDoc *doc = GetIEditor()->GetDocument();
for (int i = 0; i < doc->GetMissionCount(); i++)
{
CMission *m = doc->GetMission(i);
m->SetDescription( m_descriptions[i] );
}
CDialog::OnOK();
}
void CMissionSelectDialog::OnCancel()
{
CDialog::OnCancel();
}
BOOL CMissionSelectDialog::OnInitDialog()
{
CDialog::OnInitDialog();
// Init missions.
m_missions.ResetContent();
CCryEditDoc *doc = GetIEditor()->GetDocument();
m_descriptions.resize( doc->GetMissionCount() );
for (int i = 0; i < doc->GetMissionCount(); i++)
{
CMission *m = doc->GetMission(i);
m_missions.AddString( m->GetName() );
m_descriptions[i] = m->GetDescription();
}
if (doc->GetMissionCount() > 0)
{
// Select first mission.
m_missions.SetCurSel(0);
OnSelectMission();
}
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CMissionSelectDialog::OnSelectMission()
{
// TODO: Add your control notification handler code here
int sel = m_missions.GetCurSel();
if (sel != LB_ERR)
{
UpdateData(TRUE);
m_description = m_descriptions[sel];
UpdateData(FALSE);
}
}
void CMissionSelectDialog::OnDblclkMissions()
{
OnOK();
}
void CMissionSelectDialog::OnUpdateDescription()
{
int sel = m_missions.GetCurSel();
if (sel != LB_ERR)
{
UpdateData(TRUE);
m_descriptions[sel] = m_description;
}
}