diff options
author | Stanislaw Halik <sthalik@misaki.pl> | 2024-01-11 03:18:00 +0100 |
---|---|---|
committer | Stanislaw Halik <sthalik@misaki.pl> | 2024-01-11 03:18:00 +0100 |
commit | f3d870a400395e75f601f32a3bbb3e68502d9000 (patch) | |
tree | 3735b14eaa74d4a80d9197ac973b5dbffbd675d6 /loader/json.cpp | |
parent | b91deae59c69ca41d5feffaf4f16b29ee47af64d (diff) |
fix some todo's
Diffstat (limited to 'loader/json.cpp')
-rw-r--r-- | loader/json.cpp | 22 |
1 files changed, 12 insertions, 10 deletions
diff --git a/loader/json.cpp b/loader/json.cpp index e9da0339..7cf24015 100644 --- a/loader/json.cpp +++ b/loader/json.cpp @@ -7,6 +7,7 @@ #include "serialize/tile-atlas.hpp" #include "serialize/scenery.hpp" #include "loader/scenery.hpp" +#include <Corrade/Containers/ArrayViewStl.h> #include <Corrade/Containers/StringStlView.h> #include <Corrade/Utility/Path.h> @@ -32,10 +33,11 @@ void loader_impl::get_scenery_list() fm_assert(!sceneries_map.empty()); } -const std::vector<serialized_scenery>& loader_impl::sceneries() +ArrayView<const serialized_scenery> loader_impl::sceneries() { - if (sceneries_array.empty()) + if (sceneries_array.empty()) [[likely]] get_scenery_list(); + fm_assert(!sceneries_array.empty()); return sceneries_array; } @@ -44,21 +46,21 @@ 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 - -namespace floormat { - -std::vector<std::shared_ptr<class tile_atlas>> loader_::tile_atlases(StringView filename) +ArrayView<const std::shared_ptr<class tile_atlas>> loader_impl::tile_atlases(StringView filename) { - auto vec = json_helper::from_json<std::vector<std::shared_ptr<class tile_atlas>>>( + if (!tile_atlas_array.empty()) [[likely]] + return tile_atlas_array; + tile_atlas_array = json_helper::from_json<std::vector<std::shared_ptr<class tile_atlas>>>( Path::join(loader_::IMAGE_PATH, filename)); - return vec; + fm_assert(!tile_atlas_array.empty()); + return tile_atlas_array; } -} // namespace floormat +} // namespace floormat::loader_detail |