mirror of
https://github.com/ACreTeam/ac-decomp
synced 2026-06-09 03:59:38 -04:00
Add & Link JKernel (#142)
* 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>
This commit is contained in:
@@ -0,0 +1,63 @@
|
||||
#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;
|
||||
}
|
||||
Reference in New Issue
Block a user