diff --git a/server/gameserver/matchteam.cc b/server/gameserver/matchteam.cc index 6496571e..4cea24dc 100644 --- a/server/gameserver/matchteam.cc +++ b/server/gameserver/matchteam.cc @@ -10,51 +10,51 @@ void RawTeamMember::FillMFMatchTeamMember(cs::MFMatchTeamMember* p) { - p->set_account_id(msg.account_id()); - p->set_name(msg.name()); - p->set_avatar_url(msg.avatar_url()); + p->set_account_id(msg->account_id()); + p->set_name(msg->name()); + p->set_avatar_url(msg->avatar_url()); if (choose_hero_times <= 0) { p->set_hero_id(0); } else { - p->set_hero_id(msg.hero_id()); - *p->mutable_weapons() = msg.weapons(); - *p->mutable_skins() = msg.skins(); - *p->mutable_skill_list() = msg.skill_list(); - *p->mutable_baseskin() = msg.baseskin(); + p->set_hero_id(msg->hero_id()); + *p->mutable_weapons() = msg->weapons(); + *p->mutable_skins() = msg->skins(); + *p->mutable_skill_list() = msg->skill_list(); + *p->mutable_baseskin() = msg->baseskin(); } p->set_is_leader(is_leader); p->set_state(state); - p->set_head_frame(msg.head_frame()); - p->set_hero_skin(msg.hero_skin()); + p->set_head_frame(msg->head_frame()); + p->set_hero_skin(msg->hero_skin()); } void RawTeamMember::InitRobot() { static long long robot_idx = 1000; - msg.set_account_id(a8::Format("6000_2006_%d", {++robot_idx})); + msg->set_account_id(a8::Format("6000_2006_%d", {++robot_idx})); { std::set refreshed_robot_set; robot_meta = MetaMgr::Instance()->RandRobot(refreshed_robot_set); if (robot_meta) { - msg.set_avatar_url(a8::Format("%s", {50001 + (robot_meta->i->id() % 3)})); + msg->set_avatar_url(a8::Format("%s", {50001 + (robot_meta->i->id() % 3)})); #if 1 - msg.set_hero_id(30100 + 100 * (robot_meta->i->id() % 3)); + msg->set_hero_id(30100 + 100 * (robot_meta->i->id() % 3)); #else - msg.set_hero_id(robot_meta->i->hero_id()); + msg->set_hero_id(robot_meta->i->hero_id()); #endif - msg.set_name(robot_meta->i->name()); - auto skin = msg.add_skins(); + msg->set_name(robot_meta->i->name()); + auto skin = msg->add_skins(); if (!robot_meta->skin_id.empty()) { skin->set_skin_id(robot_meta->skin_id[0]); skin->set_skin_lv(1); } { - MetaData::Player* hero_meta = MetaMgr::Instance()->GetPlayer(msg.hero_id()); + MetaData::Player* hero_meta = MetaMgr::Instance()->GetPlayer(msg->hero_id()); if (hero_meta) { - MetaData::Item* skin_meta = MetaMgr::Instance()->GetHeroSkin(msg.hero_id()); + MetaData::Item* skin_meta = MetaMgr::Instance()->GetHeroSkin(msg->hero_id()); if (skin_meta) { - msg.set_hero_skin(skin_meta->i->id()); + msg->set_hero_skin(skin_meta->i->id()); } } } @@ -105,26 +105,26 @@ void MatchTeam::_CMMatchChoose(f8::MsgHdr& hdr, const cs::CMMatchChoose& msg) for (auto& pair : raw_member_hash_) { a8::XPrintf("cmmatchchoose member %d:%d:%s %s:%d\n", { - hdr.socket_handle, - phase_, - GetTeamUUid(), - pair.second->msg.account_id(), - pair.second->socket_handle - }); + hdr.socket_handle, + phase_, + GetTeamUUid(), + pair.second->msg->account_id(), + pair.second->socket_handle + }); } } #endif auto member = GetMemberBySocket(hdr.socket_handle); if (member && master_team_->phase_ == kMatchChoose) { - member->msg.set_hero_id(msg.hero_id()); - *member->msg.mutable_weapons() = msg.weapons(); - *member->msg.mutable_skins() = msg.skins(); - *member->msg.mutable_skill_list() = msg.skill_list(); - *member->msg.mutable_baseskin() = msg.baseskin(); - member->msg.set_hero_skin(msg.hero_skin()); + member->msg->set_hero_id(msg.hero_id()); + *member->msg->mutable_weapons() = msg.weapons(); + *member->msg->mutable_skins() = msg.skins(); + *member->msg->mutable_skill_list() = msg.skill_list(); + *member->msg->mutable_baseskin() = msg.baseskin(); + member->msg->set_hero_skin(msg.hero_skin()); ++member->choose_hero_times; #ifdef DEBUG - a8::XPrintf("matchchoose %s\n", {member->msg.account_id()}); + a8::XPrintf("matchchoose %s\n", {member->msg->account_id()}); #endif } } @@ -136,7 +136,7 @@ void MatchTeam::_CMMatchStartGame(f8::MsgHdr& hdr, const cs::CMMatchStartGame& m if (member) { member->state = kMatchPrepare; #ifdef DEBUG - a8::XPrintf("matchgamestart %s\n", {member->msg.account_id()}); + a8::XPrintf("matchgamestart %s\n", {member->msg->account_id()}); #endif } } @@ -149,7 +149,7 @@ void MatchTeam::_CMMatchCancelStartGame(f8::MsgHdr& hdr, const cs::CMMatchCancel if (member) { member->state = kMatchReadying; #ifdef DEBUG - a8::XPrintf("matchcancelgamestart %s\n", {member->msg.account_id()}); + a8::XPrintf("matchcancelgamestart %s\n", {member->msg->account_id()}); #endif } } @@ -163,14 +163,14 @@ void MatchTeam::_CMMatchSendMsg(f8::MsgHdr& hdr, const cs::CMMatchSendMsg& msg) if (member->socket_handle != 0) { bool found = false; for (auto& target : msg.target_list()) { - if (target == member->msg.account_id()) { + if (target == member->msg->account_id()) { found = true; break; } } if (found) { cs::SMMatchMemberMsgNotify notifymsg; - notifymsg.set_sender(sender->msg.account_id()); + notifymsg.set_sender(sender->msg->account_id()); notifymsg.set_content(msg.content()); GGListener::Instance()->SendToClient(member->socket_handle, 0, notifymsg); } @@ -186,9 +186,9 @@ void MatchTeam::_CMMatchBroadcastMsg(f8::MsgHdr& hdr, const cs::CMMatchBroadcast for (auto member : master_team_->curr_member_hash_) { if (member->socket_handle != 0) { if (!msg.exclude_self() || - (msg.exclude_self() && sender->msg.account_id() != member->msg.account_id())) { + (msg.exclude_self() && sender->msg->account_id() != member->msg->account_id())) { cs::SMMatchMemberMsgNotify notifymsg; - notifymsg.set_sender(sender->msg.account_id()); + notifymsg.set_sender(sender->msg->account_id()); notifymsg.set_content(msg.content()); GGListener::Instance()->SendToClient(member->socket_handle, 0, notifymsg); } @@ -203,7 +203,7 @@ void MatchTeam::AddRawMember(f8::MsgHdr& hdr, const cs::CMJoin& msg) member->team = this; member->add_tick = a8::XGetTickCount(); member->socket_handle = hdr.socket_handle; - member->msg = msg; + *member->msg = msg; raw_member_hash_[msg.account_id()] = member; curr_member_hash_.push_back(member); if (!first_member_) { @@ -235,15 +235,15 @@ bool MatchTeam::IsValidMember(const cs::CMJoin& msg) if (msg.team_members().size() <= 0) { return false; } - if (first_member_->msg.team_uuid() != msg.team_uuid()) { + if (first_member_->msg->team_uuid() != msg.team_uuid()) { return false; } - if (first_member_->msg.team_members().size() != msg.team_members().size()) { + if (first_member_->msg->team_members().size() != msg.team_members().size()) { return false; } for (int i = 0; i < msg.team_members().size(); ++i) { auto& a = msg.team_members(i); - auto& b = first_member_->msg.team_members(i); + auto& b = first_member_->msg->team_members(i); if (a.account_id() != b.account_id()) { return false; } @@ -400,7 +400,7 @@ bool MatchTeam::HasSameCurrMember(MatchTeam* b) bool has = false; for (auto& a_member : curr_member_hash_) { for (auto& b_member : b->curr_member_hash_) { - if (a_member->msg.account_id() == b_member->msg.account_id()) { + if (a_member->msg->account_id() == b_member->msg->account_id()) { has = true; break; } @@ -520,12 +520,12 @@ void MatchTeam::Combine(MatchTeam* b) std::string MatchTeam::GetTeamUUid() { - return first_member_->msg.team_uuid(); + return first_member_->msg->team_uuid(); } int MatchTeam::GetMapId() { - return first_member_->msg.mapid(); + return first_member_->msg->mapid(); } bool MatchTeam::IsShuaRobotTime() diff --git a/server/gameserver/matchteam.h b/server/gameserver/matchteam.h index b76402a8..15ab7854 100644 --- a/server/gameserver/matchteam.h +++ b/server/gameserver/matchteam.h @@ -32,7 +32,7 @@ struct RawTeamMember class MatchTeam* team = nullptr; long long add_tick = 0; int socket_handle = 0; - cs::CMJoin msg; + std::shared_ptr msg; bool is_robot = false; bool is_leader = false; int state = kMatchReadying; diff --git a/server/gameserver/room.cc b/server/gameserver/room.cc index c084287b..5d941d85 100644 --- a/server/gameserver/room.cc +++ b/server/gameserver/room.cc @@ -997,7 +997,7 @@ bool Room::CanJoin(class MatchTeam* team) return false; } for (auto& member : team->GetCurrMembers()) { - if (GetPlayerByAccountId(member->msg.account_id())) { + if (GetPlayerByAccountId(member->msg->account_id())) { return false; } } @@ -3937,7 +3937,7 @@ void Room::AddTeam(class MatchTeam* team) } BornPoint* init_born_point = nullptr; for (auto& member : team->GetCurrMembers()) { - cs::CMJoin& msg = member->msg; + cs::CMJoin& msg = *member->msg; if (member->is_robot) { MetaData::Robot* robot_meta = member->robot_meta; Android* hum = EntityFactory::Instance()->MakeAndroid(AllocUniid()); @@ -3989,12 +3989,12 @@ void Room::AddTeam(class MatchTeam* team) member->msg.add_baseskin(1); #endif #endif - hum->ProcPreSettlementInfo(member->msg.pre_settlement_info()); + hum->ProcPreSettlementInfo(member->msg->pre_settlement_info()); PlayerMgr::Instance()-> CreatePlayerByCMJoin(hum, 0,//hdr.ip_saddr, member->socket_handle, - member->msg + *member->msg ); hum->meta = MetaMgr::Instance()->GetPlayer(msg.hero_id()); if (!hum->meta) { diff --git a/server/gameserver/roommgr.cc b/server/gameserver/roommgr.cc index ee913d4e..3a649728 100644 --- a/server/gameserver/roommgr.cc +++ b/server/gameserver/roommgr.cc @@ -343,17 +343,17 @@ Room* RoomMgr::GetJoinableRoom(MatchTeam* team) } int game_times = 0; RoomType_e self_room_type = RT_OldBrid1; - time_t register_time = f8::ExtractRegisterTimeFromSessionId(team->GetOwner()->msg.session_id()); - int proto_version = team->GetOwner()->msg.proto_version(); - int channel = f8::ExtractChannelIdFromAccountId(team->GetOwner()->msg.account_id()); + time_t register_time = f8::ExtractRegisterTimeFromSessionId(team->GetOwner()->msg->session_id()); + int proto_version = team->GetOwner()->msg->proto_version(); + int channel = f8::ExtractChannelIdFromAccountId(team->GetOwner()->msg->account_id()); - return CreateRoom(team->GetOwner()->msg, + return CreateRoom(*team->GetOwner()->msg, self_room_type, game_times, register_time, proto_version, channel, - team->GetOwner()->msg.mapid()); + team->GetOwner()->msg->mapid()); } Room* RoomMgr::GetRoomByUuid(long long room_uuid)