mirror of
https://github.com/zeldaret/ss
synced 2026-06-12 21:44:56 -04:00
dAcEKs_c start
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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() {}
|
||||
|
||||
Reference in New Issue
Block a user