Files
banjo-kazooie/src/core2/ch/jigsawdance.c
banjo.decomp 4c3d4df97b rename animctrl to anctrl to match source debug string and tooie naming
rename `rumbleManager` to `bamotor`
2024-10-30 19:51:58 -05:00

108 lines
3.4 KiB
C

#include <ultra64.h>
#include "functions.h"
#include "variables.h"
extern f32 player_getYaw();
AnimCtrl *player_getAnimCtrlPtr(void);
Actor *__chJigsawDance_draw(ActorMarker *this, Gfx **gdl, Mtx **mptr, Vtx **arg3);
void __chJigsawDance_update(Actor * this);
/* .data */
ActorAnimationInfo chJigsawDanceAnimations[] = {
{0x00, 0.0f},
{0x00, 2.0f},
{ASSET_76_ANIM_JIGSAWDANCE_HOLD, 1.5f},
{ASSET_76_ANIM_JIGSAWDANCE_HOLD, 1.5f},
{ASSET_30_ANIM_JIGSAWDANCE_DANCE, 5.0f},
{0x00, 2.0f}
};
ActorInfo chJigsawDance = {MARKER_68_JIGSAW_DANCE, ACTOR_5A_JIGSAW_DANCE, ASSET_35E_MODEL_JIGSAW_DANCE,
1, chJigsawDanceAnimations,
__chJigsawDance_update, actor_update_func_80326224, __chJigsawDance_draw,
0, 0, 0.0f, 0
};
/* .code */
Actor *__chJigsawDance_draw(ActorMarker *this, Gfx **gdl, Mtx **mptr, Vtx **arg3){
Actor *thisActor = marker_getActor(this);
if(!thisActor->initialized){
thisActor->initialized = TRUE;
return thisActor;
}
else{
return actor_draw(this, gdl, mptr, arg3);
}
}
void __chJigsawDance_update(Actor * this){
AnimCtrl *plyrMvmt;
this->marker->collidable = FALSE;
switch(this->state){
case 1:
break;
case 2:
player_getPosition(this->position);
this->yaw = player_getYaw();
plyrMvmt = player_getAnimCtrlPtr();
anctrl_setSmoothTransition(this->anctrl, 0);
anctrl_setIndex(this->anctrl, anctrl_getIndex(plyrMvmt));
anctrl_setStart(this->anctrl,anctrl_getAnimTimer(plyrMvmt));
anctrl_setDuration(this->anctrl, 1000.0f);
anctrl_start(this->anctrl, "chjigsawdance.c", 0x59);
break;
case 3:
plyrMvmt = player_getAnimCtrlPtr();
anctrl_setSmoothTransition(this->anctrl, 0);
anctrl_setStart(this->anctrl,anctrl_getAnimTimer(plyrMvmt));
anctrl_setDuration(this->anctrl, 1000.0f);
anctrl_start(this->anctrl, "chjigsawdance.c", 0x62);
break;
case 4:
player_getPosition(this->position);
this->yaw = player_getYaw();
plyrMvmt = player_getAnimCtrlPtr();
anctrl_setSmoothTransition(this->anctrl, 0);
anctrl_setStart(this->anctrl,anctrl_getAnimTimer(plyrMvmt));
anctrl_setDuration(this->anctrl, 1000.0f);
anctrl_start(this->anctrl, "chjigsawdance.c", 0x6e);
break;
case 5:
this->marker->propPtr->unk8_4 = 0;
break;
}
}
void chJigsawDance_setState(Actor * this, u32 arg1){
switch(arg1){
case 3:
if(this->state == 1){
subaddie_set_state(this, 2);
anctrl_setPlaybackType(this->anctrl, ANIMCTRL_ONCE);
}
break;
case 2:
subaddie_set_state(this, 3);
break;
case 1:
subaddie_set_state(this, 4);
break;
case 4:
player_getPosition(this->position);
this->yaw = player_getYaw();
anctrl_setSmoothTransition(this->anctrl, 0);
anctrl_setStart(this->anctrl, anctrl_getAnimTimer(player_getAnimCtrlPtr()));
anctrl_setDuration(this->anctrl, 1000.0f);
anctrl_start(this->anctrl, "chjigsawdance.c", 0x97);
break;
case 5:
subaddie_set_state(this, 5);
this->marker->propPtr->unk8_4 = 0;
break;
}
}