1#pragma once
2
3#include <basis/seadTypes.h>
4#include <container/seadPtrArray.h>
5#include <math/seadMatrix.h>
6
7class GameDataHolder;
8
9namespace nn::ui2d {
10class TextureInfo;
11}
12
13namespace al {
14class Resource;
15class IUseSceneObjHolder;
16} // namespace al
17
18struct MapData {
19 sead::Matrix44f viewProjMatrix;
20 sead::Matrix34f viewMatrix;
21 sead::Matrix44f projMatrix;
22 nn::ui2d::TextureInfo* texture2dMap;
23 void* field_b8; // TODO unknown type
24 s32 partsNum;
25 void** parts; // TODO unknown type
26 s32 worldScenarioNum;
27 sead::PtrArray<MapData> scenarioMapData;
28};
29
30class MapDataHolder {
31public:
32 MapDataHolder(const GameDataHolder*);
33 MapData* loadMapData(al::Resource*, const char*, s32);
34 MapData* tryLoadMapData(al::Resource*, const char*, s32);
35 const sead::Matrix34f& findViewMtx(s32) const;
36 const MapData& findMapData(s32) const;
37
38private:
39 sead::PtrArray<MapData> mMapDatas;
40 const GameDataHolder* mGameDataHolder;
41};
42
43namespace rs {
44MapData* findMapData(al::IUseSceneObjHolder*, s32);
45}
46