From 9b7b8df8953be7d34272fb6032bedc1ceb0fb2df Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Mon, 6 Feb 2023 19:27:15 +0800 Subject: [PATCH] 1 --- server/gameserver/mapcollider.cc | 13 +++++++++++++ server/gameserver/mapcollider.h | 2 ++ server/gameserver/mt/MapCollider.cc | 26 ++++++++++++++++++++++++++ server/gameserver/mt/MapCollider.h | 6 +++++- 4 files changed, 46 insertions(+), 1 deletion(-) create mode 100644 server/gameserver/mapcollider.cc create mode 100644 server/gameserver/mt/MapCollider.cc 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_; }; }