mirror of
https://github.com/mangosfour/server.git
synced 2025-12-15 10:37:02 +00:00
Code change for the acquisition of the locale
The original code was making use of a structure that is used for races (Human, Orc, etc), which was rather an odd thing to do. Seeing as the code would not work in this core, I took the opportunity to rewrite it so that it checked that actual local file instead.
This commit is contained in:
parent
3a9b00aafd
commit
95f9c41ab0
3 changed files with 47 additions and 2 deletions
|
|
@ -289,6 +289,23 @@ static bool ReadDBCBuildFileText(const std::string& dbc_path, char const* locale
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int ReadDBCLocale(const std::string sDataPath)
|
||||||
|
{
|
||||||
|
std::string sDBCpath = sDataPath + "dbc/";
|
||||||
|
std::string sFilename;
|
||||||
|
|
||||||
|
for (int uLocaleIndex = 0; uLocaleIndex < MAX_LOCALE; ++uLocaleIndex)
|
||||||
|
{
|
||||||
|
sFilename = sDBCpath + "component.wow-" + fullLocaleNameList[uLocaleIndex].name + ".txt";
|
||||||
|
if (FILE* file = fopen(sFilename.c_str(), "rb"))
|
||||||
|
{
|
||||||
|
return uLocaleIndex; // Successfully located the locale
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return -1; // Failed to locate or access the component.wow<locale>.txt file
|
||||||
|
}
|
||||||
|
|
||||||
static uint32 ReadDBCBuild(const std::string& dbc_path, LocaleNameStr const*&localeNameStr)
|
static uint32 ReadDBCBuild(const std::string& dbc_path, LocaleNameStr const*&localeNameStr)
|
||||||
{
|
{
|
||||||
std::string text;
|
std::string text;
|
||||||
|
|
|
||||||
|
|
@ -34,6 +34,15 @@
|
||||||
bool IsAcceptableClientBuild(uint32 build);
|
bool IsAcceptableClientBuild(uint32 build);
|
||||||
std::string AcceptableClientBuildsListStr();
|
std::string AcceptableClientBuildsListStr();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This function checks to see if there is a valid locale file (component.wow-<locale>.txt)
|
||||||
|
* and returns an index to the locale or -1 if not found
|
||||||
|
* @PARAM dataPath full path to the data directory
|
||||||
|
* @RETURN index number representing the location of the locale in the its structure,
|
||||||
|
* LocaleNameStr in Common.cpp
|
||||||
|
*/
|
||||||
|
int ReadDBCLocale(const std::string sDataPath);
|
||||||
|
|
||||||
typedef std::list<uint32> SimpleFactionsList;
|
typedef std::list<uint32> SimpleFactionsList;
|
||||||
|
|
||||||
SimpleFactionsList const* GetFactionTeamList(uint32 faction);
|
SimpleFactionsList const* GetFactionTeamList(uint32 faction);
|
||||||
|
|
@ -48,8 +57,8 @@ uint32 GetAreaFlagByMapId(uint32 mapid);
|
||||||
|
|
||||||
WMOAreaTableEntry const* GetWMOAreaTableEntryByTripple(int32 rootid, int32 adtid, int32 groupid);
|
WMOAreaTableEntry const* GetWMOAreaTableEntryByTripple(int32 rootid, int32 adtid, int32 groupid);
|
||||||
|
|
||||||
AreaTableEntry const* GetAreaEntryByAreaID(uint32 area_id);
|
AreaTableEntry const* GetAreaEntryByAreaID(uint32 area_id);
|
||||||
AreaTableEntry const* GetAreaEntryByAreaFlagAndMap(uint32 area_flag, uint32 map_id);
|
AreaTableEntry const* GetAreaEntryByAreaFlagAndMap(uint32 area_flag, uint32 map_id);
|
||||||
|
|
||||||
uint32 GetVirtualMapForMapAndZone(uint32 mapid, uint32 zoneId);
|
uint32 GetVirtualMapForMapAndZone(uint32 mapid, uint32 zoneId);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1529,6 +1529,23 @@ void World::SetInitialWorldSettings()
|
||||||
|
|
||||||
void World::DetectDBCLang()
|
void World::DetectDBCLang()
|
||||||
{
|
{
|
||||||
|
// get the DBC Locale
|
||||||
|
int uLocale = ReadDBCLocale(m_dataPath);
|
||||||
|
|
||||||
|
if (!uLocale)
|
||||||
|
{
|
||||||
|
sLog.outError("Unable to determine your DBC Locale! (corrupt or missing component.wow-<locale>.txt file)");
|
||||||
|
Log::WaitBeforeContinueIfNeed();
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
m_defaultDbcLocale = LocaleConstant(uLocale);
|
||||||
|
|
||||||
|
sLog.outString("Using %s DBC Locale as default", localeNames[m_defaultDbcLocale]);
|
||||||
|
sLog.outString();
|
||||||
|
|
||||||
|
/* OLD VERSION - delete this code if the above proves to work as intended
|
||||||
|
|
||||||
uint32 m_lang_confid = sConfig.GetIntDefault("DBC.Locale", 255);
|
uint32 m_lang_confid = sConfig.GetIntDefault("DBC.Locale", 255);
|
||||||
|
|
||||||
if (m_lang_confid != 255 && m_lang_confid >= MAX_LOCALE)
|
if (m_lang_confid != 255 && m_lang_confid >= MAX_LOCALE)
|
||||||
|
|
@ -1571,6 +1588,8 @@ void World::DetectDBCLang()
|
||||||
|
|
||||||
sLog.outString("Using %s DBC Locale as default. All available DBC locales: %s", localeNames[m_defaultDbcLocale], availableLocalsStr.empty() ? "<none>" : availableLocalsStr.c_str());
|
sLog.outString("Using %s DBC Locale as default. All available DBC locales: %s", localeNames[m_defaultDbcLocale], availableLocalsStr.empty() ? "<none>" : availableLocalsStr.c_str());
|
||||||
sLog.outString();
|
sLog.outString();
|
||||||
|
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Update the World !
|
/// Update the World !
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue