This commit is contained in:
aozhiwei 2022-05-24 11:29:45 +08:00
parent 23cd68823c
commit 9d3ee41f77
3 changed files with 23 additions and 22 deletions

View File

@ -613,17 +613,17 @@ void MatchTeam::StartGame()
}
std::string team_uuid = GetTeamUUid();
auto cb =
[team_uuid] (std::vector<BattleDataContext>& results)
[team_uuid] (std::vector<std::shared_ptr<BattleDataContext>>& 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;
}

View File

@ -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<BattleDataContext>& results)
(std::vector<std::shared_ptr<BattleDataContext>>& 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<std::shared_ptr<cs::CMJoin>>& join_msgs,
std::function<
void(std::vector<BattleDataContext>&)> cb)
void(std::vector<std::shared_ptr<BattleDataContext>>&)> cb)
{
if (join_msgs.empty()) {
abort();
}
std::shared_ptr<std::vector<BattleDataContext>> result = std::make_shared<std::vector<BattleDataContext>>();
std::shared_ptr<std::vector<std::shared_ptr<BattleDataContext>>> result =
std::make_shared<std::vector<std::shared_ptr<BattleDataContext>>>();
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<std::vector<BattleDataContext>>(result))
.SetSender(new std::shared_ptr<std::vector<std::shared_ptr<BattleDataContext>>>(result))
.SetParam1(new std::function<
void(std::vector<BattleDataContext>&)>(cb)),
void(std::vector<std::shared_ptr<BattleDataContext>>&)>(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<std::vector<BattleDataContext>>*)param.sender.GetUserData();
auto result = (std::shared_ptr<std::vector<std::shared_ptr<BattleDataContext>>>*)param.sender.GetUserData();
auto cb = (std::function<
void(std::vector<BattleDataContext>&)>*)param.param1.GetUserData();
void(std::vector<std::shared_ptr<BattleDataContext>>&)>*)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<std::vector<BattleDataContext>>*)param.sender.GetUserData();
auto result = (std::shared_ptr<std::vector<std::shared_ptr<BattleDataContext>>>*)param.sender.GetUserData();
auto cb = (std::function<
void(std::vector<BattleDataContext>&)>*)param.param1.GetUserData();
void(std::vector<std::shared_ptr<BattleDataContext>>&)>*)param.param1.GetUserData();
(*cb)(*result->get());
for (auto& context : *result->get()) {
}

View File

@ -74,7 +74,7 @@ class RoomMgr : public a8::Singleton<RoomMgr>
void SendGetBattleData(int mode,
std::vector<std::shared_ptr<cs::CMJoin>>& join_msgs,
std::function<
void(std::vector<std::BattleDataContext>&)> cb);
void(std::vector<std::shared_ptr<BattleDataContext>>&)> cb);
private:
void InstallReportStateTimer();