summaryrefslogtreecommitdiff
path: root/src/KingSystem/Resource/resResourceLifeCondition.cpp
diff options
context:
space:
mode:
authorLéo Lam <leo@leolam.fr>2021-06-15 17:47:03 +0200
committerLéo Lam <leo@leolam.fr>2021-06-15 18:04:39 +0200
commitdd0cc52ce99b9d78f1c7022c1bf13349149f263a (patch)
tree2eb5acd7d704d612181399bd8ab2be7b84fe450f /src/KingSystem/Resource/resResourceLifeCondition.cpp
parent38e5e47b07696a0954145bf68148cb0301cf133c (diff)
ksys: Move ActorParam classes into separate folder to declutter Resource/
Diffstat (limited to 'src/KingSystem/Resource/resResourceLifeCondition.cpp')
-rw-r--r--src/KingSystem/Resource/resResourceLifeCondition.cpp82
1 files changed, 0 insertions, 82 deletions
diff --git a/src/KingSystem/Resource/resResourceLifeCondition.cpp b/src/KingSystem/Resource/resResourceLifeCondition.cpp
deleted file mode 100644
index 7cdd45a0..00000000
--- a/src/KingSystem/Resource/resResourceLifeCondition.cpp
+++ /dev/null
@@ -1,82 +0,0 @@
-#include "KingSystem/Resource/resResourceLifeCondition.h"
-
-namespace ksys::res {
-
-// NON_MATCHING: two instructions swapped
-bool LifeCondition::parse_(u8* data, size_t, sead::Heap* heap) {
- if (!data)
- return true;
-
- applyResParameterArchive(agl::utl::ResParameterArchive{data});
- const agl::utl::ResParameterArchive archive{data};
- const auto root = archive.getRootList();
-
- const auto invalid_weathers_obj = agl::utl::getResParameterObj(root, "InvalidWeathers");
- if (invalid_weathers_obj.ptr())
- LifeCondition::parseArray(&invalid_weathers_obj, &mInvalidWeathersObj,
- &mInvalidWeathersBuffer, "InvalidWeathers", "天候", heap);
-
- const auto invalid_times_obj = agl::utl::getResParameterObj(root, "InvalidTimes");
- if (invalid_times_obj.ptr())
- LifeCondition::parseArray(&invalid_times_obj, &mInvalidTimesObj, &mInvalidTimesBuffer,
- "InvalidTimes", "時間", heap);
-
- const auto display_distance_obj = agl::utl::getResParameterObj(root, "DisplayDistance");
- if (display_distance_obj.ptr()) {
- mDisplayDistance.init(0.0, "Item", "表示距離", &mDisplayDistanceObj);
- addObj(&mDisplayDistanceObj, "DisplayDistance");
- mDisplayDistanceObj.applyResParameterObj(display_distance_obj);
- }
-
- const auto auto_display_distance_algorithm_obj =
- agl::utl::getResParameterObj(root, "AutoDisplayDistanceAlgorithm");
- if (auto_display_distance_algorithm_obj.ptr()) {
- mBoundingY.init("Bouding.Y", "Item", "自動距離算出アルゴリズム", &mBoundingYObj);
- addObj(&mBoundingYObj, "AutoDisplayDistanceAlgorithm");
- mBoundingYObj.applyResParameterObj(auto_display_distance_algorithm_obj);
- }
-
- const auto y_limit_algorithm_obj = agl::utl::getResParameterObj(root, "YLimitAlgorithm");
- if (y_limit_algorithm_obj.ptr()) {
- mYLimitAlgorithm.init("NoLimit", "Item", "Y制限アルゴリズム", &mYLimitAlgorithmObj);
- addObj(&mYLimitAlgorithmObj, "YLimitAlgorithm");
- mYLimitAlgorithmObj.applyResParameterObj(y_limit_algorithm_obj);
- }
-
- const auto delete_weathers_obj = agl::utl::getResParameterObj(root, "DeleteWeathers");
- if (delete_weathers_obj.ptr())
- LifeCondition::parseArray(&delete_weathers_obj, &mDeleteWeathersObj, &mDeleteWeathersBuffer,
- "DeleteWeathers", "天候", heap);
-
- const auto delete_times_obj = agl::utl::getResParameterObj(root, "DeleteTimes");
- if (delete_times_obj.ptr())
- LifeCondition::parseArray(&delete_times_obj, &mDeleteTimesObj, &mDeleteTimesBuffer,
- "DeleteTimes", "時間", heap);
-
- return true;
-}
-
-void LifeCondition::parseArray(const agl::utl::ResParameterObj* data, agl::utl::IParameterObj* obj,
- sead::Buffer<agl::utl::Parameter<sead::SafeString>>* buffer,
- const sead::SafeString& key, const sead::SafeString& desc,
- sead::Heap* heap) {
- addObj(obj, key);
- obj->applyResParameterObj(*data);
-
- auto count = data->mPtr->getNumParameters();
- if (count == 0)
- return;
-
- buffer->allocBufferAssert(count, heap);
-
- for (int i = 0; i != count; ++i) {
- sead::FormatFixedSafeString<64> s;
- s.format("Item%03d", (i + 1));
-
- (*buffer)[i].init("", s, desc, obj);
- }
-
- obj->applyResParameterObj(*data);
-}
-
-} // namespace ksys::res