From 90770e10ff6159d06f31f3226596c33ebc1f1a45 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Sun, 25 Dec 2022 17:11:02 +0800 Subject: [PATCH] 1 --- server/gameserver/mt/AirLine.cc | 16 ++++++++++++++++ server/gameserver/mt/AirLine.h | 5 ++++- 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/server/gameserver/mt/AirLine.cc b/server/gameserver/mt/AirLine.cc index 72a88915..92351d13 100644 --- a/server/gameserver/mt/AirLine.cc +++ b/server/gameserver/mt/AirLine.cc @@ -3,6 +3,7 @@ #include "mt/AirLine.h" IMPL_TABLE(mt::AirLine) +std::map> mt::AirLine::mapid_hash_; namespace mt { @@ -21,6 +22,21 @@ namespace mt _end_point_x = a8::XValue(strings[0]).GetDouble(); _end_point_y = a8::XValue(strings[1]).GetDouble(); } + { + auto itr = map_id_hash_.find(map_id()); + if (itr != map_id_hash_.end()) { + itr->second.push_back(this); + } else { + map_id_hash_[map_id()] = std::vector({this}); + } + } + } + + const AirLine* AirLine::RandAirLine(int map_id) + { + auto itr = mapid_hash_.find(map_ida); + return itr != mapid_hash_.end && &itr->second.empty() ? + itr->second.at(rand() % itr->second.size()) : nullptr; } } diff --git a/server/gameserver/mt/AirLine.h b/server/gameserver/mt/AirLine.h index ba4d4261..cbf66cb2 100644 --- a/server/gameserver/mt/AirLine.h +++ b/server/gameserver/mt/AirLine.h @@ -18,7 +18,10 @@ namespace mt void Init1(); - static const AirLine* RandAirLine(int map_id) {}; + static const AirLine* RandAirLine(int map_id); + + private: + static std::map> mapid_hash_; }; }