Files
ac-decomp/include/JSystem/JKernel/JKRFileFinder.h
T
2024-01-29 20:31:47 -05:00

79 lines
1.4 KiB
C++

#ifndef _JKRFILEFINDER_H
#define _JKRFILEFINDER_H
#include <dolphin/dvd.h>
#include <dolphin/os.h>
#include "types.h"
class JKRArchive;
struct JKRFileFinderBase
{
char* mFileName; // _00
int mFileIndex; // _04
u16 mFileID; // _08
u16 mFileTypeFlags; // _0A
};
class JKRFileFinder
{
public:
JKRFileFinder()
: mIsAvailable(false), mIsDir(false)
{
}
JKRFileFinderBase mBase;
virtual ~JKRFileFinder() {} // _08 (weak)
virtual bool findNextFile() = 0; // _0C
bool isAvailable() const
{
return mIsAvailable;
}
// _00 = VTBL
bool mIsAvailable; // _10
bool mIsDir; // _11
};
class JKRArcFinder : public JKRFileFinder
{
public:
JKRArcFinder(JKRArchive*, long, long);
virtual ~JKRArcFinder() {} // _08 (weak)
virtual bool findNextFile(); // _0C
// _00 = VTBL
// _00-_14 = JKRFileFinder
JKRArchive* mArchive; // _14
long mStartIndex; // _18
long mEndIndex; // _1C
long mNextIndex; // _20
};
class JKRDvdFinder : public JKRFileFinder
{
public:
JKRDvdFinder(const char*);
virtual ~JKRDvdFinder() // _08 (weak)
{
if (mIsDvdOpen)
{
DVDCloseDir(&mDir);
}
}
virtual bool findNextFile(); // _0C
// _00 = VTBL
// _00-_14 = JKRFileFinder
DVDDir mDir; // _14
bool mIsDvdOpen; // _20
};
#endif