Shipwright/soh/src/overlays/actors/ovl_En_Arow_Trap/z_en_arow_trap.c

54 lines
1.5 KiB
C

/*
* File: z_en_arow_trap.c
* Overlay: ovl_En_Arow_Trap
* Description: An unused trap that reflects arrows.
*/
#include "z_en_arow_trap.h"
#include "overlays/actors/ovl_En_Arrow/z_en_arrow.h"
#define FLAGS ACTOR_FLAG_4
void EnArowTrap_Init(Actor* thisx, PlayState* play);
void EnArowTrap_Destroy(Actor* thisx, PlayState* play);
void EnArowTrap_Update(Actor* thisx, PlayState* play);
const ActorInit En_Arow_Trap_InitVars = {
ACTOR_EN_AROW_TRAP,
ACTORCAT_PROP,
FLAGS,
OBJECT_GAMEPLAY_KEEP,
sizeof(EnArowTrap),
(ActorFunc)EnArowTrap_Init,
(ActorFunc)EnArowTrap_Destroy,
(ActorFunc)EnArowTrap_Update,
NULL,
NULL,
};
void EnArowTrap_Init(Actor* thisx, PlayState* play) {
EnArowTrap* this = (EnArowTrap*)thisx;
Actor_SetScale(&this->actor, 0.01);
this->unk_14C = 0;
this->attackTimer = 80;
this->actor.focus.pos = this->actor.world.pos;
}
void EnArowTrap_Destroy(Actor* thisx, PlayState* play) {
}
void EnArowTrap_Update(Actor* thisx, PlayState* play) {
EnArowTrap* this = (EnArowTrap*)thisx;
if (this->actor.xzDistToPlayer <= 400) {
this->attackTimer--;
if (this->attackTimer == 0) {
Actor_Spawn(&play->actorCtx, play, ACTOR_EN_ARROW, this->actor.world.pos.x,
this->actor.world.pos.y, this->actor.world.pos.z, this->actor.shape.rot.x,
this->actor.shape.rot.y, this->actor.shape.rot.z, ARROW_NORMAL_SILENT, true);
this->attackTimer = 80;
}
}
}