182 lines
4.6 KiB
C++
182 lines
4.6 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/>.
|
||
|
*/
|
||
|
|
||
|
// Vector3Dialog.cpp : implementation file
|
||
|
//
|
||
|
|
||
|
#include "stdafx.h"
|
||
|
#include "leveledit.h"
|
||
|
#include "Vector3Dialog.h"
|
||
|
#include "utils.h"
|
||
|
|
||
|
#ifdef _DEBUG
|
||
|
#define new DEBUG_NEW
|
||
|
#undef THIS_FILE
|
||
|
static char THIS_FILE[] = __FILE__;
|
||
|
#endif
|
||
|
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
//
|
||
|
// Vector3DialogClass
|
||
|
//
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
Vector3DialogClass::Vector3DialogClass (CWnd *parent)
|
||
|
: m_DefaultValue (0, 0, 0),
|
||
|
CDialog (Vector3DialogClass::IDD, parent)
|
||
|
{
|
||
|
//{{AFX_DATA_INIT(Vector3DialogClass)
|
||
|
// NOTE: the ClassWizard will add member initialization here
|
||
|
//}}AFX_DATA_INIT
|
||
|
return ;
|
||
|
}
|
||
|
|
||
|
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
//
|
||
|
// DoDataExchange
|
||
|
//
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
void
|
||
|
Vector3DialogClass::DoDataExchange (CDataExchange* pDX)
|
||
|
{
|
||
|
CDialog::DoDataExchange(pDX);
|
||
|
//{{AFX_DATA_MAP(Vector3DialogClass)
|
||
|
DDX_Control(pDX, IDC_Z_STATIC, m_ZStatic);
|
||
|
DDX_Control(pDX, IDC_Y_STATIC, m_YStatic);
|
||
|
DDX_Control(pDX, IDC_X_STATIC, m_XStatic);
|
||
|
DDX_Control(pDX, IDC_Z_EDIT, m_ZEdit);
|
||
|
DDX_Control(pDX, IDC_Y_EDIT, m_YEdit);
|
||
|
DDX_Control(pDX, IDC_X_EDIT, m_XEdit);
|
||
|
DDX_Control(pDX, IDC_Z_SPIN, m_ZSpin);
|
||
|
DDX_Control(pDX, IDC_Y_SPIN, m_YSpin);
|
||
|
DDX_Control(pDX, IDC_X_SPIN, m_XSpin);
|
||
|
//}}AFX_DATA_MAP
|
||
|
|
||
|
return ;
|
||
|
}
|
||
|
|
||
|
|
||
|
BEGIN_MESSAGE_MAP(Vector3DialogClass, CDialog)
|
||
|
//{{AFX_MSG_MAP(Vector3DialogClass)
|
||
|
ON_WM_CREATE()
|
||
|
//}}AFX_MSG_MAP
|
||
|
END_MESSAGE_MAP()
|
||
|
|
||
|
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
//
|
||
|
// OnCreate
|
||
|
//
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
int
|
||
|
Vector3DialogClass::OnCreate (LPCREATESTRUCT lpCreateStruct)
|
||
|
{
|
||
|
if (CDialog::OnCreate(lpCreateStruct) == -1)
|
||
|
return -1;
|
||
|
|
||
|
return 0;
|
||
|
}
|
||
|
|
||
|
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
//
|
||
|
// Set_Default_Value
|
||
|
//
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
void
|
||
|
Vector3DialogClass::Set_Default_Value (const Vector3 &value)
|
||
|
{
|
||
|
m_DefaultValue = value;
|
||
|
|
||
|
//
|
||
|
// Put the default values into the controls
|
||
|
//
|
||
|
::SetWindowFloat (m_XEdit, m_DefaultValue.X);
|
||
|
::SetWindowFloat (m_YEdit, m_DefaultValue.Y);
|
||
|
::SetWindowFloat (m_ZEdit, m_DefaultValue.Z);
|
||
|
return ;
|
||
|
}
|
||
|
|
||
|
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
//
|
||
|
// Get_Current_Value
|
||
|
//
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
Vector3
|
||
|
Vector3DialogClass::Get_Current_Value (void)
|
||
|
{
|
||
|
Vector3 retval (0, 0, 0);
|
||
|
|
||
|
//
|
||
|
// Get the current value from the controls
|
||
|
//
|
||
|
retval.X = ::GetWindowFloat (m_XEdit, true);
|
||
|
retval.Y = ::GetWindowFloat (m_YEdit, true);
|
||
|
retval.Z = ::GetWindowFloat (m_ZEdit, true);
|
||
|
return retval;
|
||
|
}
|
||
|
|
||
|
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
//
|
||
|
// Create
|
||
|
//
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
void
|
||
|
Vector3DialogClass::Create (CWnd *parent)
|
||
|
{
|
||
|
CDialog::Create (Vector3DialogClass::IDD, parent);
|
||
|
return ;
|
||
|
}
|
||
|
|
||
|
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
//
|
||
|
// OnInitDialog
|
||
|
//
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
BOOL
|
||
|
Vector3DialogClass::OnInitDialog (void)
|
||
|
{
|
||
|
CDialog::OnInitDialog();
|
||
|
|
||
|
//
|
||
|
// Turn all the edit controls into 'float' controls that will
|
||
|
// allow the user to type only numbers (with decimals and signs)
|
||
|
//
|
||
|
::Make_Edit_Float_Ctrl (m_XEdit);
|
||
|
::Make_Edit_Float_Ctrl (m_YEdit);
|
||
|
::Make_Edit_Float_Ctrl (m_ZEdit);
|
||
|
|
||
|
//
|
||
|
// Set the float control ranges
|
||
|
//
|
||
|
m_XSpin.SetRange32 (-1000000, 1000000);
|
||
|
m_YSpin.SetRange32 (-1000000, 1000000);
|
||
|
m_ZSpin.SetRange32 (-1000000, 1000000);
|
||
|
|
||
|
//
|
||
|
// Set the default values for the control
|
||
|
//
|
||
|
::SetWindowFloat (m_XEdit, m_DefaultValue.X);
|
||
|
::SetWindowFloat (m_YEdit, m_DefaultValue.Y);
|
||
|
::SetWindowFloat (m_ZEdit, m_DefaultValue.Z);
|
||
|
return TRUE;
|
||
|
}
|