From 73cb1f3f5b348532cc8d76d3d56794b974903d26 Mon Sep 17 00:00:00 2001 From: Orstedra Date: Wed, 28 May 2025 02:05:02 +0200 Subject: [PATCH] 86% --- include/d/a/obj/d_a_obj_girahim_foot.h | 7 +++-- src/REL/d/a/obj/d_a_obj_girahim_foot.cpp | 40 +++++++++++++++++++++--- 2 files changed, 40 insertions(+), 7 deletions(-) diff --git a/include/d/a/obj/d_a_obj_girahim_foot.h b/include/d/a/obj/d_a_obj_girahim_foot.h index 5d0910c1..658b4b2c 100644 --- a/include/d/a/obj/d_a_obj_girahim_foot.h +++ b/include/d/a/obj/d_a_obj_girahim_foot.h @@ -22,10 +22,11 @@ public: STATE_FUNC_DECLARE(dAcOgirahimFoot_c, Appear); private: - /* */ nw4r::g3d::ResFile mRes; - /* */ m3d::smdl_c mMdl; + /* 0x330 */ nw4r::g3d::ResFile mRes; + /* 0x334 */ m3d::smdl_c mMdl; /* 0x350 */ m3d::mShadowCircle_c mShadow; - /* 0x??? */ STATE_MGR_DECLARE(dAcOgirahimFoot_c); + /* 0x358 */ STATE_MGR_DECLARE(dAcOgirahimFoot_c); + bool field_0x394; }; #endif diff --git a/src/REL/d/a/obj/d_a_obj_girahim_foot.cpp b/src/REL/d/a/obj/d_a_obj_girahim_foot.cpp index 5f32edf8..9a88dcfc 100644 --- a/src/REL/d/a/obj/d_a_obj_girahim_foot.cpp +++ b/src/REL/d/a/obj/d_a_obj_girahim_foot.cpp @@ -1,9 +1,13 @@ #include "d/a/obj/d_a_obj_girahim_foot.h" +#include "common.h" #include "d/a/obj/d_a_obj_base.h" #include "f/f_base.h" +#include "m/m_angle.h" +#include "m/m_vec.h" #include "nw4r/g3d/res/g3d_resfile.h" #include "s/s_State.hpp" +#include "toBeSorted/d_emitter.h" SPECIAL_ACTOR_PROFILE(OBJ_GIRAHIM_FOOT, dAcOgirahimFoot_c, fProfile::OBJ_GIRAHIM_FOOT, 0x210, 0, 6); @@ -17,6 +21,8 @@ int dAcOgirahimFoot_c::create() { mMdl.setLocalMtx(mWorldMtx); + mStateMgr.changeState(StateID_Wait); + poscopy2.x = 13275.0f; poscopy2.y = 2370.0f; poscopy2.z = -11780.0f; @@ -47,15 +53,41 @@ bool dAcOgirahimFoot_c::createHeap() { nw4r::g3d::ResMdl resMdl = mRes.GetResMdl("Girahim_Foot"); TRY_CREATE(mMdl.create(resMdl, &heap_allocator, 0x120, 1, nullptr)); + + return true; } int dAcOgirahimFoot_c::actorExecute() { + mStateMgr.executeState(); return SUCCEEDED; } -void dAcOgirahimFoot_c::initializeState_Wait() {} -void dAcOgirahimFoot_c::executeState_Wait() {} +void dAcOgirahimFoot_c::initializeState_Wait() { + field_0x394 = false; +} + +void dAcOgirahimFoot_c::executeState_Wait() { + if (field_0x394) { + mStateMgr.changeState(StateID_Appear); + } + return; +} + void dAcOgirahimFoot_c::finalizeState_Wait() {} -void dAcOgirahimFoot_c::initializeState_Appear() {} -void dAcOgirahimFoot_c::executeState_Appear() {} + +void dAcOgirahimFoot_c::initializeState_Appear() { + field_0x394 = true; +} + +void dAcOgirahimFoot_c::executeState_Appear() { + if (!field_0x394) { + dJEffManager_c::spawnEffect( + PARTICLE_RESOURCE_ID_MAPPING_77_, position, (mAng3_c *)0x0, &mScale, nullptr, nullptr, 0, 0 + ); + fBase_c::deleteRequest(); + } + + return; +} + void dAcOgirahimFoot_c::finalizeState_Appear() {}