blob: cc0258face700e39f86ee9cc18ce7b41fbd71656 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
|
#include "JSystem/JSystem.h" // IWYU pragma: keep
#include "JSystem/JUtility/JUTResource.h"
#include "JSystem/JKernel/JKRArchive.h"
#include "JSystem/JSupport/JSUInputStream.h"
#include <cstring>
void* JUTResReference::getResource(JSUInputStream* stream, u32 resType, JKRArchive* archive) {
stream->read(mType);
stream->read(mNameLength);
stream->read(&mName, mNameLength);
if (mType == RESTYPE_Unk2 || mType == RESTYPE_Unk3 || mType == RESTYPE_Unk4) {
mName[mNameLength] = 0;
}
return getResource(resType, archive);
}
void* JUTResReference::getResource(const void* data, u32 resType, JKRArchive* archive) {
const u8* pData = (const u8*)data;
mType = pData[0];
mNameLength = pData[1];
if (mNameLength != 0) {
memcpy(&mName, &pData[2], mNameLength);
}
if (mType == RESTYPE_Unk2 || mType == RESTYPE_Unk3 || mType == RESTYPE_Unk4) {
mName[mNameLength] = 0;
}
return getResource(resType, archive);
}
void* JUTResReference::getResource(u32 resType, JKRArchive* archive) {
void* res = NULL;
switch (mType) {
case RESTYPE_Unk1:
break;
case RESTYPE_Unk2:
res = JKRGetTypeResource(resType, mName, archive);
break;
case RESTYPE_Unk3:
res = JKRGetNameResource(mName, archive);
break;
case RESTYPE_Unk4:
res = JKRGetResource(mName);
break;
}
return res;
}
|