mirror of
https://github.com/HarbourMasters/Shipwright.git
synced 2024-08-13 17:03:47 -04:00
39cc86c260
subrepo: subdir: "soh" merged: "ba904bbd0" upstream: origin: "https://github.com/HarbourMasters/soh.git" branch: "master" commit: "ba904bbd0" git-subrepo: version: "0.4.1" origin: "???" commit: "???"
91 lines
2.6 KiB
C
91 lines
2.6 KiB
C
/*
|
|
* File: z_bg_bom_guard.c
|
|
* Overlay: Bg_Bom_Guard
|
|
* Description: Bombchu Bowling Alley Walls
|
|
*/
|
|
|
|
#include "z_bg_bom_guard.h"
|
|
#include "overlays/actors/ovl_En_Bom_Bowl_Man/z_en_bom_bowl_man.h"
|
|
#include "objects/object_bowl/object_bowl.h"
|
|
#include "vt.h"
|
|
|
|
#define FLAGS ACTOR_FLAG_4
|
|
|
|
void BgBomGuard_Init(Actor* thisx, GlobalContext* globalCtx);
|
|
void BgBomGuard_Destroy(Actor* thisx, GlobalContext* globalCtx);
|
|
void BgBomGuard_Update(Actor* thisx, GlobalContext* globalCtx);
|
|
|
|
void func_8086E638(BgBomGuard* this, GlobalContext* globalCtx);
|
|
|
|
const ActorInit Bg_Bom_Guard_InitVars = {
|
|
ACTOR_BG_BOM_GUARD,
|
|
ACTORCAT_PROP,
|
|
FLAGS,
|
|
OBJECT_BOWL,
|
|
sizeof(BgBomGuard),
|
|
(ActorFunc)BgBomGuard_Init,
|
|
(ActorFunc)BgBomGuard_Destroy,
|
|
(ActorFunc)BgBomGuard_Update,
|
|
NULL,
|
|
NULL,
|
|
};
|
|
|
|
void BgBomGuard_SetupAction(BgBomGuard* this, BgBomGuardActionFunc actionFunc) {
|
|
this->actionFunc = actionFunc;
|
|
}
|
|
|
|
void BgBomGuard_Init(Actor* thisx, GlobalContext* globalCtx) {
|
|
BgBomGuard* this = (BgBomGuard*)thisx;
|
|
s32 pad[2];
|
|
CollisionHeader* colHeader = NULL;
|
|
|
|
DynaPolyActor_Init(&this->dyna, DPM_UNK);
|
|
CollisionHeader_GetVirtual(&gBowlingDefaultCol, &colHeader);
|
|
this->dyna.bgId = DynaPoly_SetBgActor(globalCtx, &globalCtx->colCtx.dyna, thisx, colHeader);
|
|
|
|
osSyncPrintf("\n\n");
|
|
osSyncPrintf(VT_FGCOL(GREEN) " ☆☆☆☆☆ 透明ガード出現 ☆☆☆☆☆ \n" VT_RST);
|
|
|
|
thisx->scale.x = 1.0f;
|
|
thisx->scale.y = 1.0f;
|
|
thisx->scale.z = 1.0f;
|
|
this->unk_16C = thisx->world.pos;
|
|
BgBomGuard_SetupAction(this, func_8086E638);
|
|
}
|
|
|
|
void BgBomGuard_Destroy(Actor* thisx, GlobalContext* globalCtx) {
|
|
BgBomGuard* this = (BgBomGuard*)thisx;
|
|
|
|
DynaPoly_DeleteBgActor(globalCtx, &globalCtx->colCtx.dyna, this->dyna.bgId);
|
|
}
|
|
|
|
void func_8086E638(BgBomGuard* this, GlobalContext* globalCtx) {
|
|
Actor* it = globalCtx->actorCtx.actorLists[ACTORCAT_NPC].head;
|
|
Actor* thisx = &this->dyna.actor;
|
|
|
|
this->unk_168 = 0;
|
|
|
|
while (it != 0) {
|
|
if (it->id == ACTOR_EN_BOM_BOWL_MAN) {
|
|
if ((((EnBomBowlMan*)it)->minigamePlayStatus != 0) && (fabsf(globalCtx->view.eye.x) > -20.0f) &&
|
|
(fabsf(globalCtx->view.eye.y) > 110.0f)) {
|
|
this->unk_168 = 1;
|
|
}
|
|
break;
|
|
}
|
|
it = it->next;
|
|
}
|
|
|
|
if (this->unk_168 == 0) {
|
|
thisx->world.pos.y = sREG(64) + -200.0f;
|
|
} else {
|
|
thisx->world.pos.y = 0.0f;
|
|
}
|
|
}
|
|
|
|
void BgBomGuard_Update(Actor* thisx, GlobalContext* globalCtx) {
|
|
BgBomGuard* this = (BgBomGuard*)thisx;
|
|
|
|
this->actionFunc(this, globalCtx);
|
|
}
|