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

251 lines
6.6 KiB
C++

// WizPageMission.cpp : implementation file
//
#include "stdafx.h"
#include "contenttrack.h"
#include "WizPageMission.h"
#include "WizCopyMission.h"
#include "mainfrm.h"
#include <GameOS\ToolOS.hpp>
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CWizPageMission property page
IMPLEMENT_DYNCREATE(CWizPageMission, CPropertyPage)
CWizPageMission::CWizPageMission() : CPropertyPage(CWizPageMission::IDD)
{
//{{AFX_DATA_INIT(CWizPageMission)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
}
CWizPageMission::~CWizPageMission()
{
}
void CWizPageMission::DoDataExchange(CDataExchange* pDX)
{
CPropertyPage::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CWizPageMission)
DDX_Control(pDX, IDC_EDIT_NAME, m_ctrlName);
DDX_Control(pDX, IDC_CHECK_RENAME, m_checkRename);
DDX_Control(pDX, IDC_LISTMISSION, m_ctrlList);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CWizPageMission, CPropertyPage)
//{{AFX_MSG_MAP(CWizPageMission)
ON_WM_DESTROY()
ON_LBN_SELCHANGE(IDC_LISTMISSION, OnSelchangeListmission)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CWizPageMission message handlers
BOOL CWizPageMission::OnSetActive()
{
CWizCopyMission *pParent = (CWizCopyMission *)GetParent();
pParent->SetWizardButtons(NULL);
return CPropertyPage::OnSetActive();
}
BOOL CWizPageMission::OnInitDialog()
{
CPropertyPage::OnInitDialog();
// Open the Resources.build to determine which missions are available
CFrameWnd *pFrame = GetParentFrame();
CMainFrame *pMainFrame = (CMainFrame *)pFrame;
CDocument *pDoc = pMainFrame->MDIGetActive()->GetActiveDocument();
CWizCopyMission *pParent = (CWizCopyMission *)GetParent();
pParent->m_pSrcDoc = (CNodeDataValueFileDoc *)pDoc;
// Open Resources.build
static int check1 = 1;
CNodeDisk *pDisk = pParent->m_pSrcDoc->FindDirectoryNode("content\\resources.build");
if (pDisk&& pDisk->IsLoaded())
{
POSITION pos = pDisk->GetFirstChild();
CNodeObject *pNodeMain = NULL;
while (pos &&(NULL == pNodeMain))
{
CNodeObject *pNode = pDisk->GetNextChild(pos);
CString name;
pNode->GetName(name);
// name.MakeLower();
// if (name == CString("resources\\main"))
if (0 == stricmp(name,"resources\\main"))
{
pNodeMain = pNode;
}
}
if (NULL != pNodeMain)
{
// Look for each instance node, and find each one that points to the mission directory
pos = pNodeMain->GetFirstChild();
while (pos)
{
CNodeObject *pNode = pNodeMain->GetNextChild(pos);
CString name;
pNode->GetName(name);
// name.MakeLower();
// if (name == CString("instance"))
if (0 == stricmp(name,"instance"))
{
POSITION pos1 = pNode->GetFirstChild();
while (pos)
{
CNodeObject *pNode1 = pNode->GetNextChild(pos1);
CString name1;
pNode1->GetName(name1);
if (stricmp(name1,"missions")==0)
{
// We have a mission here
char drive[MAX_PATH],dir[MAX_PATH],fname[MAX_PATH],ext[MAX_PATH];
_splitpath(name1,drive,dir,fname,ext);
int index = m_ctrlList.AddString(fname);
// VERY IMPORTANT: be sure to delete these string during destruction
CString *pString = new CString(name1);
Register_Pointer(pString);
m_ctrlList.SetItemData(index,(DWORD)pString);
}
}
}
}
}
else
{
// Invalid resources.build file
int x=1;
}
}
else
{
// resources.build is not already loaded so we have to scan it manually
SetCurrentDirectory(pParent->m_pSrcDoc->GetRootDir());
if (gos_DoesFileExist("content\\resources.build"))
{
NotationFile notefile("content\\resources.build");
Page *page = notefile.FindPage("resources\\main");
if (page)
{
Check_Object(page);
Page::NoteIterator *entries = page->MakeNoteIterator();
Check_Object(entries);
Note *entry;
// Enumerate the entries in the section
while ((entry = entries->ReadAndNext()) != NULL)
{
Check_Object(entry);
CString key(entry->GetName());
//key.MakeLower();
//if (key == "instance")
if (0 == stricmp(key,"instance"))
{
const char *value;
entry->GetEntry(&value);
if (strnicmp(value,"missions",8)==0)
{
// We have a mission here
char drive[MAX_PATH],dir[MAX_PATH],fname[MAX_PATH],ext[MAX_PATH];
_splitpath(value,drive,dir,fname,ext);
int index = m_ctrlList.AddString(fname);
// VERY IMPORTANT: be sure to delete these string during destruction
CString *pString = new CString(value);
Register_Pointer(pString);
m_ctrlList.SetItemData(index,(DWORD)pString);
}
}
}
Check_Object(entries);
delete entries;
}
else
{
// Invalid resoures.build file
int x=1;
}
}
else
{
// We have no resources.build file
int x=1;
}
}
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CWizPageMission::OnDestroy()
{
CPropertyPage::OnDestroy();
while (m_ctrlList.GetCount())
{
CString *pString = (CString *)m_ctrlList.GetItemData(0);
Unregister_Pointer(pString);
delete pString;
m_ctrlList.DeleteString(0);
}
}
void CWizPageMission::OnSelchangeListmission()
{
if (LB_ERR != m_ctrlList.GetCurSel())
{
CWizCopyMission *pParent = (CWizCopyMission *)GetParent();
pParent->SetWizardButtons(PSWIZB_NEXT);
}
}
BOOL CWizPageMission::OnWizardFinish()
{
// This shouldn't be called
int index = m_ctrlList.GetCurSel();
CString *pString = (CString *)m_ctrlList.GetItemData(index);
CWizCopyMission *pParent = (CWizCopyMission *)GetParent();
pParent->m_strMission= *pString;
if (this->m_checkRename.GetCheck())
{
pParent->m_bRename = true;
this->m_ctrlName.GetWindowText(pParent->m_strRename);
}
return CPropertyPage::OnWizardFinish();
}
LRESULT CWizPageMission::OnWizardNext()
{
int index = m_ctrlList.GetCurSel();
CString strName;
m_ctrlList.GetText(index,strName);
CString *pString = (CString *)m_ctrlList.GetItemData(index);
CWizCopyMission *pParent = (CWizCopyMission *)GetParent();
pParent->m_strName = strName;
pParent->m_strMission= *pString;
if (this->m_checkRename.GetCheck())
{
pParent->m_bRename = true;
this->m_ctrlName.GetWindowText(pParent->m_strRename);
}
return CPropertyPage::OnWizardNext();
}