From f00ed1618440d68a95107d970f52f606b6a59e4b Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Fri, 26 Jul 2019 16:19:01 +0800 Subject: [PATCH] 1 --- server/gameserver/room.cc | 97 ++++++++++++++++++++------------------- server/gameserver/room.h | 1 + 2 files changed, 51 insertions(+), 47 deletions(-) diff --git a/server/gameserver/room.cc b/server/gameserver/room.cc index 503d593..38f174c 100644 --- a/server/gameserver/room.cc +++ b/server/gameserver/room.cc @@ -36,53 +36,6 @@ Room::~Room() void Room::Init(const cs::CMJoin& msg) { - { - room_unionid = msg.team_uuid(); - { - RoomMember p; - p.entity_uniid = AllocUniid(); - p.accountid = msg.account_id(); - p.name = msg.name(); - p.avatar_url = msg.avatar_url(); - p.tank_id = msg.baseskin(); - p.tankskin_id = msg.tankskin().skin_id(); - members_hash_[p.accountid] = p; - } - for (auto& member : msg.room_member()) { - if (members_hash_.size() < kROOM_MAX_PLAYER_NUM) { - RoomMember p; - p.entity_uniid = AllocUniid(); - p.accountid = member.account_id(); - p.name = member.name(); - p.avatar_url = member.avatar_url(); - p.tank_id = member.skin().skin_id(); - p.tankskin_id = member.tankskin().skin_id(); - members_hash_[p.accountid] = p; - } - } - int try_count = 0; - while (members_hash_.size() < kROOM_MAX_PLAYER_NUM) { - if (try_count > 3000) { - abort(); - } - std::vector* robot_list = MetaMgr::Instance()->GetRobotList(); - if (robot_list && !robot_list->empty()) { - MetaData::Robot& tmp_robot_meta = (*robot_list)[rand() % robot_list->size()]; - std::string robot_id = a8::Format("$robot_%d", {tmp_robot_meta.i->id()}); - if (members_hash_.find(robot_id) == members_hash_.end()) { - RoomMember p; - p.entity_uniid = AllocUniid(); - p.accountid = robot_id; - p.name = tmp_robot_meta.i->name(); - p.avatar_url = ""; - p.tank_id = MetaMgr::Instance()->RandTank(); - p.tankskin_id = 0; - members_hash_[p.accountid] = p; - } - } - ++try_count; - } - } xtimer.Init(RoomXGetTickCount, this, 100, 100); xtimer_attacher.xtimer = &xtimer; frame_event.room = this; @@ -94,6 +47,8 @@ void Room::Init(const cs::CMJoin& msg) if (!born_points_ || born_points_->size() != kROOM_MAX_PLAYER_NUM) { abort(); } + room_unionid = msg.team_uuid(); + InitMembers(msg); } void Room::UnInit() @@ -1164,3 +1119,51 @@ void Room::SpllyAndroid() } NotifyUiUpdate(); } + +void Room::InitMembers(const cs::CMJoin& msg) +{ + { + RoomMember p; + p.entity_uniid = AllocUniid(); + p.accountid = msg.account_id(); + p.name = msg.name(); + p.avatar_url = msg.avatar_url(); + p.tank_id = msg.baseskin(); + p.tankskin_id = msg.tankskin().skin_id(); + members_hash_[p.accountid] = p; + } + for (auto& member : msg.room_member()) { + if (members_hash_.size() < kROOM_MAX_PLAYER_NUM) { + RoomMember p; + p.entity_uniid = AllocUniid(); + p.accountid = member.account_id(); + p.name = member.name(); + p.avatar_url = member.avatar_url(); + p.tank_id = member.skin().skin_id(); + p.tankskin_id = member.tankskin().skin_id(); + members_hash_[p.accountid] = p; + } + } + int try_count = 0; + while (members_hash_.size() < kROOM_MAX_PLAYER_NUM) { + if (try_count > 3000) { + abort(); + } + std::vector* robot_list = MetaMgr::Instance()->GetRobotList(); + if (robot_list && !robot_list->empty()) { + MetaData::Robot& tmp_robot_meta = (*robot_list)[rand() % robot_list->size()]; + std::string robot_id = a8::Format("$robot_%d", {tmp_robot_meta.i->id()}); + if (members_hash_.find(robot_id) == members_hash_.end()) { + RoomMember p; + p.entity_uniid = AllocUniid(); + p.accountid = robot_id; + p.name = tmp_robot_meta.i->name(); + p.avatar_url = ""; + p.tank_id = MetaMgr::Instance()->RandTank(); + p.tankskin_id = 0; + members_hash_[p.accountid] = p; + } + } + ++try_count; + } +} diff --git a/server/gameserver/room.h b/server/gameserver/room.h index b8b98b1..7325f7a 100644 --- a/server/gameserver/room.h +++ b/server/gameserver/room.h @@ -134,6 +134,7 @@ private: void AirDrop(MetaData::AirDrop* air_drop); void GenDrop(MetaData::AirDrop* air_drop, int drop_id, int airdrop_point_id); void SpllyAndroid(); + void InitMembers(const cs::CMJoin& msg); private: int elapsed_time_ = 0;