mirror of
https://github.com/pret/pokeplatinum.git
synced 2026-04-25 15:49:02 -05:00
TerrainCollisionManager
Name is open to suggestions
This commit is contained in:
parent
a844494a36
commit
bef2da552a
|
|
@ -53,7 +53,7 @@ typedef struct FieldSystem_t {
|
|||
SaveData *saveData;
|
||||
TaskManager *unk_10;
|
||||
MapHeaderData *mapHeaderData;
|
||||
int unk_18;
|
||||
int bottomScreen;
|
||||
Location *location;
|
||||
int unk_20;
|
||||
Camera *camera;
|
||||
|
|
@ -70,7 +70,7 @@ typedef struct FieldSystem_t {
|
|||
UnkStruct_ov5_021D3CAC *unk_50;
|
||||
UnkStruct_ov5_021D41B4 *unk_54;
|
||||
UnkStruct_02054C18 *unk_58;
|
||||
const UnkStruct_02054F44 *unk_5C;
|
||||
const TerrainCollisionManager *unk_5C;
|
||||
int unk_60;
|
||||
UnkStruct_ov5_021E1B20 *unk_64;
|
||||
BOOL unk_68;
|
||||
|
|
|
|||
|
|
@ -21,12 +21,12 @@ void sub_02053A80(TaskManager *param0, int param1, int param2, int param3, int p
|
|||
void sub_02053AB4(FieldSystem *fieldSystem, int param1, int param2, int param3, int param4, int param5);
|
||||
void sub_02053AFC(TaskManager *param0, int param1, int param2, int param3, int param4, int param5);
|
||||
void sub_02053CD4(TaskManager *param0, const Location *param1, u32 param2);
|
||||
void sub_02053F58(FieldSystem *fieldSystem, int param1, int param2);
|
||||
void FieldSystem_StartMapChangeWarpTask(FieldSystem *fieldSystem, int param1, int param2);
|
||||
void *sub_02053FAC(FieldSystem *fieldSystem);
|
||||
void sub_02054064(FieldSystem *fieldSystem);
|
||||
BOOL sub_02054084(TaskManager *param0);
|
||||
BOOL FieldTask_MapChangeToUnderground(TaskManager *param0);
|
||||
BOOL sub_0205430C(TaskManager *param0);
|
||||
FieldTask sub_02054428(const FieldSystem *fieldSystem);
|
||||
FieldTask FieldMapChange_GetMapChangeUndergroundTask(const FieldSystem *fieldSystem);
|
||||
void sub_020544F0(TaskManager *param0, const Location *param1);
|
||||
void sub_020545EC(FieldSystem *fieldSystem);
|
||||
void sub_02054708(TaskManager *param0);
|
||||
|
|
|
|||
|
|
@ -3,6 +3,6 @@
|
|||
|
||||
#include "field/field_system_decl.h"
|
||||
|
||||
void ov5_021E15A8(FieldSystem *fieldSystem, BOOL param1, BOOL *param2);
|
||||
void FieldSystem_StartWarpAnimation(FieldSystem *fieldSystem, BOOL param1, BOOL *param2);
|
||||
|
||||
#endif // POKEPLATINUM_OV5_021E135C_H
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
#ifndef POKEPLATINUM_STRUCT_02054F44_DECL_H
|
||||
#define POKEPLATINUM_STRUCT_02054F44_DECL_H
|
||||
|
||||
typedef struct UnkStruct_02054F44_t UnkStruct_02054F44;
|
||||
typedef struct TerrainCollisionManager_t TerrainCollisionManager;
|
||||
|
||||
#endif // POKEPLATINUM_STRUCT_02054F44_DECL_H
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@
|
|||
#include "field/field_system_decl.h"
|
||||
#include "overlay005/struct_ov5_021E1890_decl.h"
|
||||
|
||||
void sub_02054F44(const UnkStruct_02054F44 **param0, int param1);
|
||||
void sub_02054F44(const TerrainCollisionManager **param0, int param1);
|
||||
BOOL FieldSystem_CheckCollision(const FieldSystem *fieldSystem, const int param1, const int param2);
|
||||
u8 sub_02054F94(const FieldSystem *fieldSystem, const int param1, const int param2);
|
||||
const fx32 sub_02054FBC(const FieldSystem *fieldSystem, const fx32 param1, const fx32 param2, const fx32 param3, u8 *param4);
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@ BOOL sub_0205DC08(u8 param0);
|
|||
BOOL sub_0205DC14(u8 param0);
|
||||
BOOL sub_0205DC20(u8 param0);
|
||||
BOOL sub_0205DC2C(u8 param0);
|
||||
BOOL sub_0205DC38(u8 param0);
|
||||
BOOL TileBehavior_IsEscalator(u8 param0);
|
||||
BOOL sub_0205DC44(u8 param0);
|
||||
BOOL sub_0205DC50(u8 param0);
|
||||
BOOL sub_0205DC5C(u8 param0);
|
||||
|
|
@ -74,7 +74,7 @@ BOOL sub_0205DEB4(u8 param0);
|
|||
BOOL sub_0205DEC0(u8 param0);
|
||||
BOOL sub_0205DECC(u8 param0);
|
||||
BOOL sub_0205DED8(u8 param0);
|
||||
BOOL sub_0205DEE4(u8 param0);
|
||||
BOOL TileBehavior_IsWarp(u8 param0);
|
||||
BOOL sub_0205DEF0(u8 param0);
|
||||
BOOL sub_0205DEFC(u8 param0);
|
||||
BOOL sub_0205DF10(u8 param0);
|
||||
|
|
|
|||
|
|
@ -81,10 +81,10 @@
|
|||
FS_EXTERN_OVERLAY(overlay23);
|
||||
|
||||
typedef struct {
|
||||
int unk_00;
|
||||
Location unk_04;
|
||||
int state;
|
||||
Location nextLocation;
|
||||
UnkStruct_ov5_021D432C *unk_18;
|
||||
} UnkStruct_02053900;
|
||||
} MapChangeData;
|
||||
|
||||
typedef struct {
|
||||
int state;
|
||||
|
|
@ -99,9 +99,9 @@ typedef struct {
|
|||
} UnkStruct_02053AB4;
|
||||
|
||||
typedef struct {
|
||||
BOOL unk_00;
|
||||
Location unk_04;
|
||||
} UnkStruct_02053718;
|
||||
BOOL finishedFlag;
|
||||
Location location;
|
||||
} MapChangeFromErrorData;
|
||||
|
||||
typedef struct {
|
||||
int unk_00;
|
||||
|
|
@ -111,10 +111,10 @@ typedef struct {
|
|||
} UnkStruct_02053CD4;
|
||||
|
||||
typedef struct {
|
||||
int unk_00;
|
||||
BOOL unk_04;
|
||||
Location unk_08;
|
||||
} UnkStruct_02053E98;
|
||||
int state;
|
||||
BOOL warpFinished;
|
||||
Location nextLocation;
|
||||
} MapChangeWarpData;
|
||||
|
||||
typedef struct {
|
||||
int unk_00;
|
||||
|
|
@ -130,7 +130,7 @@ typedef struct {
|
|||
Strbuf *unk_34;
|
||||
u8 unk_38;
|
||||
UIControlData *unk_3C;
|
||||
} UnkStruct_02053FAC;
|
||||
} MapChangeUndergroundData;
|
||||
|
||||
typedef struct {
|
||||
int unk_00;
|
||||
|
|
@ -141,7 +141,7 @@ typedef struct {
|
|||
static BOOL FieldTask_ChangeMap(TaskManager *taskMan);
|
||||
static BOOL FieldTask_LoadNewGameSpawn(TaskManager *taskMan);
|
||||
static void FieldMapChange_SetNewLocation(FieldSystem *fieldSystem, const Location *param1);
|
||||
static void sub_020533CC(FieldSystem *fieldSystem);
|
||||
static void FieldMapChange_InitTerrainCollisionManager(FieldSystem *fieldSystem);
|
||||
static void sub_02053468(FieldSystem *fieldSystem);
|
||||
static void FieldMapChange_CreatePlayerObject(FieldSystem *fieldSystem);
|
||||
static void sub_02053374(FieldSystem *fieldSystem);
|
||||
|
|
@ -219,12 +219,12 @@ static void FieldMapChange_SetNewLocation(FieldSystem *fieldSystem, const Locati
|
|||
MapHeaderData_Load(fieldSystem, fieldSystem->location->mapId);
|
||||
|
||||
if (fieldSystem->location->unk_04 != -1) {
|
||||
const WarpEvent *v2 = MapHeaderData_GetWarpEventByIndex(fieldSystem, fieldSystem->location->unk_04);
|
||||
const WarpEvent *warpEvent = MapHeaderData_GetWarpEventByIndex(fieldSystem, fieldSystem->location->unk_04);
|
||||
|
||||
fieldSystem->location->x = v2->x;
|
||||
fieldSystem->location->z = v2->z;
|
||||
fieldSystem->location->x = warpEvent->x;
|
||||
fieldSystem->location->z = warpEvent->z;
|
||||
|
||||
if (v2->destWarpID == 0x100) {
|
||||
if (warpEvent->destWarpID == 0x100) {
|
||||
Location *v3, *entrance;
|
||||
|
||||
v3 = sub_0203A730(fieldState);
|
||||
|
|
@ -371,7 +371,7 @@ static void FieldMapChange_LoadObjects(FieldSystem *fieldSystem)
|
|||
MapObjectMan_StopAllMovement(fieldSystem->mapObjMan);
|
||||
}
|
||||
|
||||
static void sub_020533CC(FieldSystem *fieldSystem)
|
||||
static void FieldMapChange_InitTerrainCollisionManager(FieldSystem *fieldSystem)
|
||||
{
|
||||
sub_020530C8(fieldSystem);
|
||||
GF_ASSERT(fieldSystem->unk_5C == NULL);
|
||||
|
|
@ -389,7 +389,7 @@ static void sub_020533CC(FieldSystem *fieldSystem)
|
|||
|
||||
fieldSystem->mapLoadMode = &sMapLoadMode[fieldSystem->mapLoadType];
|
||||
fieldSystem->unk_60 = fieldSystem->mapLoadMode->unk_00_4;
|
||||
fieldSystem->unk_18 = fieldSystem->mapLoadMode->fieldBottomScreen;
|
||||
fieldSystem->bottomScreen = fieldSystem->mapLoadMode->fieldBottomScreen;
|
||||
|
||||
sub_02054F44(&fieldSystem->unk_5C, fieldSystem->mapLoadMode->unk_00_8);
|
||||
|
||||
|
|
@ -403,7 +403,7 @@ static void sub_02053468(FieldSystem *fieldSystem)
|
|||
GF_ASSERT(fieldSystem->unk_5C != NULL);
|
||||
|
||||
fieldSystem->unk_5C = NULL;
|
||||
fieldSystem->unk_18 = 5;
|
||||
fieldSystem->bottomScreen = 5;
|
||||
|
||||
if (fieldSystem->mapLoadMode->unk_00_16) {
|
||||
sub_02054BF8(fieldSystem);
|
||||
|
|
@ -415,9 +415,7 @@ static void sub_02053468(FieldSystem *fieldSystem)
|
|||
void sub_02053494(FieldSystem *fieldSystem)
|
||||
{
|
||||
if (fieldSystem->journal != NULL) {
|
||||
void *v0;
|
||||
|
||||
v0 = sub_0202BC58(fieldSystem->location->mapId, 11);
|
||||
void *v0 = sub_0202BC58(fieldSystem->location->mapId, 11);
|
||||
Journal_SaveData(fieldSystem->journal, v0, 0);
|
||||
}
|
||||
}
|
||||
|
|
@ -460,7 +458,7 @@ static BOOL FieldTask_LoadNewGameSpawn(TaskManager *taskMan)
|
|||
switch (*state) {
|
||||
case 0:
|
||||
FieldMapChange_SetNewLocation(fieldSystem, fieldSystem->location);
|
||||
sub_020533CC(fieldSystem);
|
||||
FieldMapChange_InitTerrainCollisionManager(fieldSystem);
|
||||
FieldMapChange_UpdateGameData(fieldSystem, 0);
|
||||
FieldMapChange_CreateObjects(fieldSystem);
|
||||
(*state)++;
|
||||
|
|
@ -510,12 +508,12 @@ static BOOL FieldTask_LoadSavedGameMap(TaskManager *taskMan)
|
|||
|
||||
CommClub_ResetAvailable(varsFlags);
|
||||
FieldMapChange_SetNewLocation(fieldSystem, sub_0203A730(fieldState));
|
||||
sub_020533CC(fieldSystem);
|
||||
FieldMapChange_InitTerrainCollisionManager(fieldSystem);
|
||||
FieldMapChange_UpdateGameData(fieldSystem, 0);
|
||||
FieldMapChange_CreateObjects(fieldSystem);
|
||||
} else {
|
||||
FieldMapChange_SetNewLocation(fieldSystem, NULL);
|
||||
sub_020533CC(fieldSystem);
|
||||
FieldMapChange_InitTerrainCollisionManager(fieldSystem);
|
||||
sub_020559DC(fieldSystem);
|
||||
FieldMapChange_LoadObjects(fieldSystem);
|
||||
}
|
||||
|
|
@ -549,8 +547,8 @@ void FieldSystem_SetLoadSavedGameMapTask(FieldSystem *fieldSystem)
|
|||
static BOOL FieldTask_LoadMapFromError(TaskManager *taskMan)
|
||||
{
|
||||
FieldSystem *fieldSystem = TaskManager_FieldSystem(taskMan);
|
||||
UnkStruct_02053718 *v1 = TaskManager_Environment(taskMan);
|
||||
VarsFlags *v2 = SaveData_GetVarsFlags(fieldSystem->saveData);
|
||||
MapChangeFromErrorData *errorData = TaskManager_Environment(taskMan);
|
||||
VarsFlags *varsFlags = SaveData_GetVarsFlags(fieldSystem->saveData);
|
||||
int *state = FieldTask_GetState(taskMan);
|
||||
|
||||
switch (*state) {
|
||||
|
|
@ -558,12 +556,12 @@ static BOOL FieldTask_LoadMapFromError(TaskManager *taskMan)
|
|||
sub_0200F344(0, 0x0);
|
||||
sub_0200F344(1, 0x0);
|
||||
sub_0202878C(fieldSystem->saveData);
|
||||
fieldSystem->journal = Journal_GetSavedPage(SaveData_GetJournal(fieldSystem->saveData), inline_020535E8(v2));
|
||||
fieldSystem->journal = Journal_GetSavedPage(SaveData_GetJournal(fieldSystem->saveData), inline_020535E8(varsFlags));
|
||||
(*state)++;
|
||||
break;
|
||||
case 1:
|
||||
FieldMapChange_SetNewLocation(fieldSystem, &v1->unk_04);
|
||||
sub_020533CC(fieldSystem);
|
||||
FieldMapChange_SetNewLocation(fieldSystem, &errorData->location);
|
||||
FieldMapChange_InitTerrainCollisionManager(fieldSystem);
|
||||
FieldMapChange_UpdateGameData(fieldSystem, 0);
|
||||
FieldMapChange_CreateObjects(fieldSystem);
|
||||
sub_020534BC(fieldSystem);
|
||||
|
|
@ -576,17 +574,17 @@ static BOOL FieldTask_LoadMapFromError(TaskManager *taskMan)
|
|||
(*state)++;
|
||||
break;
|
||||
case 3:
|
||||
v1->unk_00 = 0;
|
||||
ov5_021E15A8(fieldSystem, 0, &v1->unk_00);
|
||||
errorData->finishedFlag = FALSE;
|
||||
FieldSystem_StartWarpAnimation(fieldSystem, 0, &errorData->finishedFlag);
|
||||
(*state)++;
|
||||
break;
|
||||
case 4:
|
||||
if (v1->unk_00) {
|
||||
if (errorData->finishedFlag) {
|
||||
(*state)++;
|
||||
}
|
||||
break;
|
||||
case 5:
|
||||
Heap_FreeToHeap(v1);
|
||||
Heap_FreeToHeap(errorData);
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
|
@ -595,7 +593,7 @@ static BOOL FieldTask_LoadMapFromError(TaskManager *taskMan)
|
|||
|
||||
void FieldSystem_StartLoadMapFromErrorTask(FieldSystem *fieldSystem)
|
||||
{
|
||||
UnkStruct_02053718 *v1;
|
||||
MapChangeFromErrorData *errorData;
|
||||
|
||||
if (!MapHeader_IsUnionRoom(fieldSystem->location->mapId)) {
|
||||
if (FieldSystem_IsSaveInUnionRoom(fieldSystem)) {
|
||||
|
|
@ -609,30 +607,30 @@ void FieldSystem_StartLoadMapFromErrorTask(FieldSystem *fieldSystem)
|
|||
}
|
||||
}
|
||||
|
||||
v1 = Heap_AllocFromHeapAtEnd(11, sizeof(UnkStruct_02053718));
|
||||
v1->unk_00 = 0;
|
||||
errorData = Heap_AllocFromHeapAtEnd(11, sizeof(MapChangeFromErrorData));
|
||||
errorData->finishedFlag = FALSE;
|
||||
|
||||
Location_Set(&v1->unk_04, 466, -1, 8, 14, 0);
|
||||
Location_Set(&errorData->location, 466, -1, 8, 14, 0);
|
||||
fieldSystem->mapLoadType = MAP_LOAD_TYPE_UNION;
|
||||
FieldTask_Set(fieldSystem, FieldTask_LoadMapFromError, v1);
|
||||
FieldTask_Set(fieldSystem, FieldTask_LoadMapFromError, errorData);
|
||||
}
|
||||
|
||||
static BOOL FieldTask_ChangeMap(TaskManager *taskMan)
|
||||
{
|
||||
FieldSystem *fieldSystem = TaskManager_FieldSystem(taskMan);
|
||||
UnkStruct_02053900 *v1 = TaskManager_Environment(taskMan);
|
||||
Location *location = &v1->unk_04;
|
||||
MapChangeData *mapChangeData = TaskManager_Environment(taskMan);
|
||||
Location *location = &mapChangeData->nextLocation;
|
||||
|
||||
switch (v1->unk_00) {
|
||||
switch (mapChangeData->state) {
|
||||
case 0:
|
||||
Sound_PlayEffect(1539);
|
||||
Sound_TryFadeInBGM(fieldSystem, location->mapId);
|
||||
sub_02055974(taskMan);
|
||||
(v1->unk_00)++;
|
||||
(mapChangeData->state)++;
|
||||
break;
|
||||
case 1:
|
||||
sub_020539A0(taskMan, &v1->unk_04);
|
||||
(v1->unk_00)++;
|
||||
sub_020539A0(taskMan, &mapChangeData->nextLocation);
|
||||
(mapChangeData->state)++;
|
||||
break;
|
||||
case 2:
|
||||
if (Sound_CheckFade() != 0) {
|
||||
|
|
@ -641,10 +639,10 @@ static BOOL FieldTask_ChangeMap(TaskManager *taskMan)
|
|||
|
||||
Sound_PlayMapBGM(fieldSystem, location->mapId);
|
||||
FieldTask_StartFadeIn(taskMan);
|
||||
(v1->unk_00)++;
|
||||
(mapChangeData->state)++;
|
||||
break;
|
||||
case 3:
|
||||
Heap_FreeToHeap(v1);
|
||||
Heap_FreeToHeap(mapChangeData);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
|
@ -653,12 +651,12 @@ static BOOL FieldTask_ChangeMap(TaskManager *taskMan)
|
|||
|
||||
void FieldSystem_StartChangeMapTask(TaskManager *taskMan, const Location *nextLocation)
|
||||
{
|
||||
UnkStruct_02053900 *v0 = Heap_AllocFromHeapAtEnd(11, sizeof(UnkStruct_02053900));
|
||||
MapChangeData *mapChangeData = Heap_AllocFromHeapAtEnd(11, sizeof(MapChangeData));
|
||||
|
||||
v0->unk_00 = 0;
|
||||
v0->unk_04 = *nextLocation;
|
||||
mapChangeData->state = 0;
|
||||
mapChangeData->nextLocation = *nextLocation;
|
||||
|
||||
FieldTask_Start(taskMan, FieldTask_ChangeMap, v0);
|
||||
FieldTask_Start(taskMan, FieldTask_ChangeMap, mapChangeData);
|
||||
}
|
||||
|
||||
static BOOL FieldTask_ChangeMapSub(TaskManager *taskMan)
|
||||
|
|
@ -674,7 +672,7 @@ static BOOL FieldTask_ChangeMapSub(TaskManager *taskMan)
|
|||
break;
|
||||
case 1:
|
||||
FieldMapChange_SetNewLocation(fieldSystem, &v2->unk_04);
|
||||
sub_020533CC(fieldSystem);
|
||||
FieldMapChange_InitTerrainCollisionManager(fieldSystem);
|
||||
FieldMapChange_UpdateGameData(fieldSystem, 0);
|
||||
RadarChain_Clear(fieldSystem->chain);
|
||||
(v2->state)++;
|
||||
|
|
@ -1010,91 +1008,89 @@ static void sub_02053E5C(TaskManager *taskMan)
|
|||
return;
|
||||
}
|
||||
|
||||
{
|
||||
void *v2 = ov6_022472C8(fieldSystem, 4, v1->unk_04);
|
||||
FieldTask_Start(taskMan, ov6_022472E8, v2);
|
||||
}
|
||||
void *v2 = ov6_022472C8(fieldSystem, 4, v1->unk_04);
|
||||
FieldTask_Start(taskMan, ov6_022472E8, v2);
|
||||
}
|
||||
|
||||
static BOOL sub_02053E98(TaskManager *taskMan)
|
||||
static BOOL FieldTask_MapChangeWarp(TaskManager *taskMan)
|
||||
{
|
||||
FieldSystem *fieldSystem = TaskManager_FieldSystem(taskMan);
|
||||
UnkStruct_02053E98 *v1 = TaskManager_Environment(taskMan);
|
||||
Location *v2 = &v1->unk_08;
|
||||
MapChangeWarpData *mapChangeWarpData = TaskManager_Environment(taskMan);
|
||||
Location *nextLocation = &mapChangeWarpData->nextLocation;
|
||||
|
||||
switch (v1->unk_00) {
|
||||
switch (mapChangeWarpData->state) {
|
||||
case 0:
|
||||
ov5_021E15A8(fieldSystem, 1, &v1->unk_04);
|
||||
v1->unk_00++;
|
||||
FieldSystem_StartWarpAnimation(fieldSystem, 1, &mapChangeWarpData->warpFinished);
|
||||
mapChangeWarpData->state++;
|
||||
break;
|
||||
case 1:
|
||||
if (v1->unk_04) {
|
||||
Sound_TryFadeInBGM(fieldSystem, v2->mapId);
|
||||
if (mapChangeWarpData->warpFinished) {
|
||||
Sound_TryFadeInBGM(fieldSystem, nextLocation->mapId);
|
||||
sub_02055820(taskMan);
|
||||
v1->unk_00++;
|
||||
mapChangeWarpData->state++;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
sub_020539A0(taskMan, &v1->unk_08);
|
||||
v1->unk_00++;
|
||||
sub_020539A0(taskMan, &mapChangeWarpData->nextLocation);
|
||||
mapChangeWarpData->state++;
|
||||
break;
|
||||
case 3:
|
||||
if (Sound_CheckFade() != 0) {
|
||||
break;
|
||||
}
|
||||
|
||||
Sound_PlayMapBGM(fieldSystem, v2->mapId);
|
||||
Sound_PlayMapBGM(fieldSystem, nextLocation->mapId);
|
||||
sub_02055868(taskMan);
|
||||
v1->unk_00++;
|
||||
mapChangeWarpData->state++;
|
||||
break;
|
||||
case 4:
|
||||
v1->unk_04 = 0;
|
||||
ov5_021E15A8(fieldSystem, 0, &v1->unk_04);
|
||||
v1->unk_00++;
|
||||
mapChangeWarpData->warpFinished = FALSE;
|
||||
FieldSystem_StartWarpAnimation(fieldSystem, 0, &mapChangeWarpData->warpFinished);
|
||||
mapChangeWarpData->state++;
|
||||
break;
|
||||
case 5:
|
||||
if (v1->unk_04) {
|
||||
v1->unk_00++;
|
||||
if (mapChangeWarpData->warpFinished) {
|
||||
mapChangeWarpData->state++;
|
||||
}
|
||||
break;
|
||||
case 6:
|
||||
Heap_FreeToHeap(v1);
|
||||
Heap_FreeToHeap(mapChangeWarpData);
|
||||
return 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void sub_02053F58(FieldSystem *fieldSystem, int param1, int param2)
|
||||
void FieldSystem_StartMapChangeWarpTask(FieldSystem *fieldSystem, int param1, int param2)
|
||||
{
|
||||
Location v0;
|
||||
UnkStruct_02053E98 *v1 = Heap_AllocFromHeapAtEnd(11, sizeof(UnkStruct_02053E98));
|
||||
Location nextLocation;
|
||||
MapChangeWarpData *mapChangeWarpData = Heap_AllocFromHeapAtEnd(11, sizeof(MapChangeWarpData));
|
||||
|
||||
MI_CpuClear8(v1, sizeof(UnkStruct_02053E98));
|
||||
MI_CpuClear8(mapChangeWarpData, sizeof(MapChangeWarpData));
|
||||
|
||||
Location_Set(&v0, param1, param2, 0, 0, PlayerAvatar_GetDir(fieldSystem->playerAvatar));
|
||||
v1->unk_08 = v0;
|
||||
FieldTask_Set(fieldSystem, sub_02053E98, v1);
|
||||
Location_Set(&nextLocation, param1, param2, 0, 0, PlayerAvatar_GetDir(fieldSystem->playerAvatar));
|
||||
mapChangeWarpData->nextLocation = nextLocation;
|
||||
FieldTask_Set(fieldSystem, FieldTask_MapChangeWarp, mapChangeWarpData);
|
||||
}
|
||||
|
||||
void *sub_02053FAC(FieldSystem *fieldSystem)
|
||||
{
|
||||
UnkStruct_02053FAC *v0;
|
||||
MapChangeUndergroundData *mapChangeUndergroundData;
|
||||
Location *v1 = sub_0203A730(SaveData_GetFieldOverworldState(fieldSystem->saveData));
|
||||
|
||||
v0 = Heap_AllocFromHeapAtEnd(11, sizeof(UnkStruct_02053FAC));
|
||||
v0->unk_00 = 0;
|
||||
v0->unk_04 = 0;
|
||||
mapChangeUndergroundData = Heap_AllocFromHeapAtEnd(11, sizeof(MapChangeUndergroundData));
|
||||
mapChangeUndergroundData->unk_00 = 0;
|
||||
mapChangeUndergroundData->unk_04 = 0;
|
||||
|
||||
if (fieldSystem->mapLoadType == MAP_LOAD_TYPE_UNDERGROUND) {
|
||||
v0->unk_08 = v1->mapId;
|
||||
v0->unk_0C = -1;
|
||||
v0->unk_10 = v1->x;
|
||||
v0->unk_14 = v1->z;
|
||||
mapChangeUndergroundData->unk_08 = v1->mapId;
|
||||
mapChangeUndergroundData->unk_0C = -1;
|
||||
mapChangeUndergroundData->unk_10 = v1->x;
|
||||
mapChangeUndergroundData->unk_14 = v1->z;
|
||||
} else {
|
||||
Location_SetToPlayerLocation(v1, fieldSystem);
|
||||
v0->unk_08 = 2;
|
||||
v0->unk_0C = -1;
|
||||
mapChangeUndergroundData->unk_08 = 2;
|
||||
mapChangeUndergroundData->unk_0C = -1;
|
||||
|
||||
{
|
||||
int v2, v3;
|
||||
|
|
@ -1120,61 +1116,61 @@ void *sub_02053FAC(FieldSystem *fieldSystem)
|
|||
|
||||
v4 = (v4 / 2) + 1;
|
||||
v5 = (v5 / 2) + 2 + 1;
|
||||
v0->unk_10 = v4 * 32 + v2;
|
||||
v0->unk_14 = v5 * 32 + v3;
|
||||
mapChangeUndergroundData->unk_10 = v4 * 32 + v2;
|
||||
mapChangeUndergroundData->unk_14 = v5 * 32 + v3;
|
||||
}
|
||||
}
|
||||
|
||||
return v0;
|
||||
return mapChangeUndergroundData;
|
||||
}
|
||||
|
||||
void sub_02054064(FieldSystem *fieldSystem)
|
||||
{
|
||||
UnkStruct_02053FAC *v0 = sub_02053FAC(fieldSystem);
|
||||
MapChangeUndergroundData *mapChangeUndergroundData = sub_02053FAC(fieldSystem);
|
||||
|
||||
if (v0 == NULL) {
|
||||
if (mapChangeUndergroundData == NULL) {
|
||||
return;
|
||||
}
|
||||
|
||||
FieldTask_Set(fieldSystem, sub_02054428(fieldSystem), v0);
|
||||
FieldTask_Set(fieldSystem, FieldMapChange_GetMapChangeUndergroundTask(fieldSystem), mapChangeUndergroundData);
|
||||
}
|
||||
|
||||
BOOL sub_02054084(TaskManager *taskMan)
|
||||
BOOL FieldTask_MapChangeToUnderground(TaskManager *taskMan)
|
||||
{
|
||||
FieldSystem *fieldSystem = TaskManager_FieldSystem(taskMan);
|
||||
UnkStruct_02053FAC *v1 = TaskManager_Environment(taskMan);
|
||||
MapChangeUndergroundData *mapChangeUndergroundData = TaskManager_Environment(taskMan);
|
||||
|
||||
switch (v1->unk_00) {
|
||||
switch (mapChangeUndergroundData->unk_00) {
|
||||
case 0:
|
||||
MessageLoader *v2 = MessageLoader_Init(1, 26, 221, 11);
|
||||
|
||||
v1->unk_34 = MessageLoader_GetNewStrbuf(v2, 124);
|
||||
mapChangeUndergroundData->unk_34 = MessageLoader_GetNewStrbuf(v2, 124);
|
||||
MessageLoader_Free(v2);
|
||||
|
||||
FieldMessage_AddWindow(fieldSystem->unk_08, &v1->unk_24, 3);
|
||||
FieldMessage_DrawWindow(&v1->unk_24, SaveData_Options(fieldSystem->saveData));
|
||||
v1->unk_38 = FieldMessage_Print(&v1->unk_24, v1->unk_34, SaveData_Options(fieldSystem->saveData), 1);
|
||||
v1->unk_00 = 1;
|
||||
FieldMessage_AddWindow(fieldSystem->unk_08, &mapChangeUndergroundData->unk_24, 3);
|
||||
FieldMessage_DrawWindow(&mapChangeUndergroundData->unk_24, SaveData_Options(fieldSystem->saveData));
|
||||
mapChangeUndergroundData->unk_38 = FieldMessage_Print(&mapChangeUndergroundData->unk_24, mapChangeUndergroundData->unk_34, SaveData_Options(fieldSystem->saveData), 1);
|
||||
mapChangeUndergroundData->unk_00 = 1;
|
||||
break;
|
||||
case 1:
|
||||
if (FieldMessage_FinishedPrinting(v1->unk_38) == 1) {
|
||||
Strbuf_Free(v1->unk_34);
|
||||
if (FieldMessage_FinishedPrinting(mapChangeUndergroundData->unk_38) == 1) {
|
||||
Strbuf_Free(mapChangeUndergroundData->unk_34);
|
||||
sub_0200DAA4(fieldSystem->unk_08, 3, 1024 - (18 + 12) - 9, 11, 0, 11);
|
||||
v1->unk_3C = sub_02002100(fieldSystem->unk_08, &Unk_020EC3A0, 1024 - (18 + 12) - 9, 11, 11);
|
||||
v1->unk_00 = 2;
|
||||
mapChangeUndergroundData->unk_3C = sub_02002100(fieldSystem->unk_08, &Unk_020EC3A0, 1024 - (18 + 12) - 9, 11, 11);
|
||||
mapChangeUndergroundData->unk_00 = 2;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
switch (sub_02002114(v1->unk_3C, 11)) {
|
||||
switch (sub_02002114(mapChangeUndergroundData->unk_3C, 11)) {
|
||||
case 0:
|
||||
sub_0200E084(&v1->unk_24, 0);
|
||||
BGL_DeleteWindow(&v1->unk_24);
|
||||
v1->unk_00 = 3;
|
||||
sub_0200E084(&mapChangeUndergroundData->unk_24, 0);
|
||||
BGL_DeleteWindow(&mapChangeUndergroundData->unk_24);
|
||||
mapChangeUndergroundData->unk_00 = 3;
|
||||
break;
|
||||
case 0xfffffffe:
|
||||
sub_0200E084(&v1->unk_24, 0);
|
||||
BGL_DeleteWindow(&v1->unk_24);
|
||||
v1->unk_00 = 5;
|
||||
sub_0200E084(&mapChangeUndergroundData->unk_24, 0);
|
||||
BGL_DeleteWindow(&mapChangeUndergroundData->unk_24);
|
||||
mapChangeUndergroundData->unk_00 = 5;
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
|
|
@ -1182,51 +1178,51 @@ BOOL sub_02054084(TaskManager *taskMan)
|
|||
ScriptManager_Start(taskMan, 2034, NULL, NULL);
|
||||
} else {
|
||||
sub_020287E0(fieldSystem->saveData);
|
||||
v1->unk_20 = ov5_021E1F98(fieldSystem, 11, 3);
|
||||
ov5_021E1F04(v1->unk_20);
|
||||
v1->unk_1C = 0;
|
||||
ScriptManager_Start(taskMan, 2005, NULL, &v1->unk_1C);
|
||||
mapChangeUndergroundData->unk_20 = ov5_021E1F98(fieldSystem, 11, 3);
|
||||
ov5_021E1F04(mapChangeUndergroundData->unk_20);
|
||||
mapChangeUndergroundData->unk_1C = 0;
|
||||
ScriptManager_Start(taskMan, 2005, NULL, &mapChangeUndergroundData->unk_1C);
|
||||
}
|
||||
|
||||
v1->unk_00 = 4;
|
||||
mapChangeUndergroundData->unk_00 = 4;
|
||||
break;
|
||||
case 4:
|
||||
if (SaveData_OverwriteCheck(fieldSystem->saveData)) {
|
||||
v1->unk_00 = 5;
|
||||
mapChangeUndergroundData->unk_00 = 5;
|
||||
} else {
|
||||
ov5_021E1F7C(v1->unk_20);
|
||||
ov5_021E1FF4(v1->unk_20);
|
||||
ov5_021E1F7C(mapChangeUndergroundData->unk_20);
|
||||
ov5_021E1FF4(mapChangeUndergroundData->unk_20);
|
||||
|
||||
if (v1->unk_1C == 0) {
|
||||
v1->unk_00 = 5;
|
||||
if (mapChangeUndergroundData->unk_1C == 0) {
|
||||
mapChangeUndergroundData->unk_00 = 5;
|
||||
} else {
|
||||
v1->unk_00 = 6;
|
||||
mapChangeUndergroundData->unk_00 = 6;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 5:
|
||||
MapObjectMan_UnpauseAllMovement(fieldSystem->mapObjMan);
|
||||
Heap_FreeToHeap(v1);
|
||||
Heap_FreeToHeap(mapChangeUndergroundData);
|
||||
return 1;
|
||||
case 6:
|
||||
sub_0200564C(0, 30);
|
||||
(v1->unk_00)++;
|
||||
(mapChangeUndergroundData->unk_00)++;
|
||||
break;
|
||||
case 7:
|
||||
if (sub_0205444C(taskMan, 0)) {
|
||||
(v1->unk_00)++;
|
||||
(mapChangeUndergroundData->unk_00)++;
|
||||
}
|
||||
break;
|
||||
case 8:
|
||||
sub_02055820(taskMan);
|
||||
(v1->unk_00)++;
|
||||
(mapChangeUndergroundData->unk_00)++;
|
||||
break;
|
||||
case 9:
|
||||
fieldSystem->mapLoadType = MAP_LOAD_TYPE_UNDERGROUND;
|
||||
Overlay_LoadByID(FS_OVERLAY_ID(overlay23), 2);
|
||||
ov23_022499E8(fieldSystem);
|
||||
sub_020539E8(taskMan, v1->unk_08, -1, v1->unk_10, v1->unk_14, 1);
|
||||
(v1->unk_00)++;
|
||||
sub_020539E8(taskMan, mapChangeUndergroundData->unk_08, -1, mapChangeUndergroundData->unk_10, mapChangeUndergroundData->unk_14, 1);
|
||||
(mapChangeUndergroundData->unk_00)++;
|
||||
break;
|
||||
case 10:
|
||||
if (Sound_CheckFade() != 0) {
|
||||
|
|
@ -1236,20 +1232,20 @@ BOOL sub_02054084(TaskManager *taskMan)
|
|||
sub_02004234(0);
|
||||
Sound_ClearSpecialBGM(fieldSystem);
|
||||
sub_02055868(taskMan);
|
||||
(v1->unk_00)++;
|
||||
(mapChangeUndergroundData->unk_00)++;
|
||||
break;
|
||||
case 11:
|
||||
if (sub_0205444C(taskMan, 1)) {
|
||||
ov23_02249A2C();
|
||||
fieldSystem->unk_6C = ov23_02249404(fieldSystem);
|
||||
sub_0200AAE0(30, 0, -16, GX_BLEND_PLANEMASK_BG0 | GX_BLEND_PLANEMASK_BG3 | GX_BLEND_PLANEMASK_OBJ, 2);
|
||||
(v1->unk_00)++;
|
||||
(mapChangeUndergroundData->unk_00)++;
|
||||
}
|
||||
break;
|
||||
case 12:
|
||||
if (sub_0200AC1C(2)) {
|
||||
ov23_0224DBF4(1);
|
||||
Heap_FreeToHeap(v1);
|
||||
Heap_FreeToHeap(mapChangeUndergroundData);
|
||||
return 1;
|
||||
}
|
||||
break;
|
||||
|
|
@ -1258,42 +1254,42 @@ BOOL sub_02054084(TaskManager *taskMan)
|
|||
return 0;
|
||||
}
|
||||
|
||||
BOOL sub_0205430C(TaskManager *taskMan)
|
||||
BOOL FieldTask_MapChangeFromUnderground(TaskManager *taskMan)
|
||||
{
|
||||
FieldSystem *fieldSystem = TaskManager_FieldSystem(taskMan);
|
||||
UnkStruct_02053FAC *v1 = TaskManager_Environment(taskMan);
|
||||
MapChangeUndergroundData *mapChangeUndergroundData = TaskManager_Environment(taskMan);
|
||||
int v2 = 0;
|
||||
|
||||
switch (v1->unk_00) {
|
||||
switch (mapChangeUndergroundData->unk_00) {
|
||||
case 0:
|
||||
ov23_0224DBF4(0);
|
||||
ov23_02249A5C();
|
||||
ov23_0224942C(fieldSystem->unk_6C);
|
||||
sub_0200AAE0(30, -16, 0, GX_BLEND_PLANEMASK_BG0, 2);
|
||||
v1->unk_00++;
|
||||
mapChangeUndergroundData->unk_00++;
|
||||
break;
|
||||
case 1:
|
||||
if (sub_0200AC1C(2)) {
|
||||
if ((fieldSystem->unk_6C == NULL) && !CommSys_IsInitialized()) {
|
||||
sub_0200564C(0, 30);
|
||||
v1->unk_00++;
|
||||
mapChangeUndergroundData->unk_00++;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
if (sub_0205444C(taskMan, 2)) {
|
||||
(v1->unk_00)++;
|
||||
(mapChangeUndergroundData->unk_00)++;
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
sub_02055820(taskMan);
|
||||
(v1->unk_00)++;
|
||||
(mapChangeUndergroundData->unk_00)++;
|
||||
break;
|
||||
case 4:
|
||||
fieldSystem->mapLoadType = MAP_LOAD_TYPE_OVERWORLD;
|
||||
Overlay_UnloadByID(FS_OVERLAY_ID(overlay23));
|
||||
sub_020539E8(taskMan, v1->unk_08, -1, v1->unk_10, v1->unk_14, 1);
|
||||
(v1->unk_00)++;
|
||||
sub_020539E8(taskMan, mapChangeUndergroundData->unk_08, -1, mapChangeUndergroundData->unk_10, mapChangeUndergroundData->unk_14, 1);
|
||||
(mapChangeUndergroundData->unk_00)++;
|
||||
break;
|
||||
case 5:
|
||||
if (Sound_CheckFade() != 0) {
|
||||
|
|
@ -1303,15 +1299,15 @@ BOOL sub_0205430C(TaskManager *taskMan)
|
|||
sub_02004234(0);
|
||||
Sound_ClearSpecialBGM(fieldSystem);
|
||||
sub_02055868(taskMan);
|
||||
(v1->unk_00)++;
|
||||
(mapChangeUndergroundData->unk_00)++;
|
||||
break;
|
||||
case 6:
|
||||
if (sub_0205444C(taskMan, 3)) {
|
||||
(v1->unk_00)++;
|
||||
(mapChangeUndergroundData->unk_00)++;
|
||||
}
|
||||
break;
|
||||
case 7:
|
||||
Heap_FreeToHeap(v1);
|
||||
Heap_FreeToHeap(mapChangeUndergroundData);
|
||||
return 1;
|
||||
break;
|
||||
}
|
||||
|
|
@ -1319,12 +1315,12 @@ BOOL sub_0205430C(TaskManager *taskMan)
|
|||
return 0;
|
||||
}
|
||||
|
||||
FieldTask sub_02054428(const FieldSystem *fieldSystem)
|
||||
FieldTask FieldMapChange_GetMapChangeUndergroundTask(const FieldSystem *fieldSystem)
|
||||
{
|
||||
if (fieldSystem->mapLoadType == MAP_LOAD_TYPE_OVERWORLD) {
|
||||
return sub_02054084;
|
||||
return FieldTask_MapChangeToUnderground;
|
||||
} else if (fieldSystem->mapLoadType == MAP_LOAD_TYPE_UNDERGROUND) {
|
||||
return sub_0205430C;
|
||||
return FieldTask_MapChangeFromUnderground;
|
||||
} else {
|
||||
GF_ASSERT(0);
|
||||
return NULL;
|
||||
|
|
@ -1334,18 +1330,18 @@ FieldTask sub_02054428(const FieldSystem *fieldSystem)
|
|||
static BOOL sub_0205444C(TaskManager *taskMan, int param1)
|
||||
{
|
||||
FieldSystem *fieldSystem = TaskManager_FieldSystem(taskMan);
|
||||
UnkStruct_02053FAC *v1 = TaskManager_Environment(taskMan);
|
||||
MapChangeUndergroundData *mapChangeUndergroundData = TaskManager_Environment(taskMan);
|
||||
BOOL v2 = 0;
|
||||
|
||||
switch (v1->unk_04) {
|
||||
switch (mapChangeUndergroundData->unk_04) {
|
||||
case 0:
|
||||
v1->unk_18 = 0;
|
||||
sub_0205CFDC(fieldSystem, param1, &v1->unk_18);
|
||||
v1->unk_04++;
|
||||
mapChangeUndergroundData->unk_18 = 0;
|
||||
sub_0205CFDC(fieldSystem, param1, &mapChangeUndergroundData->unk_18);
|
||||
mapChangeUndergroundData->unk_04++;
|
||||
break;
|
||||
case 1:
|
||||
if (v1->unk_18) {
|
||||
v1->unk_04 = 0;
|
||||
if (mapChangeUndergroundData->unk_18) {
|
||||
mapChangeUndergroundData->unk_04 = 0;
|
||||
v2 = 1;
|
||||
}
|
||||
break;
|
||||
|
|
@ -1404,7 +1400,7 @@ static BOOL sub_02054538(TaskManager *taskMan)
|
|||
switch (*v2) {
|
||||
case 0:
|
||||
Sound_TryFadeInBGM(fieldSystem, v3->mapId);
|
||||
ov5_021E15A8(fieldSystem, 1, &v1->unk_04);
|
||||
FieldSystem_StartWarpAnimation(fieldSystem, 1, &v1->unk_04);
|
||||
(*v2)++;
|
||||
break;
|
||||
case 1:
|
||||
|
|
@ -1486,7 +1482,7 @@ static BOOL sub_02054648(TaskManager *taskMan)
|
|||
break;
|
||||
case 4:
|
||||
v1->unk_04 = 0;
|
||||
ov5_021E15A8(fieldSystem, 0, &v1->unk_04);
|
||||
FieldSystem_StartWarpAnimation(fieldSystem, 0, &v1->unk_04);
|
||||
(*state)++;
|
||||
break;
|
||||
case 5:
|
||||
|
|
@ -1523,62 +1519,62 @@ void sub_02054708(TaskManager *taskMan)
|
|||
static BOOL sub_02054778(TaskManager *taskMan)
|
||||
{
|
||||
FieldSystem *fieldSystem = TaskManager_FieldSystem(taskMan);
|
||||
UnkStruct_02053900 *v1 = TaskManager_Environment(taskMan);
|
||||
Location *v2 = &v1->unk_04;
|
||||
MapChangeData *mapChangeData = TaskManager_Environment(taskMan);
|
||||
Location *location = &mapChangeData->nextLocation;
|
||||
|
||||
switch (v1->unk_00) {
|
||||
switch (mapChangeData->state) {
|
||||
case 0:
|
||||
Sound_PlayEffect(1539);
|
||||
Sound_TryFadeInBGM(fieldSystem, v2->mapId);
|
||||
Sound_TryFadeInBGM(fieldSystem, location->mapId);
|
||||
sub_02055974(taskMan);
|
||||
(v1->unk_00)++;
|
||||
(mapChangeData->state)++;
|
||||
break;
|
||||
case 1:
|
||||
sub_020539A0(taskMan, &v1->unk_04);
|
||||
(v1->unk_00)++;
|
||||
sub_020539A0(taskMan, &mapChangeData->nextLocation);
|
||||
(mapChangeData->state)++;
|
||||
break;
|
||||
case 2:
|
||||
if (Sound_CheckFade() != 0) {
|
||||
break;
|
||||
}
|
||||
|
||||
Sound_PlayMapBGM(fieldSystem, v2->mapId);
|
||||
Sound_PlayMapBGM(fieldSystem, location->mapId);
|
||||
sub_02055868(taskMan);
|
||||
(v1->unk_00)++;
|
||||
(mapChangeData->state)++;
|
||||
break;
|
||||
case 3:
|
||||
Heap_FreeToHeap(v1);
|
||||
return 1;
|
||||
Heap_FreeToHeap(mapChangeData);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
return 0;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void sub_02054800(TaskManager *taskMan, int mapId, int param2, int x, int z, int param5)
|
||||
{
|
||||
Location v0;
|
||||
Location nextLocation;
|
||||
FieldSystem *fieldSystem = TaskManager_FieldSystem(taskMan);
|
||||
Location *v2 = sub_0203A730(SaveData_GetFieldOverworldState(fieldSystem->saveData));
|
||||
Location *location = sub_0203A730(SaveData_GetFieldOverworldState(fieldSystem->saveData));
|
||||
|
||||
Location_SetToPlayerLocation(v2, fieldSystem);
|
||||
Location_SetToPlayerLocation(location, fieldSystem);
|
||||
|
||||
fieldSystem->mapLoadType = MAP_LOAD_TYPE_COLOSSEUM;
|
||||
|
||||
UnkStruct_02053900 *v3 = Heap_AllocFromHeapAtEnd(11, sizeof(UnkStruct_02053900));
|
||||
MapChangeData *mapChangeData = Heap_AllocFromHeapAtEnd(11, sizeof(MapChangeData));
|
||||
|
||||
Location_Set(&v0, mapId, param2, x, z, param5);
|
||||
Location_Set(&nextLocation, mapId, param2, x, z, param5);
|
||||
|
||||
v3->unk_00 = 0;
|
||||
v3->unk_04 = v0;
|
||||
mapChangeData->state = 0;
|
||||
mapChangeData->nextLocation = nextLocation;
|
||||
|
||||
FieldTask_Start(taskMan, sub_02054778, v3);
|
||||
FieldTask_Start(taskMan, sub_02054778, mapChangeData);
|
||||
}
|
||||
|
||||
void sub_02054864(TaskManager *taskMan)
|
||||
{
|
||||
FieldSystem *fieldSystem = TaskManager_FieldSystem(taskMan);
|
||||
Location *v1 = sub_0203A730(SaveData_GetFieldOverworldState(fieldSystem->saveData));
|
||||
Location *location = sub_0203A730(SaveData_GetFieldOverworldState(fieldSystem->saveData));
|
||||
|
||||
fieldSystem->mapLoadType = MAP_LOAD_TYPE_OVERWORLD;
|
||||
FieldSystem_StartChangeMapTask(fieldSystem->unk_10, v1);
|
||||
FieldSystem_StartChangeMapTask(fieldSystem->unk_10, location);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -470,7 +470,7 @@ BOOL FieldInput_Process_UnionRoom(const FieldInput *input, FieldSystem *fieldSys
|
|||
}
|
||||
}
|
||||
|
||||
if (input->movement && sub_0205DEE4(Field_CurrentTileBehavior(fieldSystem))) {
|
||||
if (input->movement && TileBehavior_IsWarp(Field_CurrentTileBehavior(fieldSystem))) {
|
||||
sub_020545EC(fieldSystem);
|
||||
return TRUE;
|
||||
}
|
||||
|
|
@ -799,7 +799,7 @@ static BOOL Field_CheckTransition(FieldSystem *fieldSystem, const int playerX, c
|
|||
|
||||
sub_02056BDC(fieldSystem, nextMap.mapId, nextMap.unk_04, 0, 0, playerDir, 2);
|
||||
return TRUE;
|
||||
} else if (sub_0205DC38(curTileBehavior) == TRUE) {
|
||||
} else if (TileBehavior_IsEscalator(curTileBehavior) == TRUE) {
|
||||
int playerDir = PlayerAvatar_GetDir(fieldSystem->playerAvatar);
|
||||
|
||||
if (playerDir != DIR_WEST && playerDir != DIR_EAST) {
|
||||
|
|
@ -816,8 +816,8 @@ static BOOL Field_CheckTransition(FieldSystem *fieldSystem, const int playerX, c
|
|||
return TRUE;
|
||||
}
|
||||
|
||||
if (sub_0205DEE4(curTileBehavior)) {
|
||||
sub_02053F58(fieldSystem, nextMap.mapId, nextMap.unk_04);
|
||||
if (TileBehavior_IsWarp(curTileBehavior)) {
|
||||
FieldSystem_StartMapChangeWarpTask(fieldSystem, nextMap.mapId, nextMap.unk_04);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -38,19 +38,19 @@ static const UnkStruct_ov5_021F8C7C Unk_ov5_021F8C7C[] = {
|
|||
{ ov5_021EA830, NULL, ov5_021EA848, ov5_021EA854 }
|
||||
};
|
||||
|
||||
static int ov5_021D5BC0(FieldSystem *fieldSystem)
|
||||
static int FieldSystem_GetBottomScreenIndex(FieldSystem *fieldSystem)
|
||||
{
|
||||
int v0 = fieldSystem->unk_18;
|
||||
int fieldBottomScreen = fieldSystem->bottomScreen;
|
||||
|
||||
GF_ASSERT(v0 != 0);
|
||||
GF_ASSERT(v0 < 5);
|
||||
GF_ASSERT(fieldBottomScreen != 0);
|
||||
GF_ASSERT(fieldBottomScreen < 5);
|
||||
|
||||
return v0 - 1;
|
||||
return fieldBottomScreen - 1;
|
||||
}
|
||||
|
||||
void ov5_021D5BD8(FieldSystem *fieldSystem)
|
||||
{
|
||||
Unk_ov5_021F8C7C[ov5_021D5BC0(fieldSystem)].unk_00(fieldSystem);
|
||||
Unk_ov5_021F8C7C[FieldSystem_GetBottomScreenIndex(fieldSystem)].unk_00(fieldSystem);
|
||||
}
|
||||
|
||||
BOOL ov5_021D5BF4(FieldSystem *fieldSystem)
|
||||
|
|
@ -59,7 +59,7 @@ BOOL ov5_021D5BF4(FieldSystem *fieldSystem)
|
|||
BOOL (* v0)(FieldSystem *);
|
||||
// clang-format on
|
||||
|
||||
v0 = Unk_ov5_021F8C7C[ov5_021D5BC0(fieldSystem)].unk_04;
|
||||
v0 = Unk_ov5_021F8C7C[FieldSystem_GetBottomScreenIndex(fieldSystem)].unk_04;
|
||||
|
||||
if (v0 == NULL) {
|
||||
return 1;
|
||||
|
|
@ -70,12 +70,12 @@ BOOL ov5_021D5BF4(FieldSystem *fieldSystem)
|
|||
|
||||
void ov5_021D5C14(FieldSystem *fieldSystem)
|
||||
{
|
||||
Unk_ov5_021F8C7C[ov5_021D5BC0(fieldSystem)].unk_08(fieldSystem);
|
||||
Unk_ov5_021F8C7C[FieldSystem_GetBottomScreenIndex(fieldSystem)].unk_08(fieldSystem);
|
||||
}
|
||||
|
||||
BOOL ov5_021D5C30(FieldSystem *fieldSystem)
|
||||
{
|
||||
return Unk_ov5_021F8C7C[ov5_021D5BC0(fieldSystem)].unk_0C(fieldSystem);
|
||||
return Unk_ov5_021F8C7C[FieldSystem_GetBottomScreenIndex(fieldSystem)].unk_0C(fieldSystem);
|
||||
}
|
||||
|
||||
static void ov5_021D5C4C(FieldSystem *fieldSystem)
|
||||
|
|
|
|||
|
|
@ -127,7 +127,7 @@ static void ov5_021E1470(SysTask *param0, void *param1)
|
|||
}
|
||||
}
|
||||
|
||||
void ov5_021E15A8(FieldSystem *fieldSystem, BOOL param1, BOOL *param2)
|
||||
void FieldSystem_StartWarpAnimation(FieldSystem *fieldSystem, BOOL param1, BOOL *param2)
|
||||
{
|
||||
UnkStruct_ov5_021E135C *v0 = Heap_AllocFromHeapAtEnd(4, sizeof(UnkStruct_ov5_021E135C));
|
||||
|
||||
|
|
|
|||
|
|
@ -20,13 +20,13 @@
|
|||
#include "unk_0205DAC8.h"
|
||||
#include "unk_02068344.h"
|
||||
|
||||
typedef const fx32 (*UnkFuncPtr_02054F44)(const FieldSystem *, const fx32, const fx32, const fx32, u8 *);
|
||||
typedef BOOL (*UnkFuncPtr_02054F44_1)(const FieldSystem *, const int, const int, u16 *);
|
||||
typedef const fx32 (*GetTerrainHeightFunc)(const FieldSystem *, const fx32, const fx32, const fx32, u8 *);
|
||||
typedef BOOL (*GetTerrainAttributeFunc)(const FieldSystem *, const int, const int, u16 *);
|
||||
|
||||
typedef struct UnkStruct_02054F44_t {
|
||||
UnkFuncPtr_02054F44 unk_00;
|
||||
UnkFuncPtr_02054F44_1 unk_04;
|
||||
} UnkStruct_02054F44;
|
||||
typedef struct TerrainCollisionManager_t {
|
||||
GetTerrainHeightFunc getHeightFunc;
|
||||
GetTerrainAttributeFunc getAttrFunc;
|
||||
} TerrainCollisionManager;
|
||||
|
||||
static const fx32 sub_02054D0C(const FieldSystem *fieldSystem, const fx32 param1, const fx32 param2, const fx32 param3, u8 *param4);
|
||||
static const fx32 sub_02054E50(const FieldSystem *fieldSystem, const fx32 param1, const fx32 param2, const fx32 param3, u8 *param4);
|
||||
|
|
@ -34,12 +34,12 @@ static BOOL sub_02054E84(const FieldSystem *fieldSystem, const int param1, const
|
|||
static BOOL sub_02054EF4(const FieldSystem *fieldSystem, const int param1, const int param2, u16 *param3);
|
||||
static int sub_02054FD0(const FieldSystem *fieldSystem, const VecFx32 *param1, const int param2, const int param3, u8 *param4);
|
||||
|
||||
static const UnkStruct_02054F44 Unk_020EC3D0 = {
|
||||
static const TerrainCollisionManager Unk_020EC3D0 = {
|
||||
sub_02054D0C,
|
||||
sub_02054E84
|
||||
};
|
||||
|
||||
static const UnkStruct_02054F44 Unk_020EC3D8 = {
|
||||
static const TerrainCollisionManager Unk_020EC3D8 = {
|
||||
sub_02054E50,
|
||||
sub_02054EF4
|
||||
};
|
||||
|
|
@ -261,7 +261,7 @@ static BOOL sub_02054EF4(const FieldSystem *fieldSystem, const int param1, const
|
|||
}
|
||||
}
|
||||
|
||||
void sub_02054F44(const UnkStruct_02054F44 **param0, int param1)
|
||||
void sub_02054F44(const TerrainCollisionManager **param0, int param1)
|
||||
{
|
||||
if (param1 == 0) {
|
||||
*param0 = &Unk_020EC3D0;
|
||||
|
|
@ -277,7 +277,7 @@ BOOL FieldSystem_CheckCollision(const FieldSystem *fieldSystem, const int param1
|
|||
BOOL v0;
|
||||
u16 v1;
|
||||
|
||||
v0 = fieldSystem->unk_5C->unk_04(fieldSystem, param1, param2, &v1);
|
||||
v0 = fieldSystem->unk_5C->getAttrFunc(fieldSystem, param1, param2, &v1);
|
||||
|
||||
if (v0) {
|
||||
u8 v2;
|
||||
|
|
@ -298,7 +298,7 @@ u8 sub_02054F94(const FieldSystem *fieldSystem, const int param1, const int para
|
|||
BOOL v0;
|
||||
u16 v1;
|
||||
|
||||
v0 = fieldSystem->unk_5C->unk_04(fieldSystem, param1, param2, &v1);
|
||||
v0 = fieldSystem->unk_5C->getAttrFunc(fieldSystem, param1, param2, &v1);
|
||||
|
||||
if (v0) {
|
||||
u8 v2;
|
||||
|
|
@ -317,7 +317,7 @@ const fx32 sub_02054FBC(const FieldSystem *fieldSystem, const fx32 param1, const
|
|||
BOOL v0;
|
||||
fx32 v1;
|
||||
|
||||
v1 = fieldSystem->unk_5C->unk_00(fieldSystem, param1, param2, param3, param4);
|
||||
v1 = fieldSystem->unk_5C->getHeightFunc(fieldSystem, param1, param2, param3, param4);
|
||||
|
||||
return v1;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -412,7 +412,7 @@ BOOL sub_0205DC2C(u8 param0)
|
|||
return param0 == 0x6a;
|
||||
}
|
||||
|
||||
BOOL sub_0205DC38(u8 param0)
|
||||
BOOL TileBehavior_IsEscalator(u8 param0)
|
||||
{
|
||||
return param0 == 0x6b;
|
||||
}
|
||||
|
|
@ -631,7 +631,7 @@ BOOL sub_0205DED8(u8 param0)
|
|||
return param0 == 0x43;
|
||||
}
|
||||
|
||||
BOOL sub_0205DEE4(u8 param0)
|
||||
BOOL TileBehavior_IsWarp(u8 param0)
|
||||
{
|
||||
return param0 == 0x67;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -390,7 +390,7 @@ static void sub_02068710(UnkStruct_02068630 *param0, const UnkStruct_020684D0 *p
|
|||
|
||||
sub_020509D4(fieldSystem);
|
||||
|
||||
v1->unk_22C = sub_02054084;
|
||||
v1->unk_22C = FieldTask_MapChangeToUnderground;
|
||||
v1->unk_25C = sub_02053FAC(fieldSystem);
|
||||
v1->state = FIELD_MENU_STATE_10;
|
||||
|
||||
|
|
@ -402,7 +402,7 @@ static BOOL sub_02068750(UnkStruct_02068870 *param0)
|
|||
void *v0 = sub_02053FAC(param0->fieldSystem);
|
||||
|
||||
MapObjectMan_PauseAllMovement(param0->fieldSystem->mapObjMan);
|
||||
FieldTask_Set(param0->fieldSystem, sub_02054084, v0);
|
||||
FieldTask_Set(param0->fieldSystem, FieldTask_MapChangeToUnderground, v0);
|
||||
|
||||
param0->fieldSystem->unk_90 = 0;
|
||||
return 0;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user