From facdefe7137eee3076a588b3cf9babfc5a42ea34 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Wed, 31 Jan 2024 11:22:12 +0800 Subject: [PATCH] 1 --- server/gameserver/custom_battle.cc | 54 ++++++++++-------------------- server/gameserver/custom_battle.h | 2 +- 2 files changed, 18 insertions(+), 38 deletions(-) diff --git a/server/gameserver/custom_battle.cc b/server/gameserver/custom_battle.cc index d66f4688..0ea9d39a 100644 --- a/server/gameserver/custom_battle.cc +++ b/server/gameserver/custom_battle.cc @@ -80,50 +80,30 @@ void CustomBattle::ParseResult(a8::XObject& obj) } } { + auto ob_team_ = std::make_shared(); + ob_team_->team_uuid_ = ""; + ob_team_->is_view_ = true; auto ob_list = obj.At("ob_list"); - for (int i = 0;i < ob_list->Size(); ++i) { - auto team_obj = ob_list->At(i); - if (!team_obj || !team_obj->IsObject()) { + for (int i = 0; i < ob_list->Size(); ++i) { + auto member_obj = ob_list->At(i); + if (!member_obj || !member_obj->IsObject()) { parse_ok_ = false; return; } - std::string team_uuid = team_obj->Get("team_uuid").GetString(); - int is_view = team_obj->Get("is_view").GetInt(); - auto member_list = team_obj->At("members"); - if (!member_list || - !member_list->IsArray()) { + auto member = std::make_shared(); + member->team_ = ob_team_.get(); + member->account_id_ = member_obj->Get("account_id").GetString(); + member->session_id_ = member_obj->Get("session_id").GetString(); + member->name_ = member_obj->Get("name").GetString(); + member->sex_ = member_obj->Get("sex"); + member->battle_context_ = std::make_shared(); + member->battle_context_->ParseResult(*member_obj); + if (!member->battle_context_->parse_ok) { parse_ok_ = false; return; } - auto team = GetTeamByTeamUuid(team_uuid); - if (!team) { - team = std::make_shared(); - team->team_uuid_ = team_uuid; - team->is_view_ = is_view ? true : false; - uuid_hash_[team->team_uuid_] = team; - } - for (int ii = 0; ii < member_list->Size(); ++ii) { - auto member_obj = member_list->At(ii); - if (!member_obj || !member_obj->IsObject()) { - parse_ok_ = false; - return; - } - auto member = std::make_shared(); - member->team_ = team.get(); - member->account_id_ = member_obj->Get("account_id").GetString(); - member->session_id_ = member_obj->Get("session_id").GetString(); - member->name_ = member_obj->Get("name").GetString(); - member->sex_ = member_obj->Get("sex"); - member->battle_context_ = std::make_shared(); - member->battle_context_->ParseResult(*member_obj); - if (!member->battle_context_->parse_ok) { - parse_ok_ = false; - return; - } - member_id_hash_[member->account_id_] = member; - team->member_hash_[member->account_id_] = member; - account_hash_[member->account_id_] = team; - } + account_hash_[member->account_id_] = ob_team_; + ob_id_hash_[member->account_id_] = ob_id_hash_; } } diff --git a/server/gameserver/custom_battle.h b/server/gameserver/custom_battle.h index 5c5fb493..20989588 100644 --- a/server/gameserver/custom_battle.h +++ b/server/gameserver/custom_battle.h @@ -44,7 +44,7 @@ class CustomBattle std::string sign_; std::shared_ptr raw_data_; std::map> uuid_hash_; - std::map> ob_team_hash_; + std::shared_ptr ob_team_; std::map> account_hash_; std::map> member_id_hash_; std::map> ob_id_hash_;