2022-03-21 21:51:23 -04:00
|
|
|
/*
|
|
|
|
* File: z_bg_jya_block.c
|
|
|
|
* Overlay: ovl_Bg_Jya_Block
|
|
|
|
* Description: Silver Block (Child Link)
|
|
|
|
*/
|
|
|
|
|
|
|
|
#include "z_bg_jya_block.h"
|
|
|
|
#include "objects/gameplay_dangeon_keep/gameplay_dangeon_keep.h"
|
|
|
|
|
|
|
|
#define FLAGS 0
|
|
|
|
|
|
|
|
void BgJyaBlock_Init(Actor* thisx, GlobalContext* globalCtx);
|
|
|
|
void BgJyaBlock_Destroy(Actor* thisx, GlobalContext* globalCtx);
|
|
|
|
void BgJyaBlock_Update(Actor* thisx, GlobalContext* globalCtx);
|
|
|
|
void BgJyaBlock_Draw(Actor* thisx, GlobalContext* globalCtx);
|
|
|
|
|
|
|
|
const ActorInit Bg_Jya_Block_InitVars = {
|
|
|
|
ACTOR_BG_JYA_BLOCK,
|
|
|
|
ACTORCAT_PROP,
|
|
|
|
FLAGS,
|
|
|
|
OBJECT_GAMEPLAY_DANGEON_KEEP,
|
|
|
|
sizeof(BgJyaBlock),
|
|
|
|
(ActorFunc)BgJyaBlock_Init,
|
|
|
|
(ActorFunc)BgJyaBlock_Destroy,
|
|
|
|
(ActorFunc)BgJyaBlock_Update,
|
|
|
|
(ActorFunc)BgJyaBlock_Draw,
|
|
|
|
NULL,
|
|
|
|
};
|
|
|
|
|
|
|
|
static InitChainEntry sInitChain[] = {
|
|
|
|
ICHAIN_VEC3F_DIV1000(scale, 333, ICHAIN_CONTINUE),
|
|
|
|
ICHAIN_F32(uncullZoneForward, 1800, ICHAIN_CONTINUE),
|
|
|
|
ICHAIN_F32(uncullZoneScale, 500, ICHAIN_CONTINUE),
|
|
|
|
ICHAIN_F32(uncullZoneDownward, 1500, ICHAIN_STOP),
|
|
|
|
};
|
|
|
|
|
|
|
|
void BgJyaBlock_Init(Actor* thisx, GlobalContext* globalCtx) {
|
|
|
|
s32 pad;
|
|
|
|
BgJyaBlock* this = (BgJyaBlock*)thisx;
|
|
|
|
CollisionHeader* colHeader = NULL;
|
|
|
|
|
|
|
|
DynaPolyActor_Init(&this->dyna, 0);
|
|
|
|
CollisionHeader_GetVirtual(&gPushBlockCol, &colHeader);
|
|
|
|
this->dyna.bgId = DynaPoly_SetBgActor(globalCtx, &globalCtx->colCtx.dyna, &this->dyna.actor, colHeader);
|
|
|
|
Actor_ProcessInitChain(&this->dyna.actor, sInitChain);
|
|
|
|
|
|
|
|
if ((LINK_AGE_IN_YEARS != YEARS_CHILD) || !Flags_GetSwitch(globalCtx, thisx->params & 0x3F)) {
|
|
|
|
Actor_Kill(&this->dyna.actor);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
void BgJyaBlock_Destroy(Actor* thisx, GlobalContext* globalCtx) {
|
|
|
|
BgJyaBlock* this = (BgJyaBlock*)thisx;
|
|
|
|
|
|
|
|
DynaPoly_DeleteBgActor(globalCtx, &globalCtx->colCtx.dyna, this->dyna.bgId);
|
|
|
|
}
|
|
|
|
|
|
|
|
void BgJyaBlock_Update(Actor* thisx, GlobalContext* globalCtx) {
|
|
|
|
BgJyaBlock* this = (BgJyaBlock*)thisx;
|
|
|
|
Player* player = GET_PLAYER(globalCtx);
|
|
|
|
|
|
|
|
player->stateFlags2 &= ~0x10;
|
|
|
|
this->dyna.unk_150 = 0.0f;
|
|
|
|
}
|
|
|
|
|
|
|
|
void BgJyaBlock_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);
|
|
|
|
|
|
|
|
gSPSegment(POLY_OPA_DISP++, 0x08, SEGMENTED_TO_VIRTUAL(gPushBlockGrayTex));
|
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);
|
|
|
|
gDPSetEnvColor(POLY_OPA_DISP++, 232, 210, 176, 255);
|
|
|
|
gSPDisplayList(POLY_OPA_DISP++, gPushBlockDL);
|
|
|
|
|
2022-07-05 19:29:34 -04:00
|
|
|
CLOSE_DISPS(globalCtx->state.gfxCtx);
|
2022-03-21 21:51:23 -04:00
|
|
|
}
|