summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--editor/inspect-types.cpp10
-rw-r--r--serialize/savegame.cpp4
-rw-r--r--src/critter.cpp1
-rw-r--r--src/critter.hpp2
-rw-r--r--src/object.cpp2
-rw-r--r--src/object.hpp2
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;