This commit is contained in:
aozhiwei 2019-07-26 16:19:01 +08:00
parent c9f5a39d5d
commit f00ed16184
2 changed files with 51 additions and 47 deletions

View File

@ -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<MetaData::Robot>* 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<MetaData::Robot>* 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;
}
}

View File

@ -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;