[submodule "lib/entityx"]
path = lib/entityx
url = https://github.com/tcsullivan/entityx
- branch = remove-std-iterator
+ branch = serialize
[submodule "lib/cereal"]
path = lib/cereal
url = https://github.com/USCiLab/cereal
clean:
@echo " CLEAN"
@$(RM) -rf $(OUTDIR)
+
+cleanall: clean
@$(RM) -f lib/libentityx.a lib/libluajit.a lib/libsoil.a
cleaner: clean
@cp lib/luajit/src/libluajit.a lib/libluajit.a
lib/libsoil.a:
- @gcc -c lib/soil/soil/*.c
- @ar rcs lib/libsoil.a lib/soil/soil/*.o
+ @make -Clib/soil -j4
+ @cp lib/soil/libsoil.a lib/libsoil.a
-.PHONY: all remake clean cleaner resources
+.PHONY: all remake clean cleaner cleanall resources
else if (value.get_type() == sol::type::number)
table_components.push_back(std::make_tuple(
key.as<std::string>(),
- std::string("return " + value.as<std::string>())
+ std::string("return ") + std::to_string(value.as<double>())
));
else if (value.get_type() == sol::type::boolean) {
table_components.push_back(std::make_tuple(
#include <fstream>
-struct EntitySerializer
-{
- template<class Archive>
- static void serialize(entityx::EntityManager& entities, entityx::Entity entity, bool save, Archive& ar)
- {
- // TODO try and reimplement without modifying entityx?
- // Or, make a new branch...
-
- //const auto mask = entity.component_mask();
-
- //for (size_t i = 0; i < entities.component_helpers_.size(); i++) {
- // auto helper = entities.component_helpers_[i];
- // if (helper && mask.test(i)) {
- // auto* c = helper->get_component(entity);
- // ar.setNextName(c->serializeName().c_str());
- // ar.startNode();
- // c->internal_serialize(save, static_cast<void*>(&ar));
- // ar.finishNode();
- // }
- //}
- }
-};
-
-
/**
* @class GameState
* Manages save files that contain entity data.
for (auto entity : entities.entities_for_debugging()) {
archive.setNextName((name + std::to_string(i++)).c_str());
archive.startNode();
- EntitySerializer::serialize(entities, entity, save, archive);
+ entities.serialize(entity,
+ [&archive, &save](auto c) {
+ archive.setNextName(c->serializeName().c_str());
+ archive.startNode();
+ c->internal_serialize(save, static_cast<void*>(&archive));
+ archive.finishNode();
+ });
archive.finishNode();
}
}