diff options
Diffstat (limited to 'src/server/game/Guilds/GuildFinderMgr.h')
-rw-r--r-- | src/server/game/Guilds/GuildFinderMgr.h | 252 |
1 files changed, 0 insertions, 252 deletions
diff --git a/src/server/game/Guilds/GuildFinderMgr.h b/src/server/game/Guilds/GuildFinderMgr.h deleted file mode 100644 index ff20c29a413..00000000000 --- a/src/server/game/Guilds/GuildFinderMgr.h +++ /dev/null @@ -1,252 +0,0 @@ -/* - * This file is part of the TrinityCore Project. See AUTHORS file for Copyright information - * - * This program is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by the - * Free Software Foundation; either version 2 of the License, or (at your - * option) any later version. - * - * This program is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -#ifndef __TRINITY_GUILDFINDER_H -#define __TRINITY_GUILDFINDER_H - -#include "Common.h" -#include "ObjectGuid.h" -#include "SharedDefines.h" -#include <unordered_map> - -class Guild; -class Player; - -enum GuildFinderOptionsInterest -{ - INTEREST_QUESTING = 0x01, - INTEREST_DUNGEONS = 0x02, - INTEREST_RAIDS = 0x04, - INTEREST_PVP = 0x08, - INTEREST_ROLE_PLAYING = 0x10, - ALL_INTERESTS = INTEREST_QUESTING | INTEREST_DUNGEONS | INTEREST_RAIDS | INTEREST_PVP | INTEREST_ROLE_PLAYING -}; - -enum GuildFinderOptionsAvailability -{ - AVAILABILITY_WEEKDAYS = 0x1, - AVAILABILITY_WEEKENDS = 0x2, - AVAILABILITY_ALWAYS = AVAILABILITY_WEEKDAYS | AVAILABILITY_WEEKENDS -}; - -enum GuildFinderOptionsRoles -{ - GUILDFINDER_ROLE_TANK = 0x1, - GUILDFINDER_ROLE_HEALER = 0x2, - GUILDFINDER_ROLE_DPS = 0x4, - GUILDFINDER_ALL_ROLES = GUILDFINDER_ROLE_TANK | GUILDFINDER_ROLE_HEALER | GUILDFINDER_ROLE_DPS -}; - -enum GuildFinderOptionsLevel -{ - ANY_FINDER_LEVEL = 0x1, - MAX_FINDER_LEVEL = 0x2, - ALL_GUILDFINDER_LEVELS = ANY_FINDER_LEVEL | MAX_FINDER_LEVEL -}; - -/// Holds all required informations about a membership request -struct MembershipRequest -{ - public: - MembershipRequest(); - - MembershipRequest(ObjectGuid const& playerGUID, ObjectGuid const& guildId, uint32 availability, uint32 classRoles, uint32 interests, std::string comment, time_t submitTime); - - ObjectGuid const& GetGuildGuid() const { return _guildId; } - ObjectGuid const& GetPlayerGUID() const { return _playerGUID; } - uint8 GetAvailability() const { return _availability; } - uint8 GetClassRoles() const { return _classRoles; } - uint8 GetInterests() const { return _interests; } - time_t GetSubmitTime() const { return _time; } - time_t GetExpiryTime() const { return time_t(_time + 30 * 24 * 3600); } // Adding 30 days - std::string const& GetComment() const { return _comment; } - - private: - std::string _comment; - - ObjectGuid _guildId; - ObjectGuid _playerGUID; - - uint8 _availability; - uint8 _classRoles; - uint8 _interests; - - time_t _time; -}; - -/// Holds all informations about a player's finder settings. _NOT_ stored in database. -struct LFGuildPlayer -{ - public: - LFGuildPlayer() - { - _roles = 0; - _availability = 0; - _interests = 0; - _level = 0; - } - - LFGuildPlayer(ObjectGuid const& guid, uint8 role, uint8 availability, uint8 interests, uint8 level) - { - _guid = guid; - _roles = role; - _availability = availability; - _interests = interests; - _level = level; - } - - LFGuildPlayer(ObjectGuid const& guid, uint8 role, uint8 availability, uint8 interests, uint8 level, std::string& comment) : _comment(comment) - { - _guid = guid; - _roles = role; - _availability = availability; - _interests = interests; - _level = level; - } - - ObjectGuid const& GetGUID() const { return _guid; } - uint8 GetClassRoles() const { return _roles; } - uint8 GetAvailability() const { return _availability; } - uint8 GetInterests() const { return _interests; } - uint8 GetLevel() const { return _level; } - std::string const& GetComment() const { return _comment; } - - private: - std::string _comment; - ObjectGuid _guid; - uint8 _roles; - uint8 _availability; - uint8 _interests; - uint8 _level; -}; - -/// Holds settings for a guild in the finder system. Saved to database. -struct LFGuildSettings : public LFGuildPlayer -{ - public: - LFGuildSettings() : LFGuildPlayer(), _listed(false), _team(TEAM_ALLIANCE) {} - - LFGuildSettings(bool listed, TeamId team) : LFGuildPlayer(), _listed(listed), _team(team) {} - - LFGuildSettings(bool listed, TeamId team, ObjectGuid const& guid, uint8 role, uint8 availability, uint8 interests, uint8 level) : - LFGuildPlayer(guid, role, availability, interests, level), _listed(listed), _team(team) {} - - LFGuildSettings(bool listed, TeamId team, ObjectGuid const& guid, uint8 role, uint8 availability, uint8 interests, uint8 level, std::string& comment) : - LFGuildPlayer(guid, role, availability, interests, level, comment), _listed(listed), _team(team) {} - - bool IsListed() const { return _listed; } - void SetListed(bool state) { _listed = state; } - - TeamId GetTeam() const { return _team; } - private: - bool _listed; - TeamId _team; -}; - -typedef std::unordered_map<ObjectGuid /* guildGuid */, LFGuildSettings> LFGuildStore; - -class GuildFinderMgr -{ - private: - GuildFinderMgr(); - ~GuildFinderMgr(); - - LFGuildStore _guildSettings; - - std::unordered_map<ObjectGuid /*guildGUID*/, std::unordered_map<ObjectGuid /*playerGUID*/, MembershipRequest>> _membershipRequestsByGuild; - std::unordered_map<ObjectGuid /*playerGUID*/, std::unordered_map<ObjectGuid /*guildGUID*/, MembershipRequest>> _membershipRequestsByPlayer; - - void LoadGuildSettings(); - void LoadMembershipRequests(); - - public: - void LoadFromDB(); - - /** - * @brief Stores guild settings and begins an asynchronous database insert - * @param guildGuid The guild's database guid. - * @param LFGuildSettings The guild's settings storage. - */ - void SetGuildSettings(ObjectGuid const& guildGuid, LFGuildSettings const& settings); - - /** - * @brief Returns settings for a guild. - * @param guildGuid The guild's database guid. - */ - LFGuildSettings const& GetGuildSettings(ObjectGuid const& guildGuid) { return _guildSettings[guildGuid]; } - - /** - * @brief Files a membership request to a guild - * @param guildGuid The guild's database GUID. - * @param MembershipRequest An object storing all data related to the request. - */ - void AddMembershipRequest(ObjectGuid const& guildGuid, MembershipRequest const& request); - - /** - * @brief Removes all membership request from a player. - * @param playerId The player's database guid whose application shall be deleted. - */ - void RemoveAllMembershipRequestsFromPlayer(ObjectGuid const& playerId); - - /** - * @brief Removes a membership request to a guild. - * @param playerId The player's database guid whose application shall be deleted. - * @param guildId The guild's database guid - */ - void RemoveMembershipRequest(ObjectGuid const& playerId, ObjectGuid const& guildId); - - /// Wipes everything related to a guild. Used when that guild is disbanded - void DeleteGuild(ObjectGuid const& guildId); - - /** - * @brief Returns a set of membership requests for a guild - * @param guildGuid The guild's database guid. - */ - std::unordered_map<ObjectGuid, MembershipRequest> const* GetAllMembershipRequestsForGuild(ObjectGuid const& guildGuid) - { - auto itr = _membershipRequestsByGuild.find(guildGuid); - return itr != _membershipRequestsByGuild.end() ? &itr->second : nullptr; - } - - /** - * @brief Returns a list of membership requests for a player. - * @param playerGuid The player's database guid. - */ - std::vector<MembershipRequest const*> GetAllMembershipRequestsForPlayer(ObjectGuid const& playerGuid); - - /** - * @brief Returns a store of guilds matching the settings provided, using bitmask operators. - * @param settings The player's finder settings - * @param teamId The player's faction (TEAM_ALLIANCE or TEAM_HORDE) - */ - std::vector<LFGuildSettings const*> GetGuildsMatchingSetting(LFGuildPlayer& settings, TeamId faction); - - /// Provided a player guid and a guild guid, determines if a pending request is filed with these keys. - bool HasRequest(ObjectGuid const& playerId, ObjectGuid const& guildId); - - /// Counts the amount of pending membership requests, given the player's db guid. - uint8 CountRequestsFromPlayer(ObjectGuid const& playerId); - - static void SendApplicantListUpdate(Guild* guild); - static void SendMembershipRequestListUpdate(Player* player); - - static GuildFinderMgr* instance(); -}; - -#define sGuildFinderMgr GuildFinderMgr::instance() - -#endif // __TRINITY_GUILDFINDER_H |