1
This commit is contained in:
parent
c9f5a39d5d
commit
f00ed16184
@ -36,53 +36,6 @@ Room::~Room()
|
|||||||
|
|
||||||
void Room::Init(const cs::CMJoin& msg)
|
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.Init(RoomXGetTickCount, this, 100, 100);
|
||||||
xtimer_attacher.xtimer = &xtimer;
|
xtimer_attacher.xtimer = &xtimer;
|
||||||
frame_event.room = this;
|
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) {
|
if (!born_points_ || born_points_->size() != kROOM_MAX_PLAYER_NUM) {
|
||||||
abort();
|
abort();
|
||||||
}
|
}
|
||||||
|
room_unionid = msg.team_uuid();
|
||||||
|
InitMembers(msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Room::UnInit()
|
void Room::UnInit()
|
||||||
@ -1164,3 +1119,51 @@ void Room::SpllyAndroid()
|
|||||||
}
|
}
|
||||||
NotifyUiUpdate();
|
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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -134,6 +134,7 @@ private:
|
|||||||
void AirDrop(MetaData::AirDrop* air_drop);
|
void AirDrop(MetaData::AirDrop* air_drop);
|
||||||
void GenDrop(MetaData::AirDrop* air_drop, int drop_id, int airdrop_point_id);
|
void GenDrop(MetaData::AirDrop* air_drop, int drop_id, int airdrop_point_id);
|
||||||
void SpllyAndroid();
|
void SpllyAndroid();
|
||||||
|
void InitMembers(const cs::CMJoin& msg);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
int elapsed_time_ = 0;
|
int elapsed_time_ = 0;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user