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"
|
||||
|
||||
Transmogrification* Transmogrification::instance()
|
||||
{
|
||||
static Transmogrification instance;
|
||||
return &instance;
|
||||
}
|
||||
|
||||
#ifdef PRESETS
|
||||
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)
|
||||
return;
|
||||
@@ -30,7 +36,7 @@ void Transmogrification::PresetTransmog(Player* player, Item* itemTransmogrified
|
||||
|
||||
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)
|
||||
it->second.clear();
|
||||
@@ -110,7 +116,7 @@ void Transmogrification::UnloadPlayerSets(ObjectGuid pGUID)
|
||||
|
||||
const char* Transmogrification::GetSlotName(uint8 slot, WorldSession* /*session*/) const
|
||||
{
|
||||
sLog->outDebug(LOG_FILTER_MODULES, "Transmogrification::GetSlotName");
|
||||
LOG_DEBUG("modules", "Transmogrification::GetSlotName");
|
||||
|
||||
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
|
||||
{
|
||||
sLog->outDebug(LOG_FILTER_MODULES, "Transmogrification::GetItemIcon");
|
||||
LOG_DEBUG("modules", "Transmogrification::GetItemIcon");
|
||||
|
||||
std::ostringstream ss;
|
||||
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
|
||||
{
|
||||
sLog->outDebug(LOG_FILTER_MODULES, "Transmogrification::GetSlotIcon");
|
||||
LOG_DEBUG("modules", "Transmogrification::GetSlotIcon");
|
||||
|
||||
std::ostringstream ss;
|
||||
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
|
||||
{
|
||||
sLog->outDebug(LOG_FILTER_MODULES, "Transmogrification::GetItemLink");
|
||||
LOG_DEBUG("modules", "Transmogrification::GetItemLink");
|
||||
|
||||
int loc_idx = session->GetSessionDbLocaleIndex();
|
||||
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
|
||||
{
|
||||
sLog->outDebug(LOG_FILTER_MODULES, "Transmogrification::GetItemLink");
|
||||
LOG_DEBUG("modules", "Transmogrification::GetItemLink");
|
||||
|
||||
const ItemTemplate* temp = sObjectMgr->GetItemTemplate(entry);
|
||||
int loc_idx = session->GetSessionDbLocaleIndex();
|
||||
@@ -249,7 +255,7 @@ std::string Transmogrification::GetItemLink(uint32 entry, WorldSession* session)
|
||||
|
||||
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);
|
||||
if (itr == dataMap.end()) return 0;
|
||||
@@ -262,7 +268,7 @@ uint32 Transmogrification::GetFakeEntry(ObjectGuid itemGUID) const
|
||||
|
||||
void Transmogrification::UpdateItem(Player* player, Item* item) const
|
||||
{
|
||||
sLog->outDebug(LOG_FILTER_MODULES, "Transmogrification::UpdateItem");
|
||||
LOG_DEBUG("modules", "Transmogrification::UpdateItem");
|
||||
|
||||
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))
|
||||
// return false;
|
||||
@@ -349,7 +355,7 @@ TransmogAcoreStrings Transmogrification::Transmogrify(Player* player, ObjectGuid
|
||||
if (cost) // 0 cost if reverting look
|
||||
{
|
||||
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());
|
||||
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);
|
||||
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
#ifndef DEF_TRANSMOGRIFICATION_H
|
||||
#define DEF_TRANSMOGRIFICATION_H
|
||||
|
||||
#include <vector>
|
||||
#include "Player.h"
|
||||
#include "Config.h"
|
||||
#include "ScriptMgr.h"
|
||||
#include "ScriptedGossip.h"
|
||||
#include "GameEventMgr.h"
|
||||
#include <unordered_map>
|
||||
#include <vector>
|
||||
|
||||
#define PRESETS // comment this line to disable preset feature totally
|
||||
#define MAX_OPTIONS 25 // do not alter
|
||||
@@ -39,6 +39,8 @@ enum TransmogAcoreStrings // Language.h might have same entries, appears when ex
|
||||
class Transmogrification
|
||||
{
|
||||
public:
|
||||
static Transmogrification* instance();
|
||||
|
||||
typedef std::unordered_map<ObjectGuid, ObjectGuid> transmogData;
|
||||
typedef std::unordered_map<ObjectGuid, uint32> transmog2Data;
|
||||
typedef std::unordered_map<ObjectGuid, transmog2Data> transmogMap;
|
||||
@@ -123,7 +125,7 @@ public:
|
||||
std::string GetItemLink(uint32 entry, WorldSession* session) const;
|
||||
uint32 GetFakeEntry(ObjectGuid itemGUID) 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);
|
||||
|
||||
TransmogAcoreStrings Transmogrify(Player* player, ObjectGuid itemGUID, uint8 slot, /*uint32 newEntry, */bool no_cost = false);
|
||||
@@ -133,7 +135,7 @@ public:
|
||||
// bool CanTransmogrify(Item const* item);
|
||||
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;
|
||||
int32 GetCopperCost() const;
|
||||
|
||||
@@ -150,6 +152,6 @@ public:
|
||||
bool GetEnableSetInfo() const;
|
||||
uint32 GetSetNpcText() const;
|
||||
};
|
||||
#define sTransmogrification ACE_Singleton<Transmogrification, ACE_Null_Mutex>::instance()
|
||||
#define sTransmogrification Transmogrification::instance()
|
||||
|
||||
#endif
|
||||
|
||||
@@ -69,7 +69,7 @@ public:
|
||||
case EQUIPMENT_SLOT_END + 2: // Remove Transmogrifications
|
||||
{
|
||||
bool removed = false;
|
||||
SQLTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
auto trans = CharacterDatabase.BeginTransaction();
|
||||
for (uint8 slot = EQUIPMENT_SLOT_START; slot < EQUIPMENT_SLOT_END; ++slot)
|
||||
{
|
||||
if (Item* newItem = player->GetItemByPos(INVENTORY_SLOT_BAG_0, slot))
|
||||
@@ -455,23 +455,25 @@ public:
|
||||
}
|
||||
};
|
||||
|
||||
class global_transmog_script : public GlobalScript {
|
||||
public:
|
||||
global_transmog_script() : GlobalScript("global_transmog_script") { }
|
||||
class global_transmog_script : public GlobalScript
|
||||
{
|
||||
public:
|
||||
global_transmog_script() : GlobalScript("global_transmog_script") { }
|
||||
|
||||
void OnItemDelFromDB(SQLTransaction& trans, ObjectGuid::LowType itemGuid)
|
||||
{
|
||||
sT->DeleteFakeFromDB(itemGuid, &trans);
|
||||
}
|
||||
void OnItemDelFromDB(CharacterDatabaseTransaction trans, ObjectGuid::LowType itemGuid)
|
||||
{
|
||||
sT->DeleteFakeFromDB(itemGuid, &trans);
|
||||
}
|
||||
|
||||
void OnMirrorImageDisplayItem(const Item *item, uint32 &display)
|
||||
{
|
||||
if (uint32 entry = sTransmogrification->GetFakeEntry(item->GetGUID()))
|
||||
display=uint32(sObjectMgr->GetItemTemplate(entry)->DisplayInfoID);
|
||||
}
|
||||
void OnMirrorImageDisplayItem(const Item *item, uint32 &display)
|
||||
{
|
||||
if (uint32 entry = sTransmogrification->GetFakeEntry(item->GetGUID()))
|
||||
display=uint32(sObjectMgr->GetItemTemplate(entry)->DisplayInfoID);
|
||||
}
|
||||
};
|
||||
|
||||
void AddSC_transmog() {
|
||||
void AddSC_transmog()
|
||||
{
|
||||
new global_transmog_script();
|
||||
new npc_transmogrifier();
|
||||
new PS_Transmogrification();
|
||||
|
||||
Reference in New Issue
Block a user