35 lines
1.1 KiB
C
35 lines
1.1 KiB
C
/**
|
|
* Behaviors for bhvPoleGrabbing and bhvGiantPole.
|
|
*
|
|
* bhvPoleGrabbing is a generic behavior used almost anywhere the player can
|
|
* grab onto and climb up another object.
|
|
*
|
|
* bhvGiantPole controls the large pole in Whomp's Fortress and differs from
|
|
* other poles because it spawns a yellow ball that rests at its top.
|
|
*/
|
|
|
|
/**
|
|
* Initialize the hitbox height field for bhvPoleGrabbing.
|
|
*/
|
|
void bhv_pole_init(void) {
|
|
/**
|
|
* This is equivalent to using `o->oBehParams2ndByte` according to
|
|
* `spawn_objects_from_info`.
|
|
*/
|
|
s32 tenthHitboxHeight = o->oBehParams >> 0x10 & 0xFF;
|
|
o->hitboxHeight = tenthHitboxHeight * 10;
|
|
}
|
|
|
|
/**
|
|
* Main loop for bhvGiantPole. It is equivalent to bhv_pole_base_loop() except
|
|
* for the fact that it spawns a yellow sphere at the top of the pole on the
|
|
* first frame.
|
|
*/
|
|
void bhv_giant_pole_loop(void) {
|
|
struct Object *topBall;
|
|
if (o->oTimer == 0) {
|
|
topBall = spawn_object(o, MODEL_YELLOW_SPHERE, bhvYellowBall);
|
|
topBall->oPosY += o->hitboxHeight + 50.0f;
|
|
}
|
|
bhv_pole_base_loop();
|
|
}
|