label FP files
This commit is contained in:
148
src/FP/ch/scarfsled.c
Normal file
148
src/FP/ch/scarfsled.c
Normal file
@@ -0,0 +1,148 @@
|
||||
#include <ultra64.h>
|
||||
#include "functions.h"
|
||||
#include "variables.h"
|
||||
|
||||
void chScarfSled_update(Actor *this);
|
||||
|
||||
/* .data */
|
||||
ActorAnimationInfo chScarfSledAnimations[] ={
|
||||
{ASSET_1A1_ANIM_SLED, 1.0f},
|
||||
{ASSET_1A1_ANIM_SLED, 1.0f},
|
||||
{ASSET_1A1_ANIM_SLED, 1.0f},
|
||||
{ASSET_1A1_ANIM_SLED, 1.0f}
|
||||
};
|
||||
|
||||
ActorInfo chScarfSled = {
|
||||
MARKER_3B_SCARF_SLED, ACTOR_181_SCARF_SLED, ASSET_352_MODEL_SLED,
|
||||
0, chScarfSledAnimations,
|
||||
NULL, chScarfSled_update, func_80325888,
|
||||
1000, 0, 0.0f, 0
|
||||
};
|
||||
|
||||
/* .code */
|
||||
void __chScarfSled_setState(Actor *this, s32 next_state){
|
||||
func_80328A84(this, next_state);
|
||||
|
||||
if(next_state == 2){
|
||||
mapSpecificFlags_set(0xB, TRUE);
|
||||
timed_setCameraToNode(0.0f, 0x27);
|
||||
timed_playSfx(0.6f, SFX_52_BANJO_YAH_OH, 1.0f, 28000);
|
||||
timed_playSfx(1.25f, SFX_31_BANJO_OHHWAAOOO, 1.0f, 28000);
|
||||
|
||||
timed_setCameraToNode(1.5f, 0x26);
|
||||
timed_setCameraToNode(2.75f, 0x25);
|
||||
timed_playSfx(3.5f, SFX_63_BANJO_UWAAAAOOH, 1.0f, 28000);
|
||||
|
||||
timed_setCameraToNode(3.75f, 0x24);
|
||||
timed_playSfx(4.25f, SFX_A7_WOODEN_SWOSH, 1.2f, 18000);
|
||||
timed_playSfx(4.45f, SFX_C1_BUZZBOMB_ATTACK, 1.0f, 0x7fff);
|
||||
timed_setCameraToNode(4.75f, 0x23);
|
||||
}
|
||||
}
|
||||
|
||||
void __chScarfSled_touch(ActorMarker *this_marker, ActorMarker *other_marker){
|
||||
Actor * this = marker_getActor(this_marker);
|
||||
|
||||
if(this->state != 1) return;
|
||||
if(player_getTransformation() != TRANSFORM_1_BANJO) return;
|
||||
|
||||
if(func_8028F68C(BS_INTR_27_BANJO_SLED, this->marker))
|
||||
__chScarfSled_setState(this, 2);
|
||||
}
|
||||
|
||||
void __chScarfSled_func_8038655C(Actor *this){
|
||||
int tmp_bool;
|
||||
int tmp;
|
||||
tmp_bool = (mlAbsF(this->position_y - this->velocity_y) < 100.0f);
|
||||
tmp = this->unk10_12;
|
||||
this->unk10_12 = FALSE;
|
||||
if(!tmp_bool){
|
||||
if(tmp != 0){
|
||||
func_8030E6A4(SFX_19_BANJO_LANDING_08, func_8030E200(this->unk44_31), 0x55f0);
|
||||
}
|
||||
}
|
||||
else{
|
||||
if(this->unk44_31 == 0){
|
||||
this->unk44_31 = func_8030ED2C(SFX_18_BIGBUTT_SLIDE, 2);
|
||||
func_8030E0FC(this->unk44_31, 0.9f, 1.5f, 1.2f);
|
||||
}
|
||||
this->unk10_12 = TRUE;
|
||||
func_8030E2C4(*((u8*)this + 0x44));
|
||||
}
|
||||
}
|
||||
|
||||
void __chScarfSled_func_80386630(Actor *this){
|
||||
f32 sp7C[3];
|
||||
f32 sp70[3];
|
||||
f32 sp64[3];
|
||||
f32 sp24[4][4];
|
||||
|
||||
func_80343DEC(this);
|
||||
mapSpecificFlags_set(9, 1);
|
||||
__chScarfSled_func_8038655C(this);
|
||||
if(this->unk138_20){
|
||||
|
||||
this->yaw = 0.0f;
|
||||
sp64[0] = this->pitch;
|
||||
sp64[1] = this->yaw;
|
||||
sp64[2] = this->roll;
|
||||
mlMtxIdent();
|
||||
mlMtxRotYaw(sp64[1]);
|
||||
mlMtxRotPitch(sp64[0]);
|
||||
mlMtxGet(sp24);
|
||||
|
||||
sp70[0] = 0.0f;
|
||||
sp70[1] = 18.0f;
|
||||
sp70[2] = 0.0f;
|
||||
func_8025235C(sp70, sp70);
|
||||
|
||||
sp70[0] += this->position[0];
|
||||
sp70[1] += this->position[1];
|
||||
sp70[2] += this->position[2];
|
||||
func_8028FAB0(sp70);
|
||||
|
||||
sp64[0] = this->pitch;
|
||||
sp64[1] = this->yaw;
|
||||
sp64[2] = this->roll;
|
||||
func_8028FAEC(sp64);
|
||||
}//L80386724
|
||||
|
||||
if(1.0 == this->unk48){
|
||||
mapSpecificFlags_set(1, TRUE);
|
||||
FUNC_8030E624(SFX_103_FLOTSAM_DEATH, 1.0f, 30000);
|
||||
FUNC_8030E624(SFX_11_WOOD_BREAKING_1, 0.8f, 25000);
|
||||
FUNC_8030E624(SFX_D_EGGSHELL_BREAKING, 1.0f, 25000);
|
||||
|
||||
sp7C[0] = -1000.0f;
|
||||
sp7C[1] = 1727.0f;
|
||||
sp7C[2] = 6218.0f;
|
||||
func_8028F490(sp7C);
|
||||
marker_despawn(this->marker);
|
||||
}//L803867AC
|
||||
}
|
||||
|
||||
void chScarfSled_update(Actor *this){
|
||||
if(!this->initialized){
|
||||
this->initialized = TRUE;
|
||||
marker_setCollisionScripts(this->marker, __chScarfSled_touch, NULL, NULL);
|
||||
this->marker->propPtr->unk8_3 = TRUE;
|
||||
this->unk10_12 = 0;
|
||||
ml_vec3f_clear(this->velocity);
|
||||
__chScarfSled_setState(this, 1);
|
||||
}
|
||||
|
||||
if(!this->unk16C_4){
|
||||
this->unk16C_4 = TRUE;
|
||||
if(jiggyscore_isCollected(JIGGY_2A_FP_BOGGY_1)){
|
||||
marker_despawn(this->marker);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
this->velocity_x = this->position_x;
|
||||
this->velocity_y = func_80309724(this->position);
|
||||
this->velocity_z = this->position_z;
|
||||
if(this->state == 2){
|
||||
__chScarfSled_func_80386630(this);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user