/* ** 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 . */ // NewHeightfieldDialog.cpp : implementation file // #include "stdafx.h" #include "leveledit.h" #include "newheightfielddialog.h" #include "heightfieldmgr.h" #include "utils.h" #include "refcount.h" #include "wwstring.h" #include "heightfieldeditor.h" #include "editableheightfield.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // NewHeightfieldDialogClass dialog NewHeightfieldDialogClass::NewHeightfieldDialogClass(CWnd* pParent /*=NULL*/) : CDialog(NewHeightfieldDialogClass::IDD, pParent) { //{{AFX_DATA_INIT(NewHeightfieldDialogClass) // NOTE: the ClassWizard will add member initialization here //}}AFX_DATA_INIT } void NewHeightfieldDialogClass::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(NewHeightfieldDialogClass) // NOTE: the ClassWizard will add DDX and DDV calls here //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(NewHeightfieldDialogClass, CDialog) //{{AFX_MSG_MAP(NewHeightfieldDialogClass) ON_BN_CLICKED(IDC_BROWSE, OnBrowse) //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // // OnOK // ///////////////////////////////////////////////////////////////////////////// void NewHeightfieldDialogClass::OnOK (void) { int width = GetDlgItemInt (IDC_WIDTH_EDIT); int height = GetDlgItemInt (IDC_HEIGHT_EDIT); float density = ::GetDlgItemFloat (m_hWnd, IDC_DENSITY_EDIT, false); // // Is the user attempting to initialize the heightfield from a grayscale bitmap? // CString bmp_filename; GetDlgItemText (IDC_BMP_FILENAME_EDIT, bmp_filename); if (bmp_filename.GetLength () >= 0 && ::GetFileAttributes (bmp_filename) != 0xFFFFFFFF) { // // Create the initial heightfield from these values // float scale = ::GetDlgItemFloat (m_hWnd, IDC_HEIGHT_SCALE_EDIT, false); HeightfieldMgrClass::Create_Heightfield (bmp_filename, width, height, density, scale); } else { // // Create the initial heightfield from these values // HeightfieldMgrClass::Create_Heightfield (width, height, density); } CDialog::OnOK (); return ; } ///////////////////////////////////////////////////////////////////////////// // // OnInitDialog // ///////////////////////////////////////////////////////////////////////////// BOOL NewHeightfieldDialogClass::OnInitDialog (void) { CDialog::OnInitDialog (); // // Generate a name for this heightfield // StringClass new_name; new_name.Format ("Heightfield %d", HeightfieldMgrClass::Get_Heightfield_Count () + 1); SetDlgItemText (IDC_NAME_EDIT, new_name); // // Set some default values... // SetDlgItemInt (IDC_WIDTH_EDIT, 500); SetDlgItemInt (IDC_HEIGHT_EDIT, 500); ::SetDlgItemFloat (m_hWnd, IDC_DENSITY_EDIT, 2.0F); ::SetDlgItemFloat (m_hWnd, IDC_HEIGHT_SCALE_EDIT, 75.0F); return TRUE; } ///////////////////////////////////////////////////////////////////////////// // // OnBrowse // ///////////////////////////////////////////////////////////////////////////// void NewHeightfieldDialogClass::OnBrowse (void) { // // Get the current texture path // CString filename; GetDlgItemText (IDC_BMP_FILENAME_EDIT, filename); CFileDialog dialog (TRUE, ".bmp", filename, OFN_HIDEREADONLY | OFN_EXPLORER, "Windows Bitmap Files (*.bmp)|*.bmp||", ::AfxGetMainWnd ()); // // Ask the user what bitmap they wish to use // if (dialog.DoModal () == IDOK) { SetDlgItemText (IDC_BMP_FILENAME_EDIT, dialog.GetPathName ()); } return ; }