Load dz from cache on client switchlist reply

This commit is contained in:
hg
2020-09-21 18:56:44 -04:00
parent 76b5803f83
commit c45840173e
3 changed files with 16 additions and 6 deletions
+9 -6
View File
@@ -5653,14 +5653,17 @@ void Client::Handle_OP_DzChooseZoneReply(const EQApplicationPacket *app)
return;
}
DynamicZone dz = DynamicZone::LoadDzFromDatabase(dzmsg->dz_instance_id);
DynamicZoneLocation loc = dz.GetZoneInLocation();
ZoneMode zone_mode = ZoneMode::ZoneToSafeCoords;
if (dz.HasZoneInLocation())
auto client_dzs = GetDynamicZones();
auto it = std::find_if(client_dzs.begin(), client_dzs.end(), [&](const DynamicZoneInfo dz_info) {
return dz_info.dynamic_zone.IsSameDz(dzmsg->dz_zone_id, dzmsg->dz_instance_id);
});
if (it != client_dzs.end())
{
zone_mode = ZoneMode::ZoneSolicited;
DynamicZoneLocation loc = it->dynamic_zone.GetZoneInLocation();
ZoneMode zone_mode = it->dynamic_zone.HasZoneInLocation() ? ZoneMode::ZoneSolicited : ZoneMode::ZoneToSafeCoords;
MovePC(dzmsg->dz_zone_id, dzmsg->dz_instance_id, loc.x, loc.y, loc.z, loc.heading, 0, zone_mode);
}
MovePC(dzmsg->dz_zone_id, dzmsg->dz_instance_id, loc.x, loc.y, loc.z, loc.heading, 0, zone_mode);
}
void Client::Handle_OP_DzExpeditionInviteResponse(const EQApplicationPacket *app)