diff options
| author | Shauren <shauren.trinity@gmail.com> | 2024-08-02 13:25:41 +0200 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2024-08-02 13:25:41 +0200 |
| commit | e59eef5432c7b70679d33f4911c88d0f7d75fd39 (patch) | |
| tree | fe9bce9c82496589facec3719b3f2943d8295e76 /src/server/game/Groups | |
| parent | 7fb9168d57f378075b0f6692ea7ad822c1d8e43d (diff) | |
Core/PacketIO: Updated to 11.0.0
Diffstat (limited to 'src/server/game/Groups')
| -rw-r--r-- | src/server/game/Groups/Group.cpp | 20 | ||||
| -rw-r--r-- | src/server/game/Groups/Group.h | 16 | ||||
| -rw-r--r-- | src/server/game/Groups/GroupMgr.cpp | 4 |
3 files changed, 26 insertions, 14 deletions
diff --git a/src/server/game/Groups/Group.cpp b/src/server/game/Groups/Group.cpp index 289c4dc39ea..14d94305ba6 100644 --- a/src/server/game/Groups/Group.cpp +++ b/src/server/game/Groups/Group.cpp @@ -198,6 +198,7 @@ bool Group::Create(Player* leader) stmt->setUInt32(index++, uint8(m_raidDifficulty)); stmt->setUInt32(index++, uint8(m_legacyRaidDifficulty)); stmt->setUInt64(index++, m_masterLooterGuid.GetCounter()); + stmt->setInt8(index++, int8(m_pingRestriction)); CharacterDatabase.Execute(stmt); @@ -243,6 +244,8 @@ void Group::LoadGroupFromDB(Field* fields) m_masterLooterGuid = ObjectGuid::Create<HighGuid::Player>(fields[16].GetUInt64()); + m_pingRestriction = RestrictPingsTo(fields[18].GetInt8()); + if (m_groupFlags & GROUP_FLAG_LFG) sLFGMgr->_LoadFromDB(fields, GetGUID()); } @@ -867,6 +870,8 @@ void Group::SendUpdateToPlayer(ObjectGuid playerGUID, MemberSlot const* slot) co partyUpdate.SequenceNum = player->NextGroupUpdateSequenceNumber(m_groupCategory); + partyUpdate.PingRestriction = m_pingRestriction; + partyUpdate.MyIndex = -1; uint8 index = 0; for (member_citerator citr = m_memberSlots.begin(); citr != m_memberSlots.end(); ++citr, ++index) @@ -1899,23 +1904,20 @@ void Group::SetEveryoneIsAssistant(bool apply) SendUpdate(); } -bool Group::IsRestrictPingsToAssistants() const +RestrictPingsTo Group::GetRestrictPings() const { - return (m_groupFlags & GROUP_FLAG_RESTRICT_PINGS) != 0; + return m_pingRestriction; } -void Group::SetRestrictPingsToAssistants(bool restrictPingsToAssistants) +void Group::SetRestrictPingsTo(RestrictPingsTo restrictTo) { - if (restrictPingsToAssistants) - m_groupFlags = GroupFlags(m_groupFlags | GROUP_FLAG_RESTRICT_PINGS); - else - m_groupFlags = GroupFlags(m_groupFlags & ~GROUP_FLAG_RESTRICT_PINGS); + m_pingRestriction = restrictTo; if (!isBGGroup() && !isBFGroup()) { - CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_GROUP_TYPE); + CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_GROUP_PING_RESTRICTION); - stmt->setUInt16(0, m_groupFlags); + stmt->setInt8(0, int8(m_pingRestriction)); stmt->setUInt32(1, m_dbStoreId); CharacterDatabase.Execute(stmt); diff --git a/src/server/game/Groups/Group.h b/src/server/game/Groups/Group.h index 8ba2f36e3c3..98f22523d2f 100644 --- a/src/server/game/Groups/Group.h +++ b/src/server/game/Groups/Group.h @@ -103,7 +103,7 @@ enum GroupFlags : uint16 GROUP_FLAG_EVERYONE_ASSISTANT = 0x040, // Script_IsEveryoneAssistant() GROUP_FLAG_GUILD_GROUP = 0x100, GROUP_FLAG_CROSS_FACTION = 0x200, - GROUP_FLAG_RESTRICT_PINGS = 0x400, // C_PartyInfo::Script_GetRestrictPings() + GROUP_FLAG_RESTRICT_PINGS = 0x400, // deprecated GROUP_MASK_BGRAID = GROUP_FLAG_FAKE_RAID | GROUP_FLAG_RAID, }; @@ -191,6 +191,14 @@ enum class PingSubjectType : uint8 Max }; +enum class RestrictPingsTo : int32 +{ + None = 0, + Lead = 1, + Assist = 2, + TankHealer = 3, +}; + /** request member stats checken **/ /// @todo uninvite people that not accepted invite class TC_GAME_API Group @@ -260,8 +268,8 @@ class TC_GAME_API Group void SetLfgRoles(ObjectGuid guid, uint8 roles); uint8 GetLfgRoles(ObjectGuid guid) const; void SetEveryoneIsAssistant(bool apply); - bool IsRestrictPingsToAssistants() const; - void SetRestrictPingsToAssistants(bool restrictPingsToAssistants); + RestrictPingsTo GetRestrictPings() const; + void SetRestrictPingsTo(RestrictPingsTo restrictTo); // Update void UpdateReadyCheck(uint32 diff); @@ -451,6 +459,8 @@ class TC_GAME_API Group std::array<std::unique_ptr<CountdownInfo>, 3> m_countdowns; + RestrictPingsTo m_pingRestriction; + struct NoopGroupDeleter { void operator()(Group*) const { /*noop - not managed*/ } }; Trinity::unique_trackable_ptr<Group> m_scriptRef; }; diff --git a/src/server/game/Groups/GroupMgr.cpp b/src/server/game/Groups/GroupMgr.cpp index d36e7f64a6c..2e4d018c0c7 100644 --- a/src/server/game/Groups/GroupMgr.cpp +++ b/src/server/game/Groups/GroupMgr.cpp @@ -140,8 +140,8 @@ void GroupMgr::LoadGroups() // 0 1 2 3 4 5 6 7 8 9 QueryResult result = CharacterDatabase.Query("SELECT g.leaderGuid, g.lootMethod, g.looterGuid, g.lootThreshold, g.icon1, g.icon2, g.icon3, g.icon4, g.icon5, g.icon6" - // 10 11 12 13 14 15 16 17 18 19 - ", g.icon7, g.icon8, g.groupType, g.difficulty, g.raiddifficulty, g.legacyRaidDifficulty, g.masterLooterGuid, g.guid, lfg.dungeon, lfg.state FROM `groups` g LEFT JOIN lfg_data lfg ON lfg.guid = g.guid ORDER BY g.guid ASC"); + // 10 11 12 13 14 15 16 17 18 19 20 + ", g.icon7, g.icon8, g.groupType, g.difficulty, g.raiddifficulty, g.legacyRaidDifficulty, g.masterLooterGuid, g.guid, g.pingRestriction, lfg.dungeon, lfg.state FROM `groups` g LEFT JOIN lfg_data lfg ON lfg.guid = g.guid ORDER BY g.guid ASC"); if (!result) { TC_LOG_INFO("server.loading", ">> Loaded 0 group definitions. DB table `groups` is empty!"); |
