summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorLéo Lam <leo@leolam.fr>2020-10-21 00:59:59 +0200
committerGitHub <noreply@github.com>2020-10-21 00:59:59 +0200
commit228471ee3cf335529d4e2f10160719aa411402bb (patch)
treec765da0dbd2ca4fbe8e393e013a28eeeb511f5c4 /src
parent3287f5eb25f8bd28357b3c50e6d6f0ade1f80f99 (diff)
parent4bb4c935a693f8e26c5ab4cc3a3ab6a96b97fe09 (diff)
Merge pull request #12 from notyourav/pr3
decompiled resResourceAwareness
Diffstat (limited to 'src')
-rw-r--r--src/KingSystem/Resource/CMakeLists.txt2
-rw-r--r--src/KingSystem/Resource/resResourceAwareness.cpp89
-rw-r--r--src/KingSystem/Resource/resResourceAwareness.h86
3 files changed, 177 insertions, 0 deletions
diff --git a/src/KingSystem/Resource/CMakeLists.txt b/src/KingSystem/Resource/CMakeLists.txt
index ec70284e..b285ff4c 100644
--- a/src/KingSystem/Resource/CMakeLists.txt
+++ b/src/KingSystem/Resource/CMakeLists.txt
@@ -128,6 +128,8 @@ target_sources(uking PRIVATE
resResourceAIProgram.h
resResourceArchive.cpp
resResourceArchive.h
+ resResourceAwareness.cpp
+ resResourceAwareness.h
resResourceDemo.cpp
resResourceDemo.h
resResourceDrop.cpp
diff --git a/src/KingSystem/Resource/resResourceAwareness.cpp b/src/KingSystem/Resource/resResourceAwareness.cpp
new file mode 100644
index 00000000..855d7a9a
--- /dev/null
+++ b/src/KingSystem/Resource/resResourceAwareness.cpp
@@ -0,0 +1,89 @@
+#include "KingSystem/Resource/resResourceAwareness.h"
+
+namespace ksys::res {
+
+Awareness::Awareness() : ParamIO("awareness", 0) {}
+
+bool Awareness::parse_(u8* data, size_t, sead::Heap*) {
+ addObj(&mBasisObj, "Basis");
+ addObj(&mSightObj, "Sight");
+ addObj(&mHearingObj, "Hearing");
+ addObj(&mSenseObj, "Sense");
+ addObj(&mWorryObj, "Worry");
+
+ contactpoint_num.init(64, "contactpoint_num", "センサーに引っ掛けるバッファの数", &mBasisObj);
+ base_node_name.init(sead::FixedSafeString<32>(""), "base_node_name", "前方基準ノード",
+ &mBasisObj);
+ is_bind_rot.init(false, "is_bind_rot", "姿勢を追従させる", &mBasisObj);
+ is_bind_pos.init(false, "is_bind_pos", "位置を追従させる", &mBasisObj);
+ base_offset.init(sead::Vector3f::zero, "base_offset", "位置オフセット", &mBasisObj);
+ base_dir.init(2, "base_dir", "基準方向", &mBasisObj);
+ up_dir.init(6, "up_dir", "UP方向", &mBasisObj);
+ awareness_target.init(sead::FixedSafeString<32>("一般敵"), "awareness_target", "種別設定",
+ &mBasisObj);
+ interest_lv1_radius.init(5.0, "interest_lv1_radius", "興味値用接近距離", &mBasisObj);
+ system_radius.init(0.0, "system_radius", "システム半径(プログラマ設定用)", &mBasisObj);
+ invalidate_wheather_ratio.init(false, "invalidate_wheather_ratio", "天候影響無視", &mBasisObj);
+
+ sight_buffer_num.init(32, "sight_buffer_num", "情報を格納するバッファの数", &mSightObj);
+ sight_radius.init(15.0, "sight_radius", "発見水平範囲", &mSightObj);
+ sight_angle.init(1.04719758034, "sight_angle", "発見有効角度", &mSightObj);
+ sight_height_max.init(4.0, "sight_height_max", "発見垂直範囲最大", &mSightObj);
+ sight_height_min.init(-2.0, "sight_height_min", "発見垂直範囲最小", &mSightObj);
+ sight_height_near_max.init(4.0, "sight_height_near_max", "至近発見垂直範囲最大", &mSightObj);
+ sight_height_near_min.init(-2.0, "sight_height_near_min", "至近発見垂直範囲最小", &mSightObj);
+ sight_alert_radius.init(0.0, "sight_alert_radius", "警戒水平範囲", &mSightObj);
+ sight_alert_angle.init(0.0, "sight_alert_angle", "警戒有効角度", &mSightObj);
+ sight_alert_height_max.init(0.0, "sight_alert_height_max", "警戒垂直範囲最大", &mSightObj);
+ sight_alert_height_min.init(0.0, "sight_alert_height_min", "警戒垂直範囲最小", &mSightObj);
+ sight_alert_height_near_max.init(0.0, "sight_alert_height_near_max", "至近警戒垂直範囲最大",
+ &mSightObj);
+ sight_alert_height_near_min.init(0.0, "sight_alert_height_near_min", "至近警戒垂直範囲最小",
+ &mSightObj);
+ sight_ignore_grass_radius.init(2.0, "sight_ignore_grass_radius", "草無視範囲", &mSightObj);
+ sight_delay_time_max.init(0, "sight_delay_time_max", "認識遅延時間最大", &mSightObj);
+ sight_ray_check_range_max.init(-1.0, "sight_ray_check_range_max", "レイキャストの長さ制限値",
+ &mSightObj);
+ sight_base_node_name.init(sead::FixedSafeString<32>(""), "sight_base_node_name",
+ "(上書き用)前方基準ノード", &mSightObj);
+ sight_far_use.init(false, "sight_far_use", "遠距離視界を使う", &mSightObj);
+ sight_radius_far.init(0.0, "sight_radius_far", "遠距離開始距離", &mSightObj);
+ sight_angle_far.init(1.04719758034, "sight_angle_far", "遠距離発見有効角度", &mSightObj);
+
+ hearing_buffer_num.init(32, "hearing_buffer_num", "情報を格納するバッファの数", &mHearingObj);
+ hearing_radius.init(15.0, "hearing_radius", "半径", &mHearingObj);
+ hearing_notice_level.init(1.0, "hearing_notice_level", "発見状態になるノイズレベル",
+ &mHearingObj);
+ hearing_alert_level.init(0.40000000596, "hearing_alert_level", "警戒状態になるノイズレベル",
+ &mHearingObj);
+ hearing_blind_angle.init(0.0, "hearing_blind_angle", "死角角度", &mHearingObj);
+ hearing_blind_margin_angle.init(0.0, "hearing_blind_margin_angle", "死角入り角度",
+ &mHearingObj);
+ hearing_reduce_ratio.init(0.0, "hearing_reduce_ratio", "死角に入られた際のノイズ反応倍率",
+ &mHearingObj);
+ hearing_delay_time_max.init(0, "hearing_delay_time_max", "認識遅延時間最大", &mHearingObj);
+ hearing_base_node_name.init(sead::FixedSafeString<32>(""), "hearing_base_node_name",
+ "(上書き用)前方基準ノード", &mHearingObj);
+
+ sense_buffer_num.init(32, "sense_buffer_num", "情報を格納するバッファの数", &mSenseObj);
+ sense_target.init(sead::FixedSafeString<32>("Enemy"), "sense_target", "テラー受付設定",
+ &mSenseObj);
+ sense_radius_offset.init(0.0, "sense_radius_offset", "水平範囲オフセット", &mSenseObj);
+ sense_angle.init(3.14159274101, "sense_angle", "有効角度", &mSenseObj);
+ sense_delay_time_max.init(0, "sense_delay_time_max", "認識遅延時間最大", &mSenseObj);
+ sense_base_node_name.init(sead::FixedSafeString<32>(""), "sense_base_node_name",
+ "(上書き用)前方基準ノード", &mSenseObj);
+
+ worry_buffer_num.init(0, "worry_buffer_num", "情報を格納するバッファの数", &mWorryObj);
+ worry_radius.init(0.0, "worry_radius", "範囲", &mWorryObj);
+ worry_delay_time_max.init(0, "worry_delay_time_max", "認識遅延時間最大", &mWorryObj);
+ worry_base_node_name.init(sead::FixedSafeString<32>(""), "worry_base_node_name",
+ "(上書き用)前方基準ノード", &mWorryObj);
+
+ if (data)
+ applyResParameterArchive(agl::utl::ResParameterArchive(data));
+
+ return true;
+}
+
+} // namespace ksys::res
diff --git a/src/KingSystem/Resource/resResourceAwareness.h b/src/KingSystem/Resource/resResourceAwareness.h
new file mode 100644
index 00000000..07c1b86c
--- /dev/null
+++ b/src/KingSystem/Resource/resResourceAwareness.h
@@ -0,0 +1,86 @@
+#pragma once
+
+#include <agl/Utils/aglParameter.h>
+#include <agl/Utils/aglParameterObj.h>
+#include "KingSystem/Resource/resResource.h"
+#include "KingSystem/Utils/ParamIO.h"
+
+namespace ksys::res {
+
+class Awareness : public ParamIO, public Resource {
+ SEAD_RTTI_OVERRIDE(Awareness, Resource)
+public:
+ Awareness();
+ ~Awareness() override = default;
+
+ bool needsParse() const override { return true; }
+ bool ParamIO_m0() override { return true; }
+
+private:
+ void doCreate_(u8*, u32, sead::Heap*) override {}
+ bool parse_(u8* data, size_t size, sead::Heap* heap) override;
+
+ agl::utl::ParameterObj mBasisObj;
+ agl::utl::ParameterObj mSightObj;
+ agl::utl::ParameterObj mHearingObj;
+ agl::utl::ParameterObj mSenseObj;
+ agl::utl::ParameterObj mWorryObj;
+
+public:
+ agl::utl::Parameter<s32> contactpoint_num;
+ agl::utl::Parameter<sead::FixedSafeString<32>> base_node_name;
+ agl::utl::Parameter<bool> is_bind_rot;
+ agl::utl::Parameter<bool> is_bind_pos;
+ agl::utl::Parameter<sead::Vector3f> base_offset;
+ agl::utl::Parameter<s32> base_dir;
+ agl::utl::Parameter<s32> up_dir;
+ agl::utl::Parameter<sead::FixedSafeString<32>> awareness_target;
+ agl::utl::Parameter<f32> interest_lv1_radius;
+ agl::utl::Parameter<f32> system_radius;
+ agl::utl::Parameter<bool> invalidate_wheather_ratio;
+
+ agl::utl::Parameter<s32> sight_buffer_num;
+ agl::utl::Parameter<f32> sight_radius;
+ agl::utl::Parameter<f32> sight_angle;
+ agl::utl::Parameter<f32> sight_height_max;
+ agl::utl::Parameter<f32> sight_height_min;
+ agl::utl::Parameter<f32> sight_height_near_max;
+ agl::utl::Parameter<f32> sight_height_near_min;
+ agl::utl::Parameter<f32> sight_alert_radius;
+ agl::utl::Parameter<f32> sight_alert_angle;
+ agl::utl::Parameter<f32> sight_alert_height_max;
+ agl::utl::Parameter<f32> sight_alert_height_min;
+ agl::utl::Parameter<f32> sight_alert_height_near_max;
+ agl::utl::Parameter<f32> sight_alert_height_near_min;
+ agl::utl::Parameter<f32> sight_ignore_grass_radius;
+ agl::utl::Parameter<s32> sight_delay_time_max;
+ agl::utl::Parameter<f32> sight_ray_check_range_max;
+ agl::utl::Parameter<sead::FixedSafeString<32>> sight_base_node_name;
+ agl::utl::Parameter<bool> sight_far_use;
+ agl::utl::Parameter<f32> sight_radius_far;
+ agl::utl::Parameter<f32> sight_angle_far;
+
+ agl::utl::Parameter<s32> hearing_buffer_num;
+ agl::utl::Parameter<f32> hearing_radius;
+ agl::utl::Parameter<f32> hearing_notice_level;
+ agl::utl::Parameter<f32> hearing_alert_level;
+ agl::utl::Parameter<f32> hearing_blind_angle;
+ agl::utl::Parameter<f32> hearing_blind_margin_angle;
+ agl::utl::Parameter<f32> hearing_reduce_ratio;
+ agl::utl::Parameter<s32> hearing_delay_time_max;
+ agl::utl::Parameter<sead::FixedSafeString<32>> hearing_base_node_name;
+
+ agl::utl::Parameter<s32> sense_buffer_num;
+ agl::utl::Parameter<sead::FixedSafeString<32>> sense_target;
+ agl::utl::Parameter<f32> sense_radius_offset;
+ agl::utl::Parameter<f32> sense_angle;
+ agl::utl::Parameter<s32> sense_delay_time_max;
+ agl::utl::Parameter<sead::FixedSafeString<32>> sense_base_node_name;
+
+ agl::utl::Parameter<s32> worry_buffer_num;
+ agl::utl::Parameter<f32> worry_radius;
+ agl::utl::Parameter<s32> worry_delay_time_max;
+ agl::utl::Parameter<sead::FixedSafeString<32>> worry_base_node_name;
+};
+
+} // namespace ksys::res