Batch #11063 by cremane: 0 byte-identical, 1 confirmed by peer review. - fn_18378 Resolve: logic confirmed by peer review Peer-reviewed-by: Yommy, dori Accepted without human review: peers confirmed the logic ("same" ahead by at least 3, with 70% of the votes).
84 lines
2.2 KiB
C++
84 lines
2.2 KiB
C++
#include "Client/Input/InputCharset.h"
|
|
#include "Client/Mode/ModeMgr.h"
|
|
#include "Contents/Configuration/ServiceConfiguration.h"
|
|
#include "Contents/SkinMgr.h"
|
|
#include "Resource/ResourceMgr.h"
|
|
#include "File/ResourcePath.h"
|
|
#include "Resource/TextureNames.h"
|
|
|
|
#include <cstring>
|
|
#include <string>
|
|
|
|
// OFFSET: 0x00ACE510
|
|
// FUNCTION: fn_17788
|
|
const char* CLanguageBase::ServiceName(const char* name) {
|
|
if (g_serviceType == 0 || g_serviceType == 2 || g_serviceType == 20) {
|
|
return name;
|
|
}
|
|
|
|
// STATIC: 0x016D3860
|
|
// GLOBAL: gl_24372
|
|
static char path[260];
|
|
std::strcpy(path, this->servicePrefix.c_str());
|
|
std::strcat(path, name);
|
|
const bool exists = std::strstr(name, ".txt") || std::strstr(name, ".xml") ? ResourceExists(path, 0) : ResourceMgr::Instance().Exists(path);
|
|
|
|
return exists ? path : name;
|
|
}
|
|
|
|
// OFFSET: 0x00B01200
|
|
// FUNCTION: fn_18378
|
|
const char* Resolve(const char* name) {
|
|
if (std::strlen(name) == 0) {
|
|
return name;
|
|
}
|
|
|
|
const std::string original(name);
|
|
constexpr char marker[] = "유저인터페이스";
|
|
|
|
if (original.find(marker, 0, 14) == std::string::npos) {
|
|
return name;
|
|
}
|
|
|
|
if (g_modeMgr.gameMode && g_skinInfo.Selected()) {
|
|
const std::string prefix(g_skinInfo.Prefix());
|
|
// STATIC: 0x016D58CC
|
|
// GLOBAL: gl_24385
|
|
static std::string selectedPath;
|
|
std::string path(name);
|
|
selectedPath.clear();
|
|
for (int index = 0; index < static_cast<int>(path.size()) - 15; ++index) {
|
|
selectedPath.push_back(path[index + 15]);
|
|
}
|
|
|
|
g_skinInfo.Prepare();
|
|
selectedPath = prefix + selectedPath;
|
|
path = selectedPath;
|
|
if (ResourceMgr::Instance().Exists(path.c_str())) {
|
|
return selectedPath.c_str();
|
|
}
|
|
}
|
|
|
|
if (g_serviceType != 0) {
|
|
if (ResourceMgr::Instance().Exists(g_serverLanguage->ServiceName(name))) {
|
|
return g_serverLanguage->ServiceName(name);
|
|
}
|
|
|
|
// STATIC: 0x016D58E8
|
|
// GLOBAL: gl_24386
|
|
static std::string uiPath;
|
|
std::string path(name);
|
|
uiPath.clear();
|
|
for (int index = 0; index < static_cast<int>(path.size()) - 15; ++index) {
|
|
uiPath.push_back(path[index + 15]);
|
|
}
|
|
|
|
uiPath = "UI\\" + uiPath;
|
|
path = uiPath;
|
|
if (ResourceMgr::Instance().Exists(path.c_str())) {
|
|
return uiPath.c_str();
|
|
}
|
|
}
|
|
|
|
return name;
|
|
}
|