mirror of
https://github.com/zeldaret/oot
synced 2026-08-18 13:43:14 -04:00
bg_haka_megane documentation pass (#2684)
* document bg_haka_megane * BGHAKAMEGANE_TYPE_MAX * dragorn suggestion
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
* File: z_bg_haka_megane.c
|
||||
* Overlay: ovl_Bg_Haka_Megane
|
||||
* Description: Shadow Temple Fake Walls
|
||||
* Description: Shadow Temple and Bottom of the Well Lens of Truth objects
|
||||
*/
|
||||
|
||||
#include "z_bg_haka_megane.h"
|
||||
@@ -19,8 +19,8 @@ void BgHakaMegane_Destroy(Actor* thisx, PlayState* play);
|
||||
void BgHakaMegane_Update(Actor* thisx, PlayState* play);
|
||||
void BgHakaMegane_Draw(Actor* thisx, PlayState* play);
|
||||
|
||||
void func_8087DB24(BgHakaMegane* this, PlayState* play);
|
||||
void func_8087DBF0(BgHakaMegane* this, PlayState* play);
|
||||
void BgHakaMegane_WaitForObject(BgHakaMegane* this, PlayState* play);
|
||||
void BgHakaMegane_UpdateState(BgHakaMegane* this, PlayState* play);
|
||||
void BgHakaMegane_DoNothing(BgHakaMegane* this, PlayState* play);
|
||||
|
||||
ActorProfile Bg_Haka_Megane_Profile = {
|
||||
@@ -39,28 +39,30 @@ static InitChainEntry sInitChain[] = {
|
||||
ICHAIN_VEC3F_DIV1000(scale, 100, ICHAIN_STOP),
|
||||
};
|
||||
|
||||
static CollisionHeader* sCollisionHeaders[] = {
|
||||
&gBotw1Col,
|
||||
&gBotw2Col,
|
||||
static CollisionHeader* sCollisionHeaders[BGHAKAMEGANE_TYPE_MAX] = {
|
||||
&gBotwRoom0FakeWallsAndFloorsCol,
|
||||
&gBotwRoom3ThreeFakeFloorsCol,
|
||||
NULL,
|
||||
&object_haka_objects_Col_004330,
|
||||
&object_haka_objects_Col_0044D0,
|
||||
&gShadowTempleFakeCryptWallGlowingSkullCol,
|
||||
&gShadowTempleFakeWallStrangeFaceCol,
|
||||
NULL,
|
||||
&object_haka_objects_Col_004780,
|
||||
&object_haka_objects_Col_004940,
|
||||
&gShadowTempleRoom5FakeWallsCol,
|
||||
&gShadowTempleRoom6FakeFloorCol,
|
||||
NULL,
|
||||
&object_haka_objects_Col_004B00,
|
||||
&gShadowTempleRoom10FakeWallCol,
|
||||
NULL,
|
||||
&object_haka_objects_Col_004CC0,
|
||||
&gShadowTempleRoom18FakeWallCol,
|
||||
NULL,
|
||||
};
|
||||
|
||||
static Gfx* sDLists[] = {
|
||||
gBotwFakeWallsAndFloorsDL, gBotwThreeFakeFloorsDL, gBotwHoleTrap2DL,
|
||||
object_haka_objects_DL_0040F0, object_haka_objects_DL_0043B0, object_haka_objects_DL_001120,
|
||||
object_haka_objects_DL_0045A0, object_haka_objects_DL_0047F0, object_haka_objects_DL_0018F0,
|
||||
object_haka_objects_DL_0049B0, object_haka_objects_DL_003CF0, object_haka_objects_DL_004B70,
|
||||
object_haka_objects_DL_002ED0,
|
||||
static Gfx* sDLists[BGHAKAMEGANE_TYPE_MAX] = {
|
||||
gBotwRoom0FakeWallsAndFloorsDL, gBotwRoom3ThreeFakeFloorsDL,
|
||||
gBotwRoom5HiddenPlatformDL, gShadowTempleFakeCryptWallGlowingSkullDL,
|
||||
gShadowTempleFakeWallStrangeFaceDL, gShadowTempleRoom3HiddenPlatformsDL,
|
||||
gShadowTempleRoom5FakeWallsDL, gShadowTempleRoom6FakeFloorDL,
|
||||
gShadowTempleRoom9HiddenPlatformsDL, gShadowTempleRoom10FakeWallDL,
|
||||
gShadowTempleRoom15HiddenWallsDL, gShadowTempleRoom18FakeWallDL,
|
||||
gShadowTempleRoom11HiddenObjectsDL,
|
||||
};
|
||||
|
||||
void BgHakaMegane_Init(Actor* thisx, PlayState* play) {
|
||||
@@ -78,7 +80,7 @@ void BgHakaMegane_Init(Actor* thisx, PlayState* play) {
|
||||
if (this->requiredObjectSlot < 0) {
|
||||
Actor_Kill(thisx);
|
||||
} else {
|
||||
this->actionFunc = func_8087DB24;
|
||||
this->actionFunc = BgHakaMegane_WaitForObject;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -88,16 +90,17 @@ void BgHakaMegane_Destroy(Actor* thisx, PlayState* play) {
|
||||
DynaPoly_DeleteBgActor(play, &play->colCtx.dyna, this->dyna.bgId);
|
||||
}
|
||||
|
||||
void func_8087DB24(BgHakaMegane* this, PlayState* play) {
|
||||
void BgHakaMegane_WaitForObject(BgHakaMegane* this, PlayState* play) {
|
||||
if (Object_IsLoaded(&play->objectCtx, this->requiredObjectSlot)) {
|
||||
this->dyna.actor.objectSlot = this->requiredObjectSlot;
|
||||
this->dyna.actor.draw = BgHakaMegane_Draw;
|
||||
Actor_SetObjectDependency(play, &this->dyna.actor);
|
||||
|
||||
if (play->roomCtx.curRoom.lensMode != LENS_MODE_SHOW_ACTORS) {
|
||||
CollisionHeader* colHeader;
|
||||
CollisionHeader* collision;
|
||||
|
||||
this->actionFunc = func_8087DBF0;
|
||||
this->actionFunc = BgHakaMegane_UpdateState;
|
||||
collision = sCollisionHeaders[this->dyna.actor.params];
|
||||
if (collision != NULL) {
|
||||
CollisionHeader_GetVirtual(collision, &colHeader);
|
||||
@@ -109,7 +112,7 @@ void func_8087DB24(BgHakaMegane* this, PlayState* play) {
|
||||
}
|
||||
}
|
||||
|
||||
void func_8087DBF0(BgHakaMegane* this, PlayState* play) {
|
||||
void BgHakaMegane_UpdateState(BgHakaMegane* this, PlayState* play) {
|
||||
Actor* thisx = &this->dyna.actor;
|
||||
|
||||
if (play->actorCtx.lensActive) {
|
||||
@@ -139,7 +142,7 @@ void BgHakaMegane_Draw(Actor* thisx, PlayState* play) {
|
||||
Gfx_DrawDListOpa(play, sDLists[thisx->params]);
|
||||
}
|
||||
|
||||
if (thisx->params == 0) {
|
||||
if (thisx->params == BGHAKAMEGANE_TYPE_BOTW_ROOM_0_FAKE) {
|
||||
Gfx_DrawDListXlu(play, gBotwBloodSplatterDL);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,6 +4,23 @@
|
||||
#include "ultra64.h"
|
||||
#include "actor.h"
|
||||
|
||||
typedef enum BgHakaMeganeType {
|
||||
/* 0 */ BGHAKAMEGANE_TYPE_BOTW_ROOM_0_FAKE,
|
||||
/* 1 */ BGHAKAMEGANE_TYPE_BOTW_ROOM_3_FAKE,
|
||||
/* 2 */ BGHAKAMEGANE_TYPE_BOTW_ROOM_5_HIDDEN,
|
||||
/* 3 */ BGHAKAMEGANE_TYPE_SHADOW_ROOM_0_FAKE_WALL,
|
||||
/* 4 */ BGHAKAMEGANE_TYPE_SHADOW_ROOM_2_FAKE_WALL,
|
||||
/* 5 */ BGHAKAMEGANE_TYPE_SHADOW_ROOM_3_HIDDEN,
|
||||
/* 6 */ BGHAKAMEGANE_TYPE_SHADOW_ROOM_5_FAKE,
|
||||
/* 7 */ BGHAKAMEGANE_TYPE_SHADOW_ROOM_6_FAKE,
|
||||
/* 8 */ BGHAKAMEGANE_TYPE_SHADOW_ROOM_9_HIDDEN,
|
||||
/* 9 */ BGHAKAMEGANE_TYPE_SHADOW_ROOM_10_FAKE,
|
||||
/* 10 */ BGHAKAMEGANE_TYPE_SHADOW_ROOM_15_HIDDEN,
|
||||
/* 11 */ BGHAKAMEGANE_TYPE_SHADOW_ROOM_18_FAKE,
|
||||
/* 12 */ BGHAKAMEGANE_TYPE_SHADOW_ROOM_11_HIDDEN,
|
||||
/* 13 */ BGHAKAMEGANE_TYPE_MAX
|
||||
} BgHakaMeganeType;
|
||||
|
||||
struct BgHakaMegane;
|
||||
|
||||
typedef void (*BgHakaMeganeActionFunc)(struct BgHakaMegane*, struct PlayState*);
|
||||
@@ -13,7 +30,6 @@ typedef struct BgHakaMegane {
|
||||
/* 0x0164 */ BgHakaMeganeActionFunc actionFunc;
|
||||
/* 0x0168 */ char unk_168[0x1];
|
||||
/* 0x0169 */ s8 requiredObjectSlot;
|
||||
/* 0x016A */ char unk_16A[0x2];
|
||||
} BgHakaMegane; // size = 0x016C
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user