diff options
| author | Léo Lam <leo@leolam.fr> | 2021-06-15 17:47:03 +0200 |
|---|---|---|
| committer | Léo Lam <leo@leolam.fr> | 2021-06-15 18:04:39 +0200 |
| commit | dd0cc52ce99b9d78f1c7022c1bf13349149f263a (patch) | |
| tree | 2eb5acd7d704d612181399bd8ab2be7b84fe450f /src/KingSystem/Resource/resResourceLifeCondition.cpp | |
| parent | 38e5e47b07696a0954145bf68148cb0301cf133c (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.cpp | 82 |
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 |
