From 8f7b089e246b5e55d1cacb756da4219bb751236f Mon Sep 17 00:00:00 2001 From: Stanislaw Halik Date: Tue, 13 Feb 2024 14:58:17 +0100 Subject: scenery loader now works --- loader/scenery.cpp | 61 ------------------------------------------------------ 1 file changed, 61 deletions(-) delete mode 100644 loader/scenery.cpp (limited to 'loader/scenery.cpp') diff --git a/loader/scenery.cpp b/loader/scenery.cpp deleted file mode 100644 index 6fbaba45..00000000 --- a/loader/scenery.cpp +++ /dev/null @@ -1,61 +0,0 @@ -#include "impl.hpp" -#include "compat/assert.hpp" -#include "compat/exception.hpp" -#include "src/ground-atlas.hpp" -#include "serialize/scenery.hpp" -#include "scenery-cell.hpp" -#include "serialize/json-helper.hpp" -#include "loader/anim-cell.hpp" -#include -#include - -namespace floormat::loader_detail { - -void loader_impl::get_scenery_list() -{ - sceneries_array.clear(); - sceneries_array = json_helper::from_json>(Path::join(SCENERY_PATH, "scenery.json")); - - if constexpr(true) // todo! - { - auto proto = scenery_proto{}; - proto.atlas = invalid_anim_atlas().atlas; - proto.bbox_size = Vector2ub{20}; - proto.subtype = generic_scenery_proto{false, true}; - sceneries_array.push_back({ .name = INVALID, .proto = proto }); - } - - sceneries_map.clear(); - sceneries_map.reserve(sceneries_array.size() * 2); - - for (scenery_cell& s : sceneries_array) - { - if (sceneries_map.contains(s.name)) - fm_abort("duplicate scenery name '%s'", s.name.data()); - sceneries_map[s.name] = &s; - } - - fm_assert(!sceneries_map.empty()); -} - -ArrayView loader_impl::sceneries() -{ - if (sceneries_array.empty()) [[likely]] - get_scenery_list(); - fm_assert(!sceneries_array.empty()); - return sceneries_array; -} - -const scenery_proto& loader_impl::scenery(StringView name) noexcept(false) -{ - fm_soft_assert(check_atlas_name(name)); - if (sceneries_array.empty()) - get_scenery_list(); - fm_assert(!sceneries_array.empty()); - auto it = sceneries_map.find(name); - if (it == sceneries_map.end()) - fm_throw("no such scenery: '{}'"_cf, name); - return it->second->proto; -} - -} // namespace floormat::loader_detail -- cgit v1.2.3