Path: blob/master/src/game/behaviors/cannon_door.inc.c
7861 views
// cannon.c.inc12void bhv_cannon_closed_init(void) {3struct Object *cannon;45if (save_file_is_cannon_unlocked() == 1) {6// If the cannon is open, spawn a cannon and despawn the object.7cannon = spawn_object(o, MODEL_CANNON_BASE, bhvCannon);8cannon->oBehParams2ndByte = o->oBehParams2ndByte;9cannon->oPosX = o->oHomeX;10cannon->oPosY = o->oHomeY;11cannon->oPosZ = o->oHomeZ;1213o->oAction = CANNON_TRAP_DOOR_ACT_OPEN;14o->activeFlags = ACTIVE_FLAG_DEACTIVATED;15}16}1718void cannon_door_act_opening(void) {19if (o->oTimer == 0)20cur_obj_play_sound_2(SOUND_GENERAL_CANNON_UP);2122if (o->oTimer < 30) {23o->oVelY = -0.5f;24o->oPosY += o->oVelY;25o->oVelX = 0;26} else {27if (o->oTimer == 80) {28bhv_cannon_closed_init();29return;30}3132o->oVelX = 4.0f;33o->oVelY = 0;34o->oPosX += o->oVelX;35}36}3738void bhv_cannon_closed_loop(void) {39switch (o->oAction) {40case CANNON_TRAP_DOOR_ACT_CLOSED:41o->oVelX = 0;42o->oVelY = 0;43o->oDrawingDistance = 4000.0f;4445if (save_file_is_cannon_unlocked() == 1)46o->oAction = CANNON_TRAP_DOOR_ACT_CAM_ZOOM;47break;4849case CANNON_TRAP_DOOR_ACT_CAM_ZOOM:50if (o->oTimer == 60)51o->oAction = CANNON_TRAP_DOOR_ACT_OPENING;5253o->oDrawingDistance = 20000.0f;54break;5556case CANNON_TRAP_DOOR_ACT_OPENING:57cannon_door_act_opening();58break;59}60}616263