Files
Cyd 2b8ca921cb Initial full mirror of c:\VWE (source + assets + toolchain + outputs) via Git LFS
Complete disaster-recovery snapshot: engine/game source, game data assets,
VC6 toolchain + DX SDKs, build outputs, deployed game, and _UNUSED archive.
Large binaries in Git LFS; text preserved byte-for-byte (core.autocrlf=false,
no eol attributes). See RECOVERY.md for the one-clone rebuild procedure.
2026-06-24 21:28:16 -05:00

132 lines
4.1 KiB
C++

// LodRangeDlg.cpp : implementation file
//
#include "stdafx.h"
#include "mfc gos.h"
#include "LodRangeDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CLodRangeDlg dialog
CLodRangeDlg::CLodRangeDlg(CWnd* pParent /*=NULL*/)
: CDialog(CLodRangeDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CLodRangeDlg)
m_Start = 0.0f;
m_FadeIn = 0.0f;
m_FadeOut = 0.0f;
m_End = 0.0f;
m_AlignStartAt = -1;
m_AlignType = 0;
m_NumLODs = 5;
//}}AFX_DATA_INIT
}
void CLodRangeDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CLodRangeDlg)
DDX_Text(pDX, IDC_START, m_Start);
DDX_Text(pDX, IDC_FADEIN, m_FadeIn);
DDX_Text(pDX, IDC_FADEOUT, m_FadeOut);
DDX_Text(pDX, IDC_END, m_End);
DDX_Control(pDX, IDC_ALIGN_X, m_checkAlignX);
DDX_Control(pDX, IDC_ALIGN_Y, m_checkAlignY);
DDX_Control(pDX, IDC_ALIGN_STARTLOD, m_comboStartLOD);
//}}AFX_DATA_MAP
}
BOOL CLodRangeDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// Initialize the controls
// Load billboarding stuff
m_comboStartLOD.ResetContent();
for (int i=0; i<m_NumLODs; i++) {
CString str;
str.Format("LOD%d", i);
m_comboStartLOD.AddString(str);
}
m_comboStartLOD.AddString("None");
if (m_AlignStartAt<0 || m_AlignStartAt>m_NumLODs)
m_AlignStartAt = m_NumLODs;
m_comboStartLOD.SetCurSel(m_AlignStartAt);
m_checkAlignX.SetCheck(m_AlignType&ElementRenderer::Element::AlignXFlag);
m_checkAlignY.SetCheck(m_AlignType&ElementRenderer::Element::AlignYFlag);
OnSelectStartLOD();
GetDlgItem(IDC_STATICALIGN)->ShowWindow(m_EditType==Billboard?SW_SHOW:SW_HIDE);
GetDlgItem(IDC_ALIGN_STARTLOD)->ShowWindow(m_EditType==Billboard?SW_SHOW:SW_HIDE);
GetDlgItem(IDC_ALIGN_X)->ShowWindow(m_EditType==Billboard?SW_SHOW:SW_HIDE);
GetDlgItem(IDC_ALIGN_Y)->ShowWindow(m_EditType==Billboard?SW_SHOW:SW_HIDE);
GetDlgItem(IDC_FADEIN)->ShowWindow(m_EditType==CrossFade?SW_SHOW:SW_HIDE);
GetDlgItem(IDC_FADEOUT)->ShowWindow(m_EditType==CrossFade?SW_SHOW:SW_HIDE);
GetDlgItem(IDC_STATICFADEIN)->ShowWindow(m_EditType==CrossFade?SW_SHOW:SW_HIDE);
GetDlgItem(IDC_STATICFADEOUT)->ShowWindow(m_EditType==CrossFade?SW_SHOW:SW_HIDE);
GetDlgItem(IDC_START)->ShowWindow(m_EditType!=Billboard?SW_SHOW:SW_HIDE);
GetDlgItem(IDC_END)->ShowWindow(m_EditType!=Billboard?SW_SHOW:SW_HIDE);
GetDlgItem(IDC_STATICSTART)->ShowWindow(m_EditType!=Billboard?SW_SHOW:SW_HIDE);
GetDlgItem(IDC_STATICEND)->ShowWindow(m_EditType!=Billboard?SW_SHOW:SW_HIDE);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CLodRangeDlg::OnOK()
{
// Save billboarding stuff
CString str;
this->m_comboStartLOD.GetWindowText(str);
if (str != "None") {
bool bAlignX = this->m_checkAlignX.GetCheck() != 0;
bool bAlignY = this->m_checkAlignY.GetCheck() != 0;
m_AlignStartAt = atoi(str.Right(1));
m_AlignType = 0;
if (bAlignX || bAlignY)
{
if (bAlignX && bAlignY)
m_AlignType = ElementRenderer::Element::AlignXFlag|ElementRenderer::Element::AlignYFlag;
else if (bAlignX)
m_AlignType = ElementRenderer::Element::AlignXFlag;
else if (bAlignY)
m_AlignType = ElementRenderer::Element::AlignYFlag;
}
}
else {
m_AlignStartAt = m_NumLODs;
m_AlignType = 0;
}
CDialog::OnOK();
}
void CLodRangeDlg::OnSelectStartLOD()
{
CString startLOD;
m_comboStartLOD.GetLBText(m_comboStartLOD.GetCurSel(), startLOD);
m_checkAlignX.EnableWindow(startLOD!="None" && m_comboStartLOD.IsWindowEnabled());
m_checkAlignY.EnableWindow(startLOD!="None" && m_comboStartLOD.IsWindowEnabled());
}
BEGIN_MESSAGE_MAP(CLodRangeDlg, CDialog)
//{{AFX_MSG_MAP(CLodRangeDlg)
// NOTE: the ClassWizard will add message map macros here
ON_CBN_SELCHANGE(IDC_ALIGN_STARTLOD, OnSelectStartLOD)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CLodRangeDlg message handlers