[Expeditions] Cleanup client dz safe return methods (#1300)

This changes Zone::GetDynamicZone to return a pointer instead of a copy
and also lets DynamicZone be forward declared in zone.h
This commit is contained in:
hg
2021-03-19 00:42:20 -04:00
committed by GitHub
parent 739b975cad
commit ee4af65268
5 changed files with 21 additions and 30 deletions
+12 -13
View File
@@ -9901,21 +9901,20 @@ std::unique_ptr<EQApplicationPacket> Client::CreateCompassPacket(
return outapp;
}
void Client::GoToDzSafeReturnOrBind(const DynamicZone& dynamic_zone)
void Client::GoToDzSafeReturnOrBind(const DynamicZone* dynamic_zone)
{
auto safereturn = dynamic_zone.GetSafeReturnLocation();
LogDynamicZonesDetail(
"Sending character [{}] to safereturn zone [{}] or bind", CharacterID(), safereturn.zone_id
);
if (dynamic_zone)
{
auto safereturn = dynamic_zone->GetSafeReturnLocation();
if (safereturn.zone_id != 0)
{
LogDynamicZonesDetail("Sending [{}] to safereturn zone [{}]", CharacterID(), safereturn.zone_id);
MovePC(safereturn.zone_id, 0, safereturn.x, safereturn.y, safereturn.z, safereturn.heading);
return;
}
}
if (!dynamic_zone.IsValid() || safereturn.zone_id == 0)
{
GoToBind();
}
else
{
MovePC(safereturn.zone_id, 0, safereturn.x, safereturn.y, safereturn.z, safereturn.heading);
}
GoToBind();
}
std::vector<DynamicZone*> Client::GetDynamicZones(uint32_t zone_id, int zone_version)