mirror of
https://github.com/azerothcore/mod-transmog
synced 2025-11-29 22:48:30 +08:00
chore(Misc): add support new db api (#45)
This commit is contained in:
@@ -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);
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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();
|
||||||
|
|||||||
Reference in New Issue
Block a user