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

297 lines
5.6 KiB
C++

// LayerDlg.cpp : implementation file
//
#include "stdafx.h"
#include "TCTb.h"
#include "LayerDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CLayerDlg dialog
extern CTCTbApp theApp;
CLayerDlg::CLayerDlg(CWnd* pParent /*=NULL*/)
: CDialog(CLayerDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CLayerDlg)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
for(int i=1;i<MAX_LAYERS;i++) LayStatus[i]=LS_UNCREATED;
LayStatus[0]=LS_VISIBLE;
LastLay=1;
imlist=NULL;
}
void CLayerDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CLayerDlg)
DDX_Control(pDX, IDC_LAYERLIST, LayList);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CLayerDlg, CDialog)
//{{AFX_MSG_MAP(CLayerDlg)
ON_WM_CLOSE()
ON_WM_LBUTTONDBLCLK()
ON_NOTIFY(NM_DBLCLK, IDC_LAYERLIST, OnDblclkLayerlist)
ON_BN_CLICKED(IDC_MAKEINVISIBLE, OnMakeinvisible)
ON_BN_CLICKED(IDC_MAKEVISIBLE, OnMakevisible)
ON_BN_CLICKED(IDC_SHOWALL, OnShowall)
ON_BN_CLICKED(IDC_SHOWHEIGHT, OnShowheight)
ON_WM_RBUTTONDOWN()
ON_NOTIFY(NM_RCLICK, IDC_LAYERLIST, OnRclickLayerlist)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CLayerDlg message handlers
CLayerDlg::~CLayerDlg()
{
if(imlist)
{
delete imlist;
imlist=NULL;
}
}
void CLayerDlg::OnClose()
{
// ShowWindow(SW_MINIMIZE);
ShowWindow(SW_HIDE);
//CDialog::OnClose();
}
void CLayerDlg::OnOK()
{
//CDialog::OnOK();
}
void CLayerDlg::OnCancel()
{
//CDialog::OnCancel();
}
void CLayerDlg::OnLButtonDblClk(UINT nFlags, CPoint point)
{
CDialog::OnLButtonDblClk(nFlags, point);
}
void CLayerDlg::UpdateLayers()
{
int i;
LVITEM itm;
for(i=1;i<MAX_LAYERS;i++) // CHeck that the Height Field and a layer is not visible at the same time
if(LayStatus[i]==LS_VISIBLE) LayStatus[0]=LS_HIDDEN;
for(i=0;i<MAX_LAYERS;i++)
{
//itm.iItem=i;
//itm.iSubItem=0;
//LayList.GetItem(&itm);
switch(LayStatus[i])
{
case LS_HIDDEN:
LayList.SetItemText(i,1,"NO");
itm.iImage=(i==0)?1:3;
break;
case LS_VISIBLE:
LayList.SetItemText(i,1,"YES");
itm.iImage=(i==0)?0:2;
break;
case LS_UNCREATED:
break;
}
//LayList.SetItem(&itm);
}
//theApp.UpdateScreen();
}
void CLayerDlg::OnDblclkLayerlist(NMHDR* pNMHDR, LRESULT* pResult)
{
POSITION p;
int sel;
p=LayList.GetFirstSelectedItemPosition();
sel=LayList.GetNextSelectedItem(p);
ToggleItem(sel);
UpdateLayers();
*pResult = 0;
}
void CLayerDlg::Showall()
{
int i;
for(i=1;i<MAX_LAYERS;i++)
{
if(LayStatus[i]!=LS_UNCREATED)
{
LayStatus[i]=LS_VISIBLE;
}
}
UpdateLayers();
}
void CLayerDlg::Showheight()
{
int i;
for(i=1;i<MAX_LAYERS;i++)
{
if(LayStatus[i]!=LS_UNCREATED)
{
LayStatus[i]=LS_HIDDEN;
}
}
LayStatus[0]=LS_VISIBLE;
UpdateLayers();
}
void CLayerDlg::OnMakeinvisible()
{
POSITION p;
int sel;
p=LayList.GetFirstSelectedItemPosition();
while(p)
{
sel=LayList.GetNextSelectedItem(p);
if(LayStatus[sel]!=LS_UNCREATED)
LayStatus[sel]=LS_HIDDEN;
}
UpdateLayers();
}
void CLayerDlg::OnMakevisible()
{
POSITION p;
int sel;
p=LayList.GetFirstSelectedItemPosition();
while(p)
{
sel=LayList.GetNextSelectedItem(p);
if(LayStatus[sel]!=LS_UNCREATED)
LayStatus[sel]=LS_VISIBLE;
}
UpdateLayers();
}
void CLayerDlg::ToggleItem(int sel)
{
int i;
switch(LayStatus[sel])
{
case LS_HIDDEN:
LayStatus[sel]=LS_VISIBLE;
break;
case LS_VISIBLE:
LayStatus[sel]=LS_HIDDEN;
break;
case LS_UNCREATED:
break;
}
if(sel==0 && LayStatus[0]==LS_VISIBLE)
{
for(i=1;i<MAX_LAYERS;i++)
if(LayStatus[i]!=LS_UNCREATED)
LayStatus[i]=LS_HIDDEN;
}
}
void CLayerDlg::OnShowall()
{
Showall();
}
void CLayerDlg::OnShowheight()
{
Showheight();
}
void CLayerDlg::AddLayer(CString &lname)
{
LayList.InsertItem(LastLay,lname,0);
LayStatus[LastLay]=LS_HIDDEN;
LastLay++;
UpdateLayers();
}
BOOL CLayerDlg::OnInitDialog()
{
CDialog::OnInitDialog();
if(!imlist)
{
imlist=new CImageList;
imlist->Create(16,16,ILC_COLOR24|ILC_MASK,4,0);
// imlist->Add(ExtractIcon(m_hInstance,"shell32.dll",12));
// imlist->Add(ExtractIcon(m_hInstance,"shell32.dll",24));
imlist->Add(::LoadIcon(AfxGetResourceHandle(), MAKEINTRESOURCE(IDI_HFICON)));
imlist->Add(::LoadIcon(AfxGetResourceHandle(), MAKEINTRESOURCE(IDI_HFICON2)));
imlist->Add(::LoadIcon(AfxGetResourceHandle(), MAKEINTRESOURCE(IDI_BMP)));
imlist->Add(::LoadIcon(AfxGetResourceHandle(), MAKEINTRESOURCE(IDI_BMP2)));
}
LayList.InsertItem(0,"Height Map",0);
LayList.SetItemText(0,1,"YES");
LayList.SetImageList(imlist,LVSIL_SMALL);
LayList.InsertColumn(0,"Layer Name",LVCFMT_LEFT,100);
LayList.InsertColumn(1,"Visible",LVCFMT_LEFT,100);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CLayerDlg::OnRButtonDown(UINT nFlags, CPoint point)
{
CDialog::OnRButtonDown(nFlags, point);
}
void CLayerDlg::OnRclickLayerlist(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
CHFAttribDlg dlg;
POSITION p;
int sel;
p=LayList.GetFirstSelectedItemPosition();
sel=LayList.GetNextSelectedItem(p);
if(sel==0) //Height field
{
if(dlg.DoModal()==IDOK)
{
}
}
*pResult = 0;
}