From 26b537d5f2e4e48e0c183cca30ecb056a41cd3be Mon Sep 17 00:00:00 2001 From: Stanislaw Halik Date: Thu, 23 Feb 2023 09:51:16 +0100 Subject: wip --- entity/chunk.cpp | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) (limited to 'entity/chunk.cpp') diff --git a/entity/chunk.cpp b/entity/chunk.cpp index 6857ac1d..f7b9aadc 100644 --- a/entity/chunk.cpp +++ b/entity/chunk.cpp @@ -2,6 +2,7 @@ #include "entity/accessor.hpp" #include "src/scenery.hpp" #include "src/anim-atlas.hpp" +#include "src/tile-defs.hpp" namespace floormat::entities { @@ -11,10 +12,20 @@ template<> struct entity_accessors { using entity = Entity; using frame_t = scenery::frame_t; constexpr auto tuple = std::make_tuple( - entity::type::field{"frame", + entity::type::field{"frame"_s, [](const scenery_ref& x) { return x.frame.frame; }, [](scenery_ref& x, frame_t value) { x.frame.frame = value; }, [](const scenery_ref& x) { return constraints::range{0, !x.atlas ? frame_t(0) : frame_t(x.atlas->info().nframes)}; } + }, + entity::type::field{"offset"_s, + [](const scenery_ref& x) { return x.frame.offset; }, + [](scenery_ref& x, Vector2b value) { x.frame.offset = value; }, + constantly(constraints::range{Vector2b(iTILE_SIZE2/-2), Vector2b(iTILE_SIZE2/2)}) + }, + // todo pass_mode enum + entity::type::field{"interactive"_s, + [](const scenery_ref& x) { return x.frame.interactive; }, + [](scenery_ref& x, bool value) { x.frame.interactive = value; } } ); return tuple; -- cgit v1.2.3