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/LevelEdit/Vector3Dialog.cpp

182 lines
4.6 KiB
C++
Raw Permalink Normal View History

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