Add files via upload

This commit is contained in:
bomba1749 2023-07-02 22:10:24 -04:00 committed by GitHub
parent adf4703d1d
commit 739d1e06a8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 49 additions and 50 deletions

View File

@ -1,10 +1,9 @@
#include "Game/AI/AI/aiAirOctaFlyUp.h"
#include "Game/DLC/aocHardModeManager.h"
#include "KingSystem/Utils/Thread/Message.h"
#include "Game/AirOctaDataMgrTemp.h"
#include "KingSystem/System/VFRValue.h"
#include "KingSystem/System/VFR.h"
#include "Game/DLC/aocHardModeManager.h"
#include "KingSystem/ActorSystem/AS/ASList.h"
#include "KingSystem/System/VFR.h"
#include "KingSystem/Utils/Thread/Message.h"
namespace uking::ai {
AirOctaFlyUp::AirOctaFlyUp(const InitArg& arg) : ksys::act::ai::Ai(arg) {}
@ -14,54 +13,56 @@ AirOctaFlyUp::~AirOctaFlyUp() = default;
bool AirOctaFlyUp::init_(sead::Heap* heap) {
return ksys::act::ai::Ai::init_(heap);
}
void AirOctaFlyUp::calc_(){
// NON_MATCHING: one add should be a sub, and one str should be a stur
void AirOctaFlyUp::calc_() {
if (auto* data_mgr = getDataMgr()) {
// I added VFR::getDeltaFrame and changed VFR::getDeltaTime to refer to mDeltaTimes array.
auto deltaTime = ksys::VFR::instance()->getDeltaTime();
mElapsedTime += deltaTime;
auto v11 = sead::Mathf::min( 1.0f, mElapsedTime / *mFlyUpDuration_s);
auto v11 = sead::Mathf::min(1.0f, mElapsedTime / *mFlyUpDuration_s);
auto v12 = v11 * 2.f;
auto v13 = (v11 * 2.f) - 1.f;
auto v14 = v12 < 1.f ? sead::Mathf::exp(v13 * 10.f) : 2.f - sead::Mathf::exp(v13 * -10.f);
auto v15 = v14 * 0.5f;
data_mgr->unk_114 = v15 * *mTargetDistance_d;
data_mgr->sub_71002fb17c();
u32 y_ = *(u32*)&(getActor()->getMtx().m[1][3]);
if (isCurrentChild("終了")) { // "End"
u32 y = *(u32*)&(getActor()->getMtx().m[1][3]);
if (isCurrentChild("終了")) { // "End"
if (!mIsEnded) {
auto currentChild = getCurrentChild();
if (currentChild->isFinished() || currentChild->isFailed() ){
if (currentChild->isFinished() || currentChild->isFailed()) {
auto ASList = getActor()->getASList();
if (ASList){
ASList->sub_710115b070( -1.f, -1.f, "Wait", 0, 0, true);
if (ASList) {
ASList->sub_710115b070(-1.f, -1.f, "Wait", 0, 0, true);
}
mIsEnded = true;
} else if (!mIsEnded) {
return;
}
}
}
if ((v15 >= 1.f && *(float*)&y_ >= getDataMgr()->unk_fc.y) || mElapsedTime >= (*mFlyUpDuration_s * 3.0f)) {
if ((v15 >= 1.f && *(float*)&y >= getDataMgr()->unk_fc.y) ||
mElapsedTime >= (*mFlyUpDuration_s * 3.0f)) {
ksys::act::ActorConstDataAccess linkData;
if (ksys::act::acquireActor(&getDataMgr()->unk_00, &linkData)) {
UserData = 3;
getActor()->sendMessage(*linkData.getMessageTransceiverId(), 0x80000C8, &UserData, false);
if (ksys::act::acquireActor(&getDataMgr()->mBaseProcLink, &linkData)) {
mUserData = 3;
getActor()->sendMessage(*linkData.getMessageTransceiverId(), 0x80000C8,
&mUserData, false);
}
}
} else if (*(float*)&y_ - AirOctaY >= *mTargetDistance_d * 0.9f || mElapsedTime >= (*mFlyUpDuration_s * 3.0f)) {
} else if (*(float*)&y - AirOctaY >= *mTargetDistance_d * 0.9f ||
mElapsedTime >= (*mFlyUpDuration_s * 3.0f)) {
ksys::act::ActorConstDataAccess linkData;
if (ksys::act::acquireActor(&getDataMgr()->unk_00, &linkData)) {
UserData = 2;
getActor()->sendMessage(*linkData.getMessageTransceiverId(), 0x80000C8, &UserData, false);
if (ksys::act::acquireActor(&getDataMgr()->mBaseProcLink, &linkData)) {
mUserData = 2;
getActor()->sendMessage(*linkData.getMessageTransceiverId(), 0x80000C8, &mUserData,
false);
}
}
}
}
bool AirOctaFlyUp::handleMessage_( const ksys::Message& message) {
bool AirOctaFlyUp::handleMessage_(const ksys::Message& message) {
if (message.getType().value == 0x80000c8) {
u32* user_data = static_cast<u32*>(message.getUserData());
auto* data_mgr = getDataMgr();
@ -70,7 +71,7 @@ bool AirOctaFlyUp::handleMessage_( const ksys::Message& message) {
}
if (user_data != nullptr) {
if (*user_data == 3) {
Ai::changeChild( "終了"); //END IN JAPANESE
Ai::changeChild("終了"); // END IN JAPANESE
} else if (*user_data == 4) {
ActionBase::setFinished();
}
@ -81,20 +82,20 @@ bool AirOctaFlyUp::handleMessage_( const ksys::Message& message) {
}
void AirOctaFlyUp::enter_(ksys::act::ai::InlineParamPack* params) {
if (auto* data_mgr = getDataMgr()){
data_mgr->unk_114 = 0;
data_mgr->uking::AirOctaDataMgr::sub_71002fb17c();
if (auto* data_mgr = getDataMgr()) {
data_mgr->unk_114 = 0;
data_mgr->uking::AirOctaDataMgr::sub_71002fb17c();
}
auto &mtx = mActor->getMtx();
auto& mtx = mActor->getMtx();
AirOctaY = mtx(1, 3);
ksys::act::ai::Ai::changeChild("開始");
}
void AirOctaFlyUp::leave_() {
if (auto* data_mgr = getDataMgr()){
data_mgr->unk_118 = *mTargetDistance_d + data_mgr->unk_118;
data_mgr->unk_114 = 0;
data_mgr->uking::AirOctaDataMgr::sub_71002fb17c();
if (auto* data_mgr = getDataMgr()) {
data_mgr->unk_118 = *mTargetDistance_d + data_mgr->unk_118;
data_mgr->unk_114 = 0;
data_mgr->uking::AirOctaDataMgr::sub_71002fb17c();
}
}
@ -105,4 +106,3 @@ void AirOctaFlyUp::loadParams_() {
}
} // namespace uking::ai

View File

@ -1,15 +1,15 @@
#pragma once
#include "Game/AI/AI/aiAirOctaRoot.h"
#include "Game/AirOctaDataMgrTemp.h"
#include "KingSystem/ActorSystem/actActor.h"
#include "KingSystem/ActorSystem/actAiAi.h"
#include "KingSystem/ActorSystem/actBaseProcLink.h"
#include "KingSystem/ActorSystem/actActor.h"
#include "Game/AirOctaDataMgrTemp.h"
namespace uking::ai {
class AirOctaFlyUp :
public ksys::act::ai::Ai {
public: static const sead::RuntimeTypeInfo::Interface* getRuntimeTypeInfoStatic() { static const sead::RuntimeTypeInfo::Derive<ksys::act::ai::Ai> typeInfo; return &typeInfo; } static bool checkDerivedRuntimeTypeInfoStatic( const sead::RuntimeTypeInfo::Interface* typeInfo) { const sead::RuntimeTypeInfo::Interface* clsTypeInfo = AirOctaFlyUp::getRuntimeTypeInfoStatic(); if (typeInfo == clsTypeInfo) return true; return ksys::act::ai::Ai::checkDerivedRuntimeTypeInfoStatic(typeInfo); } bool checkDerivedRuntimeTypeInfo(const sead::RuntimeTypeInfo::Interface* typeInfo) const override { return checkDerivedRuntimeTypeInfoStatic(typeInfo); } const sead::RuntimeTypeInfo::Interface* getRuntimeTypeInfo() const override { return getRuntimeTypeInfoStatic(); }
class AirOctaFlyUp : public ksys::act::ai::Ai {
friend uking::AirOctaDataMgr;
public:
explicit AirOctaFlyUp(const InitArg& arg);
~AirOctaFlyUp() override;
@ -20,27 +20,26 @@ public:
void leave_() override;
void loadParams_() override;
void calc_() override;
//probably somewhere else, but it has to exist somewhere to get calc_ working
//void sub_710115b070(ksys::as::ASList *this_, f32 a2, f32 a3, const sead::SafeString& a4, int a5, int a6, bool a7);
protected:
// Added
uking::AirOctaDataMgr *getDataMgr() { return sead::DynamicCast<AirOctaDataMgr>(*mAirOctaDataMgr_a); }
uking::AirOctaDataMgr* getDataMgr() {
return sead::DynamicCast<AirOctaDataMgr>(*mAirOctaDataMgr_a);
}
// 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 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
// void* mAirOctaDataMgr_a
// 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 void* mAirOctaDataMgr_a
AirOctaDataMgr** mAirOctaDataMgr_a{};
float AirOctaY{};
float mElapsedTime;
u32 UserData;
u32 mUserData;
bool mIsEnded;
};
} // namespace uking::ai