/* * Copyright (C) 2016+ AzerothCore , released under GNU GPL v2 license, you may redistribute it * and/or modify it under version 2 of the License, or (at your option), any later version. */ #ifndef _PLAYERBOT_POSSIBLERPGTARGETSVALUE_H #define _PLAYERBOT_POSSIBLERPGTARGETSVALUE_H #include "NearestGameObjects.h" #include "NearestUnitsValue.h" #include "PlayerbotAIConfig.h" #include "SharedDefines.h" class PlayerbotAI; class PossibleRpgTargetsValue : public NearestUnitsValue { public: PossibleRpgTargetsValue(PlayerbotAI* botAI, float range = 70.0f); static std::vector allowedNpcFlags; protected: void FindUnits(std::list& targets) override; bool AcceptUnit(Unit* unit) override; }; class PossibleNewRpgTargetsValue : public NearestUnitsValue { public: PossibleNewRpgTargetsValue(PlayerbotAI* botAI, float range = 150.0f); static std::vector allowedNpcFlags; GuidVector Calculate() override; protected: void FindUnits(std::list& targets) override; bool AcceptUnit(Unit* unit) override; }; class PossibleNewRpgGameObjectsValue : public ObjectGuidListCalculatedValue { public: PossibleNewRpgGameObjectsValue(PlayerbotAI* botAI, float range = 150.0f, bool ignoreLos = true) : ObjectGuidListCalculatedValue(botAI, "possible new rpg game objects"), range(range), ignoreLos(ignoreLos) { if (allowedGOFlags.empty()) { allowedGOFlags.push_back(GAMEOBJECT_TYPE_QUESTGIVER); } } static std::vector allowedGOFlags; GuidVector Calculate() override; private: float range; bool ignoreLos; }; #endif