tmc/src/manager/hyruleTownBellManager.c

37 lines
1.2 KiB
C

/**
* @file hyruleTownBellManager.c
* @ingroup Managers
*
* @brief Spawns the heart piece if the player jumps against the bell in Hyrule Town.
*/
#include "manager/hyruleTownBellManager.h"
#include "object.h"
#include "player.h"
#include "room.h"
#include "sound.h"
void HyruleTownBellManager_Main(HyruleTownBellManager* this) {
RoomControls* roomControls = &gRoomControls;
u32 a = roomControls->origin_x + 0x1f8;
u32 x = (a - gPlayerEntity.base.x.HALF.HI) + 0x10;
u32 b = roomControls->origin_y + 0x140;
u32 y = (b - gPlayerEntity.base.y.HALF.HI) + 0x10;
if (super->action == 0) {
if (x < 0x20 && y < 0x20 && gPlayerEntity.base.z.HALF.HI < -0x18 && gPlayerState.framestate == PL_STATE_CAPE) {
super->action++;
super->timer = 90;
SoundReq(SFX_10A);
}
} else {
if (--super->timer == 0) {
Entity* object = CreateObject(GRAVEYARD_KEY, 1, 0);
if (object != NULL) {
object->x.HALF.HI = roomControls->origin_x + 0x1f8;
object->y.HALF.HI = roomControls->origin_y + 0x140;
object->z.HALF.HI = -24;
}
DeleteThisEntity();
}
}
}