Kinoko
A reimplementation of Mario Kart Wii's physics engine in C++
Toggle main menu visibility
Loading...
Searching...
No Matches
ResDic.hh
1
#pragma once
2
3
#include <
Common.hh
>
4
5
#include <cstring>
6
7
// Credit: kiwi515/ogws
8
9
namespace
Kinoko::Abstract::g3d {
10
12
class
ResDic {
13
public
:
14
struct
NodeData
{
15
u16 ref;
16
u16 flag;
17
u16 idxLeft;
18
u16 idxRight;
19
s32 ofsString;
20
s32 ofsData;
21
};
22
STATIC_ASSERT(
sizeof
(
NodeData
) == 0x10);
23
24
struct
Data
{
25
u32 size;
26
u32 numData;
27
NodeData
data[1];
28
};
29
30
ResDic(
const
void
*data);
31
33
[[nodiscard]]
void
*operator[](
const
char
*name)
const
{
34
if
(!m_data || !name) {
35
return
nullptr
;
36
}
37
38
const
NodeData *node = get(name, std::strlen(name));
39
40
if
(node) {
41
return
reinterpret_cast<
void
*
>
(
42
reinterpret_cast<
uintptr_t
>
(m_data) + parse<s32>(node->ofsData));
43
}
44
45
return
nullptr
;
46
}
47
48
[[nodiscard]]
void
*operator[](
size_t
idx)
const
{
49
if
(!m_data) {
50
return
nullptr
;
51
}
52
53
const
NodeData *node = &m_data->data[idx + 1];
54
55
return
reinterpret_cast<
void
*
>
(
56
reinterpret_cast<
uintptr_t
>
(m_data) + parse<s32>(node->ofsData));
57
}
58
59
private
:
60
[[nodiscard]]
const
NodeData
*get(
const
char
*pName, u32 len)
const
;
61
62
const
Data
*m_data;
63
};
64
65
}
// namespace Kinoko::Abstract::g3d
Common.hh
This header houses common data types such as our integral types and enums.
Kinoko::Abstract::g3d::ResDic::Data
Definition
ResDic.hh:24
Kinoko::Abstract::g3d::ResDic::NodeData
Definition
ResDic.hh:14
abstract
g3d
ResDic.hh
Made by
Malleo
. Logo by
vabold
. Website generated by
Doxygen
1.17.0