chore(Misc): add support new db api (#45)

This commit is contained in:
Kargatum
2021-06-22 15:19:42 +07:00
committed by GitHub
parent e7d2bc1622
commit 9ff36b8318
3 changed files with 40 additions and 30 deletions

View File

@@ -1,9 +1,15 @@
#include "Transmogrification.h" #include "Transmogrification.h"
Transmogrification* Transmogrification::instance()
{
static Transmogrification instance;
return &instance;
}
#ifdef PRESETS #ifdef PRESETS
void Transmogrification::PresetTransmog(Player* player, Item* itemTransmogrified, uint32 fakeEntry, uint8 slot) void Transmogrification::PresetTransmog(Player* player, Item* itemTransmogrified, uint32 fakeEntry, uint8 slot)
{ {
sLog->outDebug(LOG_FILTER_MODULES, "Transmogrification::PresetTransmog"); LOG_DEBUG("modules", "Transmogrification::PresetTransmog");
if (!EnableSets) if (!EnableSets)
return; return;
@@ -30,7 +36,7 @@ void Transmogrification::PresetTransmog(Player* player, Item* itemTransmogrified
void Transmogrification::LoadPlayerSets(ObjectGuid pGUID) void Transmogrification::LoadPlayerSets(ObjectGuid pGUID)
{ {
sLog->outDebug(LOG_FILTER_MODULES, "Transmogrification::LoadPlayerSets"); LOG_DEBUG("modules", "Transmogrification::LoadPlayerSets");
for (presetData::iterator it = presetById[pGUID].begin(); it != presetById[pGUID].end(); ++it) for (presetData::iterator it = presetById[pGUID].begin(); it != presetById[pGUID].end(); ++it)
it->second.clear(); it->second.clear();
@@ -110,7 +116,7 @@ void Transmogrification::UnloadPlayerSets(ObjectGuid pGUID)
const char* Transmogrification::GetSlotName(uint8 slot, WorldSession* /*session*/) const const char* Transmogrification::GetSlotName(uint8 slot, WorldSession* /*session*/) const
{ {
sLog->outDebug(LOG_FILTER_MODULES, "Transmogrification::GetSlotName"); LOG_DEBUG("modules", "Transmogrification::GetSlotName");
switch (slot) switch (slot)
{ {
@@ -134,7 +140,7 @@ const char* Transmogrification::GetSlotName(uint8 slot, WorldSession* /*session*
std::string Transmogrification::GetItemIcon(uint32 entry, uint32 width, uint32 height, int x, int y) const std::string Transmogrification::GetItemIcon(uint32 entry, uint32 width, uint32 height, int x, int y) const
{ {
sLog->outDebug(LOG_FILTER_MODULES, "Transmogrification::GetItemIcon"); LOG_DEBUG("modules", "Transmogrification::GetItemIcon");
std::ostringstream ss; std::ostringstream ss;
ss << "|TInterface"; ss << "|TInterface";
@@ -154,7 +160,7 @@ std::string Transmogrification::GetItemIcon(uint32 entry, uint32 width, uint32 h
std::string Transmogrification::GetSlotIcon(uint8 slot, uint32 width, uint32 height, int x, int y) const std::string Transmogrification::GetSlotIcon(uint8 slot, uint32 width, uint32 height, int x, int y) const
{ {
sLog->outDebug(LOG_FILTER_MODULES, "Transmogrification::GetSlotIcon"); LOG_DEBUG("modules", "Transmogrification::GetSlotIcon");
std::ostringstream ss; std::ostringstream ss;
ss << "|TInterface/PaperDoll/"; ss << "|TInterface/PaperDoll/";
@@ -182,7 +188,7 @@ std::string Transmogrification::GetSlotIcon(uint8 slot, uint32 width, uint32 hei
std::string Transmogrification::GetItemLink(Item* item, WorldSession* session) const std::string Transmogrification::GetItemLink(Item* item, WorldSession* session) const
{ {
sLog->outDebug(LOG_FILTER_MODULES, "Transmogrification::GetItemLink"); LOG_DEBUG("modules", "Transmogrification::GetItemLink");
int loc_idx = session->GetSessionDbLocaleIndex(); int loc_idx = session->GetSessionDbLocaleIndex();
const ItemTemplate* temp = item->GetTemplate(); const ItemTemplate* temp = item->GetTemplate();
@@ -232,7 +238,7 @@ std::string Transmogrification::GetItemLink(Item* item, WorldSession* session) c
std::string Transmogrification::GetItemLink(uint32 entry, WorldSession* session) const std::string Transmogrification::GetItemLink(uint32 entry, WorldSession* session) const
{ {
sLog->outDebug(LOG_FILTER_MODULES, "Transmogrification::GetItemLink"); LOG_DEBUG("modules", "Transmogrification::GetItemLink");
const ItemTemplate* temp = sObjectMgr->GetItemTemplate(entry); const ItemTemplate* temp = sObjectMgr->GetItemTemplate(entry);
int loc_idx = session->GetSessionDbLocaleIndex(); int loc_idx = session->GetSessionDbLocaleIndex();
@@ -249,7 +255,7 @@ std::string Transmogrification::GetItemLink(uint32 entry, WorldSession* session)
uint32 Transmogrification::GetFakeEntry(ObjectGuid itemGUID) const uint32 Transmogrification::GetFakeEntry(ObjectGuid itemGUID) const
{ {
sLog->outDebug(LOG_FILTER_MODULES, "Transmogrification::GetFakeEntry"); LOG_DEBUG("modules", "Transmogrification::GetFakeEntry");
transmogData::const_iterator itr = dataMap.find(itemGUID); transmogData::const_iterator itr = dataMap.find(itemGUID);
if (itr == dataMap.end()) return 0; if (itr == dataMap.end()) return 0;
@@ -262,7 +268,7 @@ uint32 Transmogrification::GetFakeEntry(ObjectGuid itemGUID) const
void Transmogrification::UpdateItem(Player* player, Item* item) const void Transmogrification::UpdateItem(Player* player, Item* item) const
{ {
sLog->outDebug(LOG_FILTER_MODULES, "Transmogrification::UpdateItem"); LOG_DEBUG("modules", "Transmogrification::UpdateItem");
if (item->IsEquipped()) if (item->IsEquipped())
{ {
@@ -272,7 +278,7 @@ void Transmogrification::UpdateItem(Player* player, Item* item) const
} }
} }
void Transmogrification::DeleteFakeEntry(Player* player, uint8 /*slot*/, Item* itemTransmogrified, SQLTransaction* trans) void Transmogrification::DeleteFakeEntry(Player* player, uint8 /*slot*/, Item* itemTransmogrified, CharacterDatabaseTransaction* trans /*= nullptr*/)
{ {
//if (!GetFakeEntry(item)) //if (!GetFakeEntry(item))
// return false; // return false;
@@ -349,7 +355,7 @@ TransmogAcoreStrings Transmogrification::Transmogrify(Player* player, ObjectGuid
if (cost) // 0 cost if reverting look if (cost) // 0 cost if reverting look
{ {
if (cost < 0) if (cost < 0)
sLog->outDebug(LOG_FILTER_MODULES, "Transmogrification::Transmogrify - %s (%s) transmogrification invalid cost (non negative, amount %i). Transmogrified %u with %u", LOG_DEBUG("modules", "Transmogrification::Transmogrify - %s (%s) transmogrification invalid cost (non negative, amount %i). Transmogrified %u with %u",
player->GetName().c_str(), player->GetGUID().ToString().c_str(), -cost, itemTransmogrified->GetEntry(), itemTransmogrifier->GetEntry()); player->GetName().c_str(), player->GetGUID().ToString().c_str(), -cost, itemTransmogrified->GetEntry(), itemTransmogrifier->GetEntry());
else else
{ {
@@ -668,7 +674,7 @@ void Transmogrification::LoadConfig(bool reload)
} }
} }
void Transmogrification::DeleteFakeFromDB(ObjectGuid::LowType itemLowGuid, SQLTransaction* trans) void Transmogrification::DeleteFakeFromDB(ObjectGuid::LowType itemLowGuid, CharacterDatabaseTransaction* trans /*= nullptr*/)
{ {
ObjectGuid itemGUID = ObjectGuid::Create<HighGuid::Item>(itemLowGuid); ObjectGuid itemGUID = ObjectGuid::Create<HighGuid::Item>(itemLowGuid);

View File

@@ -1,13 +1,13 @@
#ifndef DEF_TRANSMOGRIFICATION_H #ifndef DEF_TRANSMOGRIFICATION_H
#define DEF_TRANSMOGRIFICATION_H #define DEF_TRANSMOGRIFICATION_H
#include <vector>
#include "Player.h" #include "Player.h"
#include "Config.h" #include "Config.h"
#include "ScriptMgr.h" #include "ScriptMgr.h"
#include "ScriptedGossip.h" #include "ScriptedGossip.h"
#include "GameEventMgr.h" #include "GameEventMgr.h"
#include <unordered_map> #include <unordered_map>
#include <vector>
#define PRESETS // comment this line to disable preset feature totally #define PRESETS // comment this line to disable preset feature totally
#define MAX_OPTIONS 25 // do not alter #define MAX_OPTIONS 25 // do not alter
@@ -39,6 +39,8 @@ enum TransmogAcoreStrings // Language.h might have same entries, appears when ex
class Transmogrification class Transmogrification
{ {
public: public:
static Transmogrification* instance();
typedef std::unordered_map<ObjectGuid, ObjectGuid> transmogData; typedef std::unordered_map<ObjectGuid, ObjectGuid> transmogData;
typedef std::unordered_map<ObjectGuid, uint32> transmog2Data; typedef std::unordered_map<ObjectGuid, uint32> transmog2Data;
typedef std::unordered_map<ObjectGuid, transmog2Data> transmogMap; typedef std::unordered_map<ObjectGuid, transmog2Data> transmogMap;
@@ -123,7 +125,7 @@ public:
std::string GetItemLink(uint32 entry, WorldSession* session) const; std::string GetItemLink(uint32 entry, WorldSession* session) const;
uint32 GetFakeEntry(ObjectGuid itemGUID) const; uint32 GetFakeEntry(ObjectGuid itemGUID) const;
void UpdateItem(Player* player, Item* item) const; void UpdateItem(Player* player, Item* item) const;
void DeleteFakeEntry(Player* player, uint8 slot, Item* itemTransmogrified, SQLTransaction* trans = NULL); void DeleteFakeEntry(Player* player, uint8 slot, Item* itemTransmogrified, CharacterDatabaseTransaction* trans = nullptr);
void SetFakeEntry(Player* player, uint32 newEntry, uint8 slot, Item* itemTransmogrified); void SetFakeEntry(Player* player, uint32 newEntry, uint8 slot, Item* itemTransmogrified);
TransmogAcoreStrings Transmogrify(Player* player, ObjectGuid itemGUID, uint8 slot, /*uint32 newEntry, */bool no_cost = false); TransmogAcoreStrings Transmogrify(Player* player, ObjectGuid itemGUID, uint8 slot, /*uint32 newEntry, */bool no_cost = false);
@@ -133,7 +135,7 @@ public:
// bool CanTransmogrify(Item const* item); // bool CanTransmogrify(Item const* item);
uint32 GetSpecialPrice(ItemTemplate const* proto) const; uint32 GetSpecialPrice(ItemTemplate const* proto) const;
void DeleteFakeFromDB(ObjectGuid::LowType itemLowGuid, SQLTransaction* trans = NULL); void DeleteFakeFromDB(ObjectGuid::LowType itemLowGuid, CharacterDatabaseTransaction* trans = nullptr);
float GetScaledCostModifier() const; float GetScaledCostModifier() const;
int32 GetCopperCost() const; int32 GetCopperCost() const;
@@ -150,6 +152,6 @@ public:
bool GetEnableSetInfo() const; bool GetEnableSetInfo() const;
uint32 GetSetNpcText() const; uint32 GetSetNpcText() const;
}; };
#define sTransmogrification ACE_Singleton<Transmogrification, ACE_Null_Mutex>::instance() #define sTransmogrification Transmogrification::instance()
#endif #endif

View File

@@ -69,7 +69,7 @@ public:
case EQUIPMENT_SLOT_END + 2: // Remove Transmogrifications case EQUIPMENT_SLOT_END + 2: // Remove Transmogrifications
{ {
bool removed = false; bool removed = false;
SQLTransaction trans = CharacterDatabase.BeginTransaction(); auto trans = CharacterDatabase.BeginTransaction();
for (uint8 slot = EQUIPMENT_SLOT_START; slot < EQUIPMENT_SLOT_END; ++slot) for (uint8 slot = EQUIPMENT_SLOT_START; slot < EQUIPMENT_SLOT_END; ++slot)
{ {
if (Item* newItem = player->GetItemByPos(INVENTORY_SLOT_BAG_0, slot)) if (Item* newItem = player->GetItemByPos(INVENTORY_SLOT_BAG_0, slot))
@@ -455,23 +455,25 @@ public:
} }
}; };
class global_transmog_script : public GlobalScript { class global_transmog_script : public GlobalScript
public: {
global_transmog_script() : GlobalScript("global_transmog_script") { } public:
global_transmog_script() : GlobalScript("global_transmog_script") { }
void OnItemDelFromDB(SQLTransaction& trans, ObjectGuid::LowType itemGuid) void OnItemDelFromDB(CharacterDatabaseTransaction trans, ObjectGuid::LowType itemGuid)
{ {
sT->DeleteFakeFromDB(itemGuid, &trans); sT->DeleteFakeFromDB(itemGuid, &trans);
} }
void OnMirrorImageDisplayItem(const Item *item, uint32 &display) void OnMirrorImageDisplayItem(const Item *item, uint32 &display)
{ {
if (uint32 entry = sTransmogrification->GetFakeEntry(item->GetGUID())) if (uint32 entry = sTransmogrification->GetFakeEntry(item->GetGUID()))
display=uint32(sObjectMgr->GetItemTemplate(entry)->DisplayInfoID); display=uint32(sObjectMgr->GetItemTemplate(entry)->DisplayInfoID);
} }
}; };
void AddSC_transmog() { void AddSC_transmog()
{
new global_transmog_script(); new global_transmog_script();
new npc_transmogrifier(); new npc_transmogrifier();
new PS_Transmogrification(); new PS_Transmogrification();