1#include "Project/Controller/PadDataArcReader.h"
2
3#include "Library/Controller/PadDataPack.h"
4#include "Library/Resource/ResourceUtil.h"
5
6namespace al {
7
8PadDataArcReader::PadDataArcReader(const char* path) : mPath(path) {
9 findOrCreateResource(path, nullptr);
10}
11
12PadDataArcReader::PadDataArcReader(const char* path, const char* resourceName) : mPath(path) {
13 readResource(resourceName);
14}
15
16void PadDataArcReader::readResource(const char* resourceName) {
17 mCursorFrame = 0;
18 Resource* resource = findOrCreateResource(mPath, nullptr);
19 sead::FixedSafeString<256> filename;
20 filename.format(formatStr: "%s.bin", resourceName);
21 mDataFrames = (PadDataPack*)resource->getOtherFile(filePath: filename);
22 checkEnd();
23 PadDataPack* checkFrame = mDataFrames;
24 while (checkFrame->trig != -1)
25 checkFrame++;
26 mTotalFrame = checkFrame - mDataFrames;
27}
28
29void PadDataArcReader::checkEnd() {
30 if (mDataFrames[mCursorFrame].trig == -1)
31 mIsEnd = true;
32}
33
34void PadDataArcReader::read(PadDataPack* frameData) {
35 if (mIsEnd)
36 return;
37
38 *frameData = mDataFrames[mCursorFrame++];
39 checkEnd();
40}
41
42} // namespace al
43