Files
firestorm/Gameleap/code/mw4/Tools/Megatron/MegatronDoc.cpp
T
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

195 lines
4.1 KiB
C++

// MegatronDoc.cpp : implementation of the CMegatronDoc class
//
#include "stdafx.h"
#include "Megatron.h"
#include "MegatronDoc.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CMegatronDoc
IMPLEMENT_DYNCREATE(CMegatronDoc, CDocument)
BEGIN_MESSAGE_MAP(CMegatronDoc, CDocument)
//{{AFX_MSG_MAP(CMegatronDoc)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CMegatronDoc construction/destruction
CMegatronDoc::CMegatronDoc()
{
m_pFileNode = NULL;
}
CMegatronDoc::~CMegatronDoc()
{
}
/*
int ReadBuildFile(CString filename,CMapStringToPtr *pMap);
int ReadBuildFile(Stuff::NotationFile *notefile,CMapStringToPtr *pMap)
{
int count = 0;
Stuff::NotationFile::PageIterator *pages = notefile->MakePageIterator();
Register_Object(pages);
Stuff::Page *page;
while (page = pages->ReadAndNext())
{
CString pagename = page->GetName();
if (pagename.GetLength() ==0)
{
Stuff::Page::NoteIterator *notes = page->MakeNoteIterator();
Stuff::Note *note;
while (note = notes->ReadAndNext())
{
count++;
CString notename = note->GetName();
{
Stuff::NotationFile entryfile;
note->GetEntry(&entryfile);
{
CString entryfilename = entryfile.GetFileName();
count += ReadBuildFile(&entryfile,pMap);
}
}
notename = "content\\"+notename;
count += ReadBuildFile(notename,pMap);
}
delete notes;
}
}
Unregister_Object(pages);
delete pages;
return count;
}
int ReadBuildFile(CString filename,CMapStringToPtr *pMap)
{
Stuff::NotationFile *pFile = new Stuff::NotationFile(filename);
(*pMap)[filename] = pFile;
int count = 1 + ReadBuildFile(pFile,pMap);
return count;
}
*/
BOOL CMegatronDoc::OnNewDocument()
{
if (!CDocument::OnNewDocument())
return FALSE;
CString filename = "content\\Mechwarrior4.build";
//int count = ReadBuildFile(filename,&m_mapBuildFiles);
m_pFileNode = new CFileNode(filename);
return TRUE;
}
/////////////////////////////////////////////////////////////////////////////
// CMegatronDoc serialization
void CMegatronDoc::Serialize(CArchive& ar)
{
if (ar.IsStoring())
{
}
else
{
}
}
/////////////////////////////////////////////////////////////////////////////
// CMegatronDoc diagnostics
#ifdef _DEBUG
void CMegatronDoc::AssertValid() const
{
CDocument::AssertValid();
}
void CMegatronDoc::Dump(CDumpContext& dc) const
{
CDocument::Dump(dc);
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CMegatronDoc commands
void CMegatronDoc::OnCloseDocument()
{
/* POSITION pos = m_mapBuildFiles.GetStartPosition();
while (pos)
{
CString strKey;
LPVOID lpValue;
m_mapBuildFiles.GetNextAssoc(pos,strKey,lpValue);
if (lpValue)
{
Stuff::NotationFile *pFile = (Stuff::NotationFile*)lpValue;
Check_Object(pFile);
delete pFile;
}
}
*/
if (m_pFileNode)
{
delete m_pFileNode;
m_pFileNode = NULL;
}
POSITION pos = m_mapHintFiles.GetStartPosition();
while (pos)
{
CString strKey;
LPVOID lpValue;
m_mapHintFiles.GetNextAssoc(pos,strKey,lpValue);
if (lpValue)
{
Stuff::NotationFile *pFile = (Stuff::NotationFile*)lpValue;
Check_Object(pFile);
if (pFile->IsChanged())
{
CString str = pFile->GetFileName();
if (IDYES == MessageBox(NULL,str+" has changed. Save changes?","Texture Hint File",MB_YESNO))
{
pFile->Save();
}
else
{
pFile->IgnoreChanges();
}
}
delete pFile;
}
}
CDocument::OnCloseDocument();
}
Stuff::NotationFile *CMegatronDoc::GetHintFile(CString name)
{
LPVOID value;
name.MakeLower();
if (m_mapHintFiles.Lookup(name,value))
{
Stuff::NotationFile *pFile = (Stuff::NotationFile *)value;
Check_Object(pFile);
return pFile;
}
Stuff::NotationFile *pFile = new Stuff::NotationFile(name);
Check_Object(pFile);
m_mapHintFiles[name] = pFile;
return pFile;
}