This repository has been archived on 2025-02-27. You can view files and clone it, but cannot push or open issues or pull requests.
CnC_Renegade/Code/Tools/W3DView/EmitterUserPropPage.cpp

177 lines
4.2 KiB
C++

/*
** Command & Conquer Renegade(tm)
** Copyright 2025 Electronic Arts Inc.
**
** This program is free software: you can redistribute it and/or modify
** it under the terms of the GNU General Public License as published by
** the Free Software Foundation, either version 3 of the License, or
** (at your option) any later version.
**
** This program is distributed in the hope that it will be useful,
** but WITHOUT ANY WARRANTY; without even the implied warranty of
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
** GNU General Public License for more details.
**
** You should have received a copy of the GNU General Public License
** along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
// EmitterUserPropPage.cpp : implementation file
//
#include "stdafx.h"
#include "w3dview.h"
#include "EmitterUserPropPage.h"
#include "W3D_File.H"
#include "Part_Emt.H"
#include "EmitterInstanceList.H"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// EmitterUserPropPageClass property page
IMPLEMENT_DYNCREATE(EmitterUserPropPageClass, CPropertyPage)
/////////////////////////////////////////////////////////////
//
// EmitterUserPropPageClass
//
EmitterUserPropPageClass::EmitterUserPropPageClass (EmitterInstanceListClass *pemitter)
: m_pEmitterList (NULL),
m_bValid (true),
m_iType (EMITTER_TYPEID_DEFAULT),
CPropertyPage(EmitterUserPropPageClass::IDD)
{
//{{AFX_DATA_INIT(EmitterUserPropPageClass)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
Initialize ();
return ;
}
/////////////////////////////////////////////////////////////
//
// ~EmitterUserPropPageClass
//
EmitterUserPropPageClass::~EmitterUserPropPageClass (void)
{
return;
}
/////////////////////////////////////////////////////////////
//
// DoDataExchange
//
void
EmitterUserPropPageClass::DoDataExchange (CDataExchange* pDX)
{
// Allow the base class to process this message
CPropertyPage::DoDataExchange(pDX);
//{{AFX_DATA_MAP(EmitterUserPropPageClass)
DDX_Control(pDX, IDC_TYPE_COMBO, m_TypeCombo);
//}}AFX_DATA_MAP
return ;
}
BEGIN_MESSAGE_MAP(EmitterUserPropPageClass, CPropertyPage)
//{{AFX_MSG_MAP(EmitterUserPropPageClass)
ON_EN_CHANGE(IDC_PROGRAMMER_SETTINGS_EDIT, OnChangeProgrammerSettingsEdit)
ON_CBN_SELCHANGE(IDC_TYPE_COMBO, OnSelchangeTypeCombo)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////
//
// Initialize
//
void
EmitterUserPropPageClass::Initialize (void)
{
if (m_pEmitterList != NULL) {
// Record the user information from the emitter (if it exists)
m_iType = m_pEmitterList->Get_User_Type ();
m_UserString = m_pEmitterList->Get_User_String ();
}
return ;
}
/////////////////////////////////////////////////////////////
//
// OnInitDialog
//
BOOL
EmitterUserPropPageClass::OnInitDialog (void)
{
// Allow the base class to process this message
CPropertyPage::OnInitDialog ();
// Add the list of user-types to the combobox
for (int index = 0; index < EMITTER_TYPEID_COUNT; index ++) {
m_TypeCombo.AddString (EMITTER_TYPE_NAMES[index]);
}
// Select the correct entry in the combobox
m_TypeCombo.SetCurSel (m_iType);
// Fill in the user-box
SetDlgItemText (IDC_PROGRAMMER_SETTINGS_EDIT, m_UserString);
return TRUE;
}
/////////////////////////////////////////////////////////////
//
// OnApply
//
BOOL
EmitterUserPropPageClass::OnApply (void)
{
// Get the settings from the controls
m_iType = m_TypeCombo.GetCurSel ();
GetDlgItemText (IDC_PROGRAMMER_SETTINGS_EDIT, m_UserString);
//
// Pass the new settings onto the emitter
//
m_pEmitterList->Set_User_Type (m_iType);
m_pEmitterList->Set_User_String (m_UserString);
// Allow the base class to process this message
return CPropertyPage::OnApply ();
}
/////////////////////////////////////////////////////////////
//
// OnChangeProgrammerSettingsEdit
//
void
EmitterUserPropPageClass::OnChangeProgrammerSettingsEdit (void)
{
SetModified ();
return ;
}
/////////////////////////////////////////////////////////////
//
// OnSelchangeTypeCombo
//
void
EmitterUserPropPageClass::OnSelchangeTypeCombo (void)
{
SetModified ();
return ;
}