#include #include "functions.h" #include "variables.h" #include "core2/ba/anim.h" /* .bss */ f32 D_8037D400; u8 D_8037D404; /* .code */ enum bs_e func_802ADCD4(enum bs_e arg0); void func_802AD6D0(void){ baanim_playForDuration_loopSmooth(ASSET_10C_ANIM_BSCROUCH_IDLE, 0.5f); D_8037D404 = 4; } void func_802AD6FC(void){ baanim_playForDuration_once(ASSET_116_ANIM_BSCROUCH_NOINPUT, 2.0f); D_8037D404 = 2; } void func_802AD728(void){ baanim_playForDuration_onceStartingAt(ASSET_10C_ANIM_BSCROUCH_IDLE, 0.5f, 0.9999f); func_8029E3C0(2, 2.0f); D_8037D404 = 1; } void func_802AD768(AnimCtrl *aCtrl, f32 arg1){ animctrl_setDuration(aCtrl, ml_map_f(arg1, 0.0f, 180.0f, 0.5, 0.2f)); } void func_802AD7B0(AnimCtrl *aCtrl){ func_8029AD28(0.41f, 4); func_8029AD28(0.91f, 3); } void bscrouch_init(void){ AnimCtrl *aCtrl = baanim_getAnimCtrlPtr(); f32 sp28[3]; f32 sp24; f32 sp20; switch(bs_getPrevState()){ case BS_9_EGG_HEAD: case BS_A_EGG_ASS: case BS_1A_WONDERWING_ENTER: sp24 = 0.5357f; break; default: sp24 = 0.0f; break; } animctrl_reset(aCtrl); animctrl_setIndex(aCtrl, ASSET_1_ANIM_BSCROUCH_ENTER); animctrl_setDuration(aCtrl, 0.5f); animctrl_setPlaybackType(aCtrl, ANIMCTRL_ONCE); animctrl_setStart(aCtrl, sp24); animctrl_start(aCtrl, "bscrouch.c", 0xa0); baanim_setUpdateType(BAANIM_UPDATE_1_NORMAL); yaw_setUpdateState(3); yaw_setVelocityBounded(350.0f, 14.0f); func_8029957C(7); func_8029932C(8.0f); func_802978DC(3); func_8029E3C0(0, 0.7f); func_8029E3C0(1, 0.2f); _get_velocity(&sp28); D_8037D400 = gu_sqrtf(sp28[0]*sp28[0] + sp28[2]*sp28[2]); if(140.0f < D_8037D400) func_80299AAC(); if(func_8025801C(sp28, &sp20)) func_8029797C(sp20); D_8037D404 = 0; } void bscrouch_update(void){ enum bs_e sp34 = 0; f32 sp30; AnimCtrl *aCtrl = baanim_getAnimCtrlPtr(); //sp2C f32 temp_f2; f32 pad; f32 sp20; func_8029E1A8(0); func_8029E1A8(1); sp30 = ml_map_f(func_8029E270(0), 0.0f, 0.3f, 0.0f, D_8037D400); func_80297970(sp30); if(220.0f < sp30) func_802929F8(); if(160.0f < sp30) func_80299AAC(); sp20 = yaw_getIdeal(); temp_f2 = mlAbsF(mlDiffDegF(sp20, yaw_get())); switch(D_8037D404){ case 0://802ADA64 if(sp30 != 0.0f) break; func_8029E3C0(2, 2.0f); D_8037D404 = 1; break; case 1: //802ADA98 if(temp_f2 != 0.0f){ func_802AD6D0(); } else{ func_8029E1A8(2); if(func_8029E384(2)) func_802AD6FC(); } break; case 2: //802ADAE8 if(temp_f2 != 0.0f){ func_802AD6D0(); }else{ if(animctrl_isStopped(aCtrl)) func_802AD728(); } break; case 4: //802ADB30 func_802AD768(aCtrl,temp_f2); func_802AD7B0(aCtrl); if(temp_f2 != 0.0f) break; if((f64)animctrl_getAnimTimer(aCtrl) <= 0.5){ animctrl_setSubRange(aCtrl, 0.0f, 0.5f); }else{ animctrl_setSubRange(aCtrl, 0.0f, 1.0f); } animctrl_setPlaybackType(aCtrl,1); D_8037D404 = 3; break; case 3://802ADBCC func_802AD768(aCtrl, temp_f2); func_802AD7B0(aCtrl); if(temp_f2 != 0.0f){ animctrl_setSubRange(aCtrl, 0.0f, 1.0f); animctrl_setPlaybackType(aCtrl, ANIMCTRL_LOOP); D_8037D404 = 4; }else{ if(animctrl_isStopped(aCtrl)){ yaw_setIdeal(yaw_get()); func_802AD728(); } } break; }//L802ADC50 if(player_isSliding()) sp34 = BS_SLIDE; if(func_8028B094()) sp34 = BS_2F_FALL; sp34 = func_802ADCD4(sp34); if(sp34 == BS_1_IDLE && func_8029E348(1)) sp34 = 0; if(player_inWater()) sp34 = BS_2D_SWIM_IDLE; bs_setState(sp34); }//*/ void bscrouch_end(void){} enum bs_e func_802ADCD4(enum bs_e arg0){ if(button_released(BUTTON_Z)){ arg0 = BS_1_IDLE; if(button_pressed(BUTTON_B) && can_claw()) arg0 = BS_CLAW; if(button_pressed(BUTTON_A)) arg0 = func_8029C780(); }else{ if(should_wonderwing()) func_80346C10(&arg0, -1, BS_1A_WONDERWING_ENTER, ITEM_10_GOLD_FEATHER, 1); if(should_trot()) arg0 = BS_14_BTROT_ENTER; if(should_poop_egg()) func_80346C10(&arg0, -1, BS_A_EGG_ASS, ITEM_D_EGGS, 0); if(should_shoot_egg()) func_80346C10(&arg0, -1, BS_9_EGG_HEAD, ITEM_D_EGGS, 0); if(should_flip()) arg0 = BS_12_BFLIP; if(should_beak_barge()) arg0 = BS_BBARGE; } return arg0; }