diff --git a/server/gameserver/matchteam.cc b/server/gameserver/matchteam.cc index 3b59a21b..fb9fdcff 100644 --- a/server/gameserver/matchteam.cc +++ b/server/gameserver/matchteam.cc @@ -613,17 +613,17 @@ void MatchTeam::StartGame() } std::string team_uuid = GetTeamUUid(); auto cb = - [team_uuid] (std::vector& results) + [team_uuid] (std::vector>& results) { MatchTeam* team = MatchMgr::Instance()->GetTeam(team_uuid); if (team) { for (auto context : results) { bool found = false; for (auto& member : team->GetCurrMembers()) { - if (member->msg->account_id() == context.join_msg->account_id()){ - member->battle_uuid = context.battle_uuid; - member->is_valid_battle = context.is_valid_battle; - member->payload = context.payload; + if (member->msg->account_id() == context->join_msg->account_id()){ + member->battle_uuid = context->battle_uuid; + member->is_valid_battle = context->is_valid_battle; + member->payload = context->payload; found = true; break; } diff --git a/server/gameserver/roommgr.cc b/server/gameserver/roommgr.cc index 1830500f..32d73724 100644 --- a/server/gameserver/roommgr.cc +++ b/server/gameserver/roommgr.cc @@ -155,7 +155,7 @@ void RoomMgr::_CMJoin(f8::MsgHdr& hdr, const cs::CMJoin& msg) auto socket_handle = hdr.socket_handle; auto cb = [ip_saddr, socket_handle, join_msg] - (std::vector& results) + (std::vector>& results) { cs::CMJoin& msg = *join_msg; if (RoomMgr::Instance()->IsLimitJoin()) { @@ -186,9 +186,9 @@ void RoomMgr::_CMJoin(f8::MsgHdr& hdr, const cs::CMJoin& msg) Player* hum = room->NewPlayer(); hum->proto_version = msg.proto_version(); hum->hero_uniid = msg.hero_uniid(); - hum->battle_uuid = results.at(0).battle_uuid; - hum->is_valid_battle = results.at(0).is_valid_battle; - hum->payload = results.at(0).payload; + hum->battle_uuid = results.at(0)->battle_uuid; + hum->is_valid_battle = results.at(0)->is_valid_battle; + hum->payload = results.at(0)->payload; hum->ProcPreSettlementInfo(msg.pre_settlement_info()); PlayerMgr::Instance()-> CreatePlayerByCMJoin(hum, @@ -202,7 +202,7 @@ void RoomMgr::_CMJoin(f8::MsgHdr& hdr, const cs::CMJoin& msg) } hum->room = room; room->AddPlayer(hum); - //hum->SetBattleContext(results.at(0)); + hum->SetBattleContext(results.at(0)); hum->ProcPrepareItems(msg.prepare_items()); hum->ProcPrepareItems2(msg.prepare_items2()); hum->ProcSkillList(msg.skill_list()); @@ -724,12 +724,13 @@ void RoomMgr::TeamRoomTimeOut(const std::string& team_uuid) void RoomMgr::SendGetBattleData(int mode, std::vector>& join_msgs, std::function< - void(std::vector&)> cb) + void(std::vector>&)> cb) { if (join_msgs.empty()) { abort(); } - std::shared_ptr> result = std::make_shared>(); + std::shared_ptr>> result = + std::make_shared>>(); bool is_old_version = false; for (auto& msg : join_msgs) { BattleDataContext context; @@ -737,7 +738,7 @@ void RoomMgr::SendGetBattleData(int mode, context.battle_uuid = App::Instance()->NewUuid(); context.errcode = 100; context.errmsg = ""; - result->push_back(context); + //result->push_back(context); if (msg->proto_version() < 2022032201) { is_old_version = true; break; @@ -771,7 +772,7 @@ void RoomMgr::SendGetBattleData(int mode, member->SetVal("account_id", msg->account_id()); member->SetVal("session_id", msg->session_id()); member->SetVal("hero_uniid", msg->hero_uniid()); - member->SetVal("battle_uuid", result->at(i).battle_uuid); + member->SetVal("battle_uuid", result->at(i)->battle_uuid); member->SetVal("weapon_uuid1", msg->weapons().size() > 0 ? msg->weapons(0).weapon_uniid() : ""); member->SetVal("weapon_uuid2", @@ -788,9 +789,9 @@ void RoomMgr::SendGetBattleData(int mode, HttpProxy::Instance()->HttpGet ( a8::XParams() - .SetSender(new std::shared_ptr>(result)) + .SetSender(new std::shared_ptr>>(result)) .SetParam1(new std::function< - void(std::vector&)>(cb)), + void(std::vector>&)>(cb)), [] (a8::XParams& param, a8::XObject& data) { a8::UdpLog::Instance()->Info @@ -798,9 +799,9 @@ void RoomMgr::SendGetBattleData(int mode, { data.ToJsonStr() }); - auto result = (std::shared_ptr>*)param.sender.GetUserData(); + auto result = (std::shared_ptr>>*)param.sender.GetUserData(); auto cb = (std::function< - void(std::vector&)>*)param.param1.GetUserData(); + void(std::vector>&)>*)param.param1.GetUserData(); if (data.GetType() == a8::XOT_OBJECT) { if (data.HasKey("members")) { @@ -810,7 +811,7 @@ void RoomMgr::SendGetBattleData(int mode, auto& ctx = (*result->get()).at(i); auto member = members->At(i); if (member->GetType() == a8::XOT_OBJECT) { - ctx.ParseResult(*member); + ctx->ParseResult(*member); } } } @@ -828,9 +829,9 @@ void RoomMgr::SendGetBattleData(int mode, { response }); - auto result = (std::shared_ptr>*)param.sender.GetUserData(); + auto result = (std::shared_ptr>>*)param.sender.GetUserData(); auto cb = (std::function< - void(std::vector&)>*)param.param1.GetUserData(); + void(std::vector>&)>*)param.param1.GetUserData(); (*cb)(*result->get()); for (auto& context : *result->get()) { } diff --git a/server/gameserver/roommgr.h b/server/gameserver/roommgr.h index 32d20356..a6fb893c 100644 --- a/server/gameserver/roommgr.h +++ b/server/gameserver/roommgr.h @@ -74,7 +74,7 @@ class RoomMgr : public a8::Singleton void SendGetBattleData(int mode, std::vector>& join_msgs, std::function< - void(std::vector&)> cb); + void(std::vector>&)> cb); private: void InstallReportStateTimer();