修复出生点问题

This commit is contained in:
aozhiwei 2020-04-08 14:48:01 +08:00
parent 2c1e68bb4f
commit ca511bd151

View File

@ -1612,15 +1612,16 @@ void Room::NotifyWxVoip()
BornPoint* Room::AllocBornPoint(Human* hum) BornPoint* Room::AllocBornPoint(Human* hum)
{ {
BornPoint* born_point = nullptr;
if (hum->born_point) { if (hum->born_point) {
std::vector<BornPoint*> point_list; std::vector<BornPoint*> point_list;
std::vector<BornPoint*> free_point_list; std::vector<BornPoint*> free_point_list;
BornPoint* pre_point = nullptr; BornPoint* pre_point = nullptr;
for (auto& pair : born_point_hash_) { for (auto& pair : born_point_hash_) {
if (&pair.second != hum->born_point) { if (&pair.second != hum->born_point) {
point_list.push_back(&pair.second);
if (pair.second.player_num + pair.second.android_num < if (pair.second.player_num + pair.second.android_num <
pair.second.thing_tpl->i->param1()) { pair.second.thing_tpl->i->param1()) {
point_list.push_back(&pair.second);
free_point_list.push_back(&pair.second);; free_point_list.push_back(&pair.second);;
} }
} else { } else {
@ -1628,19 +1629,35 @@ BornPoint* Room::AllocBornPoint(Human* hum)
} }
} }
if (pre_point) { if (pre_point) {
--pre_point->player_num; switch (hum->entity_subtype) {
case EST_Player:
{
--pre_point->player_num;
}
break;
case EST_Android:
{
--pre_point->android_num;
}
break;
default:
{
}
break;
}
} }
if (!free_point_list.empty()) { if (!free_point_list.empty()) {
return free_point_list[rand() % free_point_list.size()]; born_point = free_point_list[rand() % free_point_list.size()];
} else { } else {
return !point_list.empty() ? point_list[rand() % point_list.size()] : nullptr; born_point = !point_list.empty() ? point_list[rand() % point_list.size()] : nullptr;
} }
} } else {
BornPoint* born_point = nullptr; for (auto& pair : born_point_hash_) {
for (auto& pair : born_point_hash_) { if (pair.second.player_num + pair.second.android_num < pair.second.thing_tpl->i->param1()) {
if (pair.second.player_num + pair.second.android_num < pair.second.thing_tpl->i->param1()) { born_point = &pair.second;
born_point = &pair.second; break;
break; }
} }
} }
if (born_point) { if (born_point) {