mirror of
https://github.com/EQEmu/Server.git
synced 2026-03-22 18:02:25 +00:00
Load dz from cache on client switchlist reply
This commit is contained in:
parent
76b5803f83
commit
c45840173e
@ -5653,14 +5653,17 @@ void Client::Handle_OP_DzChooseZoneReply(const EQApplicationPacket *app)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
DynamicZone dz = DynamicZone::LoadDzFromDatabase(dzmsg->dz_instance_id);
|
auto client_dzs = GetDynamicZones();
|
||||||
DynamicZoneLocation loc = dz.GetZoneInLocation();
|
auto it = std::find_if(client_dzs.begin(), client_dzs.end(), [&](const DynamicZoneInfo dz_info) {
|
||||||
ZoneMode zone_mode = ZoneMode::ZoneToSafeCoords;
|
return dz_info.dynamic_zone.IsSameDz(dzmsg->dz_zone_id, dzmsg->dz_instance_id);
|
||||||
if (dz.HasZoneInLocation())
|
});
|
||||||
|
|
||||||
|
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)
|
void Client::Handle_OP_DzExpeditionInviteResponse(const EQApplicationPacket *app)
|
||||||
|
|||||||
@ -513,6 +513,11 @@ bool DynamicZone::IsInstanceID(uint32_t instance_id) const
|
|||||||
return (GetInstanceID() != 0 && GetInstanceID() == instance_id);
|
return (GetInstanceID() != 0 && GetInstanceID() == instance_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool DynamicZone::IsSameDz(uint32_t zone_id, uint32_t instance_id) const
|
||||||
|
{
|
||||||
|
return zone_id == m_zone_id && instance_id == m_instance_id;
|
||||||
|
}
|
||||||
|
|
||||||
uint32_t DynamicZone::GetSecondsRemaining() const
|
uint32_t DynamicZone::GetSecondsRemaining() const
|
||||||
{
|
{
|
||||||
auto now = std::chrono::system_clock::now();
|
auto now = std::chrono::system_clock::now();
|
||||||
|
|||||||
@ -71,6 +71,7 @@ public:
|
|||||||
uint16_t GetInstanceID() const { return static_cast<uint16_t>(m_instance_id); };
|
uint16_t GetInstanceID() const { return static_cast<uint16_t>(m_instance_id); };
|
||||||
uint32_t GetSecondsRemaining() const;
|
uint32_t GetSecondsRemaining() const;
|
||||||
uint16_t GetZoneID() const { return static_cast<uint16_t>(m_zone_id); };
|
uint16_t GetZoneID() const { return static_cast<uint16_t>(m_zone_id); };
|
||||||
|
uint32_t GetZoneIndex() const { return (m_instance_id << 16) | (m_zone_id & 0xffff); }
|
||||||
uint32_t GetZoneVersion() const { return m_version; };
|
uint32_t GetZoneVersion() const { return m_version; };
|
||||||
DynamicZoneType GetType() const { return m_type; }
|
DynamicZoneType GetType() const { return m_type; }
|
||||||
DynamicZoneLocation GetCompassLocation() const { return m_compass; }
|
DynamicZoneLocation GetCompassLocation() const { return m_compass; }
|
||||||
@ -83,6 +84,7 @@ public:
|
|||||||
bool IsCurrentZoneDzInstance() const;
|
bool IsCurrentZoneDzInstance() const;
|
||||||
bool IsInstanceID(uint32_t instance_id) const;
|
bool IsInstanceID(uint32_t instance_id) const;
|
||||||
bool IsValid() const { return m_instance_id != 0; }
|
bool IsValid() const { return m_instance_id != 0; }
|
||||||
|
bool IsSameDz(uint32_t zone_id, uint32_t instance_id) const;
|
||||||
void LoadFromDatabase(uint32_t instance_id);
|
void LoadFromDatabase(uint32_t instance_id);
|
||||||
void RemoveAllCharacters(bool enable_removal_timers = true);
|
void RemoveAllCharacters(bool enable_removal_timers = true);
|
||||||
void RemoveCharacter(uint32_t character_id);
|
void RemoveCharacter(uint32_t character_id);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user