mirror of
https://github.com/araxiaonline/TrinityCore.git
synced 2026-06-13 03:32:28 -04:00
Core/PacketIO: Implement CMSG_SET_CURRENCY_FLAGS (#31673)
This commit is contained in:
@@ -7446,6 +7446,21 @@ bool Player::HasCurrency(uint32 id, uint32 amount) const
|
||||
return itr != _currencyStorage.end() && itr->second.Quantity >= amount;
|
||||
}
|
||||
|
||||
void Player::SetCurrencyFlagsFromClient(uint32 id, CurrencyDbFlags flags)
|
||||
{
|
||||
PlayerCurrenciesMap::iterator itr = _currencyStorage.find(id);
|
||||
if (itr == _currencyStorage.end())
|
||||
return;
|
||||
|
||||
CurrencyDbFlags newValue = (flags & CurrencyDbFlags::ClientFlags) | (itr->second.Flags & ~CurrencyDbFlags::ClientFlags);
|
||||
if (itr->second.Flags == newValue)
|
||||
return;
|
||||
|
||||
itr->second.Flags = newValue;
|
||||
if (itr->second.state != PLAYERCURRENCY_NEW)
|
||||
itr->second.state = PLAYERCURRENCY_CHANGED;
|
||||
}
|
||||
|
||||
void Player::SetInGuild(ObjectGuid::LowType guildId)
|
||||
{
|
||||
if (guildId)
|
||||
|
||||
@@ -1543,6 +1543,7 @@ class TC_GAME_API Player final : public Unit, public GridObject<Player>
|
||||
uint32 GetCurrencyWeeklyCap(uint32 id) const;
|
||||
uint32 GetCurrencyWeeklyCap(CurrencyTypesEntry const* currency) const;
|
||||
bool HasCurrency(uint32 id, uint32 amount) const;
|
||||
void SetCurrencyFlagsFromClient(uint32 id, CurrencyDbFlags flags);
|
||||
|
||||
void SetInvSlot(uint32 slot, ObjectGuid guid) { SetUpdateFieldValue(m_values.ModifyValue(&Player::m_activePlayerData).ModifyValue(&UF::ActivePlayerData::InvSlots, slot), guid); }
|
||||
|
||||
|
||||
@@ -1222,3 +1222,8 @@ void WorldSession::HandleQueryCountdownTimer(WorldPackets::Misc::QueryCountdownT
|
||||
|
||||
_player->SendDirectMessage(startTimer.Write());
|
||||
}
|
||||
|
||||
void WorldSession::HandleSetCurrencyFlags(WorldPackets::Misc::SetCurrencyFlags const& setCurrenctFlags)
|
||||
{
|
||||
_player->SetCurrencyFlagsFromClient(setCurrenctFlags.CurrencyID, setCurrenctFlags.Flags);
|
||||
}
|
||||
|
||||
@@ -108,6 +108,12 @@ WorldPacket const* SetCurrency::Write()
|
||||
return &_worldPacket;
|
||||
}
|
||||
|
||||
void SetCurrencyFlags::Read()
|
||||
{
|
||||
_worldPacket >> CurrencyID;
|
||||
_worldPacket >> As<uint8>(Flags);
|
||||
}
|
||||
|
||||
void SetSelection::Read()
|
||||
{
|
||||
_worldPacket >> Selection;
|
||||
|
||||
@@ -123,6 +123,17 @@ namespace WorldPackets
|
||||
bool SuppressChatLog = false;
|
||||
};
|
||||
|
||||
class SetCurrencyFlags final : public ClientPacket
|
||||
{
|
||||
public:
|
||||
explicit SetCurrencyFlags(WorldPacket&& packet) : ClientPacket(CMSG_SET_CURRENCY_FLAGS, std::move(packet)) { }
|
||||
|
||||
void Read() override;
|
||||
|
||||
uint32 CurrencyID = 0;
|
||||
CurrencyDbFlags Flags = { };
|
||||
};
|
||||
|
||||
class SetSelection final : public ClientPacket
|
||||
{
|
||||
public:
|
||||
|
||||
@@ -1011,7 +1011,7 @@ void OpcodeTable::InitializeClientOpcodes()
|
||||
DEFINE_HANDLER(CMSG_SET_BACKPACK_SELL_JUNK_DISABLED, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleSetBackpackSellJunkDisabled);
|
||||
DEFINE_HANDLER(CMSG_SET_BANK_AUTOSORT_DISABLED, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleSetBankAutosortDisabled);
|
||||
DEFINE_HANDLER(CMSG_SET_CONTACT_NOTES, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleSetContactNotesOpcode);
|
||||
DEFINE_HANDLER(CMSG_SET_CURRENCY_FLAGS, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
|
||||
DEFINE_HANDLER(CMSG_SET_CURRENCY_FLAGS, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleSetCurrencyFlags);
|
||||
DEFINE_HANDLER(CMSG_SET_DIFFICULTY_ID, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
|
||||
DEFINE_HANDLER(CMSG_SET_DUNGEON_DIFFICULTY, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleSetDungeonDifficultyOpcode);
|
||||
DEFINE_HANDLER(CMSG_SET_EMPOWER_MIN_HOLD_STAGE_PERCENT, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleSetEmpowerMinHoldStagePercent);
|
||||
|
||||
@@ -537,6 +537,7 @@ namespace WorldPackets
|
||||
class ConversationLineStarted;
|
||||
class RequestLatestSplashScreen;
|
||||
class QueryCountdownTimer;
|
||||
class SetCurrencyFlags;
|
||||
}
|
||||
|
||||
namespace Movement
|
||||
@@ -1805,6 +1806,7 @@ class TC_GAME_API WorldSession
|
||||
void HandleConversationLineStarted(WorldPackets::Misc::ConversationLineStarted& conversationLineStarted);
|
||||
void HandleKeyboundOverride(WorldPackets::Spells::KeyboundOverride& keyboundOverride);
|
||||
void HandleQueryCountdownTimer(WorldPackets::Misc::QueryCountdownTimer& queryCountdownTimer);
|
||||
void HandleSetCurrencyFlags(WorldPackets::Misc::SetCurrencyFlags const& setCurrenctFlags);
|
||||
|
||||
// Adventure Journal
|
||||
void HandleAdventureJournalOpenQuest(WorldPackets::AdventureJournal::AdventureJournalOpenQuest& openQuest);
|
||||
|
||||
Reference in New Issue
Block a user