1
This commit is contained in:
parent
b75c7cee45
commit
ce11647e13
@ -147,10 +147,68 @@ void RoomMgr::_CMJoin(f8::MsgHdr& hdr, const cs::CMJoin& msg)
|
|||||||
MatchMgr::Instance()->_CMJoin(hdr, msg);
|
MatchMgr::Instance()->_CMJoin(hdr, msg);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
std::vector<std::shared_ptr<cs::CMJoin>> join_msgs;
|
std::shared_ptr<cs::CMJoin> join_msg = std::make_shared<cs::CMJoin>();
|
||||||
|
*join_msg = msg;
|
||||||
|
std::vector<std::shared_ptr<cs::CMJoin>> join_msgs{join_msg};
|
||||||
|
auto ip_saddr = hdr.ip_saddr;
|
||||||
|
auto socket_handle = hdr.socket_handle;
|
||||||
auto cb =
|
auto cb =
|
||||||
[] (std::vector<std::tuple<int, std::string>>&)
|
[ip_saddr, socket_handle, join_msg] (std::vector<std::tuple<int, std::string>>& results)
|
||||||
{
|
{
|
||||||
|
cs::CMJoin& msg = *join_msg;
|
||||||
|
if (RoomMgr::Instance()->IsLimitJoin()) {
|
||||||
|
RoomMgr::Instance()->JoinErrorHandle(msg, 2, socket_handle);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
int game_times = 0;
|
||||||
|
RoomType_e self_room_type = GetHumanRoomType(msg, game_times);
|
||||||
|
if (self_room_type < RT_OldBrid1) {
|
||||||
|
self_room_type = RT_OldBrid1;
|
||||||
|
}
|
||||||
|
time_t register_time = f8::ExtractRegisterTimeFromSessionId(msg.session_id());
|
||||||
|
int proto_version = msg.proto_version();
|
||||||
|
int channel = f8::ExtractChannelIdFromAccountId(msg.account_id());
|
||||||
|
Room* room = RoomMgr::Instance()->GetJoinableRoom
|
||||||
|
(
|
||||||
|
msg,
|
||||||
|
self_room_type,
|
||||||
|
game_times,
|
||||||
|
register_time,
|
||||||
|
proto_version,
|
||||||
|
channel
|
||||||
|
);
|
||||||
|
if (!room) {
|
||||||
|
RoomMgr::Instance()->JoinErrorHandle(msg, 3, socket_handle);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
Player* hum = room->NewPlayer();
|
||||||
|
hum->ProcPreSettlementInfo(msg.pre_settlement_info());
|
||||||
|
PlayerMgr::Instance()->
|
||||||
|
CreatePlayerByCMJoin(hum,
|
||||||
|
ip_saddr,
|
||||||
|
socket_handle,
|
||||||
|
msg
|
||||||
|
);
|
||||||
|
hum->meta = MetaMgr::Instance()->GetPlayer(msg.hero_id());
|
||||||
|
if (!hum->meta) {
|
||||||
|
hum->meta = MetaMgr::Instance()->human_meta;
|
||||||
|
}
|
||||||
|
hum->room = room;
|
||||||
|
room->AddPlayer(hum);
|
||||||
|
hum->ProcPrepareItems(msg.prepare_items());
|
||||||
|
hum->ProcPrepareItems2(msg.prepare_items2());
|
||||||
|
hum->ProcSkillList(msg.skill_list());
|
||||||
|
PlayerMgr::Instance()->IncAccountNum(msg.account_id());
|
||||||
|
if (JsonDataMgr::Instance()->channel != 0 &&
|
||||||
|
JsonDataMgr::Instance()->channel != channel) {
|
||||||
|
a8::UdpLog::Instance()->Warning
|
||||||
|
("join room channel not match channel:%d account_id:%s",
|
||||||
|
{
|
||||||
|
JsonDataMgr::Instance()->channel,
|
||||||
|
msg.account_id()
|
||||||
|
});
|
||||||
|
}
|
||||||
|
RoomMgr::Instance()->OnJoinRoomOk(msg, hum);
|
||||||
};
|
};
|
||||||
SendGetBattleData(join_msgs, cb);
|
SendGetBattleData(join_msgs, cb);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user