Files
banjo-kazooie/src/core2/bs/bWhirl.c
2022-08-10 16:06:32 -05:00

305 lines
7.0 KiB
C

#include <ultra64.h>
#include "functions.h"
#include "variables.h"
const f32 D_80364AD0 = 80.0f;
const f32 D_80364AD4 = 425.0f;
const f32 D_80364AD8 = 0.56f;
const f32 D_80364ADC = 0.4f;
const f32 D_80364AE0 = 693.5f;
const f32 D_80364AE4 = -1200.0f;
/* .bss */
float D_8037D3B0;
u8 D_8037D3B4;
/* .code */
void func_802AA400(void){
f32 sp1C = func_8029B30C();
if(!func_8029B300()){
func_80297970(0.0f);
}else{
func_80297970(func_80257C48(sp1C, D_80364AD0, D_80364AD4));
}
}
static void __bsbwhirl_end(void){
enum bs_e state = bs_getNextState();
if(!( state == BS_1B_WONDERWING_IDLE
|| state == BS_1C_WONDERWING_WALK
|| state == BS_1D_WONDERWING_JUMP
|| state == BS_1E_WONDERWING_EXIT
|| state == BS_A4_WONDERWING_DRONE
|| state == BS_A5_WONDERWING_UNKA5
)
){
func_8029B0C0();
func_8029E070(0);
func_8025A55C(-1, 0xfa0, 0xd);
func_8024BD08(1);
func_8025A7DC(COMUSIC_25_USING_GOLD_FEATHERS);
}
func_80289F10(1);
}
static void __bsbwhirl_spawnSparkle(void){
func_8033E3F0(2,1);
}
enum bs_e func_802AA510(enum bs_e arg0){
if(func_8029B300(arg0) > 0)
arg0 = BS_1C_WONDERWING_WALK;
if(button_released(BUTTON_Z))
arg0 = BS_1E_WONDERWING_EXIT;
if(button_pressed(BUTTON_A) && func_8028B2E8())
arg0 = BS_1D_WONDERWING_JUMP;
if(player_inWater())
arg0 = BS_2D_SWIM_IDLE;
return arg0;
}
void func_802AA58C(enum bs_e *arg0){
D_8037D3B0 += time_getDelta();
if(2.0 < D_8037D3B0){
D_8037D3B0 = 0.0f;
func_80346C10(arg0, BS_1E_WONDERWING_EXIT, -1, ITEM_10_GOLD_FEATHER, 1);
if(*arg0 != BS_1E_WONDERWING_EXIT){
FUNC_8030E624(SFX_3E9_UNKNOWN, 0.8f, 28000);
func_802D8BE4(1);
}
}
}
void bsbwhirl_enter_init(void){
func_8028A274(0x22, 0.5f);
func_8029C7F4(1,1,1,2);
func_80297970(0.0f);
func_8029B324(0, 0.03f);
func_8029B324(1, 1.0f);
func_8029E070(1);
D_8037D3B0 = 0.0f;
func_8024BD08(0);
func_8025A55C(0, 0xfa0, 0xd);
func_8025A6EC(0x25, 0x6d60);
func_80299BD4();
func_802952A8(1,0);
}
void bsbwhirl_enter_update(void){
enum bs_e sp1C = 0;
func_802952A8(1,1);
if(animctrl_isStopped(_player_getAnimCtrlPtr()))
sp1C = BS_1B_WONDERWING_IDLE;
bs_setState(sp1C);
}
void bsbwhirl_enter_end(void){
func_802952A8(1,1);
__bsbwhirl_end();
}
void bsbwhirl_stand_init(void){
func_8028A010(ASSET_23_ANIM_BSWONDERWING_IDLE, 1.0f);
func_8029C7F4(1,1,1,2);
func_80297970(0.0f);
}
void bsbwhirl_stand_update(void){
enum bs_e sp1C = 0;
__bsbwhirl_spawnSparkle();
sp1C = func_802AA510(sp1C);
func_802AA58C(&sp1C);
if(player_isSliding())
sp1C = BS_SLIDE;
if(player_inWater())
sp1C = BS_4C_LANDING_IN_WATER;
bs_setState(sp1C);
}
void bsbwhirl_stand_end(void){
__bsbwhirl_end();
}
void bsbwhirl_walk_init(void){
func_8028A010(ASSET_11_ANIM_BSWONDERWING_WALK, 0.53f);
func_80289EC8(D_80364AD0, D_80364AD4, D_80364AD8, D_80364ADC);
func_8029C7F4(2,1,1,2);
}
void bsbwhirl_walk_update(void){
enum bs_e sp1C = 0;
__bsbwhirl_spawnSparkle();
func_8029AD28(0.47f, 4);
func_8029AD28(0.97f, 3);
func_802AA400();
if(!func_8029B300() && func_80297C04(1.0f))
sp1C = BS_1B_WONDERWING_IDLE;
if(button_released(BUTTON_Z))
sp1C = BS_1E_WONDERWING_EXIT;
if(button_pressed(BUTTON_A) && func_8028B2E8())
sp1C = BS_1D_WONDERWING_JUMP;
if(player_inWater())
sp1C = BS_4C_LANDING_IN_WATER;
func_802AA58C(&sp1C);
if(player_isSliding())
sp1C = BS_SLIDE;
bs_setState(sp1C);
}
void bsbwhirl_walk_end(void){
__bsbwhirl_end();
}
void bsbwhirl_jump_init(void){
AnimCtrl * aCtrl = _player_getAnimCtrlPtr();
animctrl_reset(aCtrl);
animctrl_setIndex(aCtrl, ANIM_BANJO_WONDERWING_JUMP);
animctrl_setDuration(aCtrl, 0.8f);
animctrl_setTransitionDuration(aCtrl, 0.134f);
func_8028774C(aCtrl, 0.14f);
animctrl_setSubRange(aCtrl, 0.0f, 0.4495f);
animctrl_setPlaybackType(aCtrl, ANIMCTRL_ONCE);
func_802875AC(aCtrl, "bsbwhirl.c", 0x181);
func_8029C7F4(1,1,3,6);
if(func_8029B2E8() != 0.0f)
yaw_setIdeal(func_8029B33C());
func_8029797C(yaw_getIdeal());
func_802AA400();
func_802979AC(yaw_getIdeal(), func_80297A64());
player_setYVelocity(D_80364AE0);
gravity_set(D_80364AE4);
func_80299B58(0.91f, 1.09f);
D_8037D3B4 = 0;
}
void bsbwhirl_jump_update(void){
enum bs_e sp2C = 0;
AnimCtrl *aCtrl = _player_getAnimCtrlPtr();
f32 sp1C[3];
__bsbwhirl_spawnSparkle();
func_802AA400();
_get_velocity(&sp1C);
if(button_released(BUTTON_A) && 0.0f < sp1C[1])
gravity_reset();
switch(D_8037D3B4){
case 0://L802AAB48
if(func_8028B254(0x82)){
animctrl_setSubRange(aCtrl, 0.0f, 1.0f);
animctrl_setDuration(aCtrl, 0.8f);
animctrl_setPlaybackType(aCtrl, ANIMCTRL_ONCE);
D_8037D3B4 = 1;
}
break;
case 1://L802AAB90
if(player_inWater())
sp2C = BS_2D_SWIM_IDLE;
if(func_8028B2E8()){
D_8037D3B4 = 2;
func_8029C5E8();
}
break;
case 2://L802AABC8
if(animctrl_isStopped(aCtrl))
sp2C = BS_1B_WONDERWING_IDLE;
sp2C = func_802AA510(sp2C);
break;
}//L802AABE8
func_802AA58C(&sp2C);
if(player_inWater())
sp2C = BS_4C_LANDING_IN_WATER;
bs_setState(sp2C);
}
void bsbwhirl_jump_end(void){
gravity_reset();
__bsbwhirl_end();
}
void bsbwhirl_exit_init(void){
AnimCtrl *aCtrl = _player_getAnimCtrlPtr();
animctrl_reset(aCtrl);
animctrl_setSmoothTransition(aCtrl, 0);
animctrl_setDirection(aCtrl, 0);
animctrl_setIndex(aCtrl, ANIM_BANJO_WONDERWING_EXIT);
animctrl_setDuration(aCtrl, 0.5f);
animctrl_setPlaybackType(aCtrl, ANIMCTRL_ONCE);
func_802875AC(aCtrl, "bsbwhirl.c", 0x201);
func_80289F10(1);
func_8029957C(2);
func_80297970(0.0f);
comusic_8025AB44(COMUSIC_25_USING_GOLD_FEATHERS, 0.0f, 0xFA0);
}
void bsbwhirl_exit_update(void){
enum bs_e sp1C = 0;
if(animctrl_isStopped(_player_getAnimCtrlPtr()))
sp1C = BS_1_IDLE;
bs_setState(sp1C);
}
void bsbwhirl_exit_end(void){
__bsbwhirl_end();
}
void bsbwhirl_drone_init(void){
bsdrone_init();
}
void bsbwhirl_drone_update(void){
__bsbwhirl_spawnSparkle();
bsdrone_update();
}
void bsbwhirl_drone_end(void){
bsdrone_end();
__bsbwhirl_end();
}
void func_802AADBC(void){
func_8028A010(ASSET_23_ANIM_BSWONDERWING_IDLE, 1.0f);
func_8029C7F4(1,1,3,2);
func_80297970(0.0f);
func_8029C674();
}
void func_802AAE08(void){
enum bs_e sp1C =0;
__bsbwhirl_spawnSparkle();
func_8029C6D0();
if(!func_80298850())
sp1C = BS_1B_WONDERWING_IDLE;
bs_setState(sp1C);
}
void func_802AAE4C(void){
func_8029C748();
__bsbwhirl_end();
}