Files
2025-06-04 00:07:45 +02:00

125 lines
4.3 KiB
C++

#pragma once
#include "global.h"
#include "types.h"
#include "Map/Course_Unk_c8.hpp"
#include "Map/MapData.hpp"
#include "Physics/AABB.hpp"
#include "System/SysNew.hpp"
#define MAX_KEYS 8
typedef unk32 CourseType;
enum CourseType_ {
CourseType_Normal = 0,
CourseType_Dungeon = 1,
CourseType_Sea = 2,
CourseType_TempleOfTheOceanKing = 3,
CourseType_Battle = 4,
};
struct CourseProgress {
/* 0 */ unk32 flags;
/* 4 */ s8 numKeys;
/* 5 */ bool blueWarpOpen;
/* 6 */
};
class Course : public SysObject {
public:
/* 000 */ s32 mIndex;
/* 004 */ CourseType mType;
/* 008 */ unk32 mUnk_008;
/* 00c */ char mName[0x10];
/* 01c */ Vec2b mCurrMapPos; // position in the map grid
/* 01e */ unk8 mUnk_01e;
/* 01f */ unk8 mUnk_01f;
/* 020 */ u8 mMapGrid[10][10];
/* 084 */ Vec2b mMainGrid; // part of the grid where you can walk off screen to another map
/* 086 */ Vec2b mMainGridSize;
/* 088 */ s32 mScreenMapOffsetX;
/* 08c */ s32 mScreenMapOffsetY;
/* 090 */ unk32 mUnk_090;
/* 094 */ unk32 mUnk_094;
/* 098 */ AABB mBounds;
/* 0b0 */ u8 mNumMaps;
/* 0b1 */ u8 mUnk_0b1;
/* 0b2 */ unk8 mUnk_0b2;
/* 0b3 */ unk8 mUnk_0b3;
/* 0b4 */ unk32 mUnk_0b4;
/* 0b8 */ unk32 mUnk_0b8;
/* 0bc */ unk32 mUnk_0bc;
/* 0c0 */ unk32 mUnk_0c0;
/* 0c4 */ unk32 mUnk_0c4;
/* 0c8 */ Course_Unk_c8 *mUnk_0c8;
/* 0cc */ MapData *mMapData[100];
/* 25c */ bool mUnk_25c;
/* 25d */ bool mBlueWarpOpen;
/* 25e */ unk8 mUnk_25e;
/* 25f */ unk8 mUnk_25f;
/* 260 */ unk32 mNumKeys;
/* 264 */ unk32 mFlags0[1];
/* 268 */ unk32 mFlags1[1]; // knows which doors are open in a dungeon
/* 26c */
void GetDungeonProgress(CourseProgress *param_2);
void func_ov00_0207ca28(s32 param_2, unk32 param_3, unk32 param_4);
char *SetCourseName(char *src);
void func_ov00_0207ca78(unk32 param_2, unk8 param_3, unk32 param_4);
bool func_ov00_0207caa8(s32 param_2, unk32 *param_3, unk8 *param_4);
unk32 func_ov00_0207cb30(s32 param_2);
static void FindMapGridPos(Vec2b *pos, Course *param_2, u32 map);
Vec3p *FindMapCenter(unk32 map);
void func_ov00_0207cbe8(s32 param_2);
unk8 func_ov00_0207cc24(s32 param_2);
unk32 FindMapData_Unk_08(unk32 map);
void GetMCSFilePath(unk32 buf, s32 fileIndex, unk32 fileType);
void GetMRCFilePath(unk32 param_2, unk32 buf, unk32 param_4);
void func_ov00_0207ce20(unk32 param_2, unk32 param_3, char *param_4, unk32 param_5);
void func_ov00_0207ce4c(s32 param_2, s32 param_3, unk32 param_4, char *param_5, unk32 param_6);
bool func_ov00_0207d404(s32 param_2, unk32 param_3, unk32 param_4, unk32 param_5);
bool IsCurrentMapInMainGrid();
bool IsInMainGrid(s32 x, s32 y);
bool IsMapInMainGrid(u32 map);
bool GetMapScreenPos(s32 map, s32 *x, s32 *y);
u32 GetScreenMapCellSizeX();
u32 GetScreenMapCellSizeY();
unk32 Get_Unk_c8_00();
unk32 Get_Unk_c8_04();
bool IsAdjacentMapOnMainGrid(unk32 dir);
bool HasGridMap(s32 x, s32 y);
unk8 GetAdjacentMap(unk32 dir);
u32 GetAdjacentMapX(s32 ir);
u32 GetAdjacentMapY(s32 dir);
u16 FindCurrentMapData_Unk_04();
u32 FindMapData_Unk_04(unk32 param_2);
unk32 FindMapData_Unk_0c(unk32 map);
void func_ov00_0207d7bc();
void SetFlag0(u32 index, bool value);
bool GetFlag0(u32 index);
void SetFlag1(u32 index, bool value);
bool SetFlag1(u32 index);
void SetMapDataFlag0(unk32 index, bool value);
bool GetMapDataFlag0(unk32 param_2);
void SetMapDataFlag1(unk32 param_2, bool param_3);
bool GetMapDataFlag1(unk32 param_2);
void SetMapDataFlag2(unk32 param_2, bool param_3);
bool GetMapDataFlag2(unk32 param_2);
void SetMapDataFlag3(unk32 param_2, bool param_3);
bool GetMapDataFlag3(unk32 param_2);
void SetMapDataFlag4(unk32 param_2, bool param_3);
bool GetMapDataFlag4(unk32 param_2);
MapData *FindMapData(u32 map);
MapData *FindCurrentMapData();
Course();
~Course();
bool func_ov004_0210ee84(char *param1);
unk32 func_ov004_0210ef90(unk32 param1);
void func_ov004_0210f010();
void LoadMapData(u8 *map, s32 x, s32 y, char param4, unk32 param5);
bool func_ov004_0210f0fc(unk32 param1, unk16 *param2, s32 param3);
void func_ov004_0210f140(s32 param1);
};