2022-03-21 21:51:23 -04:00
|
|
|
/*
|
|
|
|
* File: z_bg_spot01_idosoko.c
|
|
|
|
* Overlay: ovl_Bg_Spot01_Idosoko
|
|
|
|
* Description: Stone that blocks the entrance to Bottom of the Well
|
|
|
|
*/
|
|
|
|
|
|
|
|
#include "z_bg_spot01_idosoko.h"
|
|
|
|
#include "objects/object_spot01_matoya/object_spot01_matoya.h"
|
|
|
|
|
|
|
|
#define FLAGS ACTOR_FLAG_4
|
|
|
|
|
|
|
|
void BgSpot01Idosoko_Init(Actor* thisx, GlobalContext* globalCtx);
|
|
|
|
void BgSpot01Idosoko_Destroy(Actor* thisx, GlobalContext* globalCtx);
|
|
|
|
void BgSpot01Idosoko_Update(Actor* thisx, GlobalContext* globalCtx);
|
|
|
|
void BgSpot01Idosoko_Draw(Actor* thisx, GlobalContext* globalCtx);
|
|
|
|
|
|
|
|
void func_808ABF54(BgSpot01Idosoko* this, GlobalContext* globalCtx);
|
|
|
|
|
|
|
|
const ActorInit Bg_Spot01_Idosoko_InitVars = {
|
|
|
|
ACTOR_BG_SPOT01_IDOSOKO,
|
|
|
|
ACTORCAT_BG,
|
|
|
|
FLAGS,
|
|
|
|
OBJECT_SPOT01_MATOYA,
|
|
|
|
sizeof(BgSpot01Idosoko),
|
|
|
|
(ActorFunc)BgSpot01Idosoko_Init,
|
|
|
|
(ActorFunc)BgSpot01Idosoko_Destroy,
|
|
|
|
(ActorFunc)BgSpot01Idosoko_Update,
|
|
|
|
(ActorFunc)BgSpot01Idosoko_Draw,
|
|
|
|
NULL,
|
|
|
|
};
|
|
|
|
|
|
|
|
static InitChainEntry sInitChain[] = {
|
|
|
|
ICHAIN_VEC3F_DIV1000(scale, 100, ICHAIN_STOP),
|
|
|
|
};
|
|
|
|
|
|
|
|
void BgSpot01Idosoko_SetupAction(BgSpot01Idosoko* this, BgSpot01IdosokoActionFunc actionFunc) {
|
|
|
|
this->actionFunc = actionFunc;
|
|
|
|
}
|
|
|
|
|
|
|
|
void BgSpot01Idosoko_Init(Actor* thisx, GlobalContext* globalCtx) {
|
|
|
|
s32 pad;
|
|
|
|
BgSpot01Idosoko* this = (BgSpot01Idosoko*)thisx;
|
|
|
|
CollisionHeader* colHeader = NULL;
|
|
|
|
s32 pad2;
|
|
|
|
|
|
|
|
DynaPolyActor_Init(&this->dyna, DPM_PLAYER);
|
|
|
|
Actor_ProcessInitChain(&this->dyna.actor, sInitChain);
|
|
|
|
CollisionHeader_GetVirtual(&gKakarikoBOTWStoneCol, &colHeader);
|
|
|
|
this->dyna.bgId = DynaPoly_SetBgActor(globalCtx, &globalCtx->colCtx.dyna, &this->dyna.actor, colHeader);
|
|
|
|
if (!LINK_IS_ADULT) {
|
|
|
|
Actor_Kill(&this->dyna.actor);
|
|
|
|
} else {
|
|
|
|
BgSpot01Idosoko_SetupAction(this, func_808ABF54);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
void BgSpot01Idosoko_Destroy(Actor* thisx, GlobalContext* globalCtx) {
|
|
|
|
BgSpot01Idosoko* this = (BgSpot01Idosoko*)thisx;
|
|
|
|
|
|
|
|
DynaPoly_DeleteBgActor(globalCtx, &globalCtx->colCtx.dyna, this->dyna.bgId);
|
|
|
|
}
|
|
|
|
|
|
|
|
void func_808ABF54(BgSpot01Idosoko* this, GlobalContext* globalCtx) {
|
|
|
|
}
|
|
|
|
|
|
|
|
void BgSpot01Idosoko_Update(Actor* thisx, GlobalContext* globalCtx) {
|
|
|
|
BgSpot01Idosoko* this = (BgSpot01Idosoko*)thisx;
|
|
|
|
|
|
|
|
this->actionFunc(this, globalCtx);
|
|
|
|
}
|
|
|
|
|
|
|
|
void BgSpot01Idosoko_Draw(Actor* thisx, GlobalContext* globalCtx) {
|
2022-07-05 19:29:34 -04:00
|
|
|
OPEN_DISPS(globalCtx->state.gfxCtx);
|
2022-03-21 21:51:23 -04:00
|
|
|
|
|
|
|
func_80093D18(globalCtx->state.gfxCtx);
|
|
|
|
|
2022-07-05 19:29:34 -04:00
|
|
|
gSPMatrix(POLY_OPA_DISP++, MATRIX_NEWMTX(globalCtx->state.gfxCtx),
|
2022-03-21 21:51:23 -04:00
|
|
|
G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
|
|
|
|
gSPDisplayList(POLY_OPA_DISP++, gKakarikoBOTWStoneDL);
|
|
|
|
|
2022-07-05 19:29:34 -04:00
|
|
|
CLOSE_DISPS(globalCtx->state.gfxCtx);
|
2022-03-21 21:51:23 -04:00
|
|
|
}
|