diff options
-rw-r--r-- | editor/inspect-types.cpp | 10 | ||||
-rw-r--r-- | serialize/savegame.cpp | 4 | ||||
-rw-r--r-- | src/critter.cpp | 1 | ||||
-rw-r--r-- | src/critter.hpp | 2 | ||||
-rw-r--r-- | src/object.cpp | 2 | ||||
-rw-r--r-- | src/object.hpp | 2 |
6 files changed, 11 insertions, 10 deletions
diff --git a/editor/inspect-types.cpp b/editor/inspect-types.cpp index 41a236b0..fe33a760 100644 --- a/editor/inspect-types.cpp +++ b/editor/inspect-types.cpp @@ -52,10 +52,6 @@ struct entity_accessors<object, inspect_intent_t> { [](const object& x) { return x.pass; }, [](object& x, pass_mode value) { x.set_bbox(x.offset, x.bbox_offset, x.bbox_size, value); }, }, - E::type<float>::field{"speed"_s, - [](const object& x) { return x.speed; }, - [](object& x, float value) { x.speed = Math::clamp(value, 0.f, 1e6f); } - }, E::type<Vector2b>::field{"bbox-offset"_s, [](const object& x) { return x.bbox_offset; }, [](object& x, Vector2b value) { x.set_bbox(x.offset, value, x.bbox_size, x.pass); }, @@ -211,6 +207,10 @@ struct entity_accessors<critter, inspect_intent_t> { E::type<String>::field{"name"_s, [](const critter& x) { return x.name; }, [](critter& x, const String& value) { x.name = value; } }, + E::type<float>::field{"speed"_s, + [](const critter& x) { return x.speed; }, + [](critter& x, float value) { x.speed = Math::clamp(value, 0.f, 1e6f); } + }, }; auto t1 = std::tuple{ E::type<bool>::field{"playable"_s, @@ -218,7 +218,7 @@ struct entity_accessors<critter, inspect_intent_t> { [](critter& x, bool value) { x.playable = value; }, constantly(constraints::max_length{ 128 }) }, }; - return std::tuple_cat(t0, prev, t1); + return std::tuple_cat(t0, t1, prev); } }; diff --git a/serialize/savegame.cpp b/serialize/savegame.cpp index ba126746..d84ce143 100644 --- a/serialize/savegame.cpp +++ b/serialize/savegame.cpp @@ -173,8 +173,6 @@ struct visitor_ do_visit(pt, f); non_const(obj.coord) = {ch, pt}; } - if (PROTO >= 22) [[likely]] - do_visit(obj.speed, f); do_visit_nonconst(obj.offset, f); do_visit_nonconst(obj.bbox_offset, f); do_visit_nonconst(obj.bbox_size, f); @@ -218,6 +216,8 @@ struct visitor_ void visit(critter& obj, F&& f) { do_visit(obj.name, f); + if (PROTO >= 22) [[likely]] + do_visit(obj.speed, f); do_visit(obj.offset_frac, f); constexpr struct { diff --git a/src/critter.cpp b/src/critter.cpp index c8bb2e4f..781d086b 100644 --- a/src/critter.cpp +++ b/src/critter.cpp @@ -230,6 +230,7 @@ critter::operator critter_proto() const critter::critter(object_id id, class chunk& c, const critter_proto& proto) : object{id, c, proto}, name{proto.name}, + speed{proto.speed}, playable{proto.playable} { if (!name) diff --git a/src/critter.hpp b/src/critter.hpp index b2f356e4..cfb6acb3 100644 --- a/src/critter.hpp +++ b/src/critter.hpp @@ -11,6 +11,7 @@ class world; struct critter_proto : object_proto { String name; + float speed = 1; bool playable : 1 = false; critter_proto(); @@ -31,6 +32,7 @@ struct critter final : object float depth_offset() const override; String name; + float speed = 1; Vector2us offset_frac; bool b_L : 1 = false, b_R : 1 = false, b_U : 1 = false, b_D : 1 = false; bool playable : 1 = false; diff --git a/src/object.cpp b/src/object.cpp index 96acd4b9..307a2155 100644 --- a/src/object.cpp +++ b/src/object.cpp @@ -47,7 +47,7 @@ object_proto::object_proto(const object_proto&) = default; object_type object_proto::type_of() const noexcept { return type; } object::object(object_id id, class chunk& c, const object_proto& proto) : - id{id}, c{&c}, atlas{proto.atlas}, speed{proto.speed}, + id{id}, c{&c}, atlas{proto.atlas}, offset{proto.offset}, bbox_offset{proto.bbox_offset}, bbox_size{proto.bbox_size}, delta{proto.delta}, frame{proto.frame}, r{proto.r}, pass{proto.pass} diff --git a/src/object.hpp b/src/object.hpp index c915b134..2d33885d 100644 --- a/src/object.hpp +++ b/src/object.hpp @@ -18,7 +18,6 @@ class chunk; struct object_proto { std::shared_ptr<anim_atlas> atlas; - float speed = 1; Vector2b offset, bbox_offset; Vector2ub bbox_size = Vector2ub(tile_size_xy); uint16_t delta = 0, frame = 0; @@ -45,7 +44,6 @@ struct object class chunk* const c; const std::shared_ptr<anim_atlas> atlas; const global_coords coord; - float speed = 1; const Vector2b offset, bbox_offset; const Vector2ub bbox_size; uint16_t delta = 0, frame = 0; |