diff --git a/server/gameserver/mapcollider.cc b/server/gameserver/mapcollider.cc new file mode 100644 index 00000000..90bf5aac --- /dev/null +++ b/server/gameserver/mapcollider.cc @@ -0,0 +1,13 @@ +#include "precompile.h" + +#include "mapcollider.h" + +namespace mc +{ + + void ColliderNode::Read(std::shared_ptr xobj) + { + name = xobj->At("name")->AsXValue().GetString(); + } + +} diff --git a/server/gameserver/mapcollider.h b/server/gameserver/mapcollider.h index 6be1302f..29cec972 100644 --- a/server/gameserver/mapcollider.h +++ b/server/gameserver/mapcollider.h @@ -49,6 +49,8 @@ namespace mc std::string name; std::vector colliders; std::map childs; + + void Read(std::shared_ptr xobj); }; }; diff --git a/server/gameserver/mt/MapCollider.cc b/server/gameserver/mt/MapCollider.cc new file mode 100644 index 00000000..32387d3a --- /dev/null +++ b/server/gameserver/mt/MapCollider.cc @@ -0,0 +1,26 @@ +#include "precompile.h" + +#include + +#include "mt/MapCollider.h" + +namespace mt +{ + + void MapCollider::Load(const std::string& filename) + { + a8::XObject xobj_root; + xobj_root.ReadFromFile(filename); + auto xobj_nodes = xobj_root.At("nodes"); + for (int i = 0; i < xobj_nodes->Size(); ++i) { + auto xobj_node = xobj_nodes->At(i); + mc::ColliderNode* node = new mc::ColliderNode(); + node->Read(xobj_node); + if (nodes_.find(node->name) != nodes_.end()) { + abort(); + } + nodes_[node->name] = node; + } + } + +} diff --git a/server/gameserver/mt/MapCollider.h b/server/gameserver/mt/MapCollider.h index 462ea5bc..e4ba4f50 100644 --- a/server/gameserver/mt/MapCollider.h +++ b/server/gameserver/mt/MapCollider.h @@ -7,8 +7,12 @@ namespace mt class MapCollider { + public: + + void Load(const std::string& filename); + private: - std::map nodes; + std::map nodes_; }; }