aboutsummaryrefslogtreecommitdiff
path: root/src/server/game
diff options
context:
space:
mode:
authorMeji <alvaromegias_46@hotmail.com>2021-10-03 16:24:07 +0200
committerGitHub <noreply@github.com>2021-10-03 16:24:07 +0200
commit5c287929b216bf6d3818d77f507beb8dfb617a43 (patch)
tree4e7e9dc846d5156982ed7073e794d76588542d16 /src/server/game
parent81f9af0c37c7e2d78317f7a69d357825b03e643f (diff)
Core/Gossip: Update GossipOptionIcon enum (#26906)
Diffstat (limited to 'src/server/game')
-rw-r--r--src/server/game/AI/ScriptedAI/ScriptedGossip.cpp4
-rw-r--r--src/server/game/AI/ScriptedAI/ScriptedGossip.h4
-rw-r--r--src/server/game/Entities/Creature/GossipDef.cpp2
-rw-r--r--src/server/game/Entities/Creature/GossipDef.h135
-rw-r--r--src/server/game/Globals/ObjectMgr.cpp8
-rw-r--r--src/server/game/Globals/ObjectMgr.h3
-rw-r--r--src/server/game/Server/Packets/NPCPackets.h3
7 files changed, 70 insertions, 89 deletions
diff --git a/src/server/game/AI/ScriptedAI/ScriptedGossip.cpp b/src/server/game/AI/ScriptedAI/ScriptedGossip.cpp
index 33e69bf850c..4790eee5649 100644
--- a/src/server/game/AI/ScriptedAI/ScriptedGossip.cpp
+++ b/src/server/game/AI/ScriptedAI/ScriptedGossip.cpp
@@ -22,9 +22,9 @@
uint32 GetGossipActionFor(Player* player, uint32 gossipListId) { return player->PlayerTalkClass->GetGossipOptionAction(gossipListId); }
void ClearGossipMenuFor(Player* player) { player->PlayerTalkClass->ClearMenus(); }
// Using provided text, not from DB
-void AddGossipItemFor(Player* player, uint32 icon, std::string const& text, uint32 sender, uint32 action) { player->PlayerTalkClass->GetGossipMenu().AddMenuItem(-1, icon, text, sender, action, "", 0); }
+void AddGossipItemFor(Player* player, GossipOptionIcon icon, std::string const& text, uint32 sender, uint32 action) { player->PlayerTalkClass->GetGossipMenu().AddMenuItem(-1, icon, text, sender, action, "", 0); }
// Using provided texts, not from DB
-void AddGossipItemFor(Player* player, uint32 icon, std::string const& text, uint32 sender, uint32 action, std::string const& popupText, uint32 popupMoney, bool coded) { player->PlayerTalkClass->GetGossipMenu().AddMenuItem(-1, icon, text, sender, action, popupText, popupMoney, coded); }
+void AddGossipItemFor(Player* player, GossipOptionIcon icon, std::string const& text, uint32 sender, uint32 action, std::string const& popupText, uint32 popupMoney, bool coded) { player->PlayerTalkClass->GetGossipMenu().AddMenuItem(-1, icon, text, sender, action, popupText, popupMoney, coded); }
// Uses gossip item info from DB
void AddGossipItemFor(Player* player, uint32 gossipMenuID, uint32 gossipMenuItemID, uint32 sender, uint32 action) { player->PlayerTalkClass->GetGossipMenu().AddMenuItem(gossipMenuID, gossipMenuItemID, sender, action); }
void SendGossipMenuFor(Player* player, uint32 npcTextID, ObjectGuid const& guid) { player->PlayerTalkClass->SendGossipMenu(npcTextID, guid); }
diff --git a/src/server/game/AI/ScriptedAI/ScriptedGossip.h b/src/server/game/AI/ScriptedAI/ScriptedGossip.h
index 6963155c94a..5e82ef115e8 100644
--- a/src/server/game/AI/ScriptedAI/ScriptedGossip.h
+++ b/src/server/game/AI/ScriptedAI/ScriptedGossip.h
@@ -89,9 +89,9 @@ enum eTradeskill
uint32 TC_GAME_API GetGossipActionFor(Player* player, uint32 gossipListId);
void TC_GAME_API ClearGossipMenuFor(Player* player);
// Using provided text, not from DB
-void TC_GAME_API AddGossipItemFor(Player* player, uint32 icon, std::string const& text, uint32 sender, uint32 action);
+void TC_GAME_API AddGossipItemFor(Player* player, GossipOptionIcon icon, std::string const& text, uint32 sender, uint32 action);
// Using provided texts, not from DB
-void TC_GAME_API AddGossipItemFor(Player* player, uint32 icon, std::string const& text, uint32 sender, uint32 action, std::string const& popupText, uint32 popupMoney, bool coded);
+void TC_GAME_API AddGossipItemFor(Player* player, GossipOptionIcon icon, std::string const& text, uint32 sender, uint32 action, std::string const& popupText, uint32 popupMoney, bool coded);
// Uses gossip item info from DB
void TC_GAME_API AddGossipItemFor(Player* player, uint32 gossipMenuID, uint32 gossipMenuItemID, uint32 sender, uint32 action);
void TC_GAME_API SendGossipMenuFor(Player* player, uint32 npcTextID, ObjectGuid const& guid);
diff --git a/src/server/game/Entities/Creature/GossipDef.cpp b/src/server/game/Entities/Creature/GossipDef.cpp
index 3c67229aab4..aff6c99f774 100644
--- a/src/server/game/Entities/Creature/GossipDef.cpp
+++ b/src/server/game/Entities/Creature/GossipDef.cpp
@@ -42,7 +42,7 @@ GossipMenu::~GossipMenu()
ClearMenu();
}
-uint32 GossipMenu::AddMenuItem(int32 optionIndex, uint8 icon, std::string const& message, uint32 sender, uint32 action, std::string const& boxMessage, uint32 boxMoney, bool coded /*= false*/)
+uint32 GossipMenu::AddMenuItem(int32 optionIndex, GossipOptionIcon icon, std::string const& message, uint32 sender, uint32 action, std::string const& boxMessage, uint32 boxMoney, bool coded /*= false*/)
{
ASSERT(_menuItems.size() <= GOSSIP_MAX_MENU_ITEMS);
diff --git a/src/server/game/Entities/Creature/GossipDef.h b/src/server/game/Entities/Creature/GossipDef.h
index 96209804af7..338221b4812 100644
--- a/src/server/game/Entities/Creature/GossipDef.h
+++ b/src/server/game/Entities/Creature/GossipDef.h
@@ -57,77 +57,56 @@ enum Gossip_Option
GOSSIP_OPTION_MAX
};
-enum GossipOptionIcon
+enum class GossipOptionIcon : uint8
{
- GOSSIP_ICON_CHAT = 0, // white chat bubble
- GOSSIP_ICON_VENDOR = 1, // brown bag
- GOSSIP_ICON_TAXI = 2, // flightmarker (paperplane)
- GOSSIP_ICON_TRAINER = 3, // brown book (trainer)
- GOSSIP_ICON_INTERACT_1 = 4, // golden interaction wheel
- GOSSIP_ICON_INTERACT_2 = 5, // golden interaction wheel
- GOSSIP_ICON_MONEY_BAG = 6, // brown bag (with gold coin in lower corner)
- GOSSIP_ICON_TALK = 7, // white chat bubble (with "..." inside)
- GOSSIP_ICON_TABARD = 8, // white tabard
- GOSSIP_ICON_BATTLE = 9, // two crossed swords
- GOSSIP_ICON_DOT = 10, // yellow dot/point
- GOSSIP_ICON_CHAT_11 = 11, // white chat bubble
- GOSSIP_ICON_CHAT_12 = 12, // white chat bubble
- GOSSIP_ICON_CHAT_13 = 13, // white chat bubble
- GOSSIP_ICON_UNK_14 = 14, // INVALID - DO NOT USE
- GOSSIP_ICON_UNK_15 = 15, // INVALID - DO NOT USE
- GOSSIP_ICON_CHAT_16 = 16, // white chat bubble
- GOSSIP_ICON_CHAT_17 = 17, // white chat bubble
- GOSSIP_ICON_CHAT_18 = 18, // white chat bubble
- GOSSIP_ICON_CHAT_19 = 19, // white chat bubble
- GOSSIP_ICON_CHAT_20 = 20, // white chat bubble
- GOSSIP_ICON_CHAT_21 = 21, // transmogrifier?
- GOSSIP_ICON_MAX
-};
-
-//POI icons. Many more exist, list not complete.
-enum Poi_Icon
-{
- ICON_POI_BLANK = 0, // Blank (not visible)
- ICON_POI_GREY_AV_MINE = 1, // Grey mine lorry
- ICON_POI_RED_AV_MINE = 2, // Red mine lorry
- ICON_POI_BLUE_AV_MINE = 3, // Blue mine lorry
- ICON_POI_BWTOMB = 4, // Blue and White Tomb Stone
- ICON_POI_SMALL_HOUSE = 5, // Small house
- ICON_POI_GREYTOWER = 6, // Grey Tower
- ICON_POI_REDFLAG = 7, // Red Flag w/Yellow !
- ICON_POI_TOMBSTONE = 8, // Normal tomb stone (brown)
- ICON_POI_BWTOWER = 9, // Blue and White Tower
- ICON_POI_REDTOWER = 10, // Red Tower
- ICON_POI_BLUETOWER = 11, // Blue Tower
- ICON_POI_RWTOWER = 12, // Red and White Tower
- ICON_POI_REDTOMB = 13, // Red Tomb Stone
- ICON_POI_RWTOMB = 14, // Red and White Tomb Stone
- ICON_POI_BLUETOMB = 15, // Blue Tomb Stone
- ICON_POI_16 = 16, // Grey ?
- ICON_POI_17 = 17, // Blue/White ?
- ICON_POI_18 = 18, // Blue ?
- ICON_POI_19 = 19, // Red and White ?
- ICON_POI_20 = 20, // Red ?
- ICON_POI_GREYLOGS = 21, // Grey Wood Logs
- ICON_POI_BWLOGS = 22, // Blue and White Wood Logs
- ICON_POI_BLUELOGS = 23, // Blue Wood Logs
- ICON_POI_RWLOGS = 24, // Red and White Wood Logs
- ICON_POI_REDLOGS = 25, // Red Wood Logs
- ICON_POI_26 = 26, // Grey ?
- ICON_POI_27 = 27, // Blue and White ?
- ICON_POI_28 = 28, // Blue ?
- ICON_POI_29 = 29, // Red and White ?
- ICON_POI_30 = 30, // Red ?
- ICON_POI_GREYHOUSE = 31, // Grey House
- ICON_POI_BWHOUSE = 32, // Blue and White House
- ICON_POI_BLUEHOUSE = 33, // Blue House
- ICON_POI_RWHOUSE = 34, // Red and White House
- ICON_POI_REDHOUSE = 35, // Red House
- ICON_POI_GREYHORSE = 36, // Grey Horse
- ICON_POI_BWHORSE = 37, // Blue and White Horse
- ICON_POI_BLUEHORSE = 38, // Blue Horse
- ICON_POI_RWHORSE = 39, // Red and White Horse
- ICON_POI_REDHORSE = 40 // Red Horse
+ None = 0, // White chat bubble. Default
+ Vendor = 1, // Brown bag
+ TaxiNode = 2, // White wing
+ Trainer = 3, // Brown book
+ SpiritHealer = 4, // Golden interaction wheel (with red center)
+ Binder = 5, // Golden interaction wheel
+ Banker = 6, // Brown bag (with gold coin in lower corner)
+ PetitionVendor = 7, // White chat bubble (with "..." inside)
+ TabardVendor = 8, // White tabard
+ BattleMaster = 9, // Two crossed swords
+ Auctioneer = 10, // Stack of gold coins
+ TalentMaster = 11, // White chat bubble
+ StableMaster = 12, // White chat bubble
+ PetSpecializationMaster = 13, // White chat bubble
+ GuildBanker = 14, // White chat bubble
+ SpellClick = 15, // White chat bubble
+ DisableXPGain = 16, // White chat bubble
+ EnableXPGain = 17, // White chat bubble
+ Mailbox = 18, // White chat bubble
+ WorldPVPQueue = 19, // White chat bubble
+ DungeonFinder = 20, // White chat bubble
+ ArtifactRespec = 21, // White chat bubble
+ CemeterySelect = 22, // White chat bubble
+ SpecializationMaster = 23, // White chat bubble
+ GlyphMaster = 24, // White chat bubble
+ ScenarioQueue = 25, // White chat bubble
+ GarrisonArchitect = 26, // White chat bubble
+ GarrisonMission = 27, // White chat bubble
+ GarrisonShipment = 28, // Brown document
+ GarrisonTradeskill = 29, // White chat bubble
+ GarrisonRecruitment = 30, // White chat bubble
+ AdventureMap = 31, // White chat bubble
+ GarrisonTalent = 32, // White chat bubble
+ ContributionCollector = 33, // White chat bubble
+ Transmogrify = 34, // Purple helm
+ AzeriteRespec = 35, // White chat bubble
+ IslandsQueue = 36, // White chat bubble
+ UIItemInteraction = 37, // White chat bubble
+ WorldMap = 38, // White chat bubble
+ Unk39 = 39, //
+ ChromieTime = 40, // White chat bubble
+ Unk41 = 41, //
+ RuneforgeCrafting = 42, // White chat bubble
+ GuideRecruiter = 43, // White chat bubble
+ RuneforgeUpgrading = 44, // White chat bubble
+ CovenantRenown = 45, // White chat bubble
+
+ Count
};
enum class GossipOptionStatus : uint8
@@ -146,13 +125,13 @@ enum class GossipOptionRewardType : uint8
struct GossipMenuItem
{
- uint8 MenuItemIcon;
- bool IsCoded;
- std::string Message;
- uint32 Sender;
- uint32 OptionType;
- std::string BoxMessage;
- uint32 BoxMoney;
+ GossipOptionIcon MenuItemIcon;
+ bool IsCoded;
+ std::string Message;
+ uint32 Sender;
+ uint32 OptionType;
+ std::string BoxMessage;
+ uint32 BoxMoney;
};
// need an ordered container
@@ -181,7 +160,7 @@ class TC_GAME_API GossipMenu
GossipMenu();
~GossipMenu();
- uint32 AddMenuItem(int32 optionIndex, uint8 icon, std::string const& message, uint32 sender, uint32 action, std::string const& boxMessage, uint32 boxMoney, bool coded = false);
+ uint32 AddMenuItem(int32 optionIndex, GossipOptionIcon icon, std::string const& message, uint32 sender, uint32 action, std::string const& boxMessage, uint32 boxMoney, bool coded = false);
void AddMenuItem(uint32 menuId, uint32 optionIndex, uint32 sender, uint32 action);
void SetMenuId(uint32 menu_id) { _menuId = menu_id; }
diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp
index bbbe298a932..6eaa14f0879 100644
--- a/src/server/game/Globals/ObjectMgr.cpp
+++ b/src/server/game/Globals/ObjectMgr.cpp
@@ -9251,7 +9251,7 @@ void ObjectMgr::LoadGossipMenuItems()
gMenuItem.MenuId = fields[0].GetUInt32();
gMenuItem.OptionIndex = fields[1].GetUInt32();
- gMenuItem.OptionIcon = fields[2].GetUInt8();
+ gMenuItem.OptionIcon = GossipOptionIcon(fields[2].GetUInt8());
gMenuItem.OptionText = fields[3].GetString();
gMenuItem.OptionBroadcastTextId = fields[4].GetUInt32();
gMenuItem.OptionType = fields[5].GetUInt32();
@@ -9263,10 +9263,10 @@ void ObjectMgr::LoadGossipMenuItems()
gMenuItem.BoxText = fields[11].GetString();
gMenuItem.BoxBroadcastTextId = fields[12].GetUInt32();
- if (gMenuItem.OptionIcon >= GOSSIP_ICON_MAX)
+ if (gMenuItem.OptionIcon >= GossipOptionIcon::Count)
{
- TC_LOG_ERROR("sql.sql", "Table `gossip_menu_option` for MenuId %u, OptionIndex %u has unknown icon id %u. Replacing with GOSSIP_ICON_CHAT", gMenuItem.MenuId, gMenuItem.OptionIndex, gMenuItem.OptionIcon);
- gMenuItem.OptionIcon = GOSSIP_ICON_CHAT;
+ TC_LOG_ERROR("sql.sql", "Table `gossip_menu_option` for MenuId %u, OptionIndex %u has unknown icon id %u. Replacing with GossipOptionIcon::None", gMenuItem.MenuId, gMenuItem.OptionIndex, uint8(gMenuItem.OptionIcon));
+ gMenuItem.OptionIcon = GossipOptionIcon::None;
}
if (gMenuItem.OptionBroadcastTextId)
diff --git a/src/server/game/Globals/ObjectMgr.h b/src/server/game/Globals/ObjectMgr.h
index 4e5eede59ee..d3cd89ba585 100644
--- a/src/server/game/Globals/ObjectMgr.h
+++ b/src/server/game/Globals/ObjectMgr.h
@@ -42,6 +42,7 @@ class Item;
class Unit;
class Vehicle;
class Map;
+enum class GossipOptionIcon : uint8;
struct AccessRequirement;
struct DeclinedName;
struct DungeonEncounterEntry;
@@ -689,7 +690,7 @@ struct GossipMenuItems
{
uint32 MenuId;
uint32 OptionIndex;
- uint8 OptionIcon;
+ GossipOptionIcon OptionIcon;
std::string OptionText;
uint32 OptionBroadcastTextId;
uint32 OptionType;
diff --git a/src/server/game/Server/Packets/NPCPackets.h b/src/server/game/Server/Packets/NPCPackets.h
index a925b606cc3..bf16a355b42 100644
--- a/src/server/game/Server/Packets/NPCPackets.h
+++ b/src/server/game/Server/Packets/NPCPackets.h
@@ -24,6 +24,7 @@
#include "Position.h"
#include <array>
+enum class GossipOptionIcon : uint8;
enum class GossipOptionStatus : uint8;
enum class GossipOptionRewardType : uint8;
@@ -63,7 +64,7 @@ namespace WorldPackets
struct ClientGossipOptions
{
int32 ClientOption = 0;
- uint8 OptionNPC = 0;
+ GossipOptionIcon OptionNPC = GossipOptionIcon(0);
uint8 OptionFlags = 0;
int32 OptionCost = 0;
GossipOptionStatus Status = GossipOptionStatus(0);