Files
firestorm/Gameleap/code/mw4/Tools/ResourceBrowser/DepDlg.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

126 lines
3.0 KiB
C++

// DepDlg.cpp : implementation file
//
#include "stdafx.h"
#include "ResourceBrowser.h"
#include "DepDlg.h"
#include <MW4\MW4.hpp>
using namespace MechWarrior4;
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CDepDlg dialog
CDepDlg::CDepDlg(const char *resname,CWnd* pParent /*=NULL*/)
: CDialog(CDepDlg::IDD, pParent)
{
ResName=resname;
//{{AFX_DATA_INIT(CDepDlg)
//}}AFX_DATA_INIT
}
void CDepDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CDepDlg)
DDX_Control(pDX, IDC_DEPTREE, m_DepTree);
DDX_Control(pDX, IDC_CALLTREE, m_CallTree);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CDepDlg, CDialog)
//{{AFX_MSG_MAP(CDepDlg)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CDepDlg message handlers
BOOL CDepDlg::OnInitDialog()
{
CDialog::OnInitDialog();
FillDeps(ResName);
FillCallers(ResName);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CDepDlg::FillDeps(const char *resname,HTREEITEM par)
{
HTREEITEM itm=m_DepTree.InsertItem(resname,par);
short rfilenum;
for(rfilenum=0;rfilenum<FreeId;rfilenum++)
{
ResourceFile *rfile=ResourceManager::Instance->GetResourceFile(rfilenum);
Resource res(resname,rfile);
if(res.DoesResourceExist())
{
FileDependencies deps;
res.GetFileDependencies(&deps);
deps.m_fileNameStream.Rewind();
deps.m_fileNameStream.AdvancePointer(strlen((char *)deps.m_fileNameStream.GetPointer())+1);
while(deps.m_fileNameStream.GetBytesRemaining())
{
const char *ptr=(const char *)deps.m_fileNameStream.GetPointer();
FillDeps(ptr,itm);
deps.m_fileNameStream.AdvancePointer(strlen(ptr)+1);
}
}
}
}
void CDepDlg::FillCallers(const char *resname,HTREEITEM par)
{
HTREEITEM itm=m_CallTree.InsertItem(resname,par);
Resource res(resname);
if(res.DoesResourceExist())
{
Resource curres;
curres.First(NULL);
while(curres.ReadAndNext())
{
if(curres.GetResourceID().GetFileID()==TexturesResourceFileID ||
curres.GetResourceID().GetFileID()==CoreResourceFileID ||
curres.GetResourceID().GetFileID()==PropsResourceFileID
)
{
FileDependencies deps;
curres.GetFileDependencies(&deps);
deps.m_fileNameStream.Rewind();
if(deps.m_fileNameStream.GetBytesRemaining())
{
char *cresname=(char *)deps.m_fileNameStream.GetPointer();
deps.m_fileNameStream.AdvancePointer(strlen(cresname)+1);
while(deps.m_fileNameStream.GetBytesRemaining())
{
const char *ptr=(const char *)deps.m_fileNameStream.GetPointer();
if(!strcmpi(ptr,resname))
FillCallers(cresname,itm);
deps.m_fileNameStream.AdvancePointer(strlen(ptr)+1);
}
}
}
}
}
}