From aceb0a84b4abaa4e631d317c6cd0d02b0aa0bdbd Mon Sep 17 00:00:00 2001 From: Stanislaw Halik Date: Thu, 8 Feb 2024 22:48:19 +0100 Subject: style issues --- loader/json.cpp | 71 ---------------------------------------------------- loader/scenery.cpp | 71 ++++++++++++++++++++++++++++++++++++++++++++++++++++ loader/wall-cell.hpp | 3 +++ 3 files changed, 74 insertions(+), 71 deletions(-) delete mode 100644 loader/json.cpp create mode 100644 loader/scenery.cpp (limited to 'loader') diff --git a/loader/json.cpp b/loader/json.cpp deleted file mode 100644 index d374571c..00000000 --- a/loader/json.cpp +++ /dev/null @@ -1,71 +0,0 @@ -#include "impl.hpp" -#include "compat/assert.hpp" -#include "compat/exception.hpp" -#include "src/ground-atlas.hpp" -#include "serialize/json-helper.hpp" -#include "serialize/anim.hpp" -#include "serialize/scenery.hpp" -#include "loader/scenery.hpp" -#include "loader/anim-cell.hpp" -#include -#include - -namespace floormat { - -anim_def loader_::deserialize_anim_def(StringView filename) noexcept(false) -{ - return json_helper::from_json(filename); -} - -} // namespace floormat - -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 = make_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 (const serialized_scenery& 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 diff --git a/loader/scenery.cpp b/loader/scenery.cpp new file mode 100644 index 00000000..d374571c --- /dev/null +++ b/loader/scenery.cpp @@ -0,0 +1,71 @@ +#include "impl.hpp" +#include "compat/assert.hpp" +#include "compat/exception.hpp" +#include "src/ground-atlas.hpp" +#include "serialize/json-helper.hpp" +#include "serialize/anim.hpp" +#include "serialize/scenery.hpp" +#include "loader/scenery.hpp" +#include "loader/anim-cell.hpp" +#include +#include + +namespace floormat { + +anim_def loader_::deserialize_anim_def(StringView filename) noexcept(false) +{ + return json_helper::from_json(filename); +} + +} // namespace floormat + +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 = make_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 (const serialized_scenery& 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 diff --git a/loader/wall-cell.hpp b/loader/wall-cell.hpp index 3dfa698b..507a09c2 100644 --- a/loader/wall-cell.hpp +++ b/loader/wall-cell.hpp @@ -1,4 +1,5 @@ #pragma once +#include "compat/vector-wrapper-fwd.hpp" #include #include @@ -10,6 +11,8 @@ struct wall_cell { String name; std::shared_ptr atlas; + + static vector_wrapper load_atlases_from_json(); }; } // namespace floormat -- cgit v1.2.3