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.
This commit is contained in:
Cyd
2026-06-24 21:28:16 -05:00
commit 2b8ca921cb
66341 changed files with 7923174 additions and 0 deletions
@@ -0,0 +1,574 @@
// CulturalPanel.cpp : implementation file
//
#include "stdafx.h"
#include "MapCreator.h"
#include "CulturalPanel.h"
#include <Stuff\Stuff.hpp>
/////////////////////////////////////////////////////////////////////////////
// CCulturalPanel dialog
using namespace Stuff;
CCulturalPanel::CCulturalPanel(CWnd* pParent /*=NULL*/)
: CDialog(CCulturalPanel::IDD, pParent)
{
//{{AFX_DATA_INIT(CCulturalPanel)
m_TGAA = _T("");
m_TGAB = _T("");
m_TGAC = _T("");
m_FadeEnd = 100.0f;
m_FadeStart = 50.0f;
m_sayYestoCulturals = FALSE;
m_billboardA1 = TRUE;
m_billboardA2 = TRUE;
m_billboardA3 = TRUE;
m_billboardB1 = TRUE;
m_billboardB2 = TRUE;
m_billboardB3 = TRUE;
m_billboardC1 = TRUE;
m_billboardC2 = TRUE;
m_billboardC3 = TRUE;
m_ERFA1 = _T("");
m_ERFA2 = _T("");
m_ERFA3 = _T("");
m_ERFB1 = _T("");
m_ERFB2 = _T("");
m_ERFB3 = _T("");
m_ERFC1 = _T("");
m_ERFC2 = _T("");
m_ERFC3 = _T("");
//}}AFX_DATA_INIT
Create(IDD,pParent);
SetWindowPos(NULL,5,25,0,0,SWP_NOSIZE|SWP_NOZORDER|SWP_NOACTIVATE);
}
void CCulturalPanel::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CCulturalPanel)
DDX_Control(pDX, IDC_TGABROWSEA, m_TGABrowseACon);
DDX_Control(pDX, IDC_TGABROWSEB, m_TGABrowseBCon);
DDX_Control(pDX, IDC_TGABROWSEC, m_TGABrowseCCon);
DDX_Control(pDX, IDC_FADESTART, m_FadeStartCon);
DDX_Control(pDX, IDC_FADEEND, m_FadeEndCon);
DDX_Control(pDX, IDC_ERFBROWSEA1, m_ErfBrowseA1Con);
DDX_Control(pDX, IDC_ERFBROWSEA2, m_ErfBrowseA2Con);
DDX_Control(pDX, IDC_ERFBROWSEA3, m_ErfBrowseA3Con);
DDX_Control(pDX, IDC_ERFBROWSEB1, m_ErfBrowseB1Con);
DDX_Control(pDX, IDC_ERFBROWSEB2, m_ErfBrowseB2Con);
DDX_Control(pDX, IDC_ERFBROWSEB3, m_ErfBrowseB3Con);
DDX_Control(pDX, IDC_ERFBROWSEC1, m_ErfBrowseC1Con);
DDX_Control(pDX, IDC_ERFBROWSEC2, m_ErfBrowseC2Con);
DDX_Control(pDX, IDC_ERFBROWSEC3, m_ErfBrowseC3Con);
DDX_Control(pDX, IDC_ERFA1, m_ERFA1Con);
DDX_Control(pDX, IDC_ERFA2, m_ERFA2Con);
DDX_Control(pDX, IDC_ERFA3, m_ERFA3Con);
DDX_Control(pDX, IDC_ERFB1, m_ERFB1Con);
DDX_Control(pDX, IDC_ERFB2, m_ERFB2Con);
DDX_Control(pDX, IDC_ERFB3, m_ERFB3Con);
DDX_Control(pDX, IDC_ERFC1, m_ERFC1Con);
DDX_Control(pDX, IDC_ERFC2, m_ERFC2Con);
DDX_Control(pDX, IDC_ERFC3, m_ERFC3Con);
DDX_Control(pDX, IDC_BILLBOARDA1, m_BillBoardA1Con);
DDX_Control(pDX, IDC_BILLBOARDA2, m_BillBoardA2Con);
DDX_Control(pDX, IDC_BILLBOARDA3, m_BillBoardA3Con);
DDX_Control(pDX, IDC_BILLBOARDB1, m_BillBoardB1Con);
DDX_Control(pDX, IDC_BILLBOARDB2, m_BillBoardB2Con);
DDX_Control(pDX, IDC_BILLBOARDB3, m_BillBoardB3Con);
DDX_Control(pDX, IDC_BILLBOARDC1, m_BillBoardC1Con);
DDX_Control(pDX, IDC_BILLBOARDC2, m_BillBoardC2Con);
DDX_Control(pDX, IDC_BILLBOARDC3, m_BillBoardC3Con);
DDX_Control(pDX, IDC_TGAA, m_TGAACon);
DDX_Control(pDX, IDC_TGAB, m_TGABCon);
DDX_Control(pDX, IDC_TGAC, m_TGACCon);
DDX_Text(pDX, IDC_TGAA, m_TGAA);
DDX_Text(pDX, IDC_TGAB, m_TGAB);
DDX_Text(pDX, IDC_TGAC, m_TGAC);
DDX_Text(pDX, IDC_FADEEND, m_FadeEnd);
DDV_MinMaxFloat(pDX, m_FadeEnd, 50.f, 500.f);
DDX_Text(pDX, IDC_FADESTART, m_FadeStart);
DDV_MinMaxFloat(pDX, m_FadeStart, 50.f, 500.f);
DDX_Check(pDX, IDC_CULTURALYESNO, m_sayYestoCulturals);
DDX_Check(pDX, IDC_BILLBOARDA1, m_billboardA1);
DDX_Check(pDX, IDC_BILLBOARDA2, m_billboardA2);
DDX_Check(pDX, IDC_BILLBOARDA3, m_billboardA3);
DDX_Check(pDX, IDC_BILLBOARDB1, m_billboardB1);
DDX_Check(pDX, IDC_BILLBOARDB2, m_billboardB2);
DDX_Check(pDX, IDC_BILLBOARDB3, m_billboardB3);
DDX_Check(pDX, IDC_BILLBOARDC1, m_billboardC1);
DDX_Check(pDX, IDC_BILLBOARDC2, m_billboardC2);
DDX_Check(pDX, IDC_BILLBOARDC3, m_billboardC3);
DDX_Text(pDX, IDC_ERFA1, m_ERFA1);
DDX_Text(pDX, IDC_ERFA2, m_ERFA2);
DDX_Text(pDX, IDC_ERFA3, m_ERFA3);
DDX_Text(pDX, IDC_ERFB1, m_ERFB1);
DDX_Text(pDX, IDC_ERFB2, m_ERFB2);
DDX_Text(pDX, IDC_ERFB3, m_ERFB3);
DDX_Text(pDX, IDC_ERFC1, m_ERFC1);
DDX_Text(pDX, IDC_ERFC2, m_ERFC2);
DDX_Text(pDX, IDC_ERFC3, m_ERFC3);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CCulturalPanel, CDialog)
//{{AFX_MSG_MAP(CCulturalPanel)
ON_BN_CLICKED(IDC_ERFBROWSEA1, OnErfbrowsea1)
ON_BN_CLICKED(IDC_ERFBROWSEA2, OnErfbrowsea2)
ON_BN_CLICKED(IDC_ERFBROWSEA3, OnErfbrowsea3)
ON_BN_CLICKED(IDC_ERFBROWSEB1, OnErfbrowseb1)
ON_BN_CLICKED(IDC_ERFBROWSEB2, OnErfbrowseb2)
ON_BN_CLICKED(IDC_ERFBROWSEB3, OnErfbrowseb3)
ON_BN_CLICKED(IDC_ERFBROWSEC1, OnErfbrowsec1)
ON_BN_CLICKED(IDC_ERFBROWSEC2, OnErfbrowsec2)
ON_BN_CLICKED(IDC_ERFBROWSEC3, OnErfbrowsec3)
ON_BN_CLICKED(IDC_TGABROWSEA, OnTgabrowsea)
ON_BN_CLICKED(IDC_TGABROWSEB, OnTgabrowseb)
ON_BN_CLICKED(IDC_TGABROWSEC, OnTgabrowsec)
ON_BN_CLICKED(IDC_CULTURALYESNO, OnCulturalyesno)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CCulturalPanel message handlers
void CCulturalPanel::OnErfbrowsea1()
{
UpdateData(TRUE);
CFileDialog fdlg(TRUE,NULL,m_ERFA1,OFN_NOCHANGEDIR,"ERF Files (*.erf)|*.erf||",NULL);
if(fdlg.DoModal()==IDOK)
{
m_ERFA1=fdlg.GetPathName();
UpdateData(FALSE);
}
}
void CCulturalPanel::OnErfbrowsea2()
{
UpdateData(TRUE);
CFileDialog fdlg(TRUE,NULL,m_ERFA2,OFN_NOCHANGEDIR,"ERF Files (*.erf)|*.erf||",NULL);
if(fdlg.DoModal()==IDOK)
{
m_ERFA2=fdlg.GetPathName();
UpdateData(FALSE);
}
}
void CCulturalPanel::OnErfbrowsea3()
{
UpdateData(TRUE);
CFileDialog fdlg(TRUE,NULL,m_ERFA3,OFN_NOCHANGEDIR,"ERF Files (*.erf)|*.erf||",NULL);
if(fdlg.DoModal()==IDOK)
{
m_ERFA3=fdlg.GetPathName();
UpdateData(FALSE);
}
}
void CCulturalPanel::OnErfbrowseb1()
{
UpdateData(TRUE);
CFileDialog fdlg(TRUE,NULL,m_ERFB1,OFN_NOCHANGEDIR,"ERF Files (*.erf)|*.erf||",NULL);
if(fdlg.DoModal()==IDOK)
{
m_ERFB1=fdlg.GetPathName();
UpdateData(FALSE);
}
}
void CCulturalPanel::OnErfbrowseb2()
{
UpdateData(TRUE);
CFileDialog fdlg(TRUE,NULL,m_ERFB2,OFN_NOCHANGEDIR,"ERF Files (*.erf)|*.erf||",NULL);
if(fdlg.DoModal()==IDOK)
{
m_ERFB2=fdlg.GetPathName();
UpdateData(FALSE);
}
}
void CCulturalPanel::OnErfbrowseb3()
{
UpdateData(TRUE);
CFileDialog fdlg(TRUE,NULL,m_ERFB3,OFN_NOCHANGEDIR,"ERF Files (*.erf)|*.erf||",NULL);
if(fdlg.DoModal()==IDOK)
{
m_ERFB3=fdlg.GetPathName();
UpdateData(FALSE);
}
}
void CCulturalPanel::OnErfbrowsec1()
{
UpdateData(TRUE);
CFileDialog fdlg(TRUE,NULL,m_ERFC1,OFN_NOCHANGEDIR,"ERF Files (*.erf)|*.erf||",NULL);
if(fdlg.DoModal()==IDOK)
{
m_ERFC1=fdlg.GetPathName();
UpdateData(FALSE);
}
}
void CCulturalPanel::OnErfbrowsec2()
{
UpdateData(TRUE);
CFileDialog fdlg(TRUE,NULL,m_ERFC2,OFN_NOCHANGEDIR,"ERF Files (*.erf)|*.erf||",NULL);
if(fdlg.DoModal()==IDOK)
{
m_ERFC2=fdlg.GetPathName();
UpdateData(FALSE);
}
}
void CCulturalPanel::OnErfbrowsec3()
{
UpdateData(TRUE);
CFileDialog fdlg(TRUE,NULL,m_ERFC3,OFN_NOCHANGEDIR,"ERF Files (*.erf)|*.erf||",NULL);
if(fdlg.DoModal()==IDOK)
{
m_ERFC3=fdlg.GetPathName();
UpdateData(FALSE);
}
}
void CCulturalPanel::OnTgabrowsea()
{
UpdateData(TRUE);
CFileDialog fdlg(TRUE,NULL,m_TGAA,OFN_NOCHANGEDIR,"TGA Files (*.tga)|*.tga||",NULL);
if(fdlg.DoModal()==IDOK)
{
m_TGAA=fdlg.GetPathName();
UpdateData(FALSE);
}
}
void CCulturalPanel::OnTgabrowseb()
{
UpdateData(TRUE);
CFileDialog fdlg(TRUE,NULL,m_TGAB,OFN_NOCHANGEDIR,"TGA Files (*.tga)|*.tga||",NULL);
if(fdlg.DoModal()==IDOK)
{
m_TGAB=fdlg.GetPathName();
UpdateData(FALSE);
}
}
void CCulturalPanel::OnTgabrowsec()
{
UpdateData(TRUE);
CFileDialog fdlg(TRUE,NULL,m_TGAC,OFN_NOCHANGEDIR,"TGA Files (*.tga)|*.tga||",NULL);
if(fdlg.DoModal()==IDOK)
{
m_TGAC=fdlg.GetPathName();
UpdateData(FALSE);
}
}
void CCulturalPanel::WriteEntries(Stuff::Page *page, CString cultpath)
{
UpdateData(TRUE);
Page::NoteIterator *notes=page->MakeNoteIterator();
Note *note;
CString notename;
while(note=notes->ReadAndNext())
{
notename=note->GetName();
if( !notename.CompareNoCase("culturalaobject") ||
!notename.CompareNoCase("culturalbobject") ||
!notename.CompareNoCase("culturalcobject") ||
!notename.CompareNoCase("culturalalocations") ||
!notename.CompareNoCase("culturalblocations") ||
!notename.CompareNoCase("culturalclocations")
)
page->DeleteNote(note->GetName());
}
CString temp_str, fname, dname;
int loc;
if(m_sayYestoCulturals==TRUE)
{
if(m_FadeEnd<=m_FadeStart)
{
m_FadeEnd = m_FadeStart+10.0f;
}
temp_str.Format("%.1f %.1f", m_FadeStart, m_FadeEnd);
page->SetEntry("CulturalFadeValues", temp_str);
//=========================================================================
loc = m_TGAA.ReverseFind('\\');
if(loc>=0)
{
fname = m_TGAA.Mid(loc+1);
}
else
{
fname = m_TGAA;
}
page->SetEntry("CulturalALocations", fname);
CopyFile(m_TGAA,cultpath+'\\'+fname,FALSE);
loc = m_TGAB.ReverseFind('\\');
if(loc>=0)
{
fname = m_TGAB.Mid(loc+1);
}
else
{
fname = m_TGAB;
}
page->SetEntry("CulturalBLocations", fname);
CopyFile(m_TGAB,cultpath+'\\'+fname,FALSE);
loc = m_TGAC.ReverseFind('\\');
if(loc>=0)
{
fname = m_TGAC.Mid(loc+1);
}
else
{
fname = m_TGAC;
}
page->SetEntry("CulturalCLocations", fname);
CopyFile(m_TGAC,cultpath+'\\'+fname,FALSE);
//=========================================================================
loc = m_ERFA1.ReverseFind('\\');
if(loc>=0)
{
fname = m_ERFA1.Mid(loc+1);
}
else
{
fname = m_ERFA1;
}
CopyFile(m_ERFA1,cultpath+'\\'+fname,FALSE);
fname += (m_billboardA1==TRUE?" 1":" 0");
page->AppendEntry("CulturalAObject", fname);
loc = m_ERFA2.ReverseFind('\\');
if(loc>=0)
{
fname = m_ERFA2.Mid(loc+1);
}
else
{
fname = m_ERFA2;
}
CopyFile(m_ERFA2,cultpath+'\\'+fname,FALSE);
fname += (m_billboardA2==TRUE?" 1":" 0");
page->AppendEntry("CulturalAObject", fname);
loc = m_ERFA3.ReverseFind('\\');
if(loc>=0)
{
fname = m_ERFA3.Mid(loc+1);
}
else
{
fname = m_ERFA3;
}
CopyFile(m_ERFA3,cultpath+'\\'+fname,FALSE);
fname += (m_billboardA3==TRUE?" 1":" 0");
page->AppendEntry("CulturalAObject", fname);
//=========================================================================
loc = m_ERFB1.ReverseFind('\\');
if(loc>=0)
{
fname = m_ERFB1.Mid(loc+1);
}
else
{
fname = m_ERFB1;
}
CopyFile(m_ERFB1,cultpath+'\\'+fname,FALSE);
fname += (m_billboardB1==TRUE?" 1":" 0");
page->AppendEntry("CulturalBObject", fname);
loc = m_ERFB2.ReverseFind('\\');
if(loc>=0)
{
fname = m_ERFB2.Mid(loc+1);
}
else
{
fname = m_ERFB2;
}
CopyFile(m_ERFB2,cultpath+'\\'+fname,FALSE);
fname += (m_billboardB2==TRUE?" 1":" 0");
page->AppendEntry("CulturalBObject", fname);
loc = m_ERFB3.ReverseFind('\\');
if(loc>=0)
{
fname = m_ERFB3.Mid(loc+1);
}
else
{
fname = m_ERFB3;
}
CopyFile(m_ERFB3,cultpath+'\\'+fname,FALSE);
fname += (m_billboardB3==TRUE?" 1":" 0");
page->AppendEntry("CulturalBObject", fname);
//=========================================================================
loc = m_ERFC1.ReverseFind('\\');
if(loc>=0)
{
fname = m_ERFC1.Mid(loc+1);
}
else
{
fname = m_ERFC1;
}
CopyFile(m_ERFC1,cultpath+'\\'+fname,FALSE);
fname += (m_billboardC1==TRUE?" 1":" 0");
page->AppendEntry("CulturalCObject", fname);
loc = m_ERFC2.ReverseFind('\\');
if(loc>=0)
{
fname = m_ERFC2.Mid(loc+1);
}
else
{
fname = m_ERFC2;
}
CopyFile(m_ERFC2,cultpath+'\\'+fname,FALSE);
fname += (m_billboardC2==TRUE?" 1":" 0");
page->AppendEntry("CulturalCObject", fname);
loc = m_ERFC3.ReverseFind('\\');
if(loc>=0)
{
fname = m_ERFC3.Mid(loc+1);
}
else
{
fname = m_ERFC3;
}
CopyFile(m_ERFC3,cultpath+'\\'+fname,FALSE);
fname += (m_billboardC3==TRUE?" 1":" 0");
page->AppendEntry("CulturalCObject", fname);
}
}
void CCulturalPanel::OnCulturalyesno()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
m_BillBoardA1Con.EnableWindow(m_sayYestoCulturals);
m_BillBoardA2Con.EnableWindow(m_sayYestoCulturals);
m_BillBoardA3Con.EnableWindow(m_sayYestoCulturals);
m_BillBoardB1Con.EnableWindow(m_sayYestoCulturals);
m_BillBoardB2Con.EnableWindow(m_sayYestoCulturals);
m_BillBoardB3Con.EnableWindow(m_sayYestoCulturals);
m_BillBoardC1Con.EnableWindow(m_sayYestoCulturals);
m_BillBoardC2Con.EnableWindow(m_sayYestoCulturals);
m_BillBoardC3Con.EnableWindow(m_sayYestoCulturals);
m_ERFA1Con.EnableWindow(m_sayYestoCulturals);
m_ERFA2Con.EnableWindow(m_sayYestoCulturals);
m_ERFA3Con.EnableWindow(m_sayYestoCulturals);
m_ERFB1Con.EnableWindow(m_sayYestoCulturals);
m_ERFB2Con.EnableWindow(m_sayYestoCulturals);
m_ERFB3Con.EnableWindow(m_sayYestoCulturals);
m_ERFC1Con.EnableWindow(m_sayYestoCulturals);
m_ERFC2Con.EnableWindow(m_sayYestoCulturals);
m_ERFC3Con.EnableWindow(m_sayYestoCulturals);
m_ErfBrowseA1Con.EnableWindow(m_sayYestoCulturals);
m_ErfBrowseA2Con.EnableWindow(m_sayYestoCulturals);
m_ErfBrowseA3Con.EnableWindow(m_sayYestoCulturals);
m_ErfBrowseB1Con.EnableWindow(m_sayYestoCulturals);
m_ErfBrowseB2Con.EnableWindow(m_sayYestoCulturals);
m_ErfBrowseB3Con.EnableWindow(m_sayYestoCulturals);
m_ErfBrowseC1Con.EnableWindow(m_sayYestoCulturals);
m_ErfBrowseC2Con.EnableWindow(m_sayYestoCulturals);
m_ErfBrowseC3Con.EnableWindow(m_sayYestoCulturals);
m_TGAACon.EnableWindow(m_sayYestoCulturals);
m_TGABCon.EnableWindow(m_sayYestoCulturals);
m_TGACCon.EnableWindow(m_sayYestoCulturals);
m_FadeStartCon.EnableWindow(m_sayYestoCulturals);
m_FadeEndCon.EnableWindow(m_sayYestoCulturals);
m_TGABrowseACon.EnableWindow(m_sayYestoCulturals);
m_TGABrowseBCon.EnableWindow(m_sayYestoCulturals);
m_TGABrowseCCon.EnableWindow(m_sayYestoCulturals);
}
BOOL CCulturalPanel::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
OnCulturalyesno();
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
@@ -0,0 +1,122 @@
#if !defined(AFX_CULTURALPANEL_H__0ABA899A_68FE_4C86_A5EB_535C3ADAF786__INCLUDED_)
#define AFX_CULTURALPANEL_H__0ABA899A_68FE_4C86_A5EB_535C3ADAF786__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
// CulturalPanel.h : header file
//
namespace Stuff
{
class Page;
};
/////////////////////////////////////////////////////////////////////////////
// CCulturalPanel dialog
class CCulturalPanel : public CDialog
{
// Construction
public:
CCulturalPanel(CWnd* pParent = NULL); // standard constructor
void WriteEntries(Stuff::Page *page,CString cultpath);
// Dialog Data
//{{AFX_DATA(CCulturalPanel)
enum { IDD = IDD_CULTURAL_PANEL };
CButton m_TGABrowseACon;
CButton m_TGABrowseBCon;
CButton m_TGABrowseCCon;
CEdit m_FadeStartCon;
CEdit m_FadeEndCon;
CButton m_ErfBrowseA1Con;
CButton m_ErfBrowseA2Con;
CButton m_ErfBrowseA3Con;
CButton m_ErfBrowseB1Con;
CButton m_ErfBrowseB2Con;
CButton m_ErfBrowseB3Con;
CButton m_ErfBrowseC1Con;
CButton m_ErfBrowseC2Con;
CButton m_ErfBrowseC3Con;
CEdit m_ERFA1Con;
CEdit m_ERFA2Con;
CEdit m_ERFA3Con;
CEdit m_ERFB1Con;
CEdit m_ERFB2Con;
CEdit m_ERFB3Con;
CEdit m_ERFC1Con;
CEdit m_ERFC2Con;
CEdit m_ERFC3Con;
CButton m_BillBoardA1Con;
CButton m_BillBoardA2Con;
CButton m_BillBoardA3Con;
CButton m_BillBoardB1Con;
CButton m_BillBoardB2Con;
CButton m_BillBoardB3Con;
CButton m_BillBoardC1Con;
CButton m_BillBoardC2Con;
CButton m_BillBoardC3Con;
CEdit m_TGAACon;
CEdit m_TGABCon;
CEdit m_TGACCon;
CString m_TGAA;
CString m_TGAB;
CString m_TGAC;
float m_FadeEnd;
float m_FadeStart;
BOOL m_sayYestoCulturals;
BOOL m_billboardA1;
BOOL m_billboardA2;
BOOL m_billboardA3;
BOOL m_billboardB1;
BOOL m_billboardB2;
BOOL m_billboardB3;
BOOL m_billboardC1;
BOOL m_billboardC2;
BOOL m_billboardC3;
CString m_ERFA1;
CString m_ERFA2;
CString m_ERFA3;
CString m_ERFB1;
CString m_ERFB2;
CString m_ERFB3;
CString m_ERFC1;
CString m_ERFC2;
CString m_ERFC3;
//}}AFX_DATA
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CCulturalPanel)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL
// Implementation
protected:
// Generated message map functions
//{{AFX_MSG(CCulturalPanel)
afx_msg void OnErfbrowsea1();
afx_msg void OnErfbrowsea2();
afx_msg void OnErfbrowsea3();
afx_msg void OnErfbrowseb1();
afx_msg void OnErfbrowseb2();
afx_msg void OnErfbrowseb3();
afx_msg void OnErfbrowsec1();
afx_msg void OnErfbrowsec2();
afx_msg void OnErfbrowsec3();
afx_msg void OnTgabrowsea();
afx_msg void OnTgabrowseb();
afx_msg void OnTgabrowsec();
afx_msg void OnCulturalyesno();
virtual BOOL OnInitDialog();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_CULTURALPANEL_H__0ABA899A_68FE_4C86_A5EB_535C3ADAF786__INCLUDED_)
@@ -0,0 +1,197 @@
// GeoPanel.cpp : implementation file
//
#include "stdafx.h"
#include "MapCreator.h"
#include "GeoPanel.h"
#include <Stuff\Stuff.hpp>
#include <GameOS\ToolOS.hpp>
#include <ImageLib\Image.h>
/////////////////////////////////////////////////////////////////////////////
// CGeoPanel dialog
CGeoPanel::CGeoPanel(CWnd* pParent /*=NULL*/)
: CDialog(CGeoPanel::IDD, pParent)
{
//{{AFX_DATA_INIT(CGeoPanel)
m_HFEdit = _T("");
m_HScale = 1.0f;
m_SPasses = 3;
m_PolyCount = 3000;
m_FinalPass = FALSE;
m_InterestData = FALSE;
m_TriCap = 2;
//}}AFX_DATA_INIT
Create(IDD,pParent);
SetWindowPos(NULL,5,25,0,0,SWP_NOSIZE|SWP_NOZORDER|SWP_NOACTIVATE);
LowHFVal=0.0f;
}
void CGeoPanel::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CGeoPanel)
DDX_Text(pDX, IDC_HFEDIT, m_HFEdit);
DDX_Control(pDX, IDC_SPASSES, m_SPassCon);
DDX_Text(pDX, IDC_HSCALE, m_HScale);
DDV_MinMaxFloat(pDX, m_HScale, 1.e-007f, 1000.f);
DDX_Slider(pDX, IDC_SPASSES, m_SPasses);
DDX_Text(pDX, IDC_POLYCOUNT, m_PolyCount);
DDV_MinMaxInt(pDX, m_PolyCount, 500, 3500);
DDX_Check(pDX, IDC_FINALPASS, m_FinalPass);
DDX_Check(pDX, IDC_INTERESTDATA, m_InterestData);
DDX_CBIndex(pDX, IDC_TRICAP, m_TriCap);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CGeoPanel, CDialog)
//{{AFX_MSG_MAP(CGeoPanel)
ON_BN_CLICKED(IDC_HFBROWSE, OnHfbrowse)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CGeoPanel message handlers
BOOL CGeoPanel::OnInitDialog()
{
CDialog::OnInitDialog();
m_SPassCon.SetRange(0,5,TRUE);
m_SPassCon.SetPos(m_SPasses);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CGeoPanel::WriteEntries(Stuff::Page *page)
{
UpdateData(TRUE);
int fnd=m_HFEdit.ReverseFind('\\');
CString hfpath,hfname;
if(fnd>=0)
{
hfpath=m_HFEdit.Left(fnd);
hfname=m_HFEdit.Mid(fnd+1);
}
else
hfname=m_HFEdit;
page->SetEntry("InputPath", hfpath+"\\");
CString tstr;
tstr.Format("%f %f",HFX*5.0f/2.0f,HFY*5.0f/2.0f);
page->SetEntry("MapCenter",tstr);
page->SetEntry("SmoothingPasses",m_SPasses);
page->SetEntry("PolyCount",m_PolyCount);
page->SetEntry("InputPath", hfpath+"\\");
page->SetEntry("HeightField", hfname);
page->SetEntry("DeltaY", m_HScale);
}
bool CGeoPanel::ValidateEntries()
{
UpdateData(TRUE);
if(m_HFEdit=="" || !gos_DoesFileExist(m_HFEdit))
{
MessageBox("HeightField Does Not Exist","Bad Height Field",MB_OK|MB_ICONERROR);
return false;
}
else
{
Image hfimg;
hfimg.Load((char *)(LPCSTR)m_HFEdit);
HFX=hfimg.GetWidth();
HFY=hfimg.GetHeight();
if(HFX<256)
{ MessageBox("HeightField Width is too small, must be at least 256","Bad Height Field",MB_OK|MB_ICONERROR);return false; }
#ifndef LAB_ONLY
if(HFX>1024)
{ MessageBox("HeightField Width is too large, Cannot be larger than 1024","Bad Height Field",MB_OK|MB_ICONERROR);return false; }
#endif
if(HFY<256)
{ MessageBox("HeightField Height is too small, must be at least 256","Bad Height Field",MB_OK|MB_ICONERROR);return false; }
#ifndef LAB_ONLY
if(HFY>1024)
{ MessageBox("HeightField Height is too large, must be at most 2048","Bad Height Field",MB_OK|MB_ICONERROR);return false; }
#endif
if( HFX%256 || HFY%256)
{
MessageBox("HeightField has incorrect size, must be a multiple of 256 i.e. 256,512,768,1024...","Bad Height Field",MB_OK|MB_ICONERROR);
return false;
}
if(m_InterestData && hfimg.GetBpp()!=24)
{
MessageBox("HeightField must be 24-bit while using \"Interest data\"","Bad Height Field",MB_OK|MB_ICONERROR);
return false;
}
ZoneCountX=HFX/256;
ZoneCountY=HFY/256;
BYTE *dat;
dat=(BYTE *)hfimg.Lock();
int x,y,lowval=256,tv;
if(m_InterestData)
{
for(x=0;x<HFX;x++)
for(y=0;y<HFY;y++)
{
tv=dat[(x+y*HFX)*3];
if(tv<lowval) lowval=tv;
}
}
else
{
for(x=0;x<HFX;x++)
for(y=0;y<HFY;y++)
{
tv=dat[x+y*HFX];
if(tv<lowval) lowval=tv;
}
}
hfimg.UnLock();
LowHFVal=lowval*m_HScale;
} //end if else GEo
return true;
}
void CGeoPanel::OnHfbrowse()
{
UpdateData(TRUE);
// TODO: Add your control notification handler code here
CFileDialog fdlg(TRUE,NULL,m_HFEdit,OFN_NOCHANGEDIR,"Bitmap Images (*.tif,*.gif,*.tga,*.png)|*.tif;*.gif;*.tga;*.png||",NULL);
if(fdlg.DoModal()==IDOK)
{
m_HFEdit=fdlg.GetPathName();
// m_OBase=fdlg.GetFileName();
// m_OBase=m_OBase.Left(m_OBase.GetLength()-4);
UpdateData(FALSE);
}
}
@@ -0,0 +1,67 @@
#if !defined(AFX_GEOPANEL_H__FE700176_8AFC_484B_BF04_1D0A80D19F43__INCLUDED_)
#define AFX_GEOPANEL_H__FE700176_8AFC_484B_BF04_1D0A80D19F43__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
// GeoPanel.h : header file
//
/////////////////////////////////////////////////////////////////////////////
// CGeoPanel dialog
namespace Stuff
{
class Page;
};
class CGeoPanel : public CDialog
{
// Construction
public:
bool ValidateEntries();
CGeoPanel(CWnd* pParent = NULL); // standard constructor
void WriteEntries(Stuff::Page *page);
float GetLowHFVal() {return LowHFVal;}
float LowHFVal;
int HFX,HFY,
ZoneCountX,ZoneCountY;
// Dialog Data
//{{AFX_DATA(CGeoPanel)
enum { IDD = IDD_GEOMETRY_PANEL };
CString m_HFEdit;
CSliderCtrl m_SPassCon;
float m_HScale;
int m_SPasses;
int m_PolyCount;
BOOL m_FinalPass;
BOOL m_InterestData;
int m_TriCap;
//}}AFX_DATA
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CGeoPanel)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL
// Implementation
protected:
// Generated message map functions
//{{AFX_MSG(CGeoPanel)
virtual void OnOK() {}
virtual void OnCancel() {}
virtual BOOL OnInitDialog();
afx_msg void OnHfbrowse();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_GEOPANEL_H__FE700176_8AFC_484B_BF04_1D0A80D19F43__INCLUDED_)
Binary file not shown.
@@ -0,0 +1,105 @@
// MapCreator.cpp : Defines the class behaviors for the application.
//
#include "stdafx.h"
#include "MapCreator.h"
#include "MapCreatorDlg.h"
#include <Stuff\Stuff.hpp>
#include <DLLPlatform\DLLPlatform.hpp>
void __stdcall InitializeGameEngine()
{
Stuff::InitializeClasses();
}
/////////////////////////////////////////////////////////////////////////////
// CMapCreatorApp
BEGIN_MESSAGE_MAP(CMapCreatorApp, CWinApp)
//{{AFX_MSG_MAP(CMapCreatorApp)
// NOTE - the ClassWizard will add and remove mapping macros here.
// DO NOT EDIT what you see in these blocks of generated code!
//}}AFX_MSG
ON_COMMAND(ID_HELP, CWinApp::OnHelp)
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CMapCreatorApp construction
CMapCreatorApp::CMapCreatorApp()
{
// TODO: add construction code here,
// Place all significant initialization in InitInstance
}
/////////////////////////////////////////////////////////////////////////////
// The one and only CMapCreatorApp object
CMapCreatorApp theApp;
/////////////////////////////////////////////////////////////////////////////
// CMapCreatorApp initialization
BOOL CMapCreatorApp::InitInstance()
{
AfxEnableControlContainer();
InitGameOS(NULL, NULL, "blabla");
InitializeGameEngine();
// Standard initialization
// If you are not using these features and wish to reduce the size
// of your final executable, you should remove from the following
// the specific initialization routines you do not need.
#ifdef _AFXDLL
Enable3dControls(); // Call this when using MFC in a shared DLL
#else
Enable3dControlsStatic(); // Call this when linking to MFC statically
#endif
CMapCreatorDlg dlg;
m_pMainWnd = &dlg;
int nResponse = dlg.DoModal();
if (nResponse == IDOK)
{
// TODO: Place code here to handle when the dialog is
// dismissed with OK
}
else if (nResponse == IDCANCEL)
{
// TODO: Place code here to handle when the dialog is
// dismissed with Cancel
}
// Since the dialog has been closed, return FALSE so that we exit the
// application, rather than start the application's message pump.
return FALSE;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
void __stdcall TerminateGameEngine()
{
Stuff::TerminateClasses();
}
void __stdcall GetGameOSEnvironment(char* CommandLine)
{
// Environment.UpdateRenderers = UpdateDisplay;
// Environment.DoGameLogic = DoGameLogic;
Environment.InitializeGameEngine = InitializeGameEngine;
Environment.TerminateGameEngine = TerminateGameEngine;
}
int CMapCreatorApp::ExitInstance()
{
// TODO: Add your specialized code here and/or call the base class
ExitGameOS();
return CWinApp::ExitInstance();
}
@@ -0,0 +1,208 @@
# Microsoft Developer Studio Project File - Name="MapCreator" - Package Owner=<4>
# Microsoft Developer Studio Generated Build File, Format Version 6.00
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Application" 0x0101
CFG=MapCreator - Win32 Debug
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
!MESSAGE NMAKE /f "MapCreator.mak".
!MESSAGE
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
!MESSAGE NMAKE /f "MapCreator.mak" CFG="MapCreator - Win32 Debug"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
!MESSAGE "MapCreator - Win32 Release" (based on "Win32 (x86) Application")
!MESSAGE "MapCreator - Win32 Debug" (based on "Win32 (x86) Application")
!MESSAGE "MapCreator - Win32 Profile" (based on "Win32 (x86) Application")
!MESSAGE
# Begin Project
# PROP AllowPerConfigDependencies 0
# PROP Scc_ProjName ""$/GameLeapCode/mw4/Tools/MapCreator", DUKAAAAA"
# PROP Scc_LocalPath "."
CPP=cl.exe
MTL=midl.exe
RSC=rc.exe
!IF "$(CFG)" == "MapCreator - Win32 Release"
# PROP BASE Use_MFC 6
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "Release"
# PROP BASE Intermediate_Dir "Release"
# PROP BASE Target_Dir ""
# PROP Use_MFC 6
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "../../../rel.bin"
# PROP Intermediate_Dir "Release"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /MD /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_AFXDLL" /Yu"stdafx.h" /FD /c
# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\..\Code" /I "..\..\Libraries" /I "..\..\..\CoreTech\Libraries" /I "..\..\Libraries\stlport" /D "USE_PROTOTYPES" /D "STRICT" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_AFXDLL" /D "_MBCS" /Yu"stdafx.h" /FD /c
# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
# ADD BASE RSC /l 0x409 /d "NDEBUG" /d "_AFXDLL"
# ADD RSC /l 0x409 /d "NDEBUG" /d "_AFXDLL"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 /nologo /subsystem:windows /machine:I386
# ADD LINK32 /nologo /subsystem:windows /machine:I386
!ELSEIF "$(CFG)" == "MapCreator - Win32 Debug"
# PROP BASE Use_MFC 6
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "Debug"
# PROP BASE Intermediate_Dir "Debug"
# PROP BASE Target_Dir ""
# PROP Use_MFC 6
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "../../../dbg.bin"
# PROP Intermediate_Dir "Debug"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_AFXDLL" /Yu"stdafx.h" /FD /GZ /c
# ADD CPP /nologo /G6 /Zp4 /MDd /W3 /Gm /GR /ZI /Od /I "..\..\Code" /I "..\..\Libraries" /I "..\..\..\CoreTech\Libraries" /I "..\..\Libraries\stlport" /D "LAB_ONLY" /D "USE_PROTOTYPES" /D "STRICT" /D "_ARMOR" /D "_WINDOWS" /D "_AFXDLL" /D "_MBCS" /D "WIN32" /D "_DEBUG" /Yu"stdafx.h" /FD /GZ /c
# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
# ADD BASE RSC /l 0x409 /d "_DEBUG" /d "_AFXDLL"
# ADD RSC /l 0x409 /d "_DEBUG" /d "_AFXDLL"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept
# ADD LINK32 /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept
!ELSEIF "$(CFG)" == "MapCreator - Win32 Profile"
# PROP BASE Use_MFC 6
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "MapCreator___Win32_Profile"
# PROP BASE Intermediate_Dir "MapCreator___Win32_Profile"
# PROP BASE Target_Dir ""
# PROP Use_MFC 6
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "../../../pro.bin"
# PROP Intermediate_Dir "Profile"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /MD /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_AFXDLL" /D "_MBCS" /Yu"stdafx.h" /FD /c
# ADD CPP /nologo /MD /W3 /GX /Zi /O2 /I "..\..\Code" /I "..\..\Libraries" /I "..\..\..\CoreTech\Libraries" /I "..\..\Libraries\stlport" /D "LAB_ONLY" /D "USE_PROTOTYPES" /D "STRICT" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_AFXDLL" /D "_MBCS" /Yu"stdafx.h" /FD /c
# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
# ADD BASE RSC /l 0x409 /d "NDEBUG" /d "_AFXDLL"
# ADD RSC /l 0x409 /d "NDEBUG" /d "_AFXDLL"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 /nologo /subsystem:windows /machine:I386
# ADD LINK32 /nologo /subsystem:windows /machine:I386
!ENDIF
# Begin Target
# Name "MapCreator - Win32 Release"
# Name "MapCreator - Win32 Debug"
# Name "MapCreator - Win32 Profile"
# Begin Group "Source Files"
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
# Begin Source File
SOURCE=.\CulturalPanel.cpp
# End Source File
# Begin Source File
SOURCE=.\GeoPanel.cpp
# End Source File
# Begin Source File
SOURCE=.\MapCreator.cpp
# End Source File
# Begin Source File
SOURCE=.\MapCreator.rc
# End Source File
# Begin Source File
SOURCE=.\MapCreatorDlg.cpp
# End Source File
# Begin Source File
SOURCE=.\StdAfx.cpp
# ADD CPP /Yc"stdafx.h"
# End Source File
# Begin Source File
SOURCE=.\TexturePanel.cpp
# End Source File
# Begin Source File
SOURCE=.\WaterPanel.cpp
# End Source File
# End Group
# Begin Group "Header Files"
# PROP Default_Filter "h;hpp;hxx;hm;inl"
# Begin Source File
SOURCE=.\CulturalPanel.h
# End Source File
# Begin Source File
SOURCE=.\GeoPanel.h
# End Source File
# Begin Source File
SOURCE=.\MapCreator.h
# End Source File
# Begin Source File
SOURCE=.\MapCreatorDlg.h
# End Source File
# Begin Source File
SOURCE=.\Resource.h
# End Source File
# Begin Source File
SOURCE=.\StdAfx.h
# End Source File
# Begin Source File
SOURCE=.\TexturePanel.h
# End Source File
# Begin Source File
SOURCE=.\WaterPanel.h
# End Source File
# End Group
# Begin Group "Resource Files"
# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
# Begin Source File
SOURCE=.\res\MapCreator.ico
# End Source File
# Begin Source File
SOURCE=.\res\MapCreator.rc2
# End Source File
# End Group
# Begin Source File
SOURCE=.\ReadMe.txt
# End Source File
# End Target
# End Project
@@ -0,0 +1,29 @@
Microsoft Developer Studio Workspace File, Format Version 6.00
# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
###############################################################################
Project: "MapCreator"=.\MapCreator.dsp - Package Owner=<4>
Package=<5>
{{{
}}}
Package=<4>
{{{
}}}
###############################################################################
Global:
Package=<5>
{{{
}}}
Package=<3>
{{{
}}}
###############################################################################
@@ -0,0 +1,50 @@
// MapCreator.h : main header file for the MAPCREATOR application
//
#if !defined(AFX_MAPCREATOR_H__949562B2_23DF_4E97_9635_140D6BB20E0F__INCLUDED_)
#define AFX_MAPCREATOR_H__949562B2_23DF_4E97_9635_140D6BB20E0F__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#ifndef __AFXWIN_H__
#error include 'stdafx.h' before including this file for PCH
#endif
#include "resource.h" // main symbols
/////////////////////////////////////////////////////////////////////////////
// CMapCreatorApp:
// See MapCreator.cpp for the implementation of this class
//
class CMapCreatorApp : public CWinApp
{
public:
CMapCreatorApp();
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CMapCreatorApp)
public:
virtual BOOL InitInstance();
virtual int ExitInstance();
//}}AFX_VIRTUAL
// Implementation
//{{AFX_MSG(CMapCreatorApp)
// NOTE - the ClassWizard will add and remove member functions here.
// DO NOT EDIT what you see in these blocks of generated code !
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
/////////////////////////////////////////////////////////////////////////////
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_MAPCREATOR_H__949562B2_23DF_4E97_9635_140D6BB20E0F__INCLUDED_)
@@ -0,0 +1,44 @@
<html>
<body>
<pre>
<h1>Build Log</h1>
<h3>
--------------------Configuration: MapCreator - Win32 Release--------------------
</h3>
<h3>Command Lines</h3>
Creating temporary file "C:\DOCUME~1\MLOWRA~1.VWE\LOCALS~1\Temp\RSP40.tmp" with contents
[
/nologo /MD /W3 /GX /O2 /I "..\..\Code" /I "..\..\Libraries" /I "..\..\..\CoreTech\Libraries" /I "..\..\Libraries\stlport" /D "USE_PROTOTYPES" /D "STRICT" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_AFXDLL" /D "_MBCS" /Fp"Release/MapCreator.pch" /Yu"stdafx.h" /Fo"Release/" /Fd"Release/" /FD /c
"E:\GameleapCode5_03\mw4\Tools\MapCreator\TexturePanel.cpp"
]
Creating command line "cl.exe @C:\DOCUME~1\MLOWRA~1.VWE\LOCALS~1\Temp\RSP40.tmp"
Creating temporary file "C:\DOCUME~1\MLOWRA~1.VWE\LOCALS~1\Temp\RSP41.tmp" with contents
[
/nologo /subsystem:windows /incremental:no /pdb:"../../../rel.bin/MapCreator.pdb" /machine:I386 /out:"../../../rel.bin/MapCreator.exe"
.\Release\CulturalPanel.obj
.\Release\GeoPanel.obj
.\Release\MapCreator.obj
.\Release\MapCreatorDlg.obj
.\Release\StdAfx.obj
.\Release\TexturePanel.obj
.\Release\WaterPanel.obj
.\Release\MapCreator.res
\GameleapCode5_03\rel.bin\GameOS.lib
\GameleapCode5_03\rel.bin\ImageLib.lib
\GameleapCode5_03\rel.bin\Stuff.lib
\GameleapCode5_03\rel.bin\DLLPlatform.lib
]
Creating command line "link.exe @C:\DOCUME~1\MLOWRA~1.VWE\LOCALS~1\Temp\RSP41.tmp"
<h3>Output Window</h3>
Compiling...
TexturePanel.cpp
Linking...
LINK : warning LNK4089: all references to "SHELL32.dll" discarded by /OPT:REF
<h3>Results</h3>
MapCreator.exe - 0 error(s), 1 warning(s)
</pre>
</body>
</html>
@@ -0,0 +1,359 @@
//Microsoft Developer Studio generated resource script.
//
#include "resource.h"
#define APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 2 resource.
//
#include "afxres.h"
/////////////////////////////////////////////////////////////////////////////
#undef APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
// English (U.S.) resources
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
#ifdef _WIN32
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
#pragma code_page(1252)
#endif //_WIN32
#ifdef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// TEXTINCLUDE
//
1 TEXTINCLUDE DISCARDABLE
BEGIN
"resource.h\0"
END
2 TEXTINCLUDE DISCARDABLE
BEGIN
"#include ""afxres.h""\r\n"
"\0"
END
3 TEXTINCLUDE DISCARDABLE
BEGIN
"#define _AFX_NO_SPLITTER_RESOURCES\r\n"
"#define _AFX_NO_OLE_RESOURCES\r\n"
"#define _AFX_NO_TRACKER_RESOURCES\r\n"
"#define _AFX_NO_PROPERTY_RESOURCES\r\n"
"\r\n"
"#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)\r\n"
"#ifdef _WIN32\r\n"
"LANGUAGE 9, 1\r\n"
"#pragma code_page(1252)\r\n"
"#endif //_WIN32\r\n"
"#include ""res\\MapCreator.rc2"" // non-Microsoft Visual C++ edited resources\r\n"
"#include ""afxres.rc"" // Standard components\r\n"
"#endif\r\n"
"\0"
END
#endif // APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Icon
//
// Icon with lowest ID value placed first to ensure application icon
// remains consistent on all systems.
IDR_MAINFRAME ICON DISCARDABLE "res\\MapCreator.ico"
/////////////////////////////////////////////////////////////////////////////
//
// Dialog
//
IDD_ABOUTBOX DIALOG DISCARDABLE 0, 0, 235, 55
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "About MapCreator"
FONT 8, "MS Sans Serif"
BEGIN
ICON IDR_MAINFRAME,IDC_STATIC,11,17,20,20
LTEXT "MapCreator Version 1.0",IDC_STATIC,40,10,119,8,
SS_NOPREFIX
LTEXT "Copyright (C) 2001",IDC_STATIC,40,25,119,8
DEFPUSHBUTTON "OK",IDOK,178,7,50,14,WS_GROUP
END
IDD_MAPCREATOR_DIALOG DIALOGEX 0, 0, 320, 137
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
EXSTYLE WS_EX_APPWINDOW
CAPTION "MapCreator"
FONT 8, "MS Sans Serif", 0, 0, 0x1
BEGIN
DEFPUSHBUTTON "Exit",IDOK,263,116,50,14
EDITTEXT IDC_MAPNAME,13,11,294,14,ES_AUTOHSCROLL
GROUPBOX "Map Name",IDC_STATIC,7,1,306,29
PUSHBUTTON "Create Map",IDC_CREATE,129,116,50,14
CONTROL "Tab2",IDC_DLGTAB,"SysTabControl32",0x0,7,34,306,79
END
IDD_GEOMETRY_PANEL DIALOG DISCARDABLE 0, 0, 298, 52
STYLE WS_CHILD
FONT 8, "MS Sans Serif"
BEGIN
PUSHBUTTON "Browse...",IDC_HFBROWSE,240,2,50,14
EDITTEXT IDC_HFEDIT,48,2,192,14,ES_AUTOHSCROLL
LTEXT "Height Scale:",IDC_STATIC,2,20,43,8
EDITTEXT IDC_HSCALE,47,17,40,14,ES_AUTOHSCROLL
LTEXT "Smoothing Passes:",IDC_STATIC,94,20,61,8
CONTROL "Slider1",IDC_SPASSES,"msctls_trackbar32",TBS_AUTOTICKS |
WS_TABSTOP,154,17,66,15
LTEXT "HeightField:",IDC_STATIC,2,4,39,8
LTEXT "Poly Count:",IDC_STATIC,2,35,37,8
EDITTEXT IDC_POLYCOUNT,47,32,40,14,ES_AUTOHSCROLL
CONTROL "Final Pass",IDC_FINALPASS,"Button",BS_AUTOCHECKBOX |
WS_TABSTOP,225,21,48,10
CONTROL "Use Intrest Data",IDC_INTERESTDATA,"Button",
BS_AUTOCHECKBOX | WS_TABSTOP,225,36,67,10
COMBOBOX IDC_TRICAP,144,33,74,70,CBS_DROPDOWNLIST | WS_VSCROLL |
WS_TABSTOP
LTEXT "Triangle Cap:",IDC_STATIC,96,35,43,8
END
IDD_TEXTURE_PANEL DIALOG DISCARDABLE 0, 0, 298, 57
STYLE WS_CHILD
FONT 8, "MS Sans Serif"
BEGIN
PUSHBUTTON "Browse...",IDC_TTBROWSE,248,0,50,14
EDITTEXT IDC_TTEDIT,53,0,192,14,ES_AUTOHSCROLL
LTEXT "Terrain Texture:",IDC_STATIC,0,2,51,8
PUSHBUTTON "Browse...",IDC_DTBROWSE,248,14,50,14
EDITTEXT IDC_DTEDIT,53,15,192,14,ES_AUTOHSCROLL
LTEXT "Detail Texture:",IDC_STATIC,0,16,47,8
LTEXT "Detail Ratio:",IDC_STATIC,96,32,40,8
EDITTEXT IDC_DRATIO,137,29,40,14,ES_AUTOHSCROLL
LTEXT "Detail Fade In:",IDC_STATIC,0,32,47,8
EDITTEXT IDC_FADEIN,53,29,40,14,ES_AUTOHSCROLL
EDITTEXT IDC_FADEOUT,53,43,40,14,ES_AUTOHSCROLL
LTEXT "Detail Fade Out:",IDC_STATIC,0,46,52,8
CONTROL "Use IG Data",IDC_IGDATA,"Button",BS_AUTOCHECKBOX |
WS_TABSTOP,185,32,96,10
END
IDD_WATER_PANEL DIALOG DISCARDABLE 0, 0, 300, 59
STYLE WS_CHILD
FONT 8, "MS Sans Serif"
BEGIN
LTEXT "Water Level:",IDC_STATIC,66,3,41,8
EDITTEXT IDC_WATERLEVEL,114,0,40,14,ES_AUTOHSCROLL
CONTROL "Use Water",IDC_USEWATER,"Button",BS_AUTOCHECKBOX |
WS_TABSTOP,0,2,56,10
LTEXT "Ratio:",IDC_STATIC,263,20,21,8
EDITTEXT IDC_WTEXTRATIO,284,17,16,14,ES_AUTOHSCROLL
LTEXT "Ratio:",IDC_STATIC,263,34,21,8
EDITTEXT IDC_WDETAILRATIO,284,32,16,14,ES_AUTOHSCROLL
LTEXT "Water Texture:",IDC_STATIC,0,20,48,8
LTEXT "Underwater Texture:",IDC_STATIC,0,48,66,8
LTEXT "Detail Texture:",IDC_STATIC,0,33,47,8
EDITTEXT IDC_WTEXT,66,17,144,14,ES_AUTOHSCROLL
EDITTEXT IDC_UWTEXT,66,45,144,14,ES_AUTOHSCROLL
EDITTEXT IDC_DTTEXT,66,31,144,14,ES_AUTOHSCROLL
PUSHBUTTON "Browse...",IDC_WTEXTBROWSE,210,17,50,14
PUSHBUTTON "Browse...",IDC_UWTEXTBROWSE,210,45,50,14
PUSHBUTTON "Browse...",IDC_WDTBROWSE,210,31,50,14
END
IDD_CULTURAL_PANEL DIALOG DISCARDABLE 0, 0, 298, 62
STYLE WS_CHILD
FONT 8, "MS Sans Serif"
BEGIN
EDITTEXT IDC_TGAA,1,9,67,12,ES_RIGHT | ES_AUTOHSCROLL
EDITTEXT IDC_TGAC,204,9,67,12,ES_RIGHT | ES_AUTOHSCROLL
PUSHBUTTON "...",IDC_TGABROWSEC,273,10,13,10
PUSHBUTTON "...",IDC_TGABROWSEA,72,10,13,10
EDITTEXT IDC_TGAB,103,9,67,12,ES_RIGHT | ES_AUTOHSCROLL
PUSHBUTTON "...",IDC_TGABROWSEB,173,9,13,10
EDITTEXT IDC_ERFA1,1,22,67,12,ES_RIGHT | ES_AUTOHSCROLL
EDITTEXT IDC_ERFC1,204,22,67,12,ES_RIGHT | ES_AUTOHSCROLL
PUSHBUTTON "...",IDC_ERFBROWSEC1,273,23,13,10
PUSHBUTTON "...",IDC_ERFBROWSEA1,71,23,13,10
EDITTEXT IDC_ERFB1,103,23,67,12,ES_RIGHT | ES_AUTOHSCROLL
PUSHBUTTON "...",IDC_ERFBROWSEB1,173,22,13,10
GROUPBOX "A",IDC_STATIC,69,0,30,61
GROUPBOX "B",IDC_STATIC,172,0,29,61
GROUPBOX "C",IDC_STATIC,272,0,25,61
CONTROL "Check1",IDC_BILLBOARDA1,"Button",BS_AUTOCHECKBOX |
WS_TABSTOP,86,24,8,8
CONTROL "Check1",IDC_BILLBOARDB1,"Button",BS_AUTOCHECKBOX |
WS_TABSTOP,188,23,8,8
CONTROL "Check1",IDC_BILLBOARDC1,"Button",BS_AUTOCHECKBOX |
WS_TABSTOP,287,24,8,8
EDITTEXT IDC_FADESTART,142,0,28,12,ES_AUTOHSCROLL
EDITTEXT IDC_FADEEND,238,0,33,12,ES_AUTOHSCROLL
LTEXT "Fade Start:",IDC_STATIC,104,0,35,8
LTEXT "Fade End:",IDC_STATIC,203,0,33,8
LTEXT "Use Yes/No:",IDC_STATIC,2,0,48,9
CONTROL "Check1",IDC_CULTURALYESNO,"Button",BS_AUTOCHECKBOX |
WS_TABSTOP,50,0,8,8
EDITTEXT IDC_ERFA2,1,35,67,12,ES_RIGHT | ES_AUTOHSCROLL
EDITTEXT IDC_ERFA3,1,48,67,12,ES_RIGHT | ES_AUTOHSCROLL
EDITTEXT IDC_ERFB2,103,35,67,12,ES_RIGHT | ES_AUTOHSCROLL
EDITTEXT IDC_ERFB3,103,49,67,12,ES_RIGHT | ES_AUTOHSCROLL
EDITTEXT IDC_ERFC2,204,35,67,12,ES_RIGHT | ES_AUTOHSCROLL
EDITTEXT IDC_ERFC3,204,48,67,12,ES_RIGHT | ES_AUTOHSCROLL
PUSHBUTTON "...",IDC_ERFBROWSEA2,71,35,13,10
CONTROL "Check1",IDC_BILLBOARDA2,"Button",BS_AUTOCHECKBOX |
WS_TABSTOP,86,36,8,8
PUSHBUTTON "...",IDC_ERFBROWSEA3,71,49,13,10
CONTROL "Check1",IDC_BILLBOARDA3,"Button",BS_AUTOCHECKBOX |
WS_TABSTOP,86,48,8,8
PUSHBUTTON "...",IDC_ERFBROWSEB2,173,34,13,10
CONTROL "Check1",IDC_BILLBOARDB2,"Button",BS_AUTOCHECKBOX |
WS_TABSTOP,188,34,8,8
PUSHBUTTON "...",IDC_ERFBROWSEB3,173,47,13,10
CONTROL "Check1",IDC_BILLBOARDB3,"Button",BS_AUTOCHECKBOX |
WS_TABSTOP,188,48,8,8
PUSHBUTTON "...",IDC_ERFBROWSEC2,273,36,13,10
CONTROL "Check1",IDC_BILLBOARDC2,"Button",BS_AUTOCHECKBOX |
WS_TABSTOP,287,38,8,8
PUSHBUTTON "...",IDC_ERFBROWSEC3,273,49,13,10
CONTROL "Check1",IDC_BILLBOARDC3,"Button",BS_AUTOCHECKBOX |
WS_TABSTOP,287,51,8,8
END
#ifndef _MAC
/////////////////////////////////////////////////////////////////////////////
//
// Version
//
VS_VERSION_INFO VERSIONINFO
FILEVERSION 1,0,0,1
PRODUCTVERSION 1,0,0,1
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x1L
#else
FILEFLAGS 0x0L
#endif
FILEOS 0x4L
FILETYPE 0x1L
FILESUBTYPE 0x0L
BEGIN
BLOCK "StringFileInfo"
BEGIN
BLOCK "040904B0"
BEGIN
VALUE "CompanyName", "\0"
VALUE "FileDescription", "MapCreator MFC Application\0"
VALUE "FileVersion", "1, 0, 0, 1\0"
VALUE "InternalName", "MapCreator\0"
VALUE "LegalCopyright", "Copyright (C) 2001\0"
VALUE "LegalTrademarks", "\0"
VALUE "OriginalFilename", "MapCreator.EXE\0"
VALUE "ProductName", "MapCreator Application\0"
VALUE "ProductVersion", "1, 0, 0, 1\0"
END
END
BLOCK "VarFileInfo"
BEGIN
VALUE "Translation", 0x409, 1200
END
END
#endif // !_MAC
/////////////////////////////////////////////////////////////////////////////
//
// DESIGNINFO
//
#ifdef APSTUDIO_INVOKED
GUIDELINES DESIGNINFO DISCARDABLE
BEGIN
IDD_ABOUTBOX, DIALOG
BEGIN
LEFTMARGIN, 7
RIGHTMARGIN, 228
TOPMARGIN, 7
BOTTOMMARGIN, 48
END
IDD_MAPCREATOR_DIALOG, DIALOG
BEGIN
LEFTMARGIN, 7
RIGHTMARGIN, 313
TOPMARGIN, 7
BOTTOMMARGIN, 130
END
IDD_GEOMETRY_PANEL, DIALOG
BEGIN
BOTTOMMARGIN, 51
END
IDD_CULTURAL_PANEL, DIALOG
BEGIN
BOTTOMMARGIN, 61
END
END
#endif // APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Dialog Info
//
IDD_GEOMETRY_PANEL DLGINIT
BEGIN
IDC_TRICAP, 0x403, 5, 0
0x6f4e, 0x656e, "\000"
IDC_TRICAP, 0x403, 6, 0
0x6f4c, 0x6163, 0x006c,
IDC_TRICAP, 0x403, 5, 0
0x7241, 0x6165, "\000"
0
END
/////////////////////////////////////////////////////////////////////////////
//
// String Table
//
STRINGTABLE DISCARDABLE
BEGIN
IDS_ABOUTBOX "&About MapCreator..."
END
#endif // English (U.S.) resources
/////////////////////////////////////////////////////////////////////////////
#ifndef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 3 resource.
//
#define _AFX_NO_SPLITTER_RESOURCES
#define _AFX_NO_OLE_RESOURCES
#define _AFX_NO_TRACKER_RESOURCES
#define _AFX_NO_PROPERTY_RESOURCES
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
#ifdef _WIN32
LANGUAGE 9, 1
#pragma code_page(1252)
#endif //_WIN32
#include "res\MapCreator.rc2" // non-Microsoft Visual C++ edited resources
#include "afxres.rc" // Standard components
#endif
/////////////////////////////////////////////////////////////////////////////
#endif // not APSTUDIO_INVOKED
@@ -0,0 +1,874 @@
// MapCreatorDlg.cpp : implementation file
//
#include "stdafx.h"
#include "MapCreator.h"
#include "MapCreatorDlg.h"
#include "GeoPanel.h"
#include "TexturePanel.h"
#include "WaterPanel.h"
#include "CulturalPanel.h"
#include <Stuff\Stuff.hpp>
#include <GameOS\ToolOS.hpp>
#include <ImageLib\Image.h>
#ifndef USEEXTERNALLY
#include "MapCreatorDlg.h"
#endif
using namespace Stuff;
//#define USEEXTERNALLY
#ifdef USEEXTERNALLY
#else
#define BUILDFILENAME "Content\\MechWarrior4.Build"
#endif
/////////////////////////////////////////////////////////////////////////////
// CAboutDlg dialog used for App About
class CAboutDlg : public CDialog
{
public:
CAboutDlg();
// Dialog Data
//{{AFX_DATA(CAboutDlg)
enum { IDD = IDD_ABOUTBOX };
//}}AFX_DATA
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CAboutDlg)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL
// Implementation
protected:
//{{AFX_MSG(CAboutDlg)
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
//{{AFX_DATA_INIT(CAboutDlg)
//}}AFX_DATA_INIT
}
void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CAboutDlg)
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
//{{AFX_MSG_MAP(CAboutDlg)
// No message handlers
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CMapCreatorDlg dialog
CMapCreatorDlg::CMapCreatorDlg(CWnd* pParent /*=NULL*/)
: CDialog(CMapCreatorDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CMapCreatorDlg)
m_MapName = _T("");
//}}AFX_DATA_INIT
// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
m_MapName="MyMap";
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}
void CMapCreatorDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CMapCreatorDlg)
DDX_Control(pDX, IDOK, m_MapNameCon);
DDX_Control(pDX, IDC_DLGTAB, m_Tab);
DDX_Text(pDX, IDC_MAPNAME, m_MapName);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CMapCreatorDlg, CDialog)
//{{AFX_MSG_MAP(CMapCreatorDlg)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_BN_CLICKED(IDC_CREATE, OnCreate)
ON_NOTIFY(TCN_SELCHANGE, IDC_DLGTAB, OnSelchangeDlgtab)
ON_EN_CHANGE(IDC_MAPNAME, OnChangeMapname)
ON_EN_KILLFOCUS(IDC_MAPNAME, OnKillfocusMapname)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CMapCreatorDlg message handlers
BOOL CMapCreatorDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// Add "About..." menu item to system menu.
// IDM_ABOUTBOX must be in the system command range.
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000);
CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
CString strAboutMenu;
strAboutMenu.LoadString(IDS_ABOUTBOX);
if (!strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
}
}
// Set the icon for this dialog. The framework does this automatically
// when the application's main window is not a dialog
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon
/*
HKEY pathkey;
if(ERROR_SUCCESS !=RegOpenKeyEx(HKEY_LOCAL_MACHINE,"SOFTWARE\\Microsoft\\Microsoft Games\\MechWarrior Vengeance",0,KEY_QUERY_VALUE,&pathkey))
{
MessageBox("Mech Warrior 4 is not istalled correctly on this computer",MB_OK);
PostQuitMessage(0);
}
DWORD ktype;
DWORD size= MAX_PATH;
char dbuf[MAX_PATH];
if(ERROR_SUCCESS !=RegQueryValueEx(pathkey,"EXE Path",NULL,&ktype,(BYTE *)dbuf,&size) || size<=0 || ktype!=REG_SZ)
{
MessageBox("Mech Warrior 4 is not istalled correctly on this computer",MB_OK);
PostQuitMessage(0);
}
*/
GeoPan=new CGeoPanel(&m_Tab);
TextPan=new CTexturePanel(&m_Tab);
WatPan=new CWaterPanel(&m_Tab);
m_Tab.InsertItem(TCIF_TEXT|TCIF_PARAM,0,"Geometry",0,(DWORD)GeoPan);
m_Tab.InsertItem(TCIF_TEXT|TCIF_PARAM,1,"Texture",0,(DWORD)TextPan);
m_Tab.InsertItem(TCIF_TEXT|TCIF_PARAM,2,"Water",0,(DWORD)WatPan);
#ifndef USEEXTERNALLY
CultPan=new CCulturalPanel(&m_Tab);
m_Tab.InsertItem(TCIF_TEXT|TCIF_PARAM,3,"Culturals",0,(DWORD)CultPan);
#endif
// m_gamePath=dbuf;
GeoPan->ShowWindow(SW_SHOW);
m_Tab.SetCurSel(0);
return TRUE; // return TRUE unless you set the focus to a control
}
void CMapCreatorDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
if ((nID & 0xFFF0) == IDM_ABOUTBOX)
{
CAboutDlg dlgAbout;
dlgAbout.DoModal();
}
else
{
CDialog::OnSysCommand(nID, lParam);
}
}
// If you add a minimize button to your dialog, you will need the code below
// to draw the icon. For MFC applications using the document/view model,
// this is automatically done for you by the framework.
void CMapCreatorDlg::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this); // device context for painting
SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);
// Center icon in client rectangle
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2;
// Draw the icon
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CDialog::OnPaint();
}
}
// The system calls this to obtain the cursor to display while the user drags
// the minimized window.
HCURSOR CMapCreatorDlg::OnQueryDragIcon()
{
return (HCURSOR) m_hIcon;
}
void CMapCreatorDlg::OnOK()
{
// TODO: Add extra validation here
CDialog::OnOK();
}
void CMapCreatorDlg::OnCancel()
{
// TODO: Add extra cleanup here
CDialog::OnCancel();
}
void CMapCreatorDlg::CreateINI()
{
CString ini_filename,map_path;
map_path="Content\\Maps\\"+m_MapName;
ini_filename=map_path+"\\tctd.ini";
NotationFile config_file(ini_filename);
Page *page=config_file.SetPage(m_MapName);
Check_Object(page);
GeoPan->WriteEntries(page);
TextPan->WriteEntries(page);
WatPan->WriteEntries(page,GeoPan->GetLowHFVal());
#ifndef USEEXTERNALLY
// gos_CreateDirectory("Content\\Maps\\"+m_MapName+"\\Culturals");
CultPan->WriteEntries(page,"Content\\Maps\\"+m_MapName+"\\Culturals");
#endif
config_file.Save();
}
void CMapCreatorDlg::CreateDataFile()
{
CString data_filename,map_path;
map_path="Content\\Maps\\"+m_MapName;
data_filename=map_path+"\\"+m_MapName+".data";
NotationFile data_file(data_filename);
Page *page=data_file.SetPage("gamedata");
CString text_base="Maps\\"+m_MapName+"\\";
page->SetEntry("grid",m_MapName+".erf");
page->SetEntry("cull","nevercull");
page->SetEntry("class","mechwarrior4::mwmap");
CString str;
int pos;
if(TextPan->m_IGData)
{
str=TextPan->m_TTEdit;
str=str.Left(str.ReverseFind('.'));
pos=str.ReverseFind('\\');
if(pos>0) str=str.Mid(pos+1);
page->SetEntry("texturedata",str+".fgd");
page->SetEntry("tcffilename",str+".index.tcf");
}
if(WatPan->m_UseWater)
{
page->SetEntry("waterlevel",WatPan->m_WaterLevel);
str=WatPan->m_WText;
str=str.Left(str.ReverseFind('.'));
pos=str.ReverseFind('\\');
if(pos>0) str=str.Mid(pos+1);
page->SetEntry("watertexture","maps\\"+m_MapName+"\\"+str);
str=WatPan->m_UWText;
str=str.Left(str.ReverseFind('.'));
pos=str.ReverseFind('\\');
if(pos>0) str=str.Mid(pos+1);
page->SetEntry("underwatertexture","maps\\"+m_MapName+"\\"+str);
str=WatPan->m_DTText;
str=str.Left(str.ReverseFind('.'));
pos=str.ReverseFind('\\');
if(pos>0) str=str.Mid(pos+1);
page->SetEntry("waterdetailtexture","maps\\"+m_MapName+"\\"+str);
}
// page->SetEntry(tcffilename=alpine01.index.tcf
page->SetEntry("HudMap","maps\\"+m_MapName+"\\"+m_MapName);
Check_Object(page);
data_file.Save();
}
void CMapCreatorDlg::CreateHintFile()
{
//if(TextPan->m_IGData) return;
CString hint_filename,map_path,text_base;
map_path="Content\\Textures\\Maps\\"+m_MapName;
hint_filename=map_path+"\\"+"textures.hint";
text_base="Maps\\"+m_MapName+"\\";
NotationFile hint_file(hint_filename);
hint_file.DeleteAllPages();
CString str;
int pos;
CString ImgName, BaseName,DirName;
BaseName=m_MapName;
int ZoneCountX = GeoPan->ZoneCountX;
int ZoneCountY = GeoPan->ZoneCountY;
DirName="Maps\\"+m_MapName;
int zrow, zcol;
for(zrow=0;zrow<ZoneCountY;zrow++)
{
for(zcol=0;zcol<ZoneCountX;zcol++)
{
CString subDirName;
subDirName.Format("%s\\%c%c", DirName, 'A'+ZoneCountY-zrow-1, 'A'+ZoneCountX-zcol-1);
{
int i, j;
for(j=0;j<2;j++)
{
for(i=0;i<2;i++)
{
ImgName.Format("%s\\%c%c\\%s_%c%c_1_%02X%02X",
DirName,
'A'+ZoneCountY-zrow-1,
'A'+ZoneCountX-zcol-1,
BaseName,
'A'+ZoneCountY-zrow-1,
'A'+ZoneCountX-zcol-1,
i,
j
);
hint_file.AddPage(ImgName);
}
}
}
ImgName.Format("%s\\%c%c\\%s_%c%c_0_0000",
DirName,
'A'+ZoneCountY-zrow-1,
'A'+ZoneCountX-zcol-1,
BaseName,
'A'+ZoneCountY-zrow-1,
'A'+ZoneCountX-zcol-1
);
hint_file.AddPage(ImgName);
}
}
ImgName.Format("%s\\%s",
DirName,
BaseName
);
hint_file.AddPage(ImgName);
/*
str=TextPan->m_TTEdit;
str=str.Left(str.ReverseFind('.'));
pos=str.ReverseFind('\\');
if(pos>0) str=str.Mid(pos+1);
hint_file.AddPage(text_base+str);
*/
str=TextPan->m_DetailTexture;
str=str.Left(str.ReverseFind('.'));
pos=str.ReverseFind('\\');
if(pos>0) str=str.Mid(pos+1);
hint_file.AddPage(text_base+str);
if(WatPan->m_UseWater)
{
str=WatPan->m_WText;
str=str.Left(str.ReverseFind('.'));
pos=str.ReverseFind('\\');
if(pos>0) str=str.Mid(pos+1);
hint_file.AddPage(text_base+str);
str=WatPan->m_UWText;
str=str.Left(str.ReverseFind('.'));
pos=str.ReverseFind('\\');
if(pos>0) str=str.Mid(pos+1);
hint_file.AddPage(text_base+str);
str=WatPan->m_DTText;
str=str.Left(str.ReverseFind('.'));
pos=str.ReverseFind('\\');
if(pos>0) str=str.Mid(pos+1);
hint_file.AddPage(text_base+str);
}
hint_file.Save();
}
void CMapCreatorDlg::CreateInstance()
{
CString data_filename,map_path;
map_path="Content\\Maps\\"+m_MapName;
data_filename=map_path+"\\"+m_MapName+".instance";
NotationFile data_file(data_filename);
Page *page=data_file.SetPage(m_MapName);
page->SetEntry("Model",m_MapName+".data");
page->SetEntry("ExecutionState","AlwaysExecuteState");
Check_Object(page);
data_file.Save();
}
void CMapCreatorDlg::SplitTextures()
{
// CString ImgName,DirName="Content\\Textures\\Maps\\"+m_MapName;
if(TextPan->m_IGData) return;
CString ImgName, BaseName,DirName;
BaseName=m_MapName;
int ZoneCountX = GeoPan->ZoneCountX;
int ZoneCountY = GeoPan->ZoneCountY;
DirName="Content\\Textures\\Maps\\"+m_MapName;
if(!gos_DoesFileExist(DirName))
gos_CreateDirectory(DirName);
Image imgseg,totimg,savimg;
imgseg.CreateBlank(256,256, ITYPE_RGB, 32);
imgseg.MaskTo(RGBMask(0xff0000,0x00ff00,0x0000ff));
totimg.Load((char *)(LPCSTR)(TextPan->m_TTEdit));
totimg.MaskTo(RGBMask(0xff0000,0x00ff00,0x0000ff));
int zrow, zcol;
for(zrow=0;zrow<ZoneCountY;zrow++)
{
for(zcol=0;zcol<ZoneCountX;zcol++)
{
CString subDirName;
subDirName.Format("%s\\%c%c", DirName, 'A'+ZoneCountY-zrow-1, 'A'+ZoneCountX-zcol-1);
if(!gos_DoesFileExist(subDirName))
{
gos_CreateDirectory(subDirName);
}
{
int iw = totimg.GetWidth()/(2*ZoneCountX);
int ih = totimg.GetHeight()/(2*ZoneCountY);
int i, j;
for(j=0;j<2;j++)
{
for(i=0;i<2;i++)
{
imgseg.Blt(
totimg,
CRect(
0,
0,
imgseg.GetWidth(),
imgseg.GetHeight()
),
CRect(
zcol*512+i*iw,
zrow*512+j*ih,
zcol*512+(i+1)*iw,
zrow*512+(j+1)*ih
)
);
ImgName.Format("%s\\%c%c\\%s_%c%c_1_%02X%02X.tga",
DirName,
'A'+ZoneCountY-zrow-1,
'A'+ZoneCountX-zcol-1,
BaseName,
'A'+ZoneCountY-zrow-1,
'A'+ZoneCountX-zcol-1,
i,
j
);
savimg=imgseg;
savimg.MakeRGB24();
savimg.SaveTga((char *)(LPCSTR)ImgName);
}
}
}
imgseg.Blt(
totimg,
CRect(
0,
0,
imgseg.GetWidth(),
imgseg.GetHeight()
),
CRect(
zcol*512,
zrow*512,
zcol*512 + (totimg.GetWidth()/ZoneCountX),
zrow*512 + (totimg.GetHeight()/ZoneCountY)
)
);
ImgName.Format("%s\\%c%c\\%s_%c%c_0_0000.Tga",
DirName,
'A'+ZoneCountY-zrow-1,
'A'+ZoneCountX-zcol-1,
BaseName,
'A'+ZoneCountY-zrow-1,
'A'+ZoneCountX-zcol-1
);
savimg=imgseg;
savimg.MakeRGB24();
savimg.SaveTga((char *)(LPCSTR)ImgName);
}
}
imgseg.Blt(
totimg,
CRect(
0,
0,
imgseg.GetWidth(),
imgseg.GetHeight()
),
CRect(
0,
0,
totimg.GetWidth(),
totimg.GetHeight()
)
);
ImgName.Format("%s\\%s.Tga",
DirName,
BaseName
);
savimg=imgseg;
savimg.MakeRGB24();
savimg.SaveTga((char *)(LPCSTR)ImgName);
}
void CMapCreatorDlg::CopyFiles()
{
CString destpath;
destpath="Content\\Maps\\"+m_MapName;
NotationFile bfile(destpath+"\\"+m_MapName+".build");
bfile.DeleteAllPages();
Page *page=bfile.AddPage("Resource\\Maps\\"+m_MapName+".mw4");
page->SetEntry("instance","maps\\"+m_MapName+"\\"+m_MapName+".instance");
page->SetEntry("TexturePool","textures\\maps\\"+m_MapName+"\\textures.hint");
CString str,texture_dest;
int pos;
texture_dest="Content\\textures\\maps\\"+m_MapName+"\\";
/*
str=TextPan->m_TTEdit;
pos=str.ReverseFind('\\');
if(pos>0) str=str.Mid(pos+1);
CopyFile(TextPan->m_TTEdit,texture_dest+str,FALSE);
*/
str=TextPan->m_DetailTexture;
pos=str.ReverseFind('\\');
if(pos>0) str=str.Mid(pos+1);
CopyFile(TextPan->m_DetailTexture,texture_dest+str,FALSE);
TextPan->m_ActualTexturePath="maps\\"+m_MapName+"\\"+str.Left(str.ReverseFind('.'));
if(WatPan->m_UseWater)
{
str=WatPan->m_WText;
pos=str.ReverseFind('\\');
if(pos>0) str=str.Mid(pos+1);
CopyFile(WatPan->m_WText,texture_dest+str,FALSE);
WatPan->m_BasePath="maps\\"+m_MapName+"\\";
str=WatPan->m_UWText;
pos=str.ReverseFind('\\');
if(pos>0) str=str.Mid(pos+1);
CopyFile(WatPan->m_UWText,texture_dest+str,FALSE);
str=WatPan->m_DTText;
pos=str.ReverseFind('\\');
if(pos>0) str=str.Mid(pos+1);
CopyFile(WatPan->m_DTText,texture_dest+str,FALSE);
}
if(!gos_DoesFileExist(destpath))
{
// gos_CrateDirectory(destpath);
}
bfile.Save();
}
void CMapCreatorDlg::UpdateBuildFile()
{
CString map_buildpath;
CString map_shortpath;
CString map_longpath;
CString mission_instancepath;
CString mission_buildpath;
map_shortpath.Format("Maps\\%s\\%s.build",m_MapName,m_MapName);
map_longpath="Content\\"+map_shortpath;
////////////////////////////////////////////////////////////
// Enter the data in the build file
#ifdef USEEXTERNALLY
#else
NotationFile build_file(BUILDFILENAME);
Page *build_page = build_file.FindPage("");
Check_Object(build_page);
Note *texture_note = build_page->FindNote("textures.build");
Check_Object(texture_note);
NotationFile texture_file;
texture_note->GetEntry(&texture_file);
Page *texture_page = texture_file.FindPage("");
Check_Object(texture_page);
Note *core_note = texture_page->FindNote("core.build");
Check_Object(core_note);
NotationFile core_file;
core_note->GetEntry(&core_file);
Page *core_page = core_file.FindPage("");
Check_Object(core_page);
Note *prop_note = core_page->FindNote("props.build");
Check_Object(prop_note);
NotationFile prop_file;
prop_note->GetEntry(&prop_file);
Page *prop_page = prop_file.FindPage("");
Check_Object(prop_page);
Note *map_note = prop_page->FindNote(map_shortpath);
NotationFile maps_file;
if(!map_note)
{
map_note=prop_page->AddNote(map_shortpath);
Check_Object(map_note);
}
else
{
Check_Object(map_note);
map_note->GetEntry(&maps_file);
}
map_note->SetEntry(&maps_file);
#endif
#ifdef USEEXTERNALLY
// prop_file.Save();
#else
prop_note->SetEntry(&prop_file);
core_note->SetEntry(&core_file);
texture_note->SetEntry(&texture_file);
build_file.Save();
#endif
}
void CMapCreatorDlg::OnCreate()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
m_MapName.Replace(' ','_');
m_MapName.Replace('/','_');
m_MapName.Replace('\\','_');
m_MapName.Replace('?','_');
m_MapName.Replace('*','_');
m_MapName.Replace('|','_');
m_MapName.Replace('<','_');
m_MapName.Replace('>','_');
UpdateData(FALSE);
if(m_MapName=="")
{
MessageBox("Give the map a valid name","No Name",MB_OK|MB_ICONERROR);
return;
}
DestPath="Content\\Maps\\"+m_MapName;
if(gos_DoesFileExist(DestPath))
{
if(MessageBox("A map by this name exists, OverWrite?","OverWrite Warning",MB_YESNO|MB_ICONQUESTION)==IDNO)
return;
}
if(!GeoPan->ValidateEntries()) {m_Tab.SetCurSel(0); UpdateTabWin(); return; }
if(!TextPan->ValidateEntries(GeoPan->ZoneCountX,GeoPan->ZoneCountY)) {m_Tab.SetCurSel(1); UpdateTabWin(); return; }
if(!WatPan->ValidateEntries()) {m_Tab.SetCurSel(2); UpdateTabWin(); return; }
gos_CreateDirectory("Content");
gos_CreateDirectory("Content\\Maps\\");
gos_CreateDirectory("Content\\Textures\\");
gos_CreateDirectory("Content\\Textures\\Maps\\");
gos_CreateDirectory("Content\\Maps\\"+m_MapName);
gos_CreateDirectory("Content\\Maps\\"+m_MapName+"\\Culturals");
gos_CreateDirectory("Content\\Textures\\Maps\\"+m_MapName);
SplitTextures();
CopyFiles();
CreateINI();
CreateDataFile();
CreateInstance();
CreateHintFile();
UpdateBuildFile();
if(RunTCT())
{
DeleteFile("Resource\\Maps\\"+m_MapName+".mw4");
DeleteFile("Resource\\Maps\\"+m_MapName+".dep");
MessageBox("Map created successfully. Run Mission Editor to create a mission with this map","Operation Complete",MB_OK);
}
else
MessageBox("There was an Error in Createing your map","Operation Error",MB_OK);
}
bool CMapCreatorDlg::RunTCT()
{
CString cmdopts;
cmdopts="";
if(GeoPan->m_FinalPass) cmdopts+=" /p";
if(GeoPan->m_InterestData) cmdopts+=" /uid";
switch(GeoPan->m_TriCap)
{
case 0: break;
case 1: cmdopts+=" /s"; break;
case 2: cmdopts+=" /y"; break;
}
cmdopts+=" /i";
if(gos_DoesFileExist("Tctd.exe"))
{
int err;
err=system("Tctd /f Content\\Maps\\"+m_MapName+"\\tctd.ini"+cmdopts);
ASSERT(err!=-1);
err=system("Tctd /f Content\\Maps\\"+m_MapName+"\\tctd.ini -bsp"+cmdopts);
ASSERT(err!=-1);
}
else
{
MessageBox("Cannot Find Tctd.exe,Make sure this file exists and try again",MB_OK);
return false;
}
return true;
}
void CMapCreatorDlg::OnSelchangeDlgtab(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
UpdateTabWin();
*pResult = 0;
}
void CMapCreatorDlg::UpdateTabWin()
{
int i,sel;
TCITEM item;
ZeroMemory(&item,sizeof(item));
sel=m_Tab.GetCurSel();
for(i=0;i<m_Tab.GetItemCount();i++)
{
item.mask=TCIF_PARAM;
BOOL res=m_Tab.GetItem(i,&item);
ASSERT(res);
CWnd *wnd=(CWnd *)item.lParam;
ASSERT(wnd!=NULL);
wnd->ShowWindow(sel==i?SW_SHOW:SW_HIDE);
}
}
void CMapCreatorDlg::OnChangeMapname()
{
// TODO: If this is a RICHEDIT control, the control will not
// send this notification unless you override the CDialog::OnInitDialog()
// function and call CRichEditCtrl().SetEventMask()
// with the ENM_CHANGE flag ORed into the mask.
// TODO: Add your control notification handler code here
}
void CMapCreatorDlg::OnKillfocusMapname()
{
UpdateData(TRUE);
m_MapName.Replace(' ','_');
UpdateData(FALSE);
}
@@ -0,0 +1,78 @@
// MapCreatorDlg.h : header file
//
#if !defined(AFX_MAPCREATORDLG_H__262198EC_684A_403D_A924_B366E89A93A9__INCLUDED_)
#define AFX_MAPCREATORDLG_H__262198EC_684A_403D_A924_B366E89A93A9__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
/////////////////////////////////////////////////////////////////////////////
// CMapCreatorDlg dialog
class CGeoPanel;
class CTexturePanel;
class CWaterPanel;
class CCulturalPanel;
class CMapCreatorDlg : public CDialog
{
// Construction
public:
void UpdateTabWin();
bool RunTCT();
// CString m_gamePath;
void UpdateBuildFile();
void CopyFiles();
void CreateINI();
void SplitTextures();
void CreateDataFile();
void CreateInstance();
void CreateHintFile();
CMapCreatorDlg(CWnd* pParent = NULL); // standard constructor
CString DestPath;
CGeoPanel *GeoPan;
CTexturePanel *TextPan;
CWaterPanel *WatPan;
CCulturalPanel *CultPan;
// Dialog Data
//{{AFX_DATA(CMapCreatorDlg)
enum { IDD = IDD_MAPCREATOR_DIALOG };
CButton m_MapNameCon;
CTabCtrl m_Tab;
CString m_MapName;
//}}AFX_DATA
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CMapCreatorDlg)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL
// Implementation
protected:
HICON m_hIcon;
// Generated message map functions
//{{AFX_MSG(CMapCreatorDlg)
virtual BOOL OnInitDialog();
afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
afx_msg void OnPaint();
afx_msg HCURSOR OnQueryDragIcon();
virtual void OnOK();
virtual void OnCancel();
afx_msg void OnCreate();
afx_msg void OnSelchangeDlgtab(NMHDR* pNMHDR, LRESULT* pResult);
afx_msg void OnChangeMapname();
afx_msg void OnKillfocusMapname();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_MAPCREATORDLG_H__262198EC_684A_403D_A924_B366E89A93A9__INCLUDED_)
@@ -0,0 +1,88 @@
========================================================================
MICROSOFT FOUNDATION CLASS LIBRARY : MapCreator
========================================================================
AppWizard has created this MapCreator application for you. This application
not only demonstrates the basics of using the Microsoft Foundation classes
but is also a starting point for writing your application.
This file contains a summary of what you will find in each of the files that
make up your MapCreator application.
MapCreator.dsp
This file (the project file) contains information at the project level and
is used to build a single project or subproject. Other users can share the
project (.dsp) file, but they should export the makefiles locally.
MapCreator.h
This is the main header file for the application. It includes other
project specific headers (including Resource.h) and declares the
CMapCreatorApp application class.
MapCreator.cpp
This is the main application source file that contains the application
class CMapCreatorApp.
MapCreator.rc
This is a listing of all of the Microsoft Windows resources that the
program uses. It includes the icons, bitmaps, and cursors that are stored
in the RES subdirectory. This file can be directly edited in Microsoft
Visual C++.
MapCreator.clw
This file contains information used by ClassWizard to edit existing
classes or add new classes. ClassWizard also uses this file to store
information needed to create and edit message maps and dialog data
maps and to create prototype member functions.
res\MapCreator.ico
This is an icon file, which is used as the application's icon. This
icon is included by the main resource file MapCreator.rc.
res\MapCreator.rc2
This file contains resources that are not edited by Microsoft
Visual C++. You should place all resources not editable by
the resource editor in this file.
/////////////////////////////////////////////////////////////////////////////
AppWizard creates one dialog class:
MapCreatorDlg.h, MapCreatorDlg.cpp - the dialog
These files contain your CMapCreatorDlg class. This class defines
the behavior of your application's main dialog. The dialog's
template is in MapCreator.rc, which can be edited in Microsoft
Visual C++.
/////////////////////////////////////////////////////////////////////////////
Other standard files:
StdAfx.h, StdAfx.cpp
These files are used to build a precompiled header (PCH) file
named MapCreator.pch and a precompiled types file named StdAfx.obj.
Resource.h
This is the standard header file, which defines new resource IDs.
Microsoft Visual C++ reads and updates this file.
/////////////////////////////////////////////////////////////////////////////
Other notes:
AppWizard uses "TODO:" to indicate parts of the source code you
should add to or customize.
If your application uses MFC in a shared DLL, and your application is
in a language other than the operating system's current language, you
will need to copy the corresponding localized resources MFC42XXX.DLL
from the Microsoft Visual C++ CD-ROM onto the system or system32 directory,
and rename it to be MFCLOC.DLL. ("XXX" stands for the language abbreviation.
For example, MFC42DEU.DLL contains resources translated to German.) If you
don't do this, some of the UI elements of your application will remain in the
language of the operating system.
/////////////////////////////////////////////////////////////////////////////
Binary file not shown.
@@ -0,0 +1,8 @@
// stdafx.cpp : source file that includes just the standard includes
// MapCreator.pch will be the pre-compiled header
// stdafx.obj will contain the pre-compiled type information
#include "stdafx.h"
@@ -0,0 +1,28 @@
// stdafx.h : include file for standard system include files,
// or project specific include files that are used frequently, but
// are changed infrequently
//
#if !defined(AFX_STDAFX_H__74832B1F_410B_426F_9365_C7A8F6686EDB__INCLUDED_)
#define AFX_STDAFX_H__74832B1F_410B_426F_9365_C7A8F6686EDB__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#define VC_EXTRALEAN // Exclude rarely-used stuff from Windows headers
#define __exdisp_h__
#include <afxwin.h> // MFC core and standard components
#include <afxext.h> // MFC extensions
#include <afxdisp.h> // MFC Automation classes
#include <afxdtctl.h> // MFC support for Internet Explorer 4 Common Controls
#ifndef _AFX_NO_AFXCMN_SUPPORT
#include <afxcmn.h> // MFC support for Windows Common Controls
#endif // _AFX_NO_AFXCMN_SUPPORT
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_STDAFX_H__74832B1F_410B_426F_9365_C7A8F6686EDB__INCLUDED_)
@@ -0,0 +1,202 @@
// TexturePanel.cpp : implementation file
//
#include "stdafx.h"
#include "MapCreator.h"
#include "TexturePanel.h"
#include <Stuff\Stuff.hpp>
#include <GameOS\ToolOS.hpp>
#include <ImageLib\Image.h>
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CTexturePanel dialog
CTexturePanel::CTexturePanel(CWnd* pParent /*=NULL*/)
: CDialog(CTexturePanel::IDD, pParent)
{
//{{AFX_DATA_INIT(CTexturePanel)
m_TTEdit = _T("");
m_DetailTexture = _T("");
m_FadeIn = 400.0f;
m_FadeOut = 600.0f;
m_DRatio = 16;
m_IGData = TRUE;
//}}AFX_DATA_INIT
//#ifdef LAB_ONLY
// m_IGData = TRUE;
//#else
m_IGData = FALSE;
//#endif
Create(IDD,pParent);
SetWindowPos(NULL,5,25,0,0,SWP_NOSIZE|SWP_NOZORDER|SWP_NOACTIVATE);
}
void CTexturePanel::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CTexturePanel)
DDX_Control(pDX, IDC_IGDATA, m_IGDataCon);
DDX_Text(pDX, IDC_TTEDIT, m_TTEdit);
DDX_Text(pDX, IDC_DTEDIT, m_DetailTexture);
DDX_Text(pDX, IDC_FADEIN, m_FadeIn);
DDV_MinMaxFloat(pDX, m_FadeIn, 100.f, 1000.f);
DDX_Text(pDX, IDC_FADEOUT, m_FadeOut);
DDV_MinMaxFloat(pDX, m_FadeOut, 100.f, 1000.f);
DDX_Text(pDX, IDC_DRATIO, m_DRatio);
DDV_MinMaxInt(pDX, m_DRatio, 1, 16);
DDX_Check(pDX, IDC_IGDATA, m_IGData);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CTexturePanel, CDialog)
//{{AFX_MSG_MAP(CTexturePanel)
ON_BN_CLICKED(IDC_TTBROWSE, OnTtbrowse)
ON_BN_CLICKED(IDC_DTBROWSE, OnDtbrowse)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CTexturePanel message handlers
void CTexturePanel::WriteEntries(Stuff::Page *page)
{
UpdateData(TRUE);
CString basenname;
int pos=m_DetailTexture.ReverseFind('\\');
if(pos>0)
page->SetEntry("DetailTexture",m_ActualTexturePath);
page->SetEntry("DetailRatio",m_DRatio);
page->SetEntry("DetailFadeBegin",m_FadeIn);
page->SetEntry("DetailFadeEnd",m_FadeOut);
}
bool CTexturePanel::ValidateEntries(int zonex,int zonez)
{
UpdateData(TRUE);
if(m_TTEdit=="" || !gos_DoesFileExist(m_TTEdit))
{
MessageBox("Terrain Texture Does Not Exist","Bad Terrain Texture",MB_OK|MB_ICONERROR);
return false;
}
if(!m_IGData)
{
Image img;
img.Load((char *)(LPCSTR)m_TTEdit);
if(!m_IGData)
if(img.GetWidth()!=(zonex*512) || img.GetHeight()!=(zonez*512))
{
CString str;
str.Format("For a Heightfield of %ix%i Terrain Texture should be %ix%i",zonex*256,zonez*256,zonex*512,zonez*512);
MessageBox(str,"Texture Size Error",MB_OK|MB_ICONERROR);
return false;
}
}
if(m_DetailTexture=="" || !gos_DoesFileExist(m_DetailTexture))
{
MessageBox("Detail Texture Does Not Exist","Bad Detail Texture",MB_OK|MB_ICONERROR);
return false;
}
{
Image img;
img.Load((char *)(LPCSTR)m_DetailTexture);
if(img.GetWidth()!=256 || img.GetHeight()!=256)
{
MessageBox("Detail Texture MUST be 256x256","Texture Size Error",MB_OK|MB_ICONERROR);
return false;
}
}
if(m_FadeIn>=m_FadeOut)
{
MessageBox("FadeIn Must Be Less Than FadeOut","Bad Range",MB_OK|MB_ICONERROR);
return false;
}
if(m_FadeIn<100.f || m_FadeIn>1000.f ||
m_FadeOut<100.f || m_FadeOut>1000.f ||
m_DRatio<1 || m_DRatio>16
)
return false;
return true;
}
void CTexturePanel::OnTtbrowse()
{
UpdateData(TRUE);
if(m_IGData)
{
CFileDialog fdlg(TRUE,NULL,m_TTEdit,OFN_NOCHANGEDIR,"FGD Files (*.fgd)|*.fgd||",NULL);
if(fdlg.DoModal()==IDOK)
{
m_TTEdit=fdlg.GetPathName();
UpdateData(FALSE);
}
}
else
{
CFileDialog fdlg(TRUE,NULL,m_TTEdit,OFN_NOCHANGEDIR,"Bitmap Images (*.tif,*.gif,*.tga,*.png)|*.tif;*.gif;*.tga;*.png||",NULL);
if(fdlg.DoModal()==IDOK)
{
m_TTEdit=fdlg.GetPathName();
UpdateData(FALSE);
}
}
}
void CTexturePanel::OnDtbrowse()
{
UpdateData(TRUE);
CFileDialog fdlg(TRUE,NULL,m_DetailTexture,OFN_NOCHANGEDIR,"Bitmap Images (*.tif,*.gif,*.tga,*.png)|*.tif;*.gif;*.tga;*.png||",NULL);
if(fdlg.DoModal()==IDOK)
{
m_DetailTexture=fdlg.GetPathName();
UpdateData(FALSE);
}
}
BOOL CTexturePanel::OnInitDialog()
{
CDialog::OnInitDialog();
//#ifdef LAB_ONLY
m_IGDataCon.ShowWindow(SW_SHOW);
//#else
// m_IGDataCon.ShowWindow(SW_HIDE);
//#endif
// TODO: Add extra initialization here
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
@@ -0,0 +1,64 @@
#if !defined(AFX_TEXTUREPANEL_H__B68AC82E_50EA_4C64_B1E2_C70C42D114C9__INCLUDED_)
#define AFX_TEXTUREPANEL_H__B68AC82E_50EA_4C64_B1E2_C70C42D114C9__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
// TexturePanel.h : header file
//
namespace Stuff
{
class Page;
};
/////////////////////////////////////////////////////////////////////////////
// CTexturePanel dialog
class CTexturePanel : public CDialog
{
// Construction
public:
CTexturePanel(CWnd* pParent = NULL); // standard constructor
void WriteEntries(Stuff::Page *page);
bool ValidateEntries(int zonex,int zonez);
CString m_ActualTexturePath;
// Dialog Data
//{{AFX_DATA(CTexturePanel)
enum { IDD = IDD_TEXTURE_PANEL };
CButton m_IGDataCon;
CString m_TTEdit;
CString m_DetailTexture;
float m_FadeIn;
float m_FadeOut;
int m_DRatio;
BOOL m_IGData;
//}}AFX_DATA
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CTexturePanel)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL
// Implementation
protected:
// Generated message map functions
//{{AFX_MSG(CTexturePanel)
virtual void OnOK() {}
virtual void OnCancel() {}
afx_msg void OnTtbrowse();
afx_msg void OnDtbrowse();
virtual BOOL OnInitDialog();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_TEXTUREPANEL_H__B68AC82E_50EA_4C64_B1E2_C70C42D114C9__INCLUDED_)
@@ -0,0 +1,250 @@
// WaterPanel.cpp : implementation file
//
#include "stdafx.h"
#include "MapCreator.h"
#include "WaterPanel.h"
#include <Stuff\Stuff.hpp>
#include <GameOS\ToolOS.hpp>
#include <ImageLib\Image.h>
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CWaterPanel dialog
CWaterPanel::CWaterPanel(CWnd* pParent /*=NULL*/)
: CDialog(CWaterPanel::IDD, pParent)
{
//{{AFX_DATA_INIT(CWaterPanel)
m_WaterLevel = 0.0f;
m_UseWater = FALSE;
m_DTText = _T("");
m_UWText = _T("");
m_WDRatio = 1;
m_WText = _T("");
m_WTRatio = 8;
//}}AFX_DATA_INIT
Create(IDD,pParent);
SetWindowPos(NULL,5,25,0,0,SWP_NOSIZE|SWP_NOZORDER|SWP_NOACTIVATE);
}
void CWaterPanel::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CWaterPanel)
DDX_Control(pDX, IDC_WTEXTRATIO, m_WTRCon);
DDX_Control(pDX, IDC_WTEXTBROWSE, m_WTBCon);
DDX_Control(pDX, IDC_WTEXT, m_WTCon);
DDX_Control(pDX, IDC_WDTBROWSE, m_WDTBCon);
DDX_Control(pDX, IDC_UWTEXTBROWSE, m_UWTBCon);
DDX_Control(pDX, IDC_WDETAILRATIO, m_WDRCon);
DDX_Control(pDX, IDC_WATERLEVEL, m_WLevCon);
DDX_Control(pDX, IDC_UWTEXT, m_UWTCon);
DDX_Control(pDX, IDC_DTTEXT, m_DTCon);
DDX_Text(pDX, IDC_WATERLEVEL, m_WaterLevel);
DDV_MinMaxFloat(pDX, m_WaterLevel, 0.f, 10.f);
DDX_Check(pDX, IDC_USEWATER, m_UseWater);
DDX_Text(pDX, IDC_DTTEXT, m_DTText);
DDX_Text(pDX, IDC_UWTEXT, m_UWText);
DDX_Text(pDX, IDC_WDETAILRATIO, m_WDRatio);
DDV_MinMaxInt(pDX, m_WDRatio, 1, 16);
DDX_Text(pDX, IDC_WTEXT, m_WText);
DDX_Text(pDX, IDC_WTEXTRATIO, m_WTRatio);
DDV_MinMaxInt(pDX, m_WTRatio, 1, 16);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CWaterPanel, CDialog)
//{{AFX_MSG_MAP(CWaterPanel)
ON_BN_CLICKED(IDC_UWTEXTBROWSE, OnUwtextbrowse)
ON_BN_CLICKED(IDC_WDTBROWSE, OnWdtbrowse)
ON_BN_CLICKED(IDC_WTEXTBROWSE, OnWtextbrowse)
ON_BN_CLICKED(IDC_USEWATER, OnUsewater)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CWaterPanel message handlers
void CWaterPanel::WriteEntries(Stuff::Page *page,float lowhfval)
{
UpdateData(TRUE);
if(m_UseWater)
{
CString str;
int pos;
str=m_WText;
pos=str.ReverseFind('\\');
if(pos>0) str=str.Mid(pos+1);
str=str.Left(str.ReverseFind('.'));
page->SetEntry("WaterTexture",m_BasePath+str);
str=m_UWText;
pos=str.ReverseFind('\\');
if(pos>0) str=str.Mid(pos+1);
str=str.Left(str.ReverseFind('.'));
page->SetEntry("UnderwaterdetailTexture",m_BasePath+str);
str=m_DTText;
pos=str.ReverseFind('\\');
if(pos>0) str=str.Mid(pos+1);
str=str.Left(str.ReverseFind('.'));
page->SetEntry("WaterDetailTexture",m_BasePath+str);
page->SetEntry("WaterLevel",m_WaterLevel+lowhfval);
page->SetEntry("WaterTextureRatio",m_WTRatio);
page->SetEntry("WaterDetailRatio",m_WDRatio);
}
}
bool CWaterPanel::ValidateEntries()
{
UpdateData(TRUE);
if(!m_UseWater) return true;
if(m_WText=="" || !gos_DoesFileExist(m_WText))
{
MessageBox("Water Texture Does Not Exist","Bad Water Texture",MB_OK|MB_ICONERROR);
return false;
}
if(m_DTText=="" || !gos_DoesFileExist(m_DTText))
{
MessageBox("Water Detail Texture Does Not Exist","Bad Water Texture",MB_OK|MB_ICONERROR);
return false;
}
if(m_UWText=="" || !gos_DoesFileExist(m_UWText))
{
MessageBox("UnderWater Texture Does Not Exist","Bad Water Texture",MB_OK|MB_ICONERROR);
return false;
}
{
Image img;
img.Load((char *)(LPCSTR)m_WText);
if(img.GetWidth()!=256 || img.GetHeight()!=256)
{
MessageBox("Water Texture Texture MUST be 256x256","Texture Size Error",MB_OK|MB_ICONERROR);
return false;
}
}
{
Image img;
img.Load((char *)(LPCSTR)m_DTText);
if(img.GetWidth()!=256 || img.GetHeight()!=256)
{
MessageBox("Water Detail Texture Texture MUST be 256x256","Texture Size Error",MB_OK|MB_ICONERROR);
return false;
}
}
{
Image img;
img.Load((char *)(LPCSTR)m_UWText);
if(img.GetWidth()!=256 || img.GetHeight()!=256)
{
MessageBox("Under Water Texture Texture MUST be 256x256","Texture Size Error",MB_OK|MB_ICONERROR);
return false;
}
}
return true;
}
void CWaterPanel::OnUwtextbrowse()
{
UpdateData(TRUE);
// TODO: Add your control notification handler code here
CFileDialog fdlg(TRUE,NULL,m_UWText,OFN_NOCHANGEDIR,"Bitmap Images (*.tif,*.gif,*.tga,*.png)|*.tif;*.gif;*.tga;*.png||",NULL);
if(fdlg.DoModal()==IDOK)
{
m_UWText=fdlg.GetPathName();
UpdateData(FALSE);
}
}
void CWaterPanel::OnWdtbrowse()
{
UpdateData(TRUE);
// TODO: Add your control notification handler code here
CFileDialog fdlg(TRUE,NULL,m_DTText,OFN_NOCHANGEDIR,"Bitmap Images (*.tif,*.gif,*.tga,*.png)|*.tif;*.gif;*.tga;*.png||",NULL);
if(fdlg.DoModal()==IDOK)
{
m_DTText=fdlg.GetPathName();
UpdateData(FALSE);
}
}
void CWaterPanel::OnWtextbrowse()
{
UpdateData(TRUE);
// TODO: Add your control notification handler code here
CFileDialog fdlg(TRUE,NULL,m_WText,OFN_NOCHANGEDIR,"Bitmap Images (*.tif,*.gif,*.tga,*.png)|*.tif;*.gif;*.tga;*.png||",NULL);
if(fdlg.DoModal()==IDOK)
{
m_WText=fdlg.GetPathName();
UpdateData(FALSE);
}
}
void CWaterPanel::UpdateControlStates()
{
UpdateData(TRUE);
m_WTRCon.EnableWindow(m_UseWater);
m_WTBCon.EnableWindow(m_UseWater);
m_WTCon.EnableWindow(m_UseWater);
m_WDTBCon.EnableWindow(m_UseWater);
m_UWTBCon.EnableWindow(m_UseWater);
m_WDRCon.EnableWindow(m_UseWater);
m_WLevCon.EnableWindow(m_UseWater);
m_UWTCon.EnableWindow(m_UseWater);
m_DTCon.EnableWindow(m_UseWater);
}
void CWaterPanel::OnUsewater()
{
UpdateControlStates();
}
BOOL CWaterPanel::OnInitDialog()
{
CDialog::OnInitDialog();
UpdateControlStates();
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
@@ -0,0 +1,76 @@
#if !defined(AFX_WATERPANEL_H__3A7BFA2A_6AD0_43EF_B22E_8D11385363F3__INCLUDED_)
#define AFX_WATERPANEL_H__3A7BFA2A_6AD0_43EF_B22E_8D11385363F3__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
// WaterPanel.h : header file
//
namespace Stuff
{
class Page;
};
/////////////////////////////////////////////////////////////////////////////
// CWaterPanel dialog
class CWaterPanel : public CDialog
{
// Construction
public:
bool ValidateEntries();
CWaterPanel(CWnd* pParent = NULL); // standard constructor
void WriteEntries(Stuff::Page *page,float lowhfval);
void UpdateControlStates();
CString m_BasePath;
// Dialog Data
//{{AFX_DATA(CWaterPanel)
enum { IDD = IDD_WATER_PANEL };
CEdit m_WTRCon;
CButton m_WTBCon;
CEdit m_WTCon;
CButton m_WDTBCon;
CButton m_UWTBCon;
CEdit m_WDRCon;
CEdit m_WLevCon;
CEdit m_UWTCon;
CEdit m_DTCon;
float m_WaterLevel;
BOOL m_UseWater;
CString m_DTText;
CString m_UWText;
int m_WDRatio;
CString m_WText;
int m_WTRatio;
//}}AFX_DATA
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CWaterPanel)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL
// Implementation
protected:
// Generated message map functions
//{{AFX_MSG(CWaterPanel)
virtual void OnOK() {}
virtual void OnCancel() {}
afx_msg void OnUwtextbrowse();
afx_msg void OnWdtbrowse();
afx_msg void OnWtextbrowse();
afx_msg void OnUsewater();
virtual BOOL OnInitDialog();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_WATERPANEL_H__3A7BFA2A_6AD0_43EF_B22E_8D11385363F3__INCLUDED_)
Binary file not shown.
@@ -0,0 +1,13 @@
//
// MAPCREATOR.RC2 - resources Microsoft Visual C++ does not edit directly
//
#ifdef APSTUDIO_INVOKED
#error this file is not editable by Microsoft Visual C++
#endif //APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
// Add manually edited resources here...
/////////////////////////////////////////////////////////////////////////////
@@ -0,0 +1,89 @@
//{{NO_DEPENDENCIES}}
// Microsoft Developer Studio generated include file.
// Used by MapCreator.rc
//
#define IDM_ABOUTBOX 0x0010
#define IDD_ABOUTBOX 100
#define IDS_ABOUTBOX 101
#define IDD_MAPCREATOR_DIALOG 102
#define IDR_MAINFRAME 128
#define IDD_GEOMETRY_PANEL 129
#define IDD_TEXTURE_PANEL 130
#define IDD_WATER_PANEL 131
#define IDD_CULTURAL_PANEL 132
#define IDC_MAPNAME 1000
#define IDC_HFBROWSE 1001
#define IDC_HFEDIT 1002
#define IDC_TTBROWSE 1003
#define IDC_TTEDIT 1004
#define IDC_CREATE 1005
#define IDC_HSCALE 1006
#define IDC_WATERLEVEL 1007
#define IDC_USEWATER 1008
#define IDC_SPASSES 1009
#define IDC_WTEXTRATIO 1009
#define IDC_POLYCOUNT 1010
#define IDC_DTBROWSE 1011
#define IDC_WDETAILRATIO 1011
#define IDC_DTEDIT 1012
#define IDC_DRATIO 1013
#define IDC_FADEIN 1015
#define IDC_FADEOUT 1016
#define IDC_WTEXT 1018
#define IDC_UWTEXT 1019
#define IDC_DTTEXT 1020
#define IDC_WTEXTBROWSE 1021
#define IDC_UWTEXTBROWSE 1022
#define IDC_DLGTAB 1022
#define IDC_WDTBROWSE 1023
#define IDC_FINALPASS 1023
#define IDC_INTERESTDATA 1024
#define IDC_TRICAP 1026
#define IDC_IGDATA 1027
#define IDC_TGAA 1028
#define IDC_ERFA1 1029
#define IDC_TGAC 1030
#define IDC_TGABROWSEC 1031
#define IDC_TGAB 1032
#define IDC_TGABROWSEA 1033
#define IDC_TGABROWSEB 1034
#define IDC_ERFC1 1035
#define IDC_ERFBROWSEC1 1036
#define IDC_ERFBROWSEA1 1037
#define IDC_ERFB1 1038
#define IDC_ERFBROWSEB1 1039
#define IDC_FADESTART 1040
#define IDC_FADEEND 1041
#define IDC_BILLBOARDA1 1042
#define IDC_BILLBOARDB1 1043
#define IDC_BILLBOARDC1 1044
#define IDC_CULTURALYESNO 1045
#define IDC_ERFA2 1046
#define IDC_ERFA3 1047
#define IDC_ERFB2 1048
#define IDC_ERFB3 1049
#define IDC_ERFC2 1052
#define IDC_ERFC3 1053
#define IDC_ERFBROWSEA2 1054
#define IDC_BILLBOARDA2 1055
#define IDC_ERFBROWSEA3 1056
#define IDC_BILLBOARDA3 1057
#define IDC_ERFBROWSEB2 1058
#define IDC_BILLBOARDB2 1059
#define IDC_ERFBROWSEB3 1060
#define IDC_BILLBOARDB3 1061
#define IDC_ERFBROWSEC2 1062
#define IDC_BILLBOARDC2 1063
#define IDC_ERFBROWSEC3 1064
#define IDC_BILLBOARDC3 1065
// Next default values for new objects
//
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 132
#define _APS_NEXT_COMMAND_VALUE 32771
#define _APS_NEXT_CONTROL_VALUE 1046
#define _APS_NEXT_SYMED_VALUE 101
#endif
#endif
Binary file not shown.