sm64pc/src/game/behaviors/little_cage.inc.c

55 lines
1.5 KiB
C

// little_cage.c.inc
void bhv_little_cage_2_loop(void) {
switch (o->oAction) {
case 0:
if (o->oTimer == 0)
if (func_802A377C(1)
& save_file_get_star_flags(gCurrSaveFileNum - 1, gCurrCourseNum - 1))
obj_set_model(MODEL_TRANSPARENT_STAR);
copy_object_pos(o, o->parentObj);
copy_object_behavior_params(o, o->parentObj);
if (o->parentObj->oAction == 3)
o->oAction++;
break;
case 1:
mark_object_for_deletion(o);
func_802A3004();
spawn_triangle_break_particles(20, 138, 0.7, 3);
CreateStar(2500.0f, -1200.0f, 1300.0f);
break;
}
o->oFaceAngleYaw += 0x400;
}
void ActionLittleCage0(void) {
if (o->oUnknownUnk88 != 0)
o->oAction = 1;
load_object_collision_model();
}
void ActionLittleCage1(void) {
if (o->oUnknownUnk88 != 1)
o->oAction = 2;
o->oMoveAngleYaw += 0x800;
load_object_collision_model();
}
void ActionLittleCage2(void) {
obj_update_floor_and_walls();
obj_move_standard(78);
if (o->oMoveFlags & (8 | 1))
o->oAction = 3;
}
void ActionLittleCage3(void) {
obj_hide();
}
void (*sLittleCageActions[])(void) = { ActionLittleCage0, ActionLittleCage1, ActionLittleCage2,
ActionLittleCage3 };
void bhv_little_cage_loop(void) {
obj_call_action_function(sLittleCageActions);
}