mirror of
https://github.com/zeldaret/ss
synced 2026-06-11 13:10:11 -04:00
misc dAcOFlag_c
This commit is contained in:
@@ -3,7 +3,7 @@ _epilog = .text:0x00000030; // type:function size:0x2C scope:global
|
||||
_unresolved = .text:0x00000060; // type:function size:0x4 scope:global
|
||||
__register_global_object = .text:0x00000070; // type:function size:0x1C scope:global
|
||||
__destroy_global_chain = .text:0x00000090; // type:function size:0x54 scope:global
|
||||
fn_552_F0 = .text:0x000000F0; // type:function size:0x40
|
||||
__dt__7mVec3_cFv = .text:0x000000F0; // type:function size:0x40
|
||||
dAcOFlag_c_classInit__Fv = .text:0x00000130; // type:function size:0x110
|
||||
__dt__23sFState_c<10dAcOFlag_c>Fv = .text:0x00000240; // type:function size:0x58
|
||||
__dt__26sFStateFct_c<10dAcOFlag_c>Fv = .text:0x000002A0; // type:function size:0x6C
|
||||
@@ -11,15 +11,15 @@ __dt__79sStateMgr_c<10dAcOFlag_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateI
|
||||
__dt__49sFStateMgr_c<10dAcOFlag_c,20sStateMethodUsr_FI_c>Fv = .text:0x000003B0; // type:function size:0xA4
|
||||
fn_552_460 = .text:0x00000460; // type:function size:0x40
|
||||
fn_552_4A0 = .text:0x000004A0; // type:function size:0x40
|
||||
fn_552_4E0 = .text:0x000004E0; // type:function size:0x4
|
||||
fn_552_4F0 = .text:0x000004F0; // type:function size:0x3AC
|
||||
fn_552_8A0 = .text:0x000008A0; // type:function size:0x290
|
||||
__ct__7mVec3_cFv = .text:0x000004E0; // type:function size:0x4
|
||||
createHeap__10dAcOFlag_cFv = .text:0x000004F0; // type:function size:0x3AC
|
||||
actorCreate__10dAcOFlag_cFv = .text:0x000008A0; // type:function size:0x290
|
||||
changeState__79sStateMgr_c<10dAcOFlag_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>FRC12sStateIDIf_c = .text:0x00000B30; // type:function size:0x10
|
||||
fn_552_B40 = .text:0x00000B40; // type:function size:0x1A4
|
||||
fn_552_CF0 = .text:0x00000CF0; // type:function size:0x8
|
||||
fn_552_D00 = .text:0x00000D00; // type:function size:0x178
|
||||
actorPostCreate__10dAcOFlag_cFv = .text:0x00000B40; // type:function size:0x1A4
|
||||
doDelete__10dAcOFlag_cFv = .text:0x00000CF0; // type:function size:0x8
|
||||
actorExecute__10dAcOFlag_cFv = .text:0x00000D00; // type:function size:0x178
|
||||
executeState__79sStateMgr_c<10dAcOFlag_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x00000E80; // type:function size:0x10
|
||||
fn_552_E90 = .text:0x00000E90; // type:function size:0x28
|
||||
draw__10dAcOFlag_cFv = .text:0x00000E90; // type:function size:0x28
|
||||
initializeState_Wait__10dAcOFlag_cFv = .text:0x00000EC0; // type:function size:0x4
|
||||
executeState_Wait__10dAcOFlag_cFv = .text:0x00000ED0; // type:function size:0x2C
|
||||
finalizeState_Wait__10dAcOFlag_cFv = .text:0x00000F00; // type:function size:0x4
|
||||
@@ -34,13 +34,13 @@ fn_552_2EA0 = .text:0x00002EA0; // type:function size:0xB0
|
||||
fn_552_2F50 = .text:0x00002F50; // type:function size:0x48
|
||||
fn_552_2FA0 = .text:0x00002FA0; // type:function size:0x414
|
||||
fn_552_33C0 = .text:0x000033C0; // type:function size:0x414
|
||||
fn_552_37E0 = .text:0x000037E0; // type:function size:0x184
|
||||
fn_552_3970 = .text:0x00003970; // type:function size:0x53C
|
||||
fn_552_3EB0 = .text:0x00003EB0; // type:function size:0x4C
|
||||
fn_552_3F00 = .text:0x00003F00; // type:function size:0x4C
|
||||
fn_552_3F50 = .text:0x00003F50; // type:function size:0x44
|
||||
fn_552_3FA0 = .text:0x00003FA0; // type:function size:0x24
|
||||
fn_552_3FD0 = .text:0x00003FD0; // type:function size:0x24
|
||||
setCollider__10dAcOFlag_cFv = .text:0x000037E0; // type:function size:0x184
|
||||
createPlacement__10dAcOFlag_cFv = .text:0x00003970; // type:function size:0x53C
|
||||
getArcName__10dAcOFlag_cFv = .text:0x00003EB0; // type:function size:0x4C
|
||||
getMdlName__10dAcOFlag_cFv = .text:0x00003F00; // type:function size:0x4C
|
||||
getAnmTexSrtName__10dAcOFlag_cFv = .text:0x00003F50; // type:function size:0x44
|
||||
isSail__10dAcOFlag_cFv = .text:0x00003FA0; // type:function size:0x24
|
||||
isPurpleFlag__10dAcOFlag_cFv = .text:0x00003FD0; // type:function size:0x24
|
||||
fn_552_4000 = .text:0x00004000; // type:function size:0x90
|
||||
__dt__10dAcOFlag_cFv = .text:0x00004090; // type:function size:0xF4
|
||||
getStateID__79sStateMgr_c<10dAcOFlag_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x00004190; // type:function size:0x10
|
||||
|
||||
@@ -70,6 +70,7 @@ class dAcBase_c : public dBase_c {
|
||||
public:
|
||||
enum AcProperties_e {
|
||||
AC_PROP_0x1 = (1 << 0),
|
||||
AC_PROP_0x2 = (1 << 1),
|
||||
AC_PROP_0x4 = (1 << 2),
|
||||
AC_PROP_0x100 = (1 << 8),
|
||||
AC_PROP_0x400 = (1 << 10),
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
#define D_A_OBJ_FLAG_H
|
||||
|
||||
#include "common.h"
|
||||
#include "d/a/d_a_base.h"
|
||||
#include "d/a/obj/d_a_obj_base.h"
|
||||
#include "d/col/cc/d_cc_d.h"
|
||||
#include "m/m3d/m_anmtexsrt.h"
|
||||
@@ -10,8 +11,8 @@
|
||||
#include "nw4r/g3d/g3d_scnobj.h"
|
||||
#include "nw4r/g3d/res/g3d_resfile.h"
|
||||
#include "s/s_State.hpp"
|
||||
#include "toBeSorted/stage_render_stuff.h"
|
||||
|
||||
class dAcODesertAgo_c;
|
||||
class dAcOFlag_c : public dAcObjBase_c {
|
||||
public:
|
||||
class callback_c : public nw4r::g3d::IScnObjCallback {
|
||||
@@ -31,6 +32,9 @@ public:
|
||||
|
||||
STATE_FUNC_DECLARE(dAcOFlag_c, Wait);
|
||||
|
||||
void setCollider();
|
||||
void createPlacement();
|
||||
|
||||
bool isSail();
|
||||
bool isPurpleFlag();
|
||||
const char *getArcName();
|
||||
@@ -47,9 +51,15 @@ private:
|
||||
/* 0x530 */ s32 field_0x530;
|
||||
/* 0x534 */ s32 mNumJoints;
|
||||
/* 0x538 */ mVec3_c *mpJoints;
|
||||
/* 0x53C */ u8 _0x538[0x548 - 0x53C];
|
||||
/* 0x53C */ mVec3_c field_0x53C;
|
||||
/* 0x548 */ s32 field_0x548;
|
||||
/* 0x54C */ u8 _0x54C[0x56C - 0x54C];
|
||||
/* 0x54C */ dAcRef_c<dAcODesertAgo_c> mDesertAgoRef;
|
||||
/* 0x558 */ s32 field_0x558;
|
||||
/* 0x55C */ s32 field_0x55C;
|
||||
/* 0x560 */ u8 field_0x560;
|
||||
/* 0x561 */ u8 field_0x561;
|
||||
/* 0x564 */ s32 field_0x564;
|
||||
/* 0x568 */ f32 field_0x568;
|
||||
/* 0x56C */ mVec3_c *mpJoints1; // Size 15
|
||||
/* 0x570 */ mVec3_c *mpJoints2; // Size 15
|
||||
/* 0x574 */ mVec3_c *mpJoints3; // Size 15
|
||||
|
||||
@@ -2,9 +2,16 @@
|
||||
|
||||
#include "c/c_math.h"
|
||||
#include "common.h"
|
||||
#include "d/a/d_a_base.h"
|
||||
#include "d/a/obj/d_a_obj_base.h"
|
||||
#include "d/a/obj/d_a_obj_desert_ago.h"
|
||||
#include "d/col/cc/d_cc_d.h"
|
||||
#include "d/d_sc_game.h"
|
||||
#include "d/snd/d_snd_wzsound.h"
|
||||
#include "f/f_base.h"
|
||||
#include "f/f_manager.h"
|
||||
#include "f/f_profile_name.h"
|
||||
#include "m/m_mtx.h"
|
||||
#include "m/m_vec.h"
|
||||
#include "nw4r/g3d/res/g3d_resanmtexsrt.h"
|
||||
#include "nw4r/g3d/res/g3d_resfile.h"
|
||||
@@ -138,6 +145,75 @@ int dAcOFlag_c::actorCreate() {
|
||||
return SUCCEEDED;
|
||||
}
|
||||
|
||||
int dAcOFlag_c::actorPostCreate() {
|
||||
if (isSail()) {
|
||||
if (dScGame_c::isCurrentStage("F301_6")) {
|
||||
if ((s32)getFromParams(0, 0xF) == 4) {
|
||||
dAcODesertAgo_c *pDesertAgo =
|
||||
static_cast<dAcODesertAgo_c *>(fManager_c::searchBaseByProfName(fProfile::OBJ_DESERT_AGO));
|
||||
if (!pDesertAgo) {
|
||||
return FAILED;
|
||||
}
|
||||
mDesertAgoRef.link(pDesertAgo);
|
||||
unsetActorProperty(AC_PROP_0x1 | AC_PROP_0x2);
|
||||
field_0x530 = 8995;
|
||||
field_0x564 = 249;
|
||||
field_0x561 = 0;
|
||||
} else {
|
||||
f32 s = 1.f / mScale.x;
|
||||
mBoundingBox.Set(
|
||||
mVec3_c(s * -4000.f, s * -2000.f, s * -6000.f), mVec3_c(s * 4000.f, s * 1500.f, s * 4000.f)
|
||||
);
|
||||
}
|
||||
setActorProperty(AC_PROP_0x4);
|
||||
} else {
|
||||
f32 s = 1.f / mScale.x;
|
||||
mBoundingBox.Set(
|
||||
mVec3_c(s * -3000.f, s * -4000.f, s * -3000.f), mVec3_c(s * 3000.f, s * 2000.f, s * 3000.f)
|
||||
);
|
||||
}
|
||||
field_0x558 = 0;
|
||||
field_0x55C = 91;
|
||||
}
|
||||
createPlacement();
|
||||
return SUCCEEDED;
|
||||
}
|
||||
|
||||
int dAcOFlag_c::doDelete() {
|
||||
return SUCCEEDED;
|
||||
}
|
||||
|
||||
int dAcOFlag_c::actorExecute() {
|
||||
field_0x530++;
|
||||
mStateMgr.executeState();
|
||||
|
||||
if (isSail()) {
|
||||
setCollider();
|
||||
}
|
||||
|
||||
if ((s32)getFromParams(0, 0xF) == 4) {
|
||||
mVec3_c v = mVec3_c::Zero;
|
||||
if (mDesertAgoRef.isLinked()) {
|
||||
// TODO: Fix for field at 0x86C. Probably translation from matrix
|
||||
mMtx_c m = mDesertAgoRef.get()->mWorldMtx;
|
||||
m.getTranslation(v);
|
||||
} else {
|
||||
v = mPosition;
|
||||
}
|
||||
mWorldMtx.transS(v);
|
||||
} else {
|
||||
mWorldMtx.transS(mPosition);
|
||||
}
|
||||
mMdl.setLocalMtx(mWorldMtx);
|
||||
holdSound(SE_Flag_FLUTTER_LV);
|
||||
return SUCCEEDED;
|
||||
}
|
||||
|
||||
int dAcOFlag_c::draw() {
|
||||
drawModelType1(&mMdl);
|
||||
return SUCCEEDED;
|
||||
}
|
||||
|
||||
void dAcOFlag_c::initializeState_Wait() {}
|
||||
void dAcOFlag_c::executeState_Wait() {}
|
||||
void dAcOFlag_c::finalizeState_Wait() {}
|
||||
|
||||
Reference in New Issue
Block a user