mirror of
https://github.com/zeldaret/st
synced 2026-10-07 13:25:33 -04:00
2c723299b7
* create CommonFuncs.hpp * merge every `extern "C"` to a common header * fix regressions * I'm dumb
243 lines
6.9 KiB
C++
243 lines
6.9 KiB
C++
#include "CommonFuncs.hpp"
|
|
#include "MainGame/AdventureMode.hpp"
|
|
#include "MapObject/MapObjectManager.hpp"
|
|
#include "MapObject/MapObjectUnkSPTB.hpp"
|
|
#include "Unknown/UnkStruct_0204a088.hpp"
|
|
#include "Unknown/UnkStruct_0204a110.hpp"
|
|
#include "Unknown/UnkStruct_0204e5f8.hpp"
|
|
#include "Unknown/UnkStruct_027e09a4.hpp"
|
|
#include "Unknown/UnkStruct_ov000_020b4f70.hpp"
|
|
|
|
THUMB_BEGIN
|
|
|
|
void AdventureModeManager_180_18::vfunc_0C(void) {
|
|
data_0204a088->func_ov000_02061224();
|
|
}
|
|
|
|
AdventureModeManager_180::AdventureModeManager_180(GameModeManagerBase_104 *param1) :
|
|
mUnk_0C(0),
|
|
mUnk_10(0),
|
|
mUnk_14(param1),
|
|
mUnk_40(0x14),
|
|
mUnk_44(false),
|
|
mUnk_45(false) {
|
|
data_0204a088->func_ov000_020611dc(this, 0x0C);
|
|
}
|
|
|
|
AdventureModeManager_180::~AdventureModeManager_180() {}
|
|
|
|
void AdventureModeManager_180::vfunc2_08(unk32 param1) {
|
|
this->mUnk_0C = 1;
|
|
|
|
switch (param1) {
|
|
case 5:
|
|
this->mUnk_18.mUnk_18 = true;
|
|
this->mUnk_18.mUnk_19 = true;
|
|
this->mUnk_18.func_0201bb84(0x10, 2, 0x10);
|
|
data_0204e5f8.func_0201b9a8(&this->mUnk_18);
|
|
break;
|
|
case 1:
|
|
this->mUnk_18.mUnk_18 = false;
|
|
this->mUnk_18.mUnk_19 = true;
|
|
this->mUnk_18.func_0201bb84(0x14, 2, 0x14);
|
|
data_0204e5f8.func_0201b9a8(&this->mUnk_18);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void AdventureModeManager_180::vfunc2_0C(unk32 param1) {
|
|
switch (param1) {
|
|
case 5:
|
|
if (this->mUnk_18.mUnk_0D == this->mUnk_18.mUnk_10) {
|
|
this->mUnk_0C = 0;
|
|
data_0204a088->func_ov000_02061230();
|
|
}
|
|
break;
|
|
case 1:
|
|
switch (this->mUnk_0C) {
|
|
case 1:
|
|
if (data_0204a110.mUnk_008 != 1 && this->mUnk_44) {
|
|
this->mUnk_44 = false;
|
|
this->func_ov024_020c9430(1, this->mUnk_40);
|
|
}
|
|
|
|
if (this->mUnk_18.mUnk_0D == this->mUnk_18.mUnk_10) {
|
|
this->mUnk_0C = 2;
|
|
this->func_ov024_020c957c();
|
|
}
|
|
break;
|
|
case 2:
|
|
if (data_0204a110.mUnk_DA8.mUnk_0C < 0) {
|
|
this->mUnk_0C = 0;
|
|
data_0204a088->func_ov000_02061230();
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
#pragma opt_dead_assignments off
|
|
void AdventureModeManager_180::vfunc_54(unk32 param1, unk32 param2) {
|
|
if (param2 != 1) {
|
|
return;
|
|
}
|
|
|
|
unk32 r6 = 0;
|
|
|
|
switch (param1) {
|
|
case 5:
|
|
data_0204a110.func_02019538(0x0D, 1);
|
|
this->func_ov024_020c9430(0, -1);
|
|
break;
|
|
case 1:
|
|
this->mUnk_44 = true;
|
|
data_0204a110.func_02019538(0x0E, 1);
|
|
|
|
if (data_ov000_020b4f70 != NULL) {
|
|
data_ov000_020b4f70->func_ov000_0206654c();
|
|
}
|
|
|
|
if (data_0204a110.mUnk_008 == 1) {
|
|
this->mUnk_45 = true;
|
|
data_0204a110.mUnk_DFE = true;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
#pragma opt_dead_assignments reset
|
|
|
|
void AdventureModeManager_180::func_ov024_020c9430(unk32 param1, unk32 param2) {
|
|
data_0204a088->func_ov000_02061248();
|
|
this->mUnk_10 = func_ov014_020b6520(&this->mUnk_14, param1, param2);
|
|
}
|
|
|
|
void AdventureModeManager_180::vfunc2_18(unk32 param1) {
|
|
switch (param1) {
|
|
case 5:
|
|
this->mUnk_18.func_0201bb84(0x10, 2, 0x10);
|
|
data_0204e5f8.func_0201b9a8(&this->mUnk_18);
|
|
break;
|
|
case 1:
|
|
this->func_ov024_020c95c4();
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void AdventureModeManager_180::vfunc_5C(unk32 param1) {
|
|
switch (param1) {
|
|
case 5:
|
|
if (this->mUnk_18.mUnk_0D == this->mUnk_18.mUnk_10) {
|
|
data_0204a088->func_ov000_02061230();
|
|
}
|
|
break;
|
|
case 1:
|
|
switch (this->mUnk_0C) {
|
|
case 3:
|
|
if (data_0204a110.mUnk_DA8.mUnk_0C < 0) {
|
|
this->mUnk_0C = 1;
|
|
this->mUnk_18.func_0201bb84(0x14, 2, 0x14);
|
|
data_0204e5f8.func_0201b9a8(&this->mUnk_18);
|
|
}
|
|
break;
|
|
case 1:
|
|
if (this->mUnk_18.mUnk_0D == this->mUnk_18.mUnk_10) {
|
|
data_0204a088->func_ov000_02061230();
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void AdventureModeManager_180::vfunc_58(unk32 param1, unk32 param2) {
|
|
if (param2 != 1) {
|
|
return;
|
|
}
|
|
|
|
this->mUnk_10 = 0;
|
|
data_0204a088->func_ov000_02061248();
|
|
|
|
switch (param1) {
|
|
case 5:
|
|
break;
|
|
case 1:
|
|
if (this->mUnk_45) {
|
|
this->mUnk_45 = false;
|
|
data_0204a110.mUnk_DFE = true;
|
|
}
|
|
|
|
GetAdventureModeManager()->func_ov024_020c555c(0);
|
|
GetAdventureModeManager()->func_ov024_020c53e8();
|
|
|
|
if (data_027e09a4->IsTrain()) {
|
|
GetAdventureModeManager()->func_ov024_020c671c();
|
|
} else {
|
|
GetAdventureModeManager()->func_ov024_020c66c0();
|
|
}
|
|
|
|
if (data_ov000_020b4f70 != NULL) {
|
|
data_ov000_020b4f70->func_ov000_020665b8();
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void AdventureModeManager_180::vfunc_60() {}
|
|
|
|
void AdventureModeManager_180::func_ov024_020c957c() {
|
|
data_0204a110.mUnk_DA8.func_0201ced8();
|
|
this->mUnk_0C = 2;
|
|
|
|
struct {
|
|
void *ptr;
|
|
unk32 actorId;
|
|
} local_10;
|
|
local_10.ptr = &data_ov000_020b34c4;
|
|
local_10.actorId = MapObjectId_SPTB;
|
|
|
|
MapObject **ppMapObj =
|
|
gpMapObjManager->func_01fff520((UnkStruct_ov000_020b34c4 *) &local_10, gpMapObjManager->mMapObjTable);
|
|
if (gpMapObjManager->mUnk_08 != ppMapObj) {
|
|
MapObjectUnkSPTB *pStampStation = (MapObjectUnkSPTB *) *ppMapObj;
|
|
pStampStation->func_ov031_0210b9c4();
|
|
}
|
|
}
|
|
|
|
void AdventureModeManager_180::func_ov024_020c95c4() {
|
|
data_0204a110.mUnk_DA8.func_0201cf30();
|
|
this->mUnk_0C = 3;
|
|
|
|
struct {
|
|
void *ptr;
|
|
unk32 actorId;
|
|
} local_10;
|
|
local_10.ptr = &data_ov000_020b34c4;
|
|
local_10.actorId = MapObjectId_SPTB;
|
|
|
|
MapObject **ppMapObj =
|
|
gpMapObjManager->func_01fff520((UnkStruct_ov000_020b34c4 *) &local_10, gpMapObjManager->mMapObjTable);
|
|
if (gpMapObjManager->mUnk_08 != ppMapObj) {
|
|
MapObjectUnkSPTB *pStampStation = (MapObjectUnkSPTB *) *ppMapObj;
|
|
pStampStation->func_ov031_0210b9e0();
|
|
}
|
|
}
|
|
|
|
THUMB_END
|