eqemu-server/zone/zone_finable_locations.cpp

43 lines
1.1 KiB
C++

#include "zone.h"
void Zone::LoadFindableLocations() {
m_findable_locations = content_db.LoadFindableLocations(GetShortName(), GetInstanceVersion());
if (m_findable_locations.empty()) {
LogInfo("No findable loacations loaded");
return;
}
}
void Zone::ReloadFindableLocations() {
ClearFindableLocations();
LoadFindableLocations();
}
void Zone::ClearFindableLocations() {
m_findable_locations.clear();
}
void Zone::SendFindableLocations(Client* client) {
if (m_findable_locations.empty()) {
return;
}
size_t size = sizeof(uint32) + (m_findable_locations.size() * sizeof(FindableLocation_Struct));
auto outapp = new EQApplicationPacket(OP_SendFindableLocations, size);
outapp->WriteUInt32(m_findable_locations.size());
for (auto& location : m_findable_locations) {
outapp->WriteUInt32(location.type);
outapp->WriteSInt32(location.findable_id);
outapp->WriteSInt32(location.findable_sub_id);
outapp->WriteSInt32(location.zone_id);
outapp->WriteSInt32(location.zone_id_index);
outapp->WriteFloat(location.y);
outapp->WriteFloat(location.x);
outapp->WriteFloat(location.z);
}
client->FastQueuePacket(&outapp);
}