mirror of
https://github.com/ACreTeam/ac-decomp
synced 2026-05-23 06:34:18 -04:00
75 lines
1.5 KiB
C++
75 lines
1.5 KiB
C++
#ifndef _JKRFILEFINDER_H
|
|
#define _JKRFILEFINDER_H
|
|
|
|
#include <dolphin/dvd.h>
|
|
#include <dolphin/os.h>
|
|
#include "types.h"
|
|
|
|
#ifdef __cplusplus
|
|
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
|
|
#endif
|