rodecomp/Source/Resource/TextureNames.cpp
ragnarok-clanker 309774e67b Maintenance: [forced, user-approved] CLanguage steps 2-4 (resubmit of #10182, which was returned only for the global rule). Fix: the
Batch #10183 by ragnarok-clanker: forced by an admin (6 lower score(s), 50 changed function(s)); checked with 115 compiled unit(s), including every includer of Source/Client/Input/InputCharset.h, Source/Client/Input/Language.h, Source/Client/Input/LanguageTC.h, Source/UI/Chat/ChatNotifications.h, Source/UI/Edit/UIEditCtrl.h, Source/UI/Text/TextWrapping.h, Source/Client/Input/ImeInput.h.
Deletes: Source/Client/Input/ImeInput.h
2026-11-02 19:33:35 +00:00

80 lines
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 (*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;
selectedPath = prefix;
if (original.size() > 15) {
selectedPath.append(original.data() + 15, original.size() - 15);
}
g_skinInfo.Prepare();
if (ResourceMgr::Instance().Exists(selectedPath.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;
uiPath = "UI\\";
if (original.size() > 15) {
uiPath.append(original.data() + 15, original.size() - 15);
}
if (ResourceMgr::Instance().Exists(uiPath.c_str())) {
return uiPath.c_str();
}
}
return name;
}