From d0395f8468b33817a79a0fd625ae52cdff06ae19 Mon Sep 17 00:00:00 2001 From: Stanislaw Halik Date: Fri, 9 Feb 2024 19:34:15 +0100 Subject: loader: move vobj_cell to its own file --- editor/vobj-editor.cpp | 37 +++++++++++++++++++++---------------- editor/vobj-editor.hpp | 4 ++-- 2 files changed, 23 insertions(+), 18 deletions(-) (limited to 'editor') diff --git a/editor/vobj-editor.cpp b/editor/vobj-editor.cpp index ea9b8659..bfe88d71 100644 --- a/editor/vobj-editor.cpp +++ b/editor/vobj-editor.cpp @@ -1,7 +1,8 @@ #include "vobj-editor.hpp" -#include "loader/loader.hpp" #include "src/world.hpp" #include "src/light.hpp" +#include "loader/loader.hpp" +#include "loader/vobj-cell.hpp" #include "app.hpp" #include #include @@ -68,23 +69,27 @@ start: while (auto id = a.get_object_colliding_with_cursor()) struct light_factory final : vobj_factory { - object_type type() const override { return object_type::light; } + object_type type() const override; + const vobj_cell& info() const override; + std::shared_ptr make(world& w, object_id id, global_coords pos) const override; +}; - const vobj_info& info() const override - { - constexpr auto NAME = "light"_s; - static const vobj_info& ret = loader.vobj(NAME); - fm_debug_assert(ret.name == NAME); - fm_debug_assert(ret.atlas != nullptr); - return ret; - } +object_type light_factory::type() const { return object_type::light; } - std::shared_ptr make(world& w, object_id id, global_coords pos) const override - { - auto ret = w.make_object(id, pos, light_proto{}); - return ret; - } -}; +const vobj_cell& light_factory::info() const +{ + constexpr auto NAME = "light"_s; + static const vobj_cell& ret = loader.vobj(NAME); + fm_debug_assert(ret.name == NAME); + fm_debug_assert(ret.atlas != nullptr); + return ret; +} + +std::shared_ptr light_factory::make(world& w, object_id id, global_coords pos) const +{ + auto ret = w.make_object(id, pos, light_proto{}); + return ret; +} auto vobj_editor::make_vobj_type_map() -> std::map { diff --git a/editor/vobj-editor.hpp b/editor/vobj-editor.hpp index 962212c7..7bcc32b6 100644 --- a/editor/vobj-editor.hpp +++ b/editor/vobj-editor.hpp @@ -11,14 +11,14 @@ class world; struct global_coords; struct object; class anim_atlas; -struct vobj_info; +struct vobj_cell; struct app; struct vobj_factory { vobj_factory(); virtual ~vobj_factory() noexcept; - virtual const vobj_info& info() const = 0; + virtual const vobj_cell& info() const = 0; virtual object_type type() const = 0; virtual std::shared_ptr make(world& w, object_id id, global_coords pos) const = 0; -- cgit v1.2.3