mirror of
https://github.com/zeldaret/oot.git
synced 2024-11-11 03:39:59 +00:00
begain work on EnAni
This commit is contained in:
parent
e5a5f0a46d
commit
dda2641082
3 changed files with 178 additions and 15 deletions
|
@ -6,12 +6,12 @@
|
|||
|
||||
struct BgHidanFirewall;
|
||||
|
||||
typedef void (*FirewallFunc)(struct BgHidanFirewall* this, GlobalContext* globalCtx);
|
||||
typedef void FirewallFunc(struct BgHidanFirewall* this, GlobalContext* globalCtx);
|
||||
|
||||
typedef struct BgHidanFirewall
|
||||
{
|
||||
/* 0x0000 */ Actor actor;
|
||||
/* 0x014C */ FirewallFunc actionFunc; // idle, countdown, etc
|
||||
/* 0x014C */ FirewallFunc* actionFunc; // idle, countdown, etc
|
||||
/* 0x0150 */ s16 unk_150;
|
||||
/* 0x0154 */ ColliderCylinderMain* collider;
|
||||
/* 0x0158 */ char unk_158[0xC];
|
||||
|
|
|
@ -3,10 +3,6 @@
|
|||
#define ROOM 0x00
|
||||
#define FLAGS 0x00000009
|
||||
|
||||
void EnAni_Init(EnAni* this, GlobalContext* globalCtx);
|
||||
void EnAni_Destroy(EnAni* this, GlobalContext* globalCtx);
|
||||
void EnAni_Update(EnAni* this, GlobalContext* globalCtx);
|
||||
void EnAni_Draw(EnAni* this, GlobalContext* globalCtx);
|
||||
|
||||
/*
|
||||
const ActorInit En_Ani_InitVars =
|
||||
|
@ -23,38 +19,181 @@ const ActorInit En_Ani_InitVars =
|
|||
(ActorFunc)EnAni_Draw,
|
||||
};
|
||||
*/
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ani/func_809B0370.s")
|
||||
|
||||
//EnAni_SetupAction
|
||||
void func_809B0370(EnAni* this, ActorFunc actionFunc)
|
||||
{
|
||||
this->actionFunc = actionFunc;
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ani/EnAni_Init.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ani/EnAni_Destroy.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ani/func_809B04B4.s")
|
||||
s32 func_809B04B4(EnAni* this, GlobalContext* globalCtx, u16 arg2)
|
||||
{
|
||||
this->actor.textId = arg2;
|
||||
this->unk_2A8 = (this->unk_2A8 | 1);
|
||||
func_8002F2CC(&this->actor, globalCtx, 100.0f);
|
||||
return 0;
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ani/func_809B04F0.s")
|
||||
void func_809B04F0(EnAni* this, GlobalContext* globalCtx)
|
||||
{
|
||||
if (func_8002F334(&this->actor, globalCtx) != 0)
|
||||
{
|
||||
func_809B0370(this, func_809B064C);
|
||||
}
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ani/func_809B0524.s")
|
||||
void func_809B0524(EnAni* this, GlobalContext* globalCtx)
|
||||
{
|
||||
if (func_8002F334(&this->actor, globalCtx) != 0)
|
||||
{
|
||||
func_809B0370(this, func_809B07F8);
|
||||
}
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ani/func_809B0558.s")
|
||||
void func_809B0558(EnAni* this, GlobalContext* globalCtx)
|
||||
{
|
||||
if (func_8002F410(&this->actor, globalCtx) != 0)
|
||||
{
|
||||
this->actor.attachedA = 0;
|
||||
if (LINK_IS_CHILD)
|
||||
{
|
||||
func_809B0370(this, func_809B04F0);
|
||||
}
|
||||
else
|
||||
{
|
||||
func_809B0370(this, func_809B0524);
|
||||
}
|
||||
gSaveContext.item_get_inf[1] = gSaveContext.item_get_inf[1] | 0x20;
|
||||
return;
|
||||
}
|
||||
func_8002F434(&this->actor, globalCtx, GI_HEART_PIECE, 10000.0f, 200.0f);
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ani/func_809B05F0.s")
|
||||
void func_809B05F0(EnAni* this, GlobalContext* globalCtx)
|
||||
{
|
||||
if (func_8002F334(this, globalCtx) != 0)
|
||||
{
|
||||
func_809B0370(this, func_809B0558);
|
||||
}
|
||||
func_8002F434(this, globalCtx, GI_HEART_PIECE, 10000.0f, 200.0f);
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ani/func_809B064C.s")
|
||||
// void func_809B064C(EnAni* this, GlobalContext* globalCtx)
|
||||
// {
|
||||
// u16 phi_a2;
|
||||
// s16 temp_v1;
|
||||
// s32 temp_ret;
|
||||
|
||||
// temp_ret = func_8006C360(globalCtx, 0xA);
|
||||
// phi_a2 = temp_ret & 0xffff;
|
||||
|
||||
// if (temp_ret == 0)
|
||||
// {
|
||||
// phi_a2 = 0x5050U;
|
||||
// if (gSaveContext.night_flag != 0)
|
||||
// {
|
||||
// phi_a2 = 0x5051U;
|
||||
// }
|
||||
// }
|
||||
|
||||
// temp_v1 = (this->actor.rotTowardsLinkY - this->actor.shape.rot.y);
|
||||
// if (func_8002F194(&this->actor, globalCtx) != 0)
|
||||
// {
|
||||
// if (this->actor.textId == 0x5056) // "To get a good view..."
|
||||
// {
|
||||
// func_809B0370(this, func_809B04F0);
|
||||
// return;
|
||||
// }
|
||||
// if (this->actor.textId == 0x5055) // "...I'll give you this as a memento."
|
||||
// {
|
||||
|
||||
// func_809B0370(this, func_809B05F0);
|
||||
// return;
|
||||
// }
|
||||
// func_809B0370(this, func_809B04F0);
|
||||
// return;
|
||||
// }
|
||||
// if (temp_v1 >= -0x36AF)
|
||||
// {
|
||||
// if (temp_v1 < 0)
|
||||
// {
|
||||
// if (this->actor.xzDistanceFromLink < 150.0f)
|
||||
// {
|
||||
// if (-80.0f < this->actor.yDistanceFromLink)
|
||||
// {
|
||||
// if ((gSaveContext.item_get_inf[1] & 0x20) == 0)
|
||||
// {
|
||||
// func_809B04B4(this, globalCtx, 0x5056); // "To get a good view..."
|
||||
// return;
|
||||
// }
|
||||
// func_809B04B4(this, globalCtx, 0x5055); // "...I'll give you this as a memento."
|
||||
// return;
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// if (temp_v1 >= -0x3e7)
|
||||
// {
|
||||
// if (temp_v1 < 0x36b0)
|
||||
// {
|
||||
// if (this->actor.xzDistanceFromLink < 350.0f)
|
||||
// {
|
||||
// func_809B04B4(this, globalCtx, phi_a2);
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// } THIS IS SUPER CLOSE
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ani/func_809B07F8.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ani/func_809B0988.s")
|
||||
void func_809B0988(EnAni* this, GlobalContext* globalCtx) { }
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ani/func_809B0994.s")
|
||||
// void func_809B0994(EnAni* this, GlobalContext* globalCtx)
|
||||
// {
|
||||
// if (globalCtx->csCtx.actorActions[0]->action == 4)
|
||||
// {
|
||||
// SkelAnime_ChangeAnimation(&this->skelAnime, 0x60070F0, 1.0f, 0.0f, (f32) SkelAnime_GetFrameCount(0x60070F0), 2, -4.0f);
|
||||
// this->actor.shape.shadowDrawFunc = 0x8003B5EC;
|
||||
// this->unk_2AA += 1;
|
||||
// }
|
||||
// }
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ani/func_809B0A28.s")
|
||||
void func_809B0A28(EnAni* this, GlobalContext* globalCtx)
|
||||
{
|
||||
if (SkelAnime_FrameUpdateMatrix(&this->skelAnime) != 0)
|
||||
{
|
||||
this->unk_2AA += 1;
|
||||
}
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ani/func_809B0A6C.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ani/EnAni_Update.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ani/func_809B0D90.s")
|
||||
// ? func_809B0D90(s32 arg0, s32 arg1, ? arg2, ? arg3, void *arg4, void *arg5)
|
||||
// {
|
||||
// if (arg1 == 0xf)
|
||||
// {
|
||||
// arg4->unk0 = (s16) (arg4->unk0 + arg5->unk29E);
|
||||
// arg4->unk4 = (s16) (arg4->unk4 + arg5->unk29C);
|
||||
// }
|
||||
// return 0;
|
||||
// }
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ani/func_809B0DD4.s")
|
||||
// void func_809B0DD4(s32 arg0, Actor* arg1, ? arg2, ? arg3)
|
||||
// {
|
||||
// if (arg1 == 0xf)
|
||||
// {
|
||||
// Matrix_MultVec3f(&D_809B0F74, &arg1->posRot2.pos);
|
||||
// }
|
||||
// }
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ani/EnAni_Draw.s")
|
||||
|
|
|
@ -7,9 +7,33 @@
|
|||
typedef struct
|
||||
{
|
||||
/* 0x0000 */ Actor actor;
|
||||
/* 0x014C */ char unk_14C[0x168];
|
||||
/* 0x014C */ char unk_14C[0x4C];
|
||||
/* 0x0198 */ SkelAnime skelAnime;
|
||||
/* 0x01D8 */ char unk_19C[0xD0];
|
||||
/* 0x02A8 */ u16 unk_2A8;
|
||||
/* 0x02AA */ u16 unk_2AA;
|
||||
/* 0x02AC */ char unk_2AC[0x4];
|
||||
/* 0x02B0 */ ActorFunc actionFunc;
|
||||
} EnAni; // size = 0x02B4
|
||||
|
||||
extern const ActorInit En_Ani_InitVars;
|
||||
|
||||
void func_809B0370(EnAni* this, ActorFunc actionFunc);
|
||||
void EnAni_Init(EnAni* this, GlobalContext* globalCtx);
|
||||
void EnAni_Destroy(EnAni* this, GlobalContext* globalCtx);
|
||||
s32 func_809B04B4(EnAni* this, GlobalContext* globalCtx, u16 arg2);
|
||||
void func_809B04F0(EnAni* this, GlobalContext* globalCtx);
|
||||
void func_809B0524(EnAni* this, GlobalContext* globalCtx);
|
||||
void func_809B0558(EnAni* this, GlobalContext* globalCtx);
|
||||
void func_809B05F0(EnAni* this, GlobalContext* globalCtx);
|
||||
void func_809B064C(EnAni* this, GlobalContext* globalCtx);
|
||||
void func_809B07F8(EnAni* this, GlobalContext* globalCtx);
|
||||
void func_809B0988(EnAni* this, GlobalContext* globalCtx);
|
||||
|
||||
|
||||
|
||||
void EnAni_Update(EnAni* this, GlobalContext* globalCtx);
|
||||
void EnAni_Draw(EnAni* this, GlobalContext* globalCtx);
|
||||
|
||||
|
||||
#endif
|
||||
|
|
Loading…
Reference in a new issue