mirror of
https://github.com/OpenFusionProject/OpenFusion.git
synced 2024-11-25 14:30:14 +00:00
Scan all chunks in instance instead of in view for escort missions
This commit is contained in:
parent
a90ba9ea08
commit
eb8ec85746
@ -227,7 +227,7 @@ std::set<Chunk*> Chunking::getViewableChunks(ChunkPos chunk) {
|
|||||||
/*
|
/*
|
||||||
* inefficient algorithm to get all chunks from a specific instance
|
* inefficient algorithm to get all chunks from a specific instance
|
||||||
*/
|
*/
|
||||||
static std::vector<ChunkPos> getChunksInMap(uint64_t mapNum) {
|
std::vector<ChunkPos> Chunking::getChunksInMap(uint64_t mapNum) {
|
||||||
std::vector<ChunkPos> chnks;
|
std::vector<ChunkPos> chnks;
|
||||||
|
|
||||||
for (auto it = chunks.begin(); it != chunks.end(); it++) {
|
for (auto it = chunks.begin(); it != chunks.end(); it++) {
|
||||||
|
@ -37,6 +37,7 @@ namespace Chunking {
|
|||||||
bool chunkExists(ChunkPos chunk);
|
bool chunkExists(ChunkPos chunk);
|
||||||
ChunkPos chunkPosAt(int posX, int posY, uint64_t instanceID);
|
ChunkPos chunkPosAt(int posX, int posY, uint64_t instanceID);
|
||||||
std::set<Chunk*> getViewableChunks(ChunkPos chunkPos);
|
std::set<Chunk*> getViewableChunks(ChunkPos chunkPos);
|
||||||
|
std::vector<ChunkPos> getChunksInMap(uint64_t mapNum);
|
||||||
|
|
||||||
bool inPopulatedChunks(std::set<Chunk*>* chnks);
|
bool inPopulatedChunks(std::set<Chunk*>* chnks);
|
||||||
void createInstance(uint64_t);
|
void createInstance(uint64_t);
|
||||||
|
@ -361,7 +361,8 @@ static void taskStart(CNSocket* sock, CNPacketData* data) {
|
|||||||
|
|
||||||
// if escort task, assign matching paths to all nearby NPCs
|
// if escort task, assign matching paths to all nearby NPCs
|
||||||
if (task["m_iHTaskType"] == 6) {
|
if (task["m_iHTaskType"] == 6) {
|
||||||
for(Chunk* chunk : plr->viewableChunks) // check all NPCs in view
|
for (ChunkPos chunkPos : Chunking::getChunksInMap(plr->instanceID)) { // check all NPCs in the instance
|
||||||
|
Chunk* chunk = Chunking::chunks[chunkPos];
|
||||||
for (EntityRef ref : chunk->entities) {
|
for (EntityRef ref : chunk->entities) {
|
||||||
if (ref.type != EntityType::PLAYER) {
|
if (ref.type != EntityType::PLAYER) {
|
||||||
BaseNPC* npc = (BaseNPC*)ref.getEntity();
|
BaseNPC* npc = (BaseNPC*)ref.getEntity();
|
||||||
@ -373,6 +374,7 @@ static void taskStart(CNSocket* sock, CNPacketData* data) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void taskEnd(CNSocket* sock, CNPacketData* data) {
|
static void taskEnd(CNSocket* sock, CNPacketData* data) {
|
||||||
|
Loading…
Reference in New Issue
Block a user