AirOctaFlyUp::enter ok

had to make a dummy variable in order to get a variable at 0x114 in AirOctaDataMgr, and also had to make function sub_71002FB17C so enter_ could still call it. loadParams_ still doesnt match with a difference of 0. Will look into sub_71002FB17C and the missing variables soon.
This commit is contained in:
bomba1749 2023-06-10 23:22:00 -04:00 committed by GitHub
parent 777733979e
commit 83b5065160
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 20 additions and 7 deletions

View File

@ -1,6 +1,9 @@
#include "Game/AI/AI/aiAirOctaFlyUp.h"
#include "Game/DLC/aocHardModeManager.h"
#include "KingSystem/Utils/Thread/Message.h"
#include "KingSystem/ActorSystem/actAiParam.h"
#include "KingSystem/ActorSystem/actAiInlineParam.h"
#include "KingSystem/ActorSystem/actActor.h"
namespace uking::ai {
@ -32,12 +35,20 @@ bool AirOctaFlyUp::handleMessage_( const ksys::Message& message) {
}
void AirOctaFlyUp::enter_(ksys::act::ai::InlineParamPack* params) {
ksys::act::ai::Ai::enter_(params);
if (auto* data_mgr = sead::DynamicCast<AirOctaDataMgr>((AirOctaDataMgr*)*mAirOctaDataMgr_a)){
data_mgr->unk_114 = 0;
data_mgr->sub_71002FB17C();
}
auto &mtx = getActor()->getMtx();
AirOctaY = mtx(1, 3);
ksys::act::ai::Ai::changeChild("開始");
}
void AirOctaFlyUp::leave_() {
ksys::act::ai::Ai::leave_();
}
float sub_71002FB17C();
void AirOctaFlyUp::loadParams_() {
getStaticParam(&mFlyUpDuration_s, "FlyUpDuration");

View File

@ -2,17 +2,18 @@
#include "KingSystem/ActorSystem/actAiAi.h"
#include "KingSystem/ActorSystem/actBaseProcLink.h"
#include "KingSystem/ActorSystem/actActor.h"
namespace uking::ai {
class AirOctaDataMgr {
SEAD_RTTI_BASE(AirOctaDataMgr)
public:
ksys::act::BaseProcLink& getProc() { return mBaseProcLink; }
private:
void sub_71002FB17C();
/* 0x08 */ char unk_00[0x10];
/* 0x18 */ ksys::act::BaseProcLink mBaseProcLink;
char placeFiller[0xEC];
/*0x114 */ u32 unk_114;
};
class AirOctaFlyUp : public ksys::act::ai::Ai {
@ -27,19 +28,20 @@ public:
void enter_(ksys::act::ai::InlineParamPack* params) override;
void leave_() override;
void loadParams_() override;
float sub_71002FB17C();
protected:
// static_param at offset 0x38
const float* mFlyUpDuration_s{};
// dynamic_param at offset 0x40
float* mTargetDistance_d{};
// aitree_variable at offset 0x48
// for whatever reason, removing getAITreeVariable(&mAirOctaDataMgr_a, "AirOctaDataMgr"); and replacing it with
// for whatever reason, removing void* mAirOctaDataMgr_a; and replacing it with
// AirOctaDataMgr** mAirOctaDataMgr_a{}; will make loadParams_ be not matching with a difference of 0 and make
// handleMessage_ go from a difference of 5 to matching. ¯\_(ツ)_/¯ going from nonmatching to matching and
// making another function go from matching to not really unmatching is still net progress
// getAITreeVariable(&mAirOctaDataMgr_a, "AirOctaDataMgr");
// void* mAirOctaDataMgr_a
AirOctaDataMgr** mAirOctaDataMgr_a{};
float AirOctaY{};
};
} // namespace uking::ai