mirror of
https://github.com/ACreTeam/ac-decomp
synced 2026-06-08 19:49:34 -04:00
80ef14e480
* match and link JKRAram.cpp * match and link JKRExpHeap * match and link JKRAramStream.cpp * match and link JKRFileLoader.cpp * match and link JKRFileFinder.cpp * JKernel Dump * match and link JKRAramArchive.cpp * match and link JKRDvdArchive.cpp * match and link JKRCompArchive.cpp * match but not link JKRDvdAramRipper * small refactors * match and link JKRThread.cpp * fix and link JKRDvdAramStream.cpp * Formatting fixes --------- Co-authored-by: SwareJonge <olaf23okken@gmail.com>
64 lines
1.6 KiB
C++
64 lines
1.6 KiB
C++
#include <dolphin/dvd.h>
|
|
#include "JSystem/JKernel/JKRFileFinder.h"
|
|
#include "JSystem/JKernel/JKRArchive.h"
|
|
|
|
JKRArcFinder::JKRArcFinder(JKRArchive* archive, long startindex, long entries) : JKRFileFinder()
|
|
{
|
|
mArchive = archive;
|
|
|
|
mIsAvailable = entries > 0;
|
|
mStartIndex = startindex;
|
|
mEndIndex = startindex + entries - 1;
|
|
mNextIndex = mStartIndex;
|
|
|
|
findNextFile();
|
|
}
|
|
|
|
bool JKRArcFinder::findNextFile()
|
|
{
|
|
if (mIsAvailable)
|
|
{
|
|
mIsAvailable = (mNextIndex <= mEndIndex);
|
|
if (mIsAvailable)
|
|
{
|
|
JKRArchive::SDirEntry dirEntry;
|
|
mIsAvailable = mArchive->getDirEntry(&dirEntry, mNextIndex);
|
|
mBase.mFileName = dirEntry.mName;
|
|
mBase.mFileIndex = mNextIndex;
|
|
mBase.mFileID = dirEntry.mID;
|
|
mBase.mFileTypeFlags = dirEntry.mFlags;
|
|
mIsFileOrDir = FLAG_OFF(mBase.mFileTypeFlags, 2);
|
|
mNextIndex++;
|
|
}
|
|
}
|
|
return mIsAvailable;
|
|
}
|
|
|
|
// UNUSED
|
|
JKRDvdFinder::JKRDvdFinder(const char* path) : JKRFileFinder()
|
|
{
|
|
mIsDvdOpen = DVDOpenDir(const_cast<char*>(path), &mDir);
|
|
mIsAvailable = mIsDvdOpen;
|
|
findNextFile();
|
|
}
|
|
|
|
// UNUSED, not sure if it matches
|
|
bool JKRDvdFinder::findNextFile()
|
|
{
|
|
if (mIsAvailable)
|
|
{
|
|
DVDDirEntry entry;
|
|
mIsAvailable = DVDReadDir(&mDir, &entry);
|
|
if (mIsAvailable)
|
|
{
|
|
mIsFileOrDir = (bool)entry.isDir;
|
|
mBase.mFileName = entry.name;
|
|
mBase.mFileIndex = entry.entryNum;
|
|
mBase.mFileID = 0;
|
|
|
|
mBase.mFileTypeFlags = mIsFileOrDir ? 2 : 1;
|
|
}
|
|
}
|
|
return mIsAvailable;
|
|
}
|