dAcEKs_c start

This commit is contained in:
elijah-thomas774
2026-05-04 21:48:13 -04:00
parent 59af442eac
commit b577f14b6c
3 changed files with 203 additions and 7 deletions
+5 -5
View File
@@ -12,12 +12,12 @@ __dt__76sStateMgr_c<8dAcEKs_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDCh
__dt__46sFStateMgr_c<8dAcEKs_c,20sStateMethodUsr_FI_c>Fv = .text:0x00000490; // type:function size:0xA4
fn_155_540 = .text:0x00000540; // type:function size:0x5C
fn_155_5A0 = .text:0x000005A0; // type:function size:0x4
fn_155_5B0 = .text:0x000005B0; // type:function size:0x134
fn_155_6F0 = .text:0x000006F0; // type:function size:0x8
fn_155_700 = .text:0x00000700; // type:function size:0x1A8
restorePosRotFromCopy__8dAcEKs_cFv = .text:0x000005B0; // type:function size:0x134
linkKiesuTag__8dAcEKs_cFP13dTgKiesuTag_c = .text:0x000006F0; // type:function size:0x8
setStartingState__8dAcEKs_cFv = .text:0x00000700; // type:function size:0x1A8
changeState__76sStateMgr_c<8dAcEKs_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>FRC12sStateIDIf_c = .text:0x000008B0; // type:function size:0x10
AcEKs__idleBasedOnSubtypeMaybe = .text:0x000008C0; // type:function size:0xCC
fn_155_990 = .text:0x00000990; // type:function size:0xD0
setIdleState__8dAcEKs_cFv = .text:0x000008C0; // type:function size:0xCC
getLineCrossYRange__8dAcEKs_cFRC7mVec3_cf = .text:0x00000990; // type:function size:0xD0
fn_155_A60 = .text:0x00000A60; // type:function size:0x6B0
getStateID__76sStateMgr_c<8dAcEKs_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x00001110; // type:function size:0x10
fn_155_1120 = .text:0x00001120; // type:function size:0x1C
+66 -2
View File
@@ -1,14 +1,34 @@
#ifndef D_A_E_KS_H
#define D_A_E_KS_H
#include "common.h"
#include "d/a/d_a_base.h"
#include "d/a/e/d_a_en_base.h"
#include "d/a/obj/d_a_obj_base.h"
#include "d/col/bg/d_bg_s_acch.h"
#include "d/col/cc/d_cc_d.h"
#include "m/m3d/m_anmtexpat.h"
#include "m/m_color.h"
#include "m/m_vec.h"
#include "nw4r/g3d/res/g3d_resfile.h"
#include "s/s_State.hpp"
#include "toBeSorted/d_emitter.h"
#include "toBeSorted/d_path.h"
class dTgKiesuTag_c;
class dAcEKs_c : public dAcEnBase_c {
public:
dAcEKs_c() : mStateMgr(*this) {}
dAcEKs_c() : mStateMgr(*this), field_0xAA8(0.f), field_0xAB0(0) {}
virtual ~dAcEKs_c() {}
virtual int doDelete() override;
virtual int draw() override;
virtual bool createHeap() override;
virtual int actorCreate() override;
virtual int actorPostCreate() override;
virtual int actorExecute() override;
virtual bool restorePosRotFromCopy() override;
STATE_FUNC_DECLARE(dAcEKs_c, Wait);
STATE_FUNC_DECLARE(dAcEKs_c, WakeUp);
STATE_FUNC_DECLARE(dAcEKs_c, ReturnToWait);
@@ -24,8 +44,52 @@ public:
STATE_FUNC_DECLARE(dAcEKs_c, WindBlow);
STATE_FUNC_DECLARE(dAcEKs_c, PathMove);
public:
void linkKiesuTag(dTgKiesuTag_c *pTgKs);
void setStartingState();
void setIdleState();
f32 getLineCrossYRange(const mVec3_c &pos, f32 range);
private:
/* 0x??? */ STATE_MGR_DECLARE(dAcEKs_c);
/* 0x378 */ dAcRef_c<dTgKiesuTag_c> mTgRef;
/* 0x384 */ nw4r::g3d::ResFile mRres;
/* 0x388 */ d3d::AnmMdlWrapper mMdl;
/* 0x3F8 */ m3d::anmTexPat_c mAnmTexPat;
/* 0x324 */ dShadowCircle_c mShadow;
/* 0x42C */ dBgS_AcchCir mAcchCir;
/* 0x488 */ dBgS_ObjAcch mAcch;
/* 0x838 */ dCcD_Sph mSph;
/* 0x988 */ STATE_MGR_DECLARE(dAcEKs_c);
/* 0x9C4 */ dEmitter_c mEmitter1;
/* 0x9F8 */ dEmitter_c mEmitter2;
/* 0xA2C */ dWaterEffect_c mWaterEmitter;
/* 0xA74 */ ActorOnRail_Ext mRail;
/* 0xAA8 */ f32 field_0xAA8;
/* 0xAAC */ UNKWORD field_0xAAC;
/* 0xAA8 */ u8 field_0xAB0;
/* 0xAB1 */ u8 _0xAB1[0xB14 - 0xAB1];
/* 0xB14 */ mVec3_c mPnts[10];
/* 0xB8C */ u8 _0xB8C[0xD20 - 0xB8C];
/* 0xD20 */ f32 field_0xD20;
/* 0xD24 */ u8 _0xD24[0xD32 - 0xD24];
/* 0xD32 */ s16 mTimer;
/* 0xD34 */ u8 _0xD34[0xDB1 - 0xD34];
/* 0xDB1 */ u8 field_0xDB1;
/* 0xDB2 */ u8 _0xDB2[0xDBC - 0xDB2];
/* 0xDBC */ u8 mType;
/* 0xDBD */ u8 _0xDBD[0xDC2 - 0xDBD];
/* 0xDC2 */ u8 mCurrentState;
/* 0xDC3 */ u8 mNextState;
/* 0xDC4 */ u8 _0xDC4[0xDC7 - 0xDC4];
/* 0xDC7 */ u8 mStartingState;
/* 0xDC8 */ u8 _0xDC8[0xDCF - 0xDB8];
/* 0xDCF */ u8 field_0xDCF;
/* 0xDD0 */ u8 _0xDD0[0xDD4 - 0xDD0];
/* 0xDD4 */ mVec3_c mHomePos;
/* 0xDE0 */ mColor mColor;
/* 0xDE4 */ f32 field_0xDE4;
/* 0xDE8 */ u8 _0xDE8[0xDF0 - 0xDE8];
};
#endif
+132
View File
@@ -1,5 +1,13 @@
#include "d/a/e/d_a_e_ks.h"
#include "c/c_math.h"
#include "common.h"
#include "d/col/bg/d_bg_s.h"
#include "d/col/bg/d_bg_s_lin_chk.h"
#include "d/t/d_t_ks.h"
#include "m/m_vec.h"
#include "toBeSorted/time_area_mgr.h"
SPECIAL_ACTOR_PROFILE(E_KS, dAcEKs_c, fProfile::E_KS, 0xFE, 0, 4099);
STATE_DEFINE(dAcEKs_c, Wait);
@@ -17,45 +25,169 @@ STATE_DEFINE(dAcEKs_c, Stun);
STATE_DEFINE(dAcEKs_c, WindBlow);
STATE_DEFINE(dAcEKs_c, PathMove);
bool dAcEKs_c::restorePosRotFromCopy() {
if (field_0xDCF == 0) {
if (dTimeAreaMgr_c::GetInstance()->fn_800B9B60(mRoomID, mPosition) != 0) {
field_0xAA8 = 0.f;
mSph.ClrCoSet();
mSph.ClrTgSet();
mSph.ClrAtSet();
fn_800306d0();
if (mType == 1 || mType == 2) {
field_0xD20 = 0.f;
field_0xDE4 = 0.f;
if (mEmitter1.hasEmitters()) {
mEmitter1.remove(true);
}
}
} else {
field_0xAA8 = 1.f;
fn_80030700();
mSph.OnCoSet();
mSph.OnTgSet();
}
mMdl.getModel().setScale(mScale * field_0xAA8);
}
return true;
}
void dAcEKs_c::linkKiesuTag(dTgKiesuTag_c *pTgKs) {
mTgRef.link(pTgKs);
}
void dAcEKs_c::setStartingState() {
mTimer = cM::rndInt(1000);
switch (mStartingState) {
case 0: {
mStateMgr.changeState(StateID_Move);
mCurrentState = mStartingState;
mAcch.ClrRoofNone();
mAcch.SetField_0xD4(55.f);
mAcch.SetGroundUpY(30.f);
mAcchCir.SetWall(20.f, 60.f);
} break;
case 1: {
mStateMgr.changeState(StateID_Wait);
mCurrentState = mStartingState;
if ((s32)getFromParams(30, 0x3) == 1) {
field_0xDB1 = 1;
}
mAcch.ClrRoofHit();
mAcch.SetGroundUpY(0.f);
mAcch.SetField_0xD4(0.f);
mAcchCir.SetWall(0.f, 5.f);
} break;
case 2: {
mCurrentState = mStartingState;
mAcch.ClrRoofNone();
mAcch.SetField_0xD4(55.f);
mAcch.SetGroundUpY(30.f);
mAcchCir.SetWall(20.f, 60.f);
mStateMgr.changeState(StateID_PathMove);
} break;
default: {
mStateMgr.changeState(StateID_Move);
mCurrentState = mStartingState;
} break;
}
mCurrentState = mNextState;
}
void dAcEKs_c::setIdleState() {
switch (mStartingState) {
case 0: {
mStateMgr.changeState(StateID_Move);
mCurrentState = 0;
} break;
case 1: {
mStateMgr.changeState(StateID_ReturnToWait);
mCurrentState = 5;
} break;
case 2: {
mStateMgr.changeState(StateID_PathMove);
mCurrentState = 2;
} break;
default: {
mStateMgr.changeState(StateID_Move);
mCurrentState = 0;
} break;
}
}
f32 dAcEKs_c::getLineCrossYRange(const mVec3_c &pos, f32 range) {
dBgS_ObjLinChk linChk;
mVec3_c start, end;
start.set(pos);
start.y -= range;
end.set(pos);
end.y += range;
linChk.Set(&start, &end, nullptr);
if (dBgS::GetInstance()->LineCross(&linChk)) {
return linChk.GetLinEnd().y;
} else {
return mStartingPos.y;
}
}
// idk
void dAcEKs_c::initializeState_Wait() {}
void dAcEKs_c::executeState_Wait() {}
void dAcEKs_c::finalizeState_Wait() {}
void dAcEKs_c::initializeState_WakeUp() {}
void dAcEKs_c::executeState_WakeUp() {}
void dAcEKs_c::finalizeState_WakeUp() {}
void dAcEKs_c::initializeState_ReturnToWait() {}
void dAcEKs_c::executeState_ReturnToWait() {}
void dAcEKs_c::finalizeState_ReturnToWait() {}
void dAcEKs_c::initializeState_WaitReady() {}
void dAcEKs_c::executeState_WaitReady() {}
void dAcEKs_c::finalizeState_WaitReady() {}
void dAcEKs_c::initializeState_Move() {}
void dAcEKs_c::executeState_Move() {}
void dAcEKs_c::finalizeState_Move() {}
void dAcEKs_c::initializeState_Chase() {}
void dAcEKs_c::executeState_Chase() {}
void dAcEKs_c::finalizeState_Chase() {}
void dAcEKs_c::initializeState_ChaseAttack() {}
void dAcEKs_c::executeState_ChaseAttack() {}
void dAcEKs_c::finalizeState_ChaseAttack() {}
void dAcEKs_c::initializeState_Fighting() {}
void dAcEKs_c::executeState_Fighting() {}
void dAcEKs_c::finalizeState_Fighting() {}
void dAcEKs_c::initializeState_AttackReady() {}
void dAcEKs_c::executeState_AttackReady() {}
void dAcEKs_c::finalizeState_AttackReady() {}
void dAcEKs_c::initializeState_Attack() {}
void dAcEKs_c::executeState_Attack() {}
void dAcEKs_c::finalizeState_Attack() {}
void dAcEKs_c::initializeState_Damage() {}
void dAcEKs_c::executeState_Damage() {}
void dAcEKs_c::finalizeState_Damage() {}
void dAcEKs_c::initializeState_Stun() {}
void dAcEKs_c::executeState_Stun() {}
void dAcEKs_c::finalizeState_Stun() {}
void dAcEKs_c::initializeState_WindBlow() {}
void dAcEKs_c::executeState_WindBlow() {}
void dAcEKs_c::finalizeState_WindBlow() {}
void dAcEKs_c::initializeState_PathMove() {}
void dAcEKs_c::executeState_PathMove() {}
void dAcEKs_c::finalizeState_PathMove() {}