void CTargetFind::addEntity(CBattleEntity* PTarget, bool withPet) { if (validEntity(PTarget)){ m_targets.push_back(PTarget); } // add my pet too, if its allowed if (withPet && PTarget->PPet != NULL && validEntity(PTarget->PPet)) { m_targets.push_back(PTarget->PPet); } }
bool registerEntityDestructionUMap(EntityID entity, std::unordered_map<uint32_t, uint32_t>& target) { if (!validEntity(entity)) { return false; } if (entity_destruction_umaps_.size() <= entity.id) { entity_destruction_umaps_.resize(entity.id + 1); } entity_destruction_umaps_[entity.id].emplace(&target); return true; }
bool registerEntityDestructionVector(EntityID entity, std::vector<uint32_t>& target) { if (!validEntity(entity)) { return false; } if (entity_destruction_vectors_.size() <= entity.id) { entity_destruction_vectors_.resize(entity.id + 1); } entity_destruction_vectors_[entity.id].emplace(&target); return true; }
bool registerEntityDestructionCB(EntityID entity, EntityRemovedCB &cb) { if (!validEntity(entity)) { return false; } if (entity_destruction_cbs_.size() < entity.id) { entity_destruction_cbs_.resize(entity.id + 1); } entity_destruction_cbs_[entity.id].emplace_back(&cb); return true; }
bool unregisterEntityDestructionUMap(EntityID entity, std::unordered_map<uint32_t, uint32_t>& target) { if (!validEntity(entity)) { return false; } if (entity_destruction_umaps_.size() >= entity.id) { return false; } auto& set = entity_destruction_umaps_[entity.id]; auto found = set.find(&target); if (set.end() == found) { return false; } set.erase(found); return true; }
/* Hmm, don't need if we clear it when destroyed anyway... bool unregisterEntityDestructionCB(EntityID entity, EntityRemovedCB &cb) { if (!validEntity(entity)) { return false; } if (entity_destruction_cbs_.size() >= entity.id) { return false; } auto &vec = entity_destruction_cbs_[entity.id]; auto found = vec.find(cb) } */ bool unregisterEntityDestructionVector(EntityID entity, std::vector<uint32_t>& target) { if (!validEntity(entity)) { return false; } if (entity_destruction_vectors_.size() >= entity.id) { return false; } auto& set = entity_destruction_vectors_[entity.id]; auto found = set.find(&target); if (set.end() == found) { return false; } set.erase(found); return true; }