Core/Gossips: Make MenuID/OptionID consistently use uint32 types (#165)

This commit is contained in:
Roc13x
2020-08-04 09:14:47 +01:00
committed by GitHub
parent 31b6b77200
commit 8669b5d22c
5 changed files with 22 additions and 17 deletions

View File

@@ -0,0 +1,7 @@
ALTER TABLE `gossip_menu_option_locale`
CHANGE `MenuID` `MenuID` int(11) unsigned NOT NULL DEFAULT '0',
CHANGE `OptionID` `OptionID` int(11) unsigned NOT NULL DEFAULT '0';
ALTER TABLE `gossip_menu`
CHANGE `MenuID` `MenuID` int(11) unsigned NOT NULL DEFAULT '0',
CHANGE `TextID` `TextID` int(11) unsigned NOT NULL DEFAULT '0';

View File

@@ -111,14 +111,14 @@ void GossipMenu::AddMenuItem(uint32 menuId, uint32 menuItemId, uint32 sender, ui
if (!optionBroadcastText)
{
/// Find localizations from database.
if (GossipMenuItemsLocale const* gossipMenuLocale = sObjectMgr->GetGossipMenuItemsLocale(MAKE_PAIR32(menuId, menuItemId)))
if (GossipMenuItemsLocale const* gossipMenuLocale = sObjectMgr->GetGossipMenuItemsLocale(menuId, menuItemId))
ObjectMgr::GetLocaleString(gossipMenuLocale->OptionText, GetLocale(), strOptionText);
}
if (!boxBroadcastText)
{
/// Find localizations from database.
if (GossipMenuItemsLocale const* gossipMenuLocale = sObjectMgr->GetGossipMenuItemsLocale(MAKE_PAIR32(menuId, menuItemId)))
if (GossipMenuItemsLocale const* gossipMenuLocale = sObjectMgr->GetGossipMenuItemsLocale(menuId, menuItemId))
ObjectMgr::GetLocaleString(gossipMenuLocale->BoxText, GetLocale(), strBoxText);
}
}

View File

@@ -14023,14 +14023,14 @@ void Player::PrepareGossipMenu(WorldObject* source, uint32 menuId /*= 0*/, bool
if (!optionBroadcastText)
{
/// Find localizations from database.
if (GossipMenuItemsLocale const* gossipMenuLocale = sObjectMgr->GetGossipMenuItemsLocale(MAKE_PAIR32(menuId, itr->second.OptionID)))
if (GossipMenuItemsLocale const* gossipMenuLocale = sObjectMgr->GetGossipMenuItemsLocale(menuId, itr->second.OptionID))
ObjectMgr::GetLocaleString(gossipMenuLocale->OptionText, locale, strOptionText);
}
if (!boxBroadcastText)
{
/// Find localizations from database.
if (GossipMenuItemsLocale const* gossipMenuLocale = sObjectMgr->GetGossipMenuItemsLocale(MAKE_PAIR32(menuId, itr->second.OptionID)))
if (GossipMenuItemsLocale const* gossipMenuLocale = sObjectMgr->GetGossipMenuItemsLocale(menuId, itr->second.OptionID))
ObjectMgr::GetLocaleString(gossipMenuLocale->BoxText, locale, strBoxText);
}
}

View File

@@ -375,22 +375,20 @@ void ObjectMgr::LoadGossipMenuItemsLocales()
{
Field* fields = result->Fetch();
uint16 menuId = fields[0].GetUInt16();
uint16 optionId = fields[1].GetUInt16();
uint32 menuId = fields[0].GetUInt32();
uint32 optionId = fields[1].GetUInt32();
std::string localeName = fields[2].GetString();
std::string optionText = fields[3].GetString();
std::string boxText = fields[4].GetString();
GossipMenuItemsLocale& data = _gossipMenuItemsLocaleStore[MAKE_PAIR32(menuId, optionId)];
LocaleConstant locale = GetLocaleByName(localeName);
LocaleConstant locale = GetLocaleByName(localeName);
if (locale == LOCALE_enUS)
continue;
AddLocaleString(optionText, locale, data.OptionText);
AddLocaleString(boxText, locale, data.BoxText);
GossipMenuItemsLocale& data = _gossipMenuItemsLocaleStore[std::make_pair(menuId, optionId)];
AddLocaleString(fields[3].GetString(), locale, data.OptionText);
AddLocaleString(fields[4].GetString(), locale, data.BoxText);
} while (result->NextRow());
TC_LOG_INFO("server.loading", ">> Loaded %u gossip_menu_option locale strings in %u ms", uint32(_gossipMenuItemsLocaleStore.size()), GetMSTimeDiffToNow(oldMSTime));
TC_LOG_INFO("server.loading", ">> Loaded " SZFMTD " gossip_menu_option locale strings in %u ms", _gossipMenuItemsLocaleStore.size(), GetMSTimeDiffToNow(oldMSTime));
}
void ObjectMgr::LoadPointOfInterestLocales()
@@ -8950,7 +8948,7 @@ void ObjectMgr::LoadGossipMenu()
GossipMenus gMenu;
gMenu.MenuID = fields[0].GetUInt16();
gMenu.MenuID = fields[0].GetUInt32();
gMenu.TextID = fields[1].GetUInt32();
if (!GetGossipText(gMenu.TextID))

View File

@@ -569,7 +569,7 @@ struct GossipMenuItemsLocale
std::vector<std::string> BoxText;
};
typedef std::unordered_map<uint32, GossipMenuItemsLocale> GossipMenuItemsLocaleContainer;
typedef std::unordered_map<std::pair<uint32, uint32>, GossipMenuItemsLocale> GossipMenuItemsLocaleContainer;
struct PointOfInterestLocale
{
@@ -1421,9 +1421,9 @@ class TC_GAME_API ObjectMgr
if (itr == _pageTextLocaleStore.end()) return nullptr;
return &itr->second;
}
GossipMenuItemsLocale const* GetGossipMenuItemsLocale(uint32 entry) const
GossipMenuItemsLocale const* GetGossipMenuItemsLocale(uint32 menuId, uint32 optionIndex) const
{
GossipMenuItemsLocaleContainer::const_iterator itr = _gossipMenuItemsLocaleStore.find(entry);
GossipMenuItemsLocaleContainer::const_iterator itr = _gossipMenuItemsLocaleStore.find(std::make_pair(menuId, optionIndex));
if (itr == _gossipMenuItemsLocaleStore.end()) return nullptr;
return &itr->second;
}