trading post

This commit is contained in:
luis
2026-03-15 19:40:29 -03:00
parent cf8d0f8b00
commit 02ac83d4af
7 changed files with 998 additions and 785 deletions
+167 -167
View File
@@ -1,167 +1,167 @@
///* /*
// * Copyright (C) WowCommunity Project * Copyright (C) WowCommunity Project
// * *
// * This SourceCode is NOT free a software. Please hold everything Private * This SourceCode is NOT free a software. Please hold everything Private
// * and read our Terms * and read our Terms
// */ */
//
//#include "PerkProgramData.h" #include "PerkProgramData.h"
//#include "PerkProgramMgr.h" #include "PerkProgramMgr.h"
//#include "Containers.h" #include "Containers.h"
//#include "DatabaseEnv.h" #include "DatabaseEnv.h"
//#include "ObjectMgr.h" #include "ObjectMgr.h"
//#include "DB2Stores.h" #include "DB2Stores.h"
//#include <sstream> #include <sstream>
//#include "GameTime.h" #include "GameTime.h"
//
//PerkProgramDataStoreMgr::PerkProgramDataStoreMgr() {}; PerkProgramDataStoreMgr::PerkProgramDataStoreMgr() {};
//
//PerkProgramDataStoreMgr::~PerkProgramDataStoreMgr() {}; PerkProgramDataStoreMgr::~PerkProgramDataStoreMgr() {};
//
//PerkProgramDataStoreMgr* PerkProgramDataStoreMgr::instance() PerkProgramDataStoreMgr* PerkProgramDataStoreMgr::instance()
//{ {
// static PerkProgramDataStoreMgr instance; static PerkProgramDataStoreMgr instance;
// return &instance; return &instance;
//} }
//
//namespace namespace
//{ {
// std::unordered_map<uint32, PerkProgramData::PerkVendorItem> _vendorTemplates; std::unordered_map<uint32, PerkProgramData::PerkVendorItem> _vendorTemplates;
// std::vector<PerkProgramData::ActivityTemplate> m_activeActivity; std::vector<PerkProgramData::ActivityTemplate> m_activeActivity;
//} }
//
//void PerkProgramDataStoreMgr::Initialize() void PerkProgramDataStoreMgr::Initialize()
//{ {
// LoadPerkVendorItem(); LoadPerkVendorItem();
// LoadActivities(); LoadActivities();
//} }
//
//void PerkProgramDataStoreMgr::LoadPerkVendorItem() void PerkProgramDataStoreMgr::LoadPerkVendorItem()
//{ {
// TC_LOG_INFO("server.loading", "Loading PerkPrograms Vendor Items Templates ..."); TC_LOG_INFO("server.loading", "Loading PerkPrograms Vendor Items Templates ...");
// _vendorTemplates.clear(); _vendorTemplates.clear();
//
// if (!sPerksVendorItemStore.GetNumRows()) if (!sPerksVendorItemStore.GetNumRows())
// { {
// TC_LOG_WARN("server.loading", ">> PerksVendorItem store is empty, skipping vendor items"); TC_LOG_WARN("server.loading", ">> PerksVendorItem store is empty, skipping vendor items");
// return; return;
// } }
//
// for (PerksVendorItemEntry const* itemVendor : sPerksVendorItemStore) for (PerksVendorItemEntry const* itemVendor : sPerksVendorItemStore)
// { {
// if (!itemVendor) if (!itemVendor)
// continue; continue;
//
// PerkProgramData::PerkVendorItem vendorItem; PerkProgramData::PerkVendorItem vendorItem;
// vendorItem.Id = itemVendor->ID; vendorItem.Id = itemVendor->ID;
// vendorItem.ItemID = itemVendor->ItemID; vendorItem.ItemID = itemVendor->ItemID;
// vendorItem.MountSpellID = itemVendor->Unknown010001; vendorItem.MountSpellID = itemVendor->Unknown010001;
// vendorItem.PetSpellID = itemVendor->Unknown020001; vendorItem.PetSpellID = itemVendor->Unknown020001;
// vendorItem.TransmogSet = 0; vendorItem.TransmogSet = 0;
// vendorItem.ItemModifiedAppearanceID = 0; vendorItem.ItemModifiedAppearanceID = 0;
// vendorItem.ToyItem = 0; vendorItem.ToyItem = 0;
// vendorItem.Cost = itemVendor->Cost; vendorItem.Cost = itemVendor->Cost;
// vendorItem.CategoryId = itemVendor->PerksVendorCategoryID; vendorItem.CategoryId = itemVendor->PerksVendorCategoryID;
//
// _vendorTemplates.insert(std::make_pair(itemVendor->ID, vendorItem)); _vendorTemplates.insert(std::make_pair(itemVendor->ID, vendorItem));
// } }
//
// TC_LOG_INFO("server.loading", ">> Loaded {} PerkPrograms Vendor Items Templates", uint32(_vendorTemplates.size())); TC_LOG_INFO("server.loading", ">> Loaded {} PerkPrograms Vendor Items Templates", uint32(_vendorTemplates.size()));
//} }
//
//std::unordered_map<uint32, PerkProgramData::PerkVendorItem> PerkProgramDataStoreMgr::GetVendorItems() std::unordered_map<uint32, PerkProgramData::PerkVendorItem> PerkProgramDataStoreMgr::GetVendorItems()
//{ {
// return _vendorTemplates; return _vendorTemplates;
//} }
//
//PerkProgramData::PerkVendorItem const* PerkProgramDataStoreMgr::GetVendorItem(uint32 entry) PerkProgramData::PerkVendorItem const* PerkProgramDataStoreMgr::GetVendorItem(uint32 entry)
//{ {
// auto itr = _vendorTemplates.find(entry); auto itr = _vendorTemplates.find(entry);
// if (itr != _vendorTemplates.end()) if (itr != _vendorTemplates.end())
// return &itr->second; return &itr->second;
//
// return nullptr; return nullptr;
//} }
//
//PerkProgramData::PerkVendorItem const* PerkProgramDataStoreMgr::GetRandomVendorItem() PerkProgramData::PerkVendorItem const* PerkProgramDataStoreMgr::GetRandomVendorItem()
//{ {
// if (_vendorTemplates.empty()) if (_vendorTemplates.empty())
// return nullptr; return nullptr;
//
// auto it = _vendorTemplates.begin(); auto it = _vendorTemplates.begin();
// std::advance(it, rand() % _vendorTemplates.size()); std::advance(it, rand() % _vendorTemplates.size());
// return &it->second; return &it->second;
//} }
//
//std::vector<PerkProgramData::ActivityTemplate> PerkProgramDataStoreMgr::GetActivities() std::vector<PerkProgramData::ActivityTemplate> PerkProgramDataStoreMgr::GetActivities()
//{ {
// return m_activeActivity; return m_activeActivity;
//} }
//
//uint32 PerkProgramDataStoreMgr::GetActivityCriteriatree(uint32 activityId) uint32 PerkProgramDataStoreMgr::GetActivityCriteriatree(uint32 activityId)
//{ {
// for (auto const& ac : m_activeActivity) for (auto const& ac : m_activeActivity)
// { {
// if (ac.ActivityID == activityId) if (ac.ActivityID == activityId)
// return ac.CriteriaTree; return ac.CriteriaTree;
// } }
// return 0; return 0;
//} }
//
//uint32 PerkProgramDataStoreMgr::GetActivityCurrencyAmount(uint32 activityId) uint32 PerkProgramDataStoreMgr::GetActivityCurrencyAmount(uint32 activityId)
//{ {
// for (auto const& ac : m_activeActivity) for (auto const& ac : m_activeActivity)
// { {
// if (ac.ActivityID == activityId) if (ac.ActivityID == activityId)
// return ac.CurrencyAmount; return ac.CurrencyAmount;
// } }
// return 0; return 0;
//} }
//
//void PerkProgramDataStoreMgr::LoadActivities() void PerkProgramDataStoreMgr::LoadActivities()
//{ {
// CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_PERK_PROGRAM_ACTIVITY); CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_PERK_PROGRAM_ACTIVITY);
// PreparedQueryResult result = CharacterDatabase.Query(stmt); PreparedQueryResult result = CharacterDatabase.Query(stmt);
// m_activeActivity.clear(); m_activeActivity.clear();
// if (!result) if (!result)
// { {
// GenerateRandomActivities(false); GenerateRandomActivities(false);
// return; return;
// } }
// do do
// { {
// Field* fields = result->Fetch(); Field* fields = result->Fetch();
// uint32 activityId = fields[0].GetUInt32(); uint32 activityId = fields[0].GetUInt32();
// PerksActivityEntry const* entry = sPerksActivityStore.LookupEntry(activityId); PerksActivityEntry const* entry = sPerksActivityStore.LookupEntry(activityId);
// if (!entry) if (!entry)
// continue; continue;
// PerkProgramData::ActivityTemplate ac; PerkProgramData::ActivityTemplate ac;
// ac.ActivityID = entry->ID; ac.ActivityID = entry->ID;
// ac.CriteriaTree = entry->CriteriaTreeID; ac.CriteriaTree = entry->CriteriaTreeID;
// ac.CurrencyAmount = entry->ThresholdContributionAmount; ac.CurrencyAmount = entry->ThresholdContributionAmount;
// ac.Priority = entry->Priority; ac.Priority = entry->Priority;
// m_activeActivity.push_back(ac); m_activeActivity.push_back(ac);
//
// } while (result->NextRow()); } while (result->NextRow());
//} }
//
//void PerkProgramDataStoreMgr::GenerateRandomActivities(bool /*clearOld*/) void PerkProgramDataStoreMgr::GenerateRandomActivities(bool /*clearOld*/)
//{ {
// CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_PERK_PROGRAM_ACTIVITY); CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_PERK_PROGRAM_ACTIVITY);
// CharacterDatabase.Execute(stmt); CharacterDatabase.Execute(stmt);
// m_activeActivity.clear(); m_activeActivity.clear();
//
// for (PerksActivityEntry const* db : sDB2Manager.GetRandomActivitiesXTag()) for (PerksActivityEntry const* db : sDB2Manager.GetRandomActivitiesXTag())
// { {
// PerkProgramData::ActivityTemplate ac; PerkProgramData::ActivityTemplate ac;
// ac.ActivityID = db->ID; ac.ActivityID = db->ID;
// ac.CriteriaTree = db->CriteriaTreeID; ac.CriteriaTree = db->CriteriaTreeID;
// ac.CurrencyAmount = db->ThresholdContributionAmount; ac.CurrencyAmount = db->ThresholdContributionAmount;
// ac.Priority = db->Priority; ac.Priority = db->Priority;
// m_activeActivity.push_back(ac); m_activeActivity.push_back(ac);
//
// stmt = CharacterDatabase.GetPreparedStatement(CHAR_REP_PERK_PROGRAM_ACTIVITY); stmt = CharacterDatabase.GetPreparedStatement(CHAR_REP_PERK_PROGRAM_ACTIVITY);
// stmt->setUInt32(0, ac.ActivityID); stmt->setUInt32(0, ac.ActivityID);
// CharacterDatabase.Execute(stmt); CharacterDatabase.Execute(stmt);
// } }
//} }
+75 -75
View File
@@ -1,75 +1,75 @@
///* /*
// * Copyright (C) WowCommunity Project * Copyright (C) WowCommunity Project
// * *
// * This SourceCode is NOT free a software. Please hold everything Private * This SourceCode is NOT free a software. Please hold everything Private
// * and read our Terms * and read our Terms
// */ */
//
//#ifndef _PERK_PROGRAM_DATA_STORE_H #ifndef _PERK_PROGRAM_DATA_STORE_H
//#define _PERK_PROGRAM_DATA_STORE_H #define _PERK_PROGRAM_DATA_STORE_H
//
//#include "PerksProgramPacketsCommon.h" #include "PerksProgramPacketsCommon.h"
//#include "PacketUtilities.h" #include "PacketUtilities.h"
//#include "DatabaseEnv.h" #include "DatabaseEnv.h"
//#include <vector> #include <vector>
//#include <unordered_map> #include <unordered_map>
//#include <ctime> #include <ctime>
//
//class PerkProgramManager; class PerkProgramManager;
//
//namespace PerkProgramData namespace PerkProgramData
//{ {
// struct PerkVendorItem struct PerkVendorItem
// { {
// uint32 Id; uint32 Id;
// uint32 ItemID; uint32 ItemID;
// uint32 MountSpellID; uint32 MountSpellID;
// uint32 PetSpellID; uint32 PetSpellID;
// uint32 TransmogSet; uint32 TransmogSet;
// uint32 ItemModifiedAppearanceID; uint32 ItemModifiedAppearanceID;
// uint32 ToyItem; uint32 ToyItem;
// time_t AvailableUntil; time_t AvailableUntil;
// uint32 Cost; uint32 Cost;
// uint32 CategoryId; uint32 CategoryId;
//
// }; };
//
// struct ActivityTemplate struct ActivityTemplate
// { {
// uint32 ActivityID; uint32 ActivityID;
// uint32 CriteriaTree; uint32 CriteriaTree;
// uint32 Priority; uint32 Priority;
// uint32 CurrencyAmount; uint32 CurrencyAmount;
// }; };
//}; };
//
//class TC_GAME_API PerkProgramDataStoreMgr class TC_GAME_API PerkProgramDataStoreMgr
//{ {
// PerkProgramDataStoreMgr(); PerkProgramDataStoreMgr();
// ~PerkProgramDataStoreMgr(); ~PerkProgramDataStoreMgr();
//
//public: public:
// static PerkProgramDataStoreMgr* instance(); static PerkProgramDataStoreMgr* instance();
//
// void Initialize(); void Initialize();
//
// std::unordered_map<uint32, PerkProgramData::PerkVendorItem> GetVendorItems(); std::unordered_map<uint32, PerkProgramData::PerkVendorItem> GetVendorItems();
// PerkProgramData::PerkVendorItem const* GetVendorItem(uint32 entry); PerkProgramData::PerkVendorItem const* GetVendorItem(uint32 entry);
// PerkProgramData::PerkVendorItem const* GetRandomVendorItem(); PerkProgramData::PerkVendorItem const* GetRandomVendorItem();
//
// std::vector<PerkProgramData::ActivityTemplate> GetActivities(); std::vector<PerkProgramData::ActivityTemplate> GetActivities();
// uint32 GetActivityCriteriatree(uint32 activityId); uint32 GetActivityCriteriatree(uint32 activityId);
// uint32 GetActivityCurrencyAmount(uint32 activityId); uint32 GetActivityCurrencyAmount(uint32 activityId);
//
//private: private:
//
// void LoadPerkVendorItem(); void LoadPerkVendorItem();
// void LoadActivities(); void LoadActivities();
// void GenerateRandomActivities(bool clearOld); void GenerateRandomActivities(bool clearOld);
// time_t m_activityTime; time_t m_activityTime;
//
//}; };
//
//#define sPerkProgramDataStore PerkProgramDataStoreMgr::instance() #define sPerkProgramDataStore PerkProgramDataStoreMgr::instance()
//
//#endif #endif
+430 -430
View File
@@ -1,430 +1,430 @@
///* /*
// * Copyright (C) WowCommunity Project * Copyright (C) WowCommunity Project
// * *
// * This SourceCode is NOT free a software. Please hold everything Private * This SourceCode is NOT free a software. Please hold everything Private
// * and read our Terms * and read our Terms
// */ */
//
//#include "Common.h" #include "Common.h"
//#include "CollectionMgr.h" #include "CollectionMgr.h"
//#include "ObjectMgr.h" #include "ObjectMgr.h"
//#include "PerkProgramMgr.h" #include "PerkProgramMgr.h"
//#include "WorldSession.h" #include "WorldSession.h"
//#include "Guild.h" #include "Guild.h"
//#include "GuildMgr.h" #include "GuildMgr.h"
//#include "Player.h" #include "Player.h"
//#include "Creature.h" #include "Creature.h"
//#include "PerkProgramData.h" #include "PerkProgramData.h"
//#include "DatabaseEnv.h" #include "DatabaseEnv.h"
//#include "ScriptMgr.h" #include "ScriptMgr.h"
//#include "AccountMgr.h" #include "AccountMgr.h"
//#include <sstream> #include <sstream>
//#include "SpellInfo.h" #include "SpellInfo.h"
//#include "SpellMgr.h" #include "SpellMgr.h"
//#include "Language.h" #include "Language.h"
//#include "SpellPackets.h" #include "SpellPackets.h"
//#include "Chat.h" #include "Chat.h"
//#include "DB2Stores.h" #include "DB2Stores.h"
//#include "Pet.h" #include "Pet.h"
//#include "Item.h" #include "Item.h"
//#include "MiscPackets.h" #include "MiscPackets.h"
//#include "Unit.h" #include "Unit.h"
//#include "GameTime.h" #include "GameTime.h"
//#include "PerksProgramPackets.h" #include "PerksProgramPackets.h"
//
//using namespace PerkPrograms; using namespace PerkPrograms;
//
//PerkProgramManager::PerkProgramManager(WorldSession* session) PerkProgramManager::PerkProgramManager(WorldSession* session)
//{ {
// _session = session; _session = session;
// if (session->GetPlayer()) if (session->GetPlayer())
// m_player = session->GetPlayer(); m_player = session->GetPlayer();
//
// m_currencyAmount = 0; m_currencyAmount = 0;
//} }
//
//PerkProgramManager::~PerkProgramManager() PerkProgramManager::~PerkProgramManager()
//{ {
//}; };
//
//void PerkProgramManager::SendVendorItems(Creature* vendor, std::vector<uint32> purchasedItems) void PerkProgramManager::SendVendorItems(Creature* vendor, std::vector<uint32> purchasedItems)
//{ {
// WorldPackets::PerksProgram::PerksProgramResult perks; WorldPackets::PerksProgram::PerksProgramResult perks;
// perks.Type = PerkPrograms::RESULT_AVAILABLE_ITEMS; perks.Type = PerkPrograms::RESULT_AVAILABLE_ITEMS;
//
// uint32 cameraId = 0; uint32 cameraId = 0;
//
// switch (vendor->GetEntry()) switch (vendor->GetEntry())
// { {
// case PerkPrograms::VENDOR_HORDE: case PerkPrograms::VENDOR_HORDE:
// cameraId = PerkPrograms::CAMERA_HORDE; cameraId = PerkPrograms::CAMERA_HORDE;
// break; break;
// case PerkPrograms::VENDOR_ALLIANCE: case PerkPrograms::VENDOR_ALLIANCE:
// cameraId = PerkPrograms::CAMERA_ALLIANCE; cameraId = PerkPrograms::CAMERA_ALLIANCE;
// break; break;
// default: default:
// cameraId = 0; cameraId = 0;
// break; break;
// } }
// perks.Params.VendorItem.VendorGuid = vendor->GetGUID(); perks.Params.VendorItem.VendorGuid = vendor->GetGUID();
//
// if (cameraId != 0) if (cameraId != 0)
// { {
// std::list<Creature*> list; std::list<Creature*> list;
// _session->GetPlayer()->GetCreatureListWithEntryInGrid(list, cameraId, 100); _session->GetPlayer()->GetCreatureListWithEntryInGrid(list, cameraId, 100);
//
// for (auto cr1 : list) for (auto cr1 : list)
// { {
// perks.Params.VendorItem.ModelSceneCameraGuid = cr1->GetGUID(); perks.Params.VendorItem.ModelSceneCameraGuid = cr1->GetGUID();
// break; break;
// } }
// } }
//
// for (auto items : sPerkProgramDataStore->GetVendorItems()) for (auto items : sPerkProgramDataStore->GetVendorItems())
// { {
// WorldPackets::PerksProgram::PerksVendorItem vendorItem; WorldPackets::PerksProgram::PerksVendorItem vendorItem;
// vendorItem.VendorItemID = items.second.Id; vendorItem.VendorItemID = items.second.Id;
// vendorItem.MountID = items.second.MountSpellID; vendorItem.MountID = items.second.MountSpellID;
// vendorItem.BattlePetSpeciesID = items.second.PetSpellID; vendorItem.BattlePetSpeciesID = items.second.PetSpellID;
// vendorItem.ItemModifiedAppearanceID = items.second.ItemModifiedAppearanceID; vendorItem.ItemModifiedAppearanceID = items.second.ItemModifiedAppearanceID;
// vendorItem.ToyID = items.second.ToyItem; vendorItem.ToyID = items.second.ToyItem;
// vendorItem.TransmogSetID = items.second.TransmogSet; vendorItem.TransmogSetID = items.second.TransmogSet;
// vendorItem.Price = items.second.Cost; vendorItem.Price = items.second.Cost;
// vendorItem.CategoryType = items.second.CategoryId; vendorItem.OriginalPrice = items.second.CategoryId;
// vendorItem.Disabled = false; vendorItem.Disabled = false;
// vendorItem.AvailableUntil = items.second.AvailableUntil; vendorItem.AvailableUntil = items.second.AvailableUntil;
// perks.Params.VendorItem.FrozenPerksVendorItems.emplace_back(vendorItem); perks.Params.VendorItem.FrozenPerksVendorItems.emplace_back(vendorItem);
//
// } }
//
// _session->SendPacket(perks.Write()); _session->SendPacket(perks.Write());
//} }
//
//bool PerkProgramManager::IsAccountWideItem(uint32 item) bool PerkProgramManager::IsAccountWideItem(uint32 item)
//{ {
// bool level = false; bool level = false;
// if (auto i = sPerkProgramDataStore->GetVendorItem(item)) if (auto i = sPerkProgramDataStore->GetVendorItem(item))
// { {
// switch (i->CategoryId) switch (i->CategoryId)
// { {
// case PerkPrograms::PERKS_VENDOR_CATEGORY_TOYS: case PerkPrograms::PERKS_VENDOR_CATEGORY_TOYS:
// case PerkPrograms::PERKS_VENDOR_CATEGORY_MOUNTS: case PerkPrograms::PERKS_VENDOR_CATEGORY_MOUNTS:
// case PerkPrograms::PERKS_VENDOR_CATEGORY_TRANSMOG_SETS: case PerkPrograms::PERKS_VENDOR_CATEGORY_TRANSMOG_SETS:
// level = true; level = true;
// break; break;
// default: default:
// break; break;
// } }
// } }
// return level; return level;
//} }
//
//bool PerkProgramManager::IsItemAlreadyOwned(PerkProgramData::PerkVendorItem const* vendorItem) bool PerkProgramManager::IsItemAlreadyOwned(PerkProgramData::PerkVendorItem const* vendorItem)
//{ {
// if (!vendorItem) if (!vendorItem)
// return true; return true;
//
// switch (vendorItem->CategoryId) switch (vendorItem->CategoryId)
// { {
// case PerkPrograms::PERKS_VENDOR_CATEGORY_TOYS: case PerkPrograms::PERKS_VENDOR_CATEGORY_TOYS:
// return m_player->GetSession()->GetCollectionMgr()->HasToy(vendorItem->ToyItem); return m_player->GetSession()->GetCollectionMgr()->HasToy(vendorItem->ToyItem);
// // case PerkPrograms::PERKS_VENDOR_CATEGORY_MOUNTS: // case PerkPrograms::PERKS_VENDOR_CATEGORY_MOUNTS:
// // return m_player->GetMountCollection()->Has(vendorItem->MountSpellID); // return m_player->GetMountCollection()->Has(vendorItem->MountSpellID);
// // case PerkPrograms::PERKS_VENDOR_CATEGORY_TRANSMOG_SETS: // case PerkPrograms::PERKS_VENDOR_CATEGORY_TRANSMOG_SETS:
// // return m_player->GetSession()->GetCollectionMgr()->HasTransmogSet(vendorItem->TransmogSet); // return m_player->GetSession()->GetCollectionMgr()->HasTransmogSet(vendorItem->TransmogSet);
// // case PerkPrograms::PERKS_VENDOR_CATEGORY_TRANSMOG: // case PerkPrograms::PERKS_VENDOR_CATEGORY_TRANSMOG:
// // return m_player->GetSession()->GetCollectionMgr()->HasItemAppearance(vendorItem->ItemModifiedAppearanceID); // return m_player->GetSession()->GetCollectionMgr()->HasItemAppearance(vendorItem->ItemModifiedAppearanceID);
// // case PerkPrograms::PERKS_VENDOR_CATEGORY_PETS: // case PerkPrograms::PERKS_VENDOR_CATEGORY_PETS:
// // return m_player->GetBattlePetCollection()->HasPet(vendorItem->PetSpellID); // return m_player->GetBattlePetCollection()->HasPet(vendorItem->PetSpellID);
// default: default:
// break; break;
// } }
//
// return false; return false;
//} }
//
//void PerkProgramManager::GrantItem(PerkProgramData::PerkVendorItem const* vendorItem) void PerkProgramManager::GrantItem(PerkProgramData::PerkVendorItem const* vendorItem)
//{ {
// if (!vendorItem) if (!vendorItem)
// return; return;
//
// switch (vendorItem->CategoryId) switch (vendorItem->CategoryId)
// { {
// case PerkPrograms::PERKS_VENDOR_CATEGORY_TOYS: case PerkPrograms::PERKS_VENDOR_CATEGORY_TOYS:
// { {
// m_player->GetSession()->GetCollectionMgr()->AddToy(vendorItem->ToyItem, false, false); m_player->GetSession()->GetCollectionMgr()->AddToy(vendorItem->ToyItem, false, false);
// break; break;
// } }
// case PerkPrograms::PERKS_VENDOR_CATEGORY_MOUNTS: case PerkPrograms::PERKS_VENDOR_CATEGORY_MOUNTS:
// { {
// m_player->LearnSpell(vendorItem->MountSpellID, false); m_player->LearnSpell(vendorItem->MountSpellID, false);
// break; break;
// } }
// case PerkPrograms::PERKS_VENDOR_CATEGORY_TRANSMOG_SETS: case PerkPrograms::PERKS_VENDOR_CATEGORY_TRANSMOG_SETS:
// { {
// m_player->GetSession()->GetCollectionMgr()->AddTransmogSet(vendorItem->TransmogSet); m_player->GetSession()->GetCollectionMgr()->AddTransmogSet(vendorItem->TransmogSet);
// break; break;
// } }
// case PerkPrograms::PERKS_VENDOR_CATEGORY_TRANSMOG: case PerkPrograms::PERKS_VENDOR_CATEGORY_TRANSMOG:
// { {
// m_player->GetSession()->GetCollectionMgr()->AddItemAppearance(vendorItem->ItemModifiedAppearanceID); m_player->GetSession()->GetCollectionMgr()->AddItemAppearance(vendorItem->ItemModifiedAppearanceID);
// break; break;
// } }
// case PerkPrograms::PERKS_VENDOR_CATEGORY_PETS: case PerkPrograms::PERKS_VENDOR_CATEGORY_PETS:
// { {
// // m_player->AddBattlePet(vendorItem->PetSpellID); // m_player->AddBattlePet(vendorItem->PetSpellID);
// break; break;
// } }
// case PerkPrograms::PERKS_VENDOR_CATEGORY_CONSUMABLES: case PerkPrograms::PERKS_VENDOR_CATEGORY_CONSUMABLES:
// { {
// m_player->AddItem(vendorItem->ItemID, 1); m_player->AddItem(vendorItem->ItemID, 1);
// break; break;
// } }
// default: default:
// break; break;
// } }
//} }
//
//void PerkProgramManager::RemoveGrantedItem(PerkProgramData::PerkVendorItem const* vendorItem) void PerkProgramManager::RemoveGrantedItem(PerkProgramData::PerkVendorItem const* vendorItem)
//{ {
// if (!vendorItem) if (!vendorItem)
// return; return;
//
// switch (vendorItem->CategoryId) switch (vendorItem->CategoryId)
// { {
// case PerkPrograms::PERKS_VENDOR_CATEGORY_TOYS: case PerkPrograms::PERKS_VENDOR_CATEGORY_TOYS:
// break; break;
// case PerkPrograms::PERKS_VENDOR_CATEGORY_MOUNTS: case PerkPrograms::PERKS_VENDOR_CATEGORY_MOUNTS:
// m_player->RemoveSpell(vendorItem->MountSpellID, false, true); m_player->RemoveSpell(vendorItem->MountSpellID, false, true);
// break; break;
// case PerkPrograms::PERKS_VENDOR_CATEGORY_TRANSMOG_SETS: case PerkPrograms::PERKS_VENDOR_CATEGORY_TRANSMOG_SETS:
// break; break;
// case PerkPrograms::PERKS_VENDOR_CATEGORY_TRANSMOG: case PerkPrograms::PERKS_VENDOR_CATEGORY_TRANSMOG:
// break; break;
// case PerkPrograms::PERKS_VENDOR_CATEGORY_PETS: case PerkPrograms::PERKS_VENDOR_CATEGORY_PETS:
// break; break;
// case PerkPrograms::PERKS_VENDOR_CATEGORY_CONSUMABLES: case PerkPrograms::PERKS_VENDOR_CATEGORY_CONSUMABLES:
// m_player->DestroyItemCount(vendorItem->ItemID, 1, true); m_player->DestroyItemCount(vendorItem->ItemID, 1, true);
// break; break;
// default: default:
// break; break;
// } }
//} }
//
//void PerkProgramManager::BuyItem(uint32 itemId, ObjectGuid /*vendor*/) void PerkProgramManager::BuyItem(uint32 itemId, ObjectGuid /*vendor*/)
//{ {
// auto const* vendorItem = sPerkProgramDataStore->GetVendorItem(itemId); auto const* vendorItem = sPerkProgramDataStore->GetVendorItem(itemId);
// if (!vendorItem) if (!vendorItem)
// { {
// SendPerksProgramError(1); SendPerksProgramError(1);
// return; return;
// } }
//
// if (m_currencyAmount < vendorItem->Cost) if (m_currencyAmount < vendorItem->Cost)
// { {
// SendPerksProgramError(2); SendPerksProgramError(2);
// return; return;
// } }
//
// if (IsItemAlreadyOwned(vendorItem)) if (IsItemAlreadyOwned(vendorItem))
// { {
// SendPerksProgramError(3); SendPerksProgramError(3);
// return; return;
// } }
//
// m_currencyAmount -= vendorItem->Cost; m_currencyAmount -= vendorItem->Cost;
// m_player->ModifyCurrency(PERKS_PROGRAM_CURRENCY, -static_cast<int32>(vendorItem->Cost)); m_player->ModifyCurrency(PERKS_PROGRAM_CURRENCY, -static_cast<int32>(vendorItem->Cost));
//
// GrantItem(vendorItem); GrantItem(vendorItem);
//
// RecordPurchase(itemId, GameTime::GetGameTime()); RecordPurchase(itemId, GameTime::GetGameTime());
//
// SendBuyItemResult(itemId); SendBuyItemResult(itemId);
// SendCurrencyRefresh(); SendCurrencyRefresh();
//} }
//
//void PerkProgramManager::SendBuyItemResult(int32 itemId) void PerkProgramManager::SendBuyItemResult(int32 itemId)
//{ {
// WorldPackets::PerksProgram::PerksProgramResult perks; WorldPackets::PerksProgram::PerksProgramResult perks;
// perks.Type = PerkPrograms::RESULT_BUY_ITEM; perks.Type = PerkPrograms::RESULT_BUY_ITEM;
// perks.Params.BuyItem.VendorItemID = itemId; perks.Params.BuyItem.VendorItemID = itemId;
//
// WorldPackets::PerksProgram::JamTimePair time; WorldPackets::PerksProgram::JamTimePair time;
// time.BuyTime = GameTime::GetGameTime(); time.BuyTime = GameTime::GetGameTime();
// time.VendorItemID = itemId; time.VendorItemID = itemId;
// perks.Params.BuyItem.TimePair.emplace_back(time); perks.Params.BuyItem.TimePair.emplace_back(time);
//
// _session->SendPacket(perks.Write()); _session->SendPacket(perks.Write());
//} }
//
//void PerkProgramManager::SendCurrencyRefresh() void PerkProgramManager::SendCurrencyRefresh()
//{ {
// WorldPackets::PerksProgram::PerksProgramResult perks; WorldPackets::PerksProgram::PerksProgramResult perks;
// perks.Type = PerkPrograms::RESULT_CURRENCY_REFRESH; perks.Type = PerkPrograms::RESULT_CURRENCY_REFRESH;
// _session->SendPacket(perks.Write()); _session->SendPacket(perks.Write());
//} }
//
//void PerkProgramManager::SendPerksProgramError(uint32 errorCode) void PerkProgramManager::SendPerksProgramError(uint32 errorCode)
//{ {
// WorldPackets::PerksProgram::PerksProgramResult perks; WorldPackets::PerksProgram::PerksProgramResult perks;
// perks.Type = PerkPrograms::RESULT_ERROR; perks.Type = PerkPrograms::RESULT_ERROR;
// _session->SendPacket(perks.Write()); _session->SendPacket(perks.Write());
//} }
//
//void PerkProgramManager::RecordPurchase(uint32 itemId, time_t purchaseTime) void PerkProgramManager::RecordPurchase(uint32 itemId, time_t purchaseTime)
//{ {
// m_recentPurchases.push_back(std::make_pair(itemId, purchaseTime)); m_recentPurchases.push_back(std::make_pair(itemId, purchaseTime));
//} }
//
//void PerkProgramManager::RefundItem(int32 itemId) void PerkProgramManager::RefundItem(int32 itemId)
//{ {
// auto it = std::find_if(m_recentPurchases.begin(), m_recentPurchases.end(), auto it = std::find_if(m_recentPurchases.begin(), m_recentPurchases.end(),
// [itemId](std::pair<uint32, time_t> const& p) { return p.first == static_cast<uint32>(itemId); }); [itemId](std::pair<uint32, time_t> const& p) { return p.first == static_cast<uint32>(itemId); });
//
// if (it == m_recentPurchases.end()) if (it == m_recentPurchases.end())
// { {
// SendPerksProgramError(4); SendPerksProgramError(4);
// return; return;
// } }
//
// if (GameTime::GetGameTime() - it->second > REFUND_WINDOW_SECONDS) if (GameTime::GetGameTime() - it->second > REFUND_WINDOW_SECONDS)
// { {
// SendPerksProgramError(5); SendPerksProgramError(5);
// return; return;
// } }
//
// auto const* vendorItem = sPerkProgramDataStore->GetVendorItem(itemId); auto const* vendorItem = sPerkProgramDataStore->GetVendorItem(itemId);
// if (!vendorItem) if (!vendorItem)
// return; return;
//
// RemoveGrantedItem(vendorItem); RemoveGrantedItem(vendorItem);
//
// m_currencyAmount += vendorItem->Cost; m_currencyAmount += vendorItem->Cost;
// m_player->ModifyCurrency(PERKS_PROGRAM_CURRENCY, static_cast<int32>(vendorItem->Cost)); m_player->ModifyCurrency(PERKS_PROGRAM_CURRENCY, static_cast<int32>(vendorItem->Cost));
//
// m_recentPurchases.erase(it); m_recentPurchases.erase(it);
//
// SendRefundSuccess(itemId); SendRefundSuccess(itemId);
// SendCurrencyRefresh(); SendCurrencyRefresh();
//} }
//
//void PerkProgramManager::SendRefundSuccess(int32 itemId) void PerkProgramManager::SendRefundSuccess(int32 itemId)
//{ {
// WorldPackets::PerksProgram::PerksProgramResult perks; WorldPackets::PerksProgram::PerksProgramResult perks;
// perks.Type = PerkPrograms::RESULT_REFUND_SUCCESS; perks.Type = PerkPrograms::RESULT_REFUND_SUCCESS;
// perks.Params.BuyItem.VendorItemID = itemId; perks.Params.BuyItem.VendorItemID = itemId;
// _session->SendPacket(perks.Write()); _session->SendPacket(perks.Write());
//} }
//
//void PerkProgramManager::CartCheckout(std::vector<uint32> const& vendorItemIDs) void PerkProgramManager::CartCheckout(std::vector<uint32> const& vendorItemIDs)
//{ {
// uint32 totalCost = 0; uint32 totalCost = 0;
//
// for (uint32 itemId : vendorItemIDs) for (uint32 itemId : vendorItemIDs)
// { {
// auto const* item = sPerkProgramDataStore->GetVendorItem(itemId); auto const* item = sPerkProgramDataStore->GetVendorItem(itemId);
// if (!item) if (!item)
// { {
// SendPerksProgramError(1); SendPerksProgramError(1);
// return; return;
// } }
// totalCost += item->Cost; totalCost += item->Cost;
// } }
//
// if (m_currencyAmount < totalCost) if (m_currencyAmount < totalCost)
// { {
// SendPerksProgramError(2); SendPerksProgramError(2);
// return; return;
// } }
//
// for (uint32 itemId : vendorItemIDs) for (uint32 itemId : vendorItemIDs)
// { {
// auto const* item = sPerkProgramDataStore->GetVendorItem(itemId); auto const* item = sPerkProgramDataStore->GetVendorItem(itemId);
// if (!item) if (!item)
// continue; continue;
//
// if (IsItemAlreadyOwned(item)) if (IsItemAlreadyOwned(item))
// continue; continue;
//
// m_currencyAmount -= item->Cost; m_currencyAmount -= item->Cost;
// m_player->ModifyCurrency(PERKS_PROGRAM_CURRENCY, -static_cast<int32>(item->Cost)); m_player->ModifyCurrency(PERKS_PROGRAM_CURRENCY, -static_cast<int32>(item->Cost));
//
// GrantItem(item); GrantItem(item);
// RecordPurchase(itemId, GameTime::GetGameTime()); RecordPurchase(itemId, GameTime::GetGameTime());
// } }
//
// SendCartCheckoutSuccess(); SendCartCheckoutSuccess();
// SendCurrencyRefresh(); SendCurrencyRefresh();
//} }
//
//void PerkProgramManager::SendCartCheckoutSuccess() void PerkProgramManager::SendCartCheckoutSuccess()
//{ {
// WorldPackets::PerksProgram::PerksProgramResult perks; WorldPackets::PerksProgram::PerksProgramResult perks;
// perks.Type = PerkPrograms::RESULT_PURCHASE_CART; perks.Type = PerkPrograms::RESULT_PURCHASE_CART;
// _session->SendPacket(perks.Write()); _session->SendPacket(perks.Write());
//} }
//
//void PerkProgramManager::SendPerksProgramStatus() void PerkProgramManager::SendPerksProgramStatus()
//{ {
// WorldPackets::PerksProgram::PerksProgramResult perks; WorldPackets::PerksProgram::PerksProgramResult perks;
// perks.Type = PerkPrograms::RESULT_CURRENCY_REFRESH; perks.Type = PerkPrograms::RESULT_CURRENCY_REFRESH;
// _session->SendPacket(perks.Write()); _session->SendPacket(perks.Write());
//} }
//
//void PerkProgramManager::SendPendingRewards() void PerkProgramManager::SendPendingRewards()
//{ {
//} }
//
//void PerkProgramManager::SetFrozenItem(int32 itemId, bool clear) void PerkProgramManager::SetFrozenItem(int32 itemId, bool clear)
//{ {
// if (clear) if (clear)
// { {
// m_frozenItems.clear(); m_frozenItems.clear();
// } }
// else else
// { {
// auto const* item = sPerkProgramDataStore->GetVendorItem(itemId); auto const* item = sPerkProgramDataStore->GetVendorItem(itemId);
// if (item) if (item)
// { {
// m_frozenItems.clear(); m_frozenItems.clear();
// m_frozenItems.push_back(*item); m_frozenItems.push_back(*item);
// } }
// } }
//
// WorldPackets::PerksProgram::PerksProgramResult perks; WorldPackets::PerksProgram::PerksProgramResult perks;
// perks.Type = PerkPrograms::RESULT_FROZEN_ITEM; perks.Type = PerkPrograms::RESULT_FROZEN_ITEM;
// _session->SendPacket(perks.Write()); _session->SendPacket(perks.Write());
//} }
//
//void PerkProgramManager::AddTrackedActivity(uint32 activityId) void PerkProgramManager::AddTrackedActivity(uint32 activityId)
//{ {
// if (std::find(m_trackedActivities.begin(), m_trackedActivities.end(), activityId) == m_trackedActivities.end()) if (std::find(m_trackedActivities.begin(), m_trackedActivities.end(), activityId) == m_trackedActivities.end())
// { {
// m_trackedActivities.push_back(activityId); m_trackedActivities.push_back(activityId);
// } }
//} }
//
//void PerkProgramManager::RemoveTrackedActivity(uint32 activityId) void PerkProgramManager::RemoveTrackedActivity(uint32 activityId)
//{ {
// auto it = std::find(m_trackedActivities.begin(), m_trackedActivities.end(), activityId); auto it = std::find(m_trackedActivities.begin(), m_trackedActivities.end(), activityId);
// if (it != m_trackedActivities.end()) if (it != m_trackedActivities.end())
// { {
// m_trackedActivities.erase(it); m_trackedActivities.erase(it);
// } }
//} }
//
//void PerkProgramManager::SendPerksProgramActivities() void PerkProgramManager::SendPerksProgramActivities()
//{ {
// WorldPackets::PerksProgram::PerksProgramActivityUpdate activity; WorldPackets::PerksProgram::PerksProgramActivityUpdate activity;
//
// activity.TimeUntilStart = GameTime::GetGameTime(); activity.TimeUntilStart = GameTime::GetGameTime();
// // activity.TimeUntilEnd = sWorld->GetNextPerksProgramReset(); // activity.TimeUntilEnd = sWorld->GetNextPerksProgramReset();
//
// for (auto ac : sPerkProgramDataStore->GetActivities()) for (auto ac : sPerkProgramDataStore->GetActivities())
// { {
// activity.ActivityIDs.push_back(ac.ActivityID); activity.ActivityIDs.push_back(ac.ActivityID);
//
// } }
// _session->SendPacket(activity.Write()); _session->SendPacket(activity.Write());
//
//} }
+113 -113
View File
@@ -1,113 +1,113 @@
///* /*
// * Copyright (C) WowCommunity Project * Copyright (C) WowCommunity Project
// * *
// * This SourceCode is NOT free a software. Please hold everything Private * This SourceCode is NOT free a software. Please hold everything Private
// * and read our Terms * and read our Terms
// */ */
//
//#ifndef __TRINITY_PERKPROGRAMMGR_H #ifndef __TRINITY_PERKPROGRAMMGR_H
//#define __TRINITY_PERKPROGRAMMGR_H #define __TRINITY_PERKPROGRAMMGR_H
//
//#include "Common.h" #include "Common.h"
//#include "PerksProgramPacketsCommon.h" #include "PerksProgramPacketsCommon.h"
//#include "PerkProgramData.h" #include "PerkProgramData.h"
//
//class WorldSession; class WorldSession;
//class Player; class Player;
//class Creature; class Creature;
//
//#define PERKS_PROGRAM_CURRENCY 2032 #define PERKS_PROGRAM_CURRENCY 2032
//
//namespace PerkPrograms namespace PerkPrograms
//{ {
// enum PerksVendorCategoryType : uint32 enum PerksVendorCategoryType : uint32
// { {
// PERKS_VENDOR_CATEGORY_NONE = 0, PERKS_VENDOR_CATEGORY_NONE = 0,
// PERKS_VENDOR_CATEGORY_MOUNTS = 1, PERKS_VENDOR_CATEGORY_MOUNTS = 1,
// PERKS_VENDOR_CATEGORY_PETS = 2, PERKS_VENDOR_CATEGORY_PETS = 2,
// PERKS_VENDOR_CATEGORY_TOYS = 3, PERKS_VENDOR_CATEGORY_TOYS = 3,
// PERKS_VENDOR_CATEGORY_TRANSMOG = 4, PERKS_VENDOR_CATEGORY_TRANSMOG = 4,
// PERKS_VENDOR_CATEGORY_TRANSMOG_SETS = 5, PERKS_VENDOR_CATEGORY_TRANSMOG_SETS = 5,
// PERKS_VENDOR_CATEGORY_CONSUMABLES = 6, PERKS_VENDOR_CATEGORY_CONSUMABLES = 6,
// }; };
//
// enum ItemCollectionType : uint32 enum ItemCollectionType : uint32
// { {
// ITEM_COLLECTION_NONE = 0, ITEM_COLLECTION_NONE = 0,
// ITEM_COLLECTION_APPEARANCE = 1, ITEM_COLLECTION_APPEARANCE = 1,
// ITEM_COLLECTION_MOUNT = 2, ITEM_COLLECTION_MOUNT = 2,
// ITEM_COLLECTION_TOY = 3, ITEM_COLLECTION_TOY = 3,
// ITEM_COLLECTION_PET = 4, ITEM_COLLECTION_PET = 4,
// ITEM_COLLECTION_HEIRLOOM = 5, ITEM_COLLECTION_HEIRLOOM = 5,
// ITEM_COLLECTION_ILLUSION = 6, ITEM_COLLECTION_ILLUSION = 6,
// ITEM_COLLECTION_ENSEMBLE = 7, ITEM_COLLECTION_ENSEMBLE = 7,
// }; };
//
// enum NpcVendorAndCameras : uint32 enum NpcVendorAndCameras : uint32
// { {
// CAMERA_HORDE = 183978, CAMERA_HORDE = 183978,
// CAMERA_ALLIANCE = 1, CAMERA_ALLIANCE = 1,
// VENDOR_HORDE = 185473, VENDOR_HORDE = 185473,
// VENDOR_ALLIANCE = 3, VENDOR_ALLIANCE = 3,
// }; };
//
// enum ResultType : uint32 enum ResultType : uint32
// { {
// RESULT_NONE = 0, RESULT_NONE = 0,
// RESULT_BUY_ITEM = 2, RESULT_BUY_ITEM = 2,
// RESULT_AVAILABLE_ITEMS = 5, RESULT_AVAILABLE_ITEMS = 5,
// RESULT_PURCHASE_CART = 6, RESULT_PURCHASE_CART = 6,
// RESULT_REFUND_SUCCESS = 7, RESULT_REFUND_SUCCESS = 7,
// RESULT_ERROR = 10, RESULT_ERROR = 10,
// RESULT_CURRENCY_REFRESH = 11, RESULT_CURRENCY_REFRESH = 11,
// RESULT_FROZEN_ITEM = 12, RESULT_FROZEN_ITEM = 12,
// RESULT_ACTIVITY_UPDATE = 13, RESULT_ACTIVITY_UPDATE = 13,
// }; };
//
//} }
//
//class TC_GAME_API PerkProgramManager class TC_GAME_API PerkProgramManager
//{ {
//
//public: public:
// explicit PerkProgramManager(WorldSession* session); explicit PerkProgramManager(WorldSession* session);
// ~PerkProgramManager(); ~PerkProgramManager();
//
// void SendVendorItems(Creature* vendor, std::vector<uint32> purchasedItems); void SendVendorItems(Creature* vendor, std::vector<uint32> purchasedItems);
// void BuyItem(uint32 itemId, ObjectGuid vendor); void BuyItem(uint32 itemId, ObjectGuid vendor);
// bool IsAccountWideItem(uint32 item); bool IsAccountWideItem(uint32 item);
//
// void SetCurrencyAmount(uint32 amount) { m_currencyAmount = amount; } void SetCurrencyAmount(uint32 amount) { m_currencyAmount = amount; }
// uint32 GetCurrencyAmount() { return m_currencyAmount; } uint32 GetCurrencyAmount() { return m_currencyAmount; }
//
// void SendPerksProgramActivities(); void SendPerksProgramActivities();
// void SendPerksProgramStatus(); void SendPerksProgramStatus();
// void SendPendingRewards(); void SendPendingRewards();
// void SetFrozenItem(int32 itemId, bool clear); void SetFrozenItem(int32 itemId, bool clear);
// void RefundItem(int32 itemId); void RefundItem(int32 itemId);
// void CartCheckout(std::vector<uint32> const& itemIds); void CartCheckout(std::vector<uint32> const& itemIds);
// void AddTrackedActivity(uint32 activityId); void AddTrackedActivity(uint32 activityId);
// void RemoveTrackedActivity(uint32 activityId); void RemoveTrackedActivity(uint32 activityId);
//
//private: private:
// void GrantItem(PerkProgramData::PerkVendorItem const* vendorItem); void GrantItem(PerkProgramData::PerkVendorItem const* vendorItem);
// void RemoveGrantedItem(PerkProgramData::PerkVendorItem const* vendorItem); void RemoveGrantedItem(PerkProgramData::PerkVendorItem const* vendorItem);
// bool IsItemAlreadyOwned(PerkProgramData::PerkVendorItem const* vendorItem); bool IsItemAlreadyOwned(PerkProgramData::PerkVendorItem const* vendorItem);
// void SendBuyItemResult(int32 itemId); void SendBuyItemResult(int32 itemId);
// void SendRefundSuccess(int32 itemId); void SendRefundSuccess(int32 itemId);
// void SendCartCheckoutSuccess(); void SendCartCheckoutSuccess();
// void SendCurrencyRefresh(); void SendCurrencyRefresh();
// void SendPerksProgramError(uint32 errorCode); void SendPerksProgramError(uint32 errorCode);
// void RecordPurchase(uint32 itemId, time_t purchaseTime); void RecordPurchase(uint32 itemId, time_t purchaseTime);
//
// WorldSession* _session; WorldSession* _session;
// Player* m_player; Player* m_player;
// uint32 m_currencyAmount; uint32 m_currencyAmount;
// std::vector<PerkProgramData::PerkVendorItem> m_frozenItems; std::vector<PerkProgramData::PerkVendorItem> m_frozenItems;
// std::vector<std::pair<uint32, time_t>> m_recentPurchases; std::vector<std::pair<uint32, time_t>> m_recentPurchases;
// std::vector<uint32> m_trackedActivities; std::vector<uint32> m_trackedActivities;
//
// static constexpr uint32 REFUND_WINDOW_SECONDS = 2 * 60 * 60; static constexpr uint32 REFUND_WINDOW_SECONDS = 2 * 60 * 60;
//}; };
//
//#endif #endif
@@ -58,6 +58,7 @@
#include "NPCPackets.h" #include "NPCPackets.h"
#include "PacketUtilities.h" #include "PacketUtilities.h"
#include "PartyPackets.h" #include "PartyPackets.h"
#include "PerksProgramPackets.h"
#include "PetPackets.h" #include "PetPackets.h"
#include "PetitionPackets.h" #include "PetitionPackets.h"
#include "QueryPackets.h" #include "QueryPackets.h"
@@ -0,0 +1,97 @@
/*
* 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.
*/
#include "PerksProgramPackets.h"
#include "PacketOperators.h"
namespace WorldPackets::PerksProgram
{
void PerksProgramStatusRequest::Read()
{
_worldPacket >> Vendor;
}
void PerksProgramRequestPurchase::Read()
{
_worldPacket >> VendorItemID;
}
void PerksProgramSetFrozenVendorItem::Read()
{
_worldPacket >> VendorItemID;
}
WorldPacket const* PerksProgramVendorUpdate::Write()
{
_worldPacket << uint32(VendorItems.size());
for (PerksVendorItem const& item : VendorItems)
_worldPacket << item;
_worldPacket << FrozenItem;
_worldPacket.WriteBit(HasFrozenItem);
_worldPacket.FlushBits();
return &_worldPacket;
}
WorldPacket const* PerksProgramResult::Write()
{
_worldPacket.WriteBits(Type, 4);
_worldPacket.WriteBit(UnkLong.has_value());
_worldPacket.FlushBits();
switch (Type)
{
case 2:// ResultTypes::BoughtItem:
_worldPacket << Params.BuyItem.VendorItemID;
_worldPacket << uint32(Params.BuyItem.TimePair.size());
for (auto const& data : Params.BuyItem.TimePair)
{
_worldPacket << data.VendorItemID;
_worldPacket << data.BuyTime;
}
break;
case 4: //ResultTypes::Unk4:
_worldPacket << Params.UnkData.UnkInt1;
_worldPacket << Params.UnkData.UnkInt2;
_worldPacket << Params.UnkData.UnkInt3;
_worldPacket << uint32(Params.UnkData.UnkInts.size());
for (auto&& unkInt : Params.UnkData.UnkInts)
_worldPacket << unkInt;
break;
case 5: //ResultTypes::AvailableItems:
_worldPacket << Params.VendorItem.VendorGuid;
_worldPacket << Params.VendorItem.ModelSceneCameraGuid;
_worldPacket << uint32(Params.VendorItem.FrozenPerksVendorItems.size());
for (auto&& frozenPerksVendorItem : Params.VendorItem.FrozenPerksVendorItems)
_worldPacket << frozenPerksVendorItem;
break;
default:
break;
}
return &_worldPacket;
}
WorldPacket const* PerksProgramActivityUpdate::Write()
{
_worldPacket << uint32(ActivityIDs.size());
_worldPacket << TimeUntilEnd;
_worldPacket << TimeUntilStart;
_worldPacket << unkt;
for (auto&& item : ActivityIDs)
_worldPacket << item;
return &_worldPacket;
}
}
@@ -0,0 +1,115 @@
/*
* 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.
*/
#ifndef TRINITYCORE_PERKS_PROGRAM_PACKETS_H
#define TRINITYCORE_PERKS_PROGRAM_PACKETS_H
#include "Packet.h"
#include "ObjectGuid.h"
#include "Optional.h"
#include "PerksProgramPacketsCommon.h"
namespace WorldPackets::PerksProgram
{
struct JamTimePair
{
JamTimePair() = default;
Timestamp<> BuyTime = 0;
uint32 VendorItemID = 0;
bool UnkBit = false;
};
class PerksProgramStatusRequest final : public ClientPacket
{
public:
explicit PerksProgramStatusRequest(WorldPacket&& packet) : ClientPacket(CMSG_PERKS_PROGRAM_STATUS_REQUEST, std::move(packet)) { }
void Read() override;
ObjectGuid Vendor;
};
class PerksProgramRequestPurchase final : public ClientPacket
{
public:
explicit PerksProgramRequestPurchase(WorldPacket&& packet) : ClientPacket(CMSG_PERKS_PROGRAM_REQUEST_PURCHASE, std::move(packet)) { }
void Read() override;
int32 VendorItemID = 0;
};
class PerksProgramSetFrozenVendorItem final : public ClientPacket
{
public:
explicit PerksProgramSetFrozenVendorItem(WorldPacket&& packet) : ClientPacket(CMSG_PERKS_PROGRAM_SET_FROZEN_VENDOR_ITEM, std::move(packet)) { }
void Read() override;
int32 VendorItemID = 0;
};
class PerksProgramVendorUpdate final : public ServerPacket
{
public:
explicit PerksProgramVendorUpdate() : ServerPacket(SMSG_PERKS_PROGRAM_VENDOR_UPDATE) { }
WorldPacket const* Write() override;
std::vector<PerksVendorItem> VendorItems;
PerksVendorItem FrozenItem;
bool HasFrozenItem = false;
};
class PerksProgramResult final : public ServerPacket
{
public:
PerksProgramResult() : ServerPacket(SMSG_PERKS_PROGRAM_RESULT, 75) {}
WorldPacket const* Write() override;
Optional<uint64> UnkLong;
uint32/*ResultTypes*/ Type = {};
struct ResultParams
{
struct
{
std::vector<uint32> UnkInts;
uint32 UnkInt1 = 0;
uint32 UnkInt2 = 0;
uint32 UnkInt3 = 0;
} UnkData;
struct
{
std::vector<JamTimePair> TimePair;
uint32 VendorItemID = 0;
} BuyItem;
struct
{
std::vector<PerksProgram::PerksVendorItem> FrozenPerksVendorItems;
ObjectGuid VendorGuid;
ObjectGuid ModelSceneCameraGuid;
} VendorItem;
} Params = {};
};
class PerksProgramActivityUpdate final : public ServerPacket
{
public:
PerksProgramActivityUpdate() : ServerPacket(SMSG_PERKS_PROGRAM_ACTIVITY_UPDATE) {}
WorldPacket const* Write() override;
uint32 unkt = 0;
std::vector<uint32> ActivityIDs;
Timestamp<> TimeUntilStart = 0;
Timestamp<> TimeUntilEnd = 0;
};
}
#endif