This commit is contained in:
aozhiwei 2021-09-28 14:58:24 +08:00
parent cdebb91c27
commit 7b6de450fb
2 changed files with 18 additions and 6 deletions

View File

@ -231,7 +231,7 @@ Player* Room::NewPlayer()
return hum; return hum;
} }
void Room::AddPlayer(Player* hum) void Room::AddPlayer(Player* hum, BornPoint* init_born_point, bool no_matchteam)
{ {
if (gas_data_.gas_mode != GasInactive) { if (gas_data_.gas_mode != GasInactive) {
abort(); abort();
@ -239,7 +239,11 @@ void Room::AddPlayer(Player* hum)
while (human_hash_.size() >= GetRoomMaxPlayerNum()) { while (human_hash_.size() >= GetRoomMaxPlayerNum()) {
RandRemoveAndroid(); RandRemoveAndroid();
} }
if (init_born_point) {
hum->born_point = init_born_point;
} else {
hum->born_point = AllocBornPoint(hum); hum->born_point = AllocBornPoint(hum);
}
if (!hum->born_point) { if (!hum->born_point) {
hum->SetPos(GetDefaultBornPoint()); hum->SetPos(GetDefaultBornPoint());
} else { } else {
@ -259,7 +263,9 @@ void Room::AddPlayer(Player* hum)
AddToAccountHash(hum); AddToAccountHash(hum);
AddToHumanHash(hum); AddToHumanHash(hum);
AddToAliveHumanHash(hum); AddToAliveHumanHash(hum);
if (!no_matchteam) {
MatchTeam(hum); MatchTeam(hum);
}
hum->PushJoinRoomMsg(); hum->PushJoinRoomMsg();
++alive_count_; ++alive_count_;
alive_count_chged_frameno_ = GetFrameNo(); alive_count_chged_frameno_ = GetFrameNo();
@ -1805,7 +1811,7 @@ void Room::RandRemoveAndroid()
} }
if (!hum) { if (!hum) {
for (auto& pair : human_hash_) { for (auto& pair : human_hash_) {
if (pair.second->IsAndroid()) { if (pair.second->IsAndroid() && pair.second->team_uuid.empty()) {
hum = pair.second; hum = pair.second;
break; break;
} }
@ -3877,6 +3883,7 @@ void Room::AddTeam(class MatchTeam* team)
if (team->GetCurrMembers().size() != MAX_TEAM_NUM) { if (team->GetCurrMembers().size() != MAX_TEAM_NUM) {
return; return;
} }
BornPoint* init_born_point = nullptr;
for (auto& member : team->GetCurrMembers()) { for (auto& member : team->GetCurrMembers()) {
cs::CMJoin& msg = member->msg; cs::CMJoin& msg = member->msg;
if (member->is_robot) { if (member->is_robot) {
@ -3885,7 +3892,10 @@ void Room::AddTeam(class MatchTeam* team)
hum->name = robot_meta->i->name(); hum->name = robot_meta->i->name();
hum->meta = MetaMgr::Instance()->GetPlayer(robot_meta->i->hero_id()); hum->meta = MetaMgr::Instance()->GetPlayer(robot_meta->i->hero_id());
hum->robot_meta = robot_meta; hum->robot_meta = robot_meta;
hum->born_point = AllocBornPoint(hum); if (!init_born_point) {
init_born_point = AllocBornPoint(hum);
}
hum->born_point = init_born_point;
if (!hum->born_point) { if (!hum->born_point) {
hum->SetPos(GetDefaultBornPoint()); hum->SetPos(GetDefaultBornPoint());
} else { } else {
@ -3900,7 +3910,9 @@ void Room::AddTeam(class MatchTeam* team)
hum->Initialize(); hum->Initialize();
AddToEntityHash(hum); AddToEntityHash(hum);
AddToHumanHash(hum); AddToHumanHash(hum);
#if 0
MatchTeam(hum); MatchTeam(hum);
#endif
++alive_count_; ++alive_count_;
alive_count_chged_frameno_ = GetFrameNo(); alive_count_chged_frameno_ = GetFrameNo();
++PerfMonitor::Instance()->alive_count; ++PerfMonitor::Instance()->alive_count;

View File

@ -125,7 +125,7 @@ public:
int GetRealPlayerNum() { return accountid_hash_.size();} int GetRealPlayerNum() { return accountid_hash_.size();}
Player* NewPlayer(); Player* NewPlayer();
void AddPlayer(Player* hum); void AddPlayer(Player* hum, BornPoint* init_born_point = nullptr, bool no_matchteam = false);
Human* FindEnemy(Human* hum); Human* FindEnemy(Human* hum);
void AddTeam(class MatchTeam* team); void AddTeam(class MatchTeam* team);