123 lines
3.8 KiB
C
123 lines
3.8 KiB
C
#include <ultra64.h>
|
|
#include "functions.h"
|
|
#include "variables.h"
|
|
#include "core2/nc/camera.h"
|
|
|
|
Actor *func_803925B0(ActorMarker *marker, Gfx **gfx, Mtx **mtx, Vtx **vtx);
|
|
void func_80392700(Actor *this);
|
|
void func_80392918(Actor *this);
|
|
|
|
/* .data */
|
|
ActorAnimationInfo D_80394CC0[] = {
|
|
{0x000, 0.0f},
|
|
{0x28B, 8.0f},
|
|
{0x28D, 0.5f},
|
|
{0x2AC, 3.0f},
|
|
{0x2AD, 14.0f},
|
|
{0x28D, 0.5f},
|
|
};
|
|
ActorInfo D_80394CF0 = { 0x29B, 0x3C5, 0x53D, 0x1, D_80394CC0, func_80392700, func_80392918, func_803925B0, 0, 0, 3.0f, 0};
|
|
|
|
/* .code */
|
|
Actor *func_803925B0(ActorMarker *marker, Gfx **gfx, Mtx **mtx, Vtx **vtx){
|
|
func_8033A45C(3, 0);
|
|
func_8033A45C(4, 0);
|
|
func_8033A45C(5, 0);
|
|
return actor_draw(marker, gfx, mtx, vtx);
|
|
}
|
|
|
|
|
|
void func_80392610(ActorMarker *marker, enum asset_e text_id, s32 arg2){
|
|
if(arg2 == 0xA){
|
|
mapSpecificFlags_set(5, TRUE);
|
|
}
|
|
else{
|
|
mapSpecificFlags_set(5, FALSE);
|
|
}
|
|
ncStaticCamera_setToNode(arg2);
|
|
}
|
|
|
|
void func_80392664(ActorMarker *marker, enum asset_e text_id, s32 arg2){
|
|
camera_setType(CAMERA_TYPE_2_DYNAMIC);
|
|
}
|
|
|
|
void func_80392690(ActorMarker *marker, enum asset_e text_id, s32 arg2){
|
|
Actor *this;
|
|
|
|
this = marker_getActor(marker);
|
|
func_8030E6D4(SFX_EA_GRUNTY_LAUGH_1);
|
|
subaddie_set_state_with_direction(this, 5, 0.0f, 1);
|
|
actor_loopAnimation(this);
|
|
this->yaw_ideal = 79.0f;
|
|
animctrl_setTransitionDuration(this->animctrl, 0.4f);
|
|
}
|
|
|
|
void func_80392700(Actor *this) {
|
|
if (mapSpecificFlags_get(4)) {
|
|
if (fileProgressFlag_get(FILEPROG_F4_ENTER_FF_CUTSCENE)) {
|
|
func_80311480(0x1031, 0xF, this->position, this->marker, func_80392664, func_80392610);
|
|
} else {
|
|
func_802BC280();
|
|
ncStaticCamera_setToNode(0x1F);
|
|
func_80311480(0x102C, 0xE, this->position, this->marker, func_80392664, func_80392610);
|
|
fileProgressFlag_set(FILEPROG_F4_ENTER_FF_CUTSCENE, TRUE);
|
|
}
|
|
mapSpecificFlags_set(4, 0);
|
|
}
|
|
if (mapSpecificFlags_get(6)) {
|
|
comusic_playTrack(COMUSIC_A8_KLUNGO_BY_FALLEN_GRUNTY);
|
|
func_802BC280();
|
|
ncStaticCamera_setToNode(9);
|
|
mapSpecificFlags_set(9, 1);
|
|
func_8028F94C(2, this->position);
|
|
func_80311480(0x103F, 0x2A, this->position, this->marker, func_80392690, func_80392610);
|
|
mapSpecificFlags_set(6, 0);
|
|
subaddie_set_state_with_direction(this, 3, 0.0f, 1);
|
|
actor_playAnimationOnce(this);
|
|
}
|
|
if ((this->state == 3) && (actor_animationIsAt(this, 0.999f) != 0)) {
|
|
subaddie_set_state_with_direction(this, 4, 0.0f, 1);
|
|
actor_loopAnimation(this);
|
|
}
|
|
if (this->state == 5) {
|
|
func_80328FB0(this, 12.0f);
|
|
if (func_80329480(this) != 0) {
|
|
subaddie_set_state_with_direction(this, 5, 0.0f, 1);
|
|
this->marker->unk2C_2 = TRUE;
|
|
}
|
|
}
|
|
this->unk58_0 = !func_8031A3BC();
|
|
}
|
|
|
|
|
|
void func_80392918(Actor *this) {
|
|
if (!this->unk16C_4) {
|
|
if (fileProgressFlag_get(FILEPROG_F4_ENTER_FF_CUTSCENE) && (func_8028E4A4() == 2)) {
|
|
mapSpecificFlags_set(4, 1);
|
|
}
|
|
this->unk4C = 400.0f;
|
|
this->marker->unk2C_2 = FALSE;
|
|
this->unk16C_4 = TRUE;
|
|
if (fileProgressFlag_get(FILEPROG_A6_FURNACE_FUN_COMPLETE)) {
|
|
marker_despawn(this->marker);
|
|
}
|
|
return;
|
|
}
|
|
func_80326224(this);
|
|
if ((this->unk48 > 0.5) && !this->unk138_24) {
|
|
this->unk138_24 = TRUE;
|
|
ncStaticCamera_setToNode(0x1E);
|
|
}
|
|
if ((0.999 < this->unk48) && !this->unk38_0) {
|
|
comusic_8025AB44(COMUSIC_A8_KLUNGO_BY_FALLEN_GRUNTY, 0, 2000);
|
|
func_8025AABC(0xA8);
|
|
this->unk38_0 = TRUE;
|
|
mapSpecificFlags_set(7, TRUE);
|
|
mapSpecificFlags_set(5, TRUE);
|
|
}
|
|
if (this->unk48 == 1.0) {
|
|
marker_despawn(this->marker);
|
|
}
|
|
|
|
}
|