diff --git a/server/gameserver/custom_battle.cc b/server/gameserver/custom_battle.cc index 4c042a5b..868a3298 100644 --- a/server/gameserver/custom_battle.cc +++ b/server/gameserver/custom_battle.cc @@ -67,6 +67,7 @@ void CustomBattle::ParseResult(a8::XObject& obj) parse_ok_ = false; return; } + member_id_hash_[member->account_id_] = member; team->member_hash_[member->account_id_] = member; account_hash_[member->account_id_] = team; } @@ -82,6 +83,12 @@ bool CustomBattle::CanAdd(const std::string& account_id, const std::string& sess return true; } +std::shared_ptr CustomBattle::GetMemberByAccountId(const std::string& account_id) +{ + auto itr = member_id_hash_.find(account_id); + return itr != member_id_hash_.end() ? itr->second : nullptr; +} + std::shared_ptr CustomBattle::GetTeamByAccountId(const std::string& account_id) { auto itr = account_hash_.find(account_id); diff --git a/server/gameserver/custom_battle.h b/server/gameserver/custom_battle.h index 626c96b0..3a81cc6f 100644 --- a/server/gameserver/custom_battle.h +++ b/server/gameserver/custom_battle.h @@ -2,6 +2,7 @@ class Room; class CustomTeam; +class CustomMember; class CustomBattle { public: @@ -21,6 +22,7 @@ class CustomBattle void ParseResult(a8::XObject& obj); bool CanAdd(const std::string& account_id, const std::string& session_id); std::shared_ptr GetTeamByAccountId(const std::string& account_id); + std::shared_ptr GetMemberByAccountId(const std::string& account_id); std::shared_ptr GetTeamByTeamUuid(const std::string& team_uuid); private: @@ -35,4 +37,5 @@ class CustomBattle std::shared_ptr raw_data_; std::map> uuid_hash_; std::map> account_hash_; + std::map> member_id_hash_; };