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

102 lines
2.0 KiB
C++

// FileNode.cpp: implementation of the FileNode class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "ResourceBrowser.h"
#include "FileNode.h"
#include <Adept\Adept.hpp>
#include <Stuff\Stuff.hpp>
using namespace Stuff;
using namespace Adept;
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
FileNode::FileNode(const char *fname)
{
FileName=fname;
Parent=NULL;
Children.SetLength(8);
ChildTot=0;
IsSorted=true;
}
void FileNode::AddChild(FileNode *new_child)
{
if(new_child->GetParent()) new_child->GetParent()->RemoveChild(new_child);
new_child->Parent=this;
if(Children.GetLength()<=ChildTot) Children.SetLength(Children.GetLength()+Children.GetLength()/2);
Children[ChildTot++]=new_child;
IsSorted=false;
}
void FileNode::RemoveChild(int loc)
{
Verify(loc>=0 && loc<ChildTot);
Children[loc]->Parent=NULL;
int i;
for(i=loc;i<(ChildTot-1);i++) Children[i]=Children[i+1];
}
int FileNode::FindChild(FileNode *child)
{
Verify(child->GetParent()==this);
int i;
for(i=0;i<ChildTot;i++) if(Children[i]==child) return i;
return -1;
}
void FileNode::OrganizeTree()
{
int i;
for(i=0;i<ChildTot;i++)
if(Children[i]) Children[i]->OrganizeTree(this);
}
void FileNode::OrganizeTree(FileNode *root_node)
{
Resource res(FileName);
if(res.DoesResourceExist())
{
Stuff::FileDependencies deps;
res.GetFileDependencies(&deps);
deps.m_fileNameStream.Rewind();
while(deps.m_fileNameStream.GetBytesRemaining())
{
char *ptr=(char *)deps.m_fileNameStream.GetPointer();
deps.m_fileNameStream.AdvancePointer(strlen(ptr)+1);
Resource childres(ptr);
if(childres.DoesResourceExist())
{
//Remove From MasterList
//Add To This
STOP(("Unimplemented"));
}
else
{
AddChild(new FileNode(ptr));
}
}
}
}
FileNode::~FileNode()
{
}