Merge branch 'main' of http://forgejo:3000/clank/rodecomp
This commit is contained in:
commit
279b86f980
36 changed files with 954 additions and 577 deletions
|
|
@ -199,6 +199,13 @@ Do not substitute `__FILE__` or `__LINE__` merely to follow a different project'
|
|||
invent diagnostic literals. Distinguish compiler-generated diagnostics from application arguments using
|
||||
the original instructions.
|
||||
|
||||
### Korean string literals
|
||||
|
||||
Sources are UTF-8; `compile.json` passes `/source-charset:utf-8 /execution-charset:.949`, so write Korean
|
||||
literals as Hangul (`"유저인터페이스\\item\\%s.bmp"`), not CP949 escapes. Keep `\x` escapes for bytes
|
||||
that are not CP949 Hangul: other code pages (Shift-JIS, GBK, Big5 font names), byte-order marks and key codes.
|
||||
Never use `/utf-8`, and never save sources as CP949/EUC-KR.
|
||||
|
||||
## 7. Platform and build scope
|
||||
|
||||
- This target is Windows x86. Keep code in its assigned existing translation unit and subsystem headers.
|
||||
|
|
|
|||
|
|
@ -7,13 +7,15 @@
|
|||
void TraditionalKeyInput::InitializeMappings() {
|
||||
// STATIC: 0x011594E0
|
||||
// GLOBAL: gl_13427
|
||||
static constexpr std::uint8_t bytes[] = {0xA3, 0x74, 0xA3, 0x78, 0xA3, 0xBE, 0xA3, 0xBF, 0xA3, 0xA4, 0xA3, 0xBD, 0xA3, 0xBB, 0xA3, 0xAB, 0xA3,
|
||||
0xAF, 0xA3, 0xB3, 0xA3, 0x76, 0xA3, 0xA7, 0xA3, 0x74, 0xA3, 0x74, 0xA3, 0x74, 0xA3, 0xA2, 0xA3, 0xA6,
|
||||
0xA3, 0xA9, 0xA3, 0xAC, 0xA3, 0xB9, 0xA3, 0xAD, 0xA3, 0xB1, 0xA3, 0xAA, 0xA3, 0xBA, 0xA3, 0xB0, 0xA3,
|
||||
0xB4, 0xA3, 0x75, 0xA3, 0xA1, 0xA3, 0x7A, 0xA3, 0xA5, 0xA3, 0x74, 0xA3, 0xA3, 0xA3, 0x79, 0xA3, 0x74,
|
||||
0xA3, 0xA8, 0xA3, 0x77, 0xA3, 0xB7, 0xA3, 0xB5, 0xA3, 0xAE, 0xA3, 0xB2, 0xA3, 0xB6};
|
||||
static constexpr std::uint8_t zhuyinBig5[] = {0xA3, 0x74, 0xA3, 0x78, 0xA3, 0xBE, 0xA3, 0xBF, 0xA3, 0xA4, 0xA3, 0xBD, 0xA3, 0xBB, 0xA3, 0xAB, 0xA3,
|
||||
0xAF, 0xA3, 0xB3, 0xA3, 0x76, 0xA3, 0xA7, 0xA3, 0x74, 0xA3, 0x74, 0xA3, 0x74, 0xA3, 0xA2, 0xA3, 0xA6,
|
||||
0xA3, 0xA9, 0xA3, 0xAC, 0xA3, 0xB9, 0xA3, 0xAD, 0xA3, 0xB1, 0xA3, 0xAA, 0xA3, 0xBA, 0xA3, 0xB0, 0xA3,
|
||||
0xB4, 0xA3, 0x75, 0xA3, 0xA1, 0xA3, 0x7A, 0xA3, 0xA5, 0xA3, 0x74, 0xA3, 0xA3, 0xA3, 0x79, 0xA3, 0x74,
|
||||
0xA3, 0xA8, 0xA3, 0x77, 0xA3, 0xB7, 0xA3, 0xB5, 0xA3, 0xAE, 0xA3, 0xB2, 0xA3, 0xB6};
|
||||
static constexpr char categories[] = "11441443331111111132331233111121111133333";
|
||||
static constexpr unsigned char keys[] = "1234567890ABCDEFGHIJKLNMOPQRSTUVWXYZ\xBD\xBA\xBC\xBE\xBF";
|
||||
static constexpr unsigned char keys[] = {'1', '2', '3', '4', '5', '6', '7', '8', '9', '0', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H',
|
||||
'I', 'J', 'K', 'L', 'N', 'M', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z',
|
||||
VK_OEM_MINUS, VK_OEM_1, VK_OEM_COMMA, VK_OEM_PERIOD, VK_OEM_2, 0};
|
||||
|
||||
this->unknown04C1 = 0;
|
||||
|
||||
|
|
@ -23,8 +25,8 @@ void TraditionalKeyInput::InitializeMappings() {
|
|||
|
||||
for (unsigned index = 0; index < 41; ++index) {
|
||||
auto& mapping = this->mappings[keys[index]];
|
||||
mapping.bytes[0] = bytes[2 * index];
|
||||
mapping.bytes[1] = bytes[2 * index + 1];
|
||||
mapping.bytes[0] = zhuyinBig5[2 * index];
|
||||
mapping.bytes[1] = zhuyinBig5[2 * index + 1];
|
||||
mapping.bytes[2] = 0;
|
||||
mapping.category = static_cast<std::uint8_t>(categories[index] - '1');
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,14 +4,14 @@
|
|||
struct ServiceOptions;
|
||||
|
||||
struct CameraState {
|
||||
float target[3];
|
||||
float pitch;
|
||||
float yaw;
|
||||
float distance;
|
||||
float desiredTarget[3];
|
||||
float desiredPitch;
|
||||
float desiredYaw;
|
||||
float desiredDistance;
|
||||
/* 0020 */ float target[3];
|
||||
/* 002C */ float pitch;
|
||||
/* 0030 */ float yaw;
|
||||
/* 0034 */ float distance;
|
||||
/* 0038 */ float desiredTarget[3];
|
||||
/* 0044 */ float desiredPitch;
|
||||
/* 0048 */ float desiredYaw;
|
||||
/* 004C */ float desiredDistance;
|
||||
|
||||
void Reset();
|
||||
void AddDistance(float delta);
|
||||
|
|
@ -30,13 +30,13 @@ struct CameraProjectionOutputs {
|
|||
};
|
||||
|
||||
struct CameraShake {
|
||||
float horizontal;
|
||||
float distance;
|
||||
float pitch;
|
||||
unsigned unknown_0010;
|
||||
int enabled;
|
||||
unsigned start;
|
||||
unsigned duration;
|
||||
/* 0004 */ float horizontal;
|
||||
/* 0008 */ float distance;
|
||||
/* 000C */ float pitch;
|
||||
/* 0010 */ unsigned unknown_0010;
|
||||
/* 0014 */ int enabled;
|
||||
/* 0018 */ unsigned start;
|
||||
/* 001C */ unsigned duration;
|
||||
|
||||
void Apply(CameraState& camera, int& frameLatch);
|
||||
void Start(int enabled, unsigned duration, float horizontal, float distance, float pitch);
|
||||
|
|
@ -44,5 +44,6 @@ struct CameraShake {
|
|||
};
|
||||
|
||||
static_assert(sizeof(CameraState) == 48);
|
||||
static_assert(sizeof(CameraShake) == 28);
|
||||
|
||||
#endif
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
|
@ -303,22 +303,22 @@ static void SelectRagEffectResource(RagEffectState& effect, ServiceOptions& opti
|
|||
std::sprintf(name, "Pong%d.str", std::rand() % 3 + 1);
|
||||
break;
|
||||
case 204:
|
||||
std::sprintf(name, "\273\241\260\243\306\367\274\307.str");
|
||||
std::sprintf(name, "빨간포션.str");
|
||||
break;
|
||||
case 205:
|
||||
std::sprintf(name, "\301\326\310\253\306\367\274\307.str");
|
||||
std::sprintf(name, "주홍포션.str");
|
||||
break;
|
||||
case 206:
|
||||
std::sprintf(name, "\263\353\266\365\306\367\274\307.str");
|
||||
std::sprintf(name, "노란포션.str");
|
||||
break;
|
||||
case 207:
|
||||
std::sprintf(name, "\307\317\276\341\306\367\274\307.str");
|
||||
std::sprintf(name, "하얀포션.str");
|
||||
break;
|
||||
case 208:
|
||||
std::sprintf(name, "\306\304\266\365\306\367\274\307.str");
|
||||
std::sprintf(name, "파란포션.str");
|
||||
break;
|
||||
case 209:
|
||||
std::sprintf(name, "\303\312\267\317\306\367\274\307.str");
|
||||
std::sprintf(name, "초록포션.str");
|
||||
break;
|
||||
case 210:
|
||||
std::sprintf(name, "fruit.str");
|
||||
|
|
@ -333,23 +333,23 @@ static void SelectRagEffectResource(RagEffectState& effect, ServiceOptions& opti
|
|||
std::sprintf(name, "Keeping.str");
|
||||
break;
|
||||
case 218:
|
||||
std::sprintf(name, "\301\375\301\337.str");
|
||||
std::sprintf(name, "집중.str");
|
||||
break;
|
||||
case 219:
|
||||
std::sprintf(name, "\260\242\274\272.str");
|
||||
std::sprintf(name, "각성.str");
|
||||
break;
|
||||
case 220:
|
||||
case 756:
|
||||
std::sprintf(name, "\271\366\274\255\305\251.str");
|
||||
std::sprintf(name, "버서크.str");
|
||||
break;
|
||||
case 234:
|
||||
std::sprintf(name, "spell.str");
|
||||
break;
|
||||
case 235:
|
||||
std::sprintf(name, "\265\360\275\272\306\347.str");
|
||||
std::sprintf(name, "디스펠.str");
|
||||
break;
|
||||
case 244:
|
||||
std::sprintf(name, "\270\305\301\367\267\316\265\345.str");
|
||||
std::sprintf(name, "매직로드.str");
|
||||
break;
|
||||
case 245:
|
||||
std::sprintf(name, "holy_cross.str");
|
||||
|
|
@ -391,7 +391,7 @@ static void SelectRagEffectResource(RagEffectState& effect, ServiceOptions& opti
|
|||
std::sprintf(name, "strip_helm.str");
|
||||
break;
|
||||
case 273:
|
||||
std::sprintf(name, "\277\254\310\257.str");
|
||||
std::sprintf(name, "연환.str");
|
||||
break;
|
||||
case 305:
|
||||
std::sprintf(name, "p_success.str");
|
||||
|
|
@ -419,16 +419,16 @@ static void SelectRagEffectResource(RagEffectState& effect, ServiceOptions& opti
|
|||
std::sprintf(name, "sword.str");
|
||||
break;
|
||||
case 406:
|
||||
std::sprintf(name, "\274\322\277\357\271\370.str");
|
||||
std::sprintf(name, "소울번.str");
|
||||
break;
|
||||
case 407:
|
||||
std::sprintf(name, "\273\347\266\367\310\277\260\372.str");
|
||||
std::sprintf(name, "사람효과.str");
|
||||
break;
|
||||
case 440:
|
||||
std::sprintf(name, "asum.str");
|
||||
break;
|
||||
case 491:
|
||||
std::sprintf(name, "\302\375\275\322\266\261.str");
|
||||
std::sprintf(name, "찹쌀떡.str");
|
||||
break;
|
||||
case 492:
|
||||
std::sprintf(name, "ramadan.str");
|
||||
|
|
@ -486,10 +486,10 @@ static void SelectRagEffectResource(RagEffectState& effect, ServiceOptions& opti
|
|||
std::sprintf(name, "icy.str");
|
||||
break;
|
||||
case 646:
|
||||
std::sprintf(name, "\306\256\267\242\305\267.str");
|
||||
std::sprintf(name, "트랙킹.str");
|
||||
break;
|
||||
case 649:
|
||||
std::sprintf(name, "\272\322\275\272\276\306\300\314.str");
|
||||
std::sprintf(name, "불스아이.str");
|
||||
break;
|
||||
case 668:
|
||||
case 670:
|
||||
|
|
@ -523,7 +523,7 @@ static void SelectRagEffectResource(RagEffectState& effect, ServiceOptions& opti
|
|||
std::sprintf(name, "ado.str");
|
||||
break;
|
||||
case 722:
|
||||
std::sprintf(name, "\300\314\261\327\264\317\274\307\272\352\267\271\300\314\305\251.str");
|
||||
std::sprintf(name, "이그니션브레이크.str");
|
||||
break;
|
||||
case 727:
|
||||
std::sprintf(name, "crimson_r.str");
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
#include "Network/Http/CURLPostHander.h"
|
||||
#include "Network/TextEncoding.h"
|
||||
|
||||
#include <cstdio>
|
||||
#include <stdio.h>
|
||||
#include <windows.h>
|
||||
#include <timeapi.h>
|
||||
|
||||
|
|
|
|||
|
|
@ -69,7 +69,7 @@ float GroundWaterState::Level(int width, int height, int column, int row) const
|
|||
// FUNCTION: fn_17581
|
||||
void GroundWaterState::Update(TextureCache& textures) {
|
||||
// STATIC: 0x01159248
|
||||
constexpr char format[] = "\xBF\xF6\xC5\xCD\\water%d%02d.jpg";
|
||||
constexpr char format[] = "워터\\water%d%02d.jpg";
|
||||
char name[32]{};
|
||||
|
||||
for (GroundWaterSurface& surface : this->surfaces) {
|
||||
|
|
|
|||
|
|
@ -89,7 +89,7 @@ ITEM_DESC& ItemDescriptions::Ensure(int id) {
|
|||
void ItemDescriptions::IconPath(char* output, const char* id, int identified) {
|
||||
const ITEM_DESC& value = this->Find(std::atoi(id));
|
||||
const char* resource = identified != 0 ? value.identifiedResource : value.unidentifiedResource;
|
||||
std::sprintf(output, "\xC0\xAF\xC0\xFA\xC0\xCE\xC5\xCD\xC6\xE4\xC0\xCC\xBD\xBA\\item\\%s.bmp", resource);
|
||||
std::sprintf(output, "유저인터페이스\\item\\%s.bmp", resource);
|
||||
}
|
||||
|
||||
// OFFSET: 0x006D5730
|
||||
|
|
|
|||
|
|
@ -9,10 +9,10 @@
|
|||
// FUNCTION: fn_23391
|
||||
const char* ItemDragResource(ItemDescriptions& descriptions, const char* id, int identified) {
|
||||
static std::string resource;
|
||||
resource = "\xBE\xC6\xC0\xCC\xC5\xDB\\";
|
||||
resource = "아이템\\";
|
||||
const ITEM_DESC& value = descriptions.Find(std::atoi(id));
|
||||
const char* name = identified != 0 ? value.identifiedResource : value.unidentifiedResource;
|
||||
resource += name ? name : "\xBB\xE7\xB0\xFA";
|
||||
resource += name ? name : "사과";
|
||||
|
||||
return resource.c_str();
|
||||
}
|
||||
|
|
@ -21,11 +21,11 @@ const char* ItemDragResource(ItemDescriptions& descriptions, const char* id, int
|
|||
// FUNCTION: fn_23392
|
||||
const char* SkillDragResource(ResourceMgr& resources, const char* name) {
|
||||
static std::string resource;
|
||||
resource = "\xBE\xC6\xC0\xCC\xC5\xDB\\";
|
||||
resource = "아이템\\";
|
||||
resource += name;
|
||||
|
||||
if (!resources.Exists((resource + ".act").c_str())) {
|
||||
resource = "\xBE\xC6\xC0\xCC\xC5\xDB\\am_berserkpitcher";
|
||||
resource = "아이템\\am_berserkpitcher";
|
||||
}
|
||||
|
||||
return resource.c_str();
|
||||
|
|
|
|||
|
|
@ -56,15 +56,15 @@ void JobNames::Initialize(JobNameInitialization& context) {
|
|||
this->names[JT_MER_SERA] = "MER_SERA";
|
||||
|
||||
for (unsigned id = JT_MER_ARCHER01; id <= JT_MER_ARCHER10; ++id) {
|
||||
this->names[id] = "\xBF\xA9\\\xC8\xB0\xBF\xEB\xBA\xB4";
|
||||
this->names[id] = "여\\활용병";
|
||||
}
|
||||
|
||||
for (unsigned id = JT_MER_LANCER01; id <= JT_MER_LANCER10; ++id) {
|
||||
this->names[id] = "\xB3\xB2\\\xC3\xA2\xBF\xEB\xBA\xB4";
|
||||
this->names[id] = "남\\창용병";
|
||||
}
|
||||
|
||||
for (unsigned id = JT_MER_SWORDMAN01; id <= JT_MER_SWORDMAN10; ++id) {
|
||||
this->names[id] = "\xB3\xB2\\\xB0\xCB\xBF\xEB\xBA\xB4";
|
||||
this->names[id] = "남\\검용병";
|
||||
}
|
||||
|
||||
context.sexLabels.resize(2, "F");
|
||||
|
|
|
|||
|
|
@ -552,7 +552,7 @@ void CSoundMgr::PlayWave(const char* name, float x, float y, float z, int maximu
|
|||
return;
|
||||
}
|
||||
|
||||
static constexpr char permittedName[] = "\xB9\xF6\xC6\xB0\xBC\xD2\xB8\xAE.wav";
|
||||
static constexpr char permittedName[] = "버튼소리.wav";
|
||||
|
||||
if (this->unknown != 0 && std::strcmp(name, permittedName) != 0) {
|
||||
return;
|
||||
|
|
|
|||
|
|
@ -205,8 +205,8 @@ bool C3dModelResV1::Load(const char* name) {
|
|||
input.Read(magic, 4);
|
||||
|
||||
if (std::strcmp(magic, "GRSM") != 0) {
|
||||
constexpr char message[] = "\xB8\xF0\xB5\xA8\xC6\xC4\xC0\xCF\xC0\xCC \xBE\xC6\xB4\xD5\xB4\xCF\xB4\xD9. \xC7\xFC\xBD\xC4\xC0\xBB "
|
||||
"\xB4\xD9\xBD\xC3\xC7\xD1\xB9\xF8 \xC8\xAE\xC0\xCE\xC7\xD8\xC1\xD6\xBC\xBC\xBF\xE4.";
|
||||
constexpr char message[] = "모델파일이 아닙니다. 형식을 "
|
||||
"다시한번 확인해주세요.";
|
||||
ShowErrorDialog(this->m_context->renderSystem, message, 0);
|
||||
file.Close();
|
||||
|
||||
|
|
@ -220,8 +220,8 @@ bool C3dModelResV1::Load(const char* name) {
|
|||
input.Read(&minor, 1);
|
||||
|
||||
if (major != 1 || minor > 5) {
|
||||
constexpr char message[] = "\xC1\xF6\xBF\xF8\xB5\xC7\xC1\xF6 \xBE\xCA\xB4\xC2 \xB9\xF6\xC1\xAF\xC0\xD4\xB4\xCF\xB4\xD9. "
|
||||
"\xB3\xBB\xBF\xEB\xB9\xB0\xC0\xCC \xB1\xFA\xC1\xAE\xC0\xD6\xC0\xBB \xBC\xF6 \xC0\xD6\xBD\xC0\xB4\xCF\xB4\xD9";
|
||||
constexpr char message[] = "지원되지 않는 버젼입니다. "
|
||||
"내용물이 깨져있을 수 있습니다";
|
||||
ShowErrorDialog(this->m_context->renderSystem, message, 0);
|
||||
file.Close();
|
||||
|
||||
|
|
|
|||
|
|
@ -65,8 +65,7 @@ bool C3dModelResV2::Load(const char* name) {
|
|||
input.Read(magic, 4);
|
||||
|
||||
if (std::strcmp(magic, "GRSM") != 0) {
|
||||
constexpr char message[] = "\xB8\xF0\xB5\xA8\xC6\xC4\xC0\xCF\xC0\xCC \xBE\xC6\xB4\xD5\xB4\xCF\xB4\xD9. \xC7\xFC\xBD\xC4\xC0\xBB "
|
||||
"\xB4\xD9\xBD\xC3\xC7\xD1\xB9\xF8 \xC8\xAE\xC0\xCE\xC7\xD8\xC1\xD6\xBC\xBC\xBF\xE4.";
|
||||
constexpr char message[] = "모델파일이 아닙니다. 형식을 다시한번 확인해주세요.";
|
||||
ShowErrorDialog(this->m_context->renderSystem, message, 0);
|
||||
file.Close();
|
||||
|
||||
|
|
|
|||
|
|
@ -30,7 +30,7 @@ const char* TextureNames::Resolve(const char* name) {
|
|||
}
|
||||
|
||||
const std::string original(name);
|
||||
constexpr char marker[] = "\xC0\xAF\xC0\xFA\xC0\xCE\xC5\xCD\xC6\xE4\xC0\xCC\xBD\xBA";
|
||||
constexpr char marker[] = "유저인터페이스";
|
||||
|
||||
if (original.find(marker, 0, 14) == std::string::npos) {
|
||||
return name;
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@
|
|||
#include <cstring>
|
||||
|
||||
namespace {
|
||||
constexpr char prefix[] = "\xC0\xAF\xC0\xFA\xC0\xCE\xC5\xCD\xC6\xE4\xC0\xCC\xBD\xBA\\";
|
||||
constexpr char prefix[] = "유저인터페이스\\";
|
||||
}
|
||||
|
||||
// OFFSET: 0x008C73C0
|
||||
|
|
|
|||
|
|
@ -40,7 +40,7 @@ void UIBasicButton::Paint() {
|
|||
|
||||
if (this->m_disabled == 1 || this->geometry.unknown_0030 <= 2) {
|
||||
static constexpr const char* skins[] = {"out", "over", "press", "disable"};
|
||||
const std::string prefix = std::string("\xC0\xAF\xC0\xFA\xC0\xCE\xC5\xCD\xC6\xE4\xC0\xCC\xBD\xBA\\basic_interface\\btn_") + skins[state];
|
||||
const std::string prefix = std::string("유저인터페이스\\basic_interface\\btn_") + skins[state];
|
||||
const auto drawBitmap = [&](const char* suffix, int x) {
|
||||
auto* bitmap = static_cast<CBitmapRes*>(this->m_buttonContext->resources.Load((prefix + suffix).c_str()));
|
||||
this->DrawBitmap(x, 0, bitmap ? &bitmap->image : nullptr, false);
|
||||
|
|
|
|||
|
|
@ -28,9 +28,9 @@ void UIButton::Paint() {
|
|||
}
|
||||
|
||||
static const char* const backgrounds[] = {
|
||||
"\xC0\xAF\xC0\xFA\xC0\xCE\xC5\xCD\xC6\xE4\xC0\xCC\xBD\xBA\\sml_button_up.bmp",
|
||||
"\xC0\xAF\xC0\xFA\xC0\xCE\xC5\xCD\xC6\xE4\xC0\xCC\xBD\xBA\\sml_button_act.bmp",
|
||||
"\xC0\xAF\xC0\xFA\xC0\xCE\xC5\xCD\xC6\xE4\xC0\xCC\xBD\xBA\\sml_button_down.bmp"
|
||||
"유저인터페이스\\sml_button_up.bmp",
|
||||
"유저인터페이스\\sml_button_act.bmp",
|
||||
"유저인터페이스\\sml_button_down.bmp"
|
||||
};
|
||||
|
||||
CBitmapRes* bitmap;
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
#include "UI/Window/WindowPolicy.h"
|
||||
|
||||
namespace {
|
||||
constexpr char prefix[] = "\xC0\xAF\xC0\xFA\xC0\xCE\xC5\xCD\xC6\xE4\xC0\xCC\xBD\xBA\\";
|
||||
constexpr char prefix[] = "유저인터페이스\\";
|
||||
}
|
||||
|
||||
// OFFSET: 0x0086CC20
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@
|
|||
|
||||
namespace {
|
||||
unsigned Palette(ResourceMgr& resources, int column, int row) {
|
||||
constexpr char path[] = "\xC0\xAF\xC0\xFA\xC0\xCE\xC5\xCD\xC6\xE4\xC0\xCC\xBD\xBA\\colorchip.bmp";
|
||||
constexpr char path[] = "유저인터페이스\\colorchip.bmp";
|
||||
auto* chip = static_cast<CBitmapRes*>(resources.Load(path));
|
||||
const int x = column * 4 + 2;
|
||||
const int y = row * 4 + 2;
|
||||
|
|
@ -233,7 +233,7 @@ void UIComboBoxEx::Paint() {
|
|||
auto& resources = this->m_listContext->resources;
|
||||
this->geometry.surface->Fill(nullptr, Palette(resources, 6, 6));
|
||||
this->FillRegion(1, 1, (this->geometry.width - 2), (this->geometry.height - 2), Palette(resources, 2, 2));
|
||||
constexpr char prefix[] = "\xC0\xAF\xC0\xFA\xC0\xCE\xC5\xCD\xC6\xE4\xC0\xCC\xBD\xBA\\basic_interface\\";
|
||||
constexpr char prefix[] = "유저인터페이스\\basic_interface\\";
|
||||
const char* names[] = {"sysboxs_lu.bmp", "sysboxs_ld.bmp", "sysboxs_ru.bmp", "sysboxs_rd.bmp"};
|
||||
|
||||
for (int corner = 0; corner < 4; ++corner) {
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@ UIListBox::UIListBox(UIWindowContext& windows, UIListBoxContext& list)
|
|||
: UIWindow(windows, 0), backgroundRed(255), backgroundGreen(255), backgroundBlue(255), selected(0), topLine(0), horizontalOffset(0), contentWidth(0),
|
||||
verticalOverflow(0), bottomMargin(0), verticalBar(nullptr), horizontalBar(nullptr), transparent(0), lineHeight(16), selectable(1), textColor(0),
|
||||
centerVertically(0), textInset(3), m_listContext(&list) {
|
||||
constexpr char path[] = "\xC0\xAF\xC0\xFA\xC0\xCE\xC5\xCD\xC6\xE4\xC0\xCC\xBD\xBA\\colorchip.bmp";
|
||||
constexpr char path[] = "유저인터페이스\\colorchip.bmp";
|
||||
const auto* chip = static_cast<CBitmapRes*>(list.resources.Load(path));
|
||||
this->selectionColor = 0;
|
||||
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ UIListBoxEx::UIListBoxEx(UIWindowContext& windows, UIListBoxContext& list)
|
|||
: UIWindow(windows, 0), backgroundRed(255), backgroundGreen(255), backgroundBlue(255), selected(0), topLine(0), horizontalOffset(0), contentWidth(0),
|
||||
verticalOverflow(0), bottomMargin(0), verticalBar(nullptr), horizontalBar(nullptr), transparent(0), lineHeight(16), selectionColor(0),
|
||||
m_listContext(&list) {
|
||||
constexpr char path[] = "\xC0\xAF\xC0\xFA\xC0\xCE\xC5\xCD\xC6\xE4\xC0\xCC\xBD\xBA\\colorchip.bmp";
|
||||
constexpr char path[] = "유저인터페이스\\colorchip.bmp";
|
||||
const auto* chip = static_cast<CBitmapRes*>(list.resources.Load(path));
|
||||
|
||||
if (chip) {
|
||||
|
|
|
|||
|
|
@ -248,7 +248,7 @@ void UIScrollBar::Paint() {
|
|||
return;
|
||||
}
|
||||
|
||||
constexpr char prefix[] = "\xC0\xAF\xC0\xFA\xC0\xCE\xC5\xCD\xC6\xE4\xC0\xCC\xBD\xBA\\";
|
||||
constexpr char prefix[] = "유저인터페이스\\";
|
||||
const bool vertical = this->vertical == 1;
|
||||
const int length = vertical ? this->geometry.height : this->geometry.width;
|
||||
const auto draw = [&](const char* name, int coordinate, bool transparent) {
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@ void UIScrollBar_Navi::Paint() {
|
|||
}
|
||||
|
||||
if (this->vertical == 1) {
|
||||
constexpr char prefix[] = "\xC0\xAF\xC0\xFA\xC0\xCE\xC5\xCD\xC6\xE4\xC0\xCC\xBD\xBA\\navigation_interface3\\";
|
||||
constexpr char prefix[] = "유저인터페이스\\navigation_interface3\\";
|
||||
const auto load = [&](const char* name) { return static_cast<CBitmapRes*>(this->m_resources->Load((std::string(prefix) + name).c_str())); };
|
||||
const auto draw = [&](CBitmapRes* image, int y, bool transparent) { this->DrawBitmap(0, y, image ? &image->image : nullptr, transparent); };
|
||||
auto* up = load("Navi_scroll_up.bmp");
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@
|
|||
#include <cstdlib>
|
||||
|
||||
namespace {
|
||||
constexpr char prefix[] = "\xC0\xAF\xC0\xFA\xC0\xCE\xC5\xCD\xC6\xE4\xC0\xCC\xBD\xBA\\UIadventurerAgency\\";
|
||||
constexpr char prefix[] = "유저인터페이스\\UIadventurerAgency\\";
|
||||
}
|
||||
|
||||
// OFFSET: 0x007BAC40
|
||||
|
|
@ -221,7 +221,7 @@ void UIAdvenPartyBoardWnd::Slot15(int, int) {
|
|||
this->stop->Enable(0);
|
||||
|
||||
auto* titleClose = new UIBitmapButton(*this->m_context, controls);
|
||||
const std::string basic = std::string("\xC0\xAF\xC0\xFA\xC0\xCE\xC5\xCD\xC6\xE4\xC0\xCC\xBD\xBA\\basic_interface\\");
|
||||
const std::string basic = std::string("유저인터페이스\\basic_interface\\");
|
||||
titleClose->SetBitmap((basic + "sys_close_off.bmp").c_str(), 0, 0);
|
||||
titleClose->SetBitmap((basic + "sys_close_on.bmp").c_str(), 1, 0);
|
||||
titleClose->SetBitmap((basic + "sys_close_on.bmp").c_str(), 2, 0);
|
||||
|
|
@ -561,7 +561,7 @@ void UIAdvenPartyBoardWnd::Paint() {
|
|||
const auto load = [&](const char* path) { return static_cast<CBitmapRes*>(controls.resources.Load(path)); };
|
||||
auto* background = load((std::string(prefix) + "bg_agencyList.bmp").c_str());
|
||||
this->DrawBitmap(0, 0, background ? &background->image : nullptr, false);
|
||||
constexpr char basic[] = "\xC0\xAF\xC0\xFA\xC0\xCE\xC5\xCD\xC6\xE4\xC0\xCC\xBD\xBA\\basic_interface\\";
|
||||
constexpr char basic[] = "유저인터페이스\\basic_interface\\";
|
||||
const auto skin = [&](const char* name) { return load((std::string(basic) + name).c_str()); };
|
||||
int left = 0;
|
||||
int right = 0;
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@
|
|||
#include <cstdio>
|
||||
|
||||
namespace {
|
||||
constexpr char prefix[] = "\xC0\xAF\xC0\xFA\xC0\xCE\xC5\xCD\xC6\xE4\xC0\xCC\xBD\xBA\\";
|
||||
constexpr char prefix[] = "유저인터페이스\\";
|
||||
}
|
||||
|
||||
// OFFSET: 0x007BAD00
|
||||
|
|
|
|||
|
|
@ -85,7 +85,7 @@ void UIPartyInfoWnd::Paint() {
|
|||
const auto text = [&](int x, const char* value, int bytes = 0) { this->DrawTextAt(controls.fonts, controls.locale, x, 5, value, bytes, 0, 12, 0, 0, 0); };
|
||||
text(11, this->levels.c_str());
|
||||
text(64, TypeName(this->type, controls.services));
|
||||
constexpr char prefix[] = "\xC0\xAF\xC0\xFA\xC0\xCE\xC5\xCD\xC6\xE4\xC0\xCC\xBD\xBA\\UIadventurerAgency\\";
|
||||
constexpr char prefix[] = "유저인터페이스\\UIadventurerAgency\\";
|
||||
const char* jobs[] = {"def", "heal", "atk", "buf"};
|
||||
const bool flags[] = {this->info.tanker, this->info.healer, this->info.dealer, this->info.assist};
|
||||
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@
|
|||
#include <cstdlib>
|
||||
|
||||
namespace {
|
||||
constexpr char prefix[] = "\xC0\xAF\xC0\xFA\xC0\xCE\xC5\xCD\xC6\xE4\xC0\xCC\xBD\xBA\\";
|
||||
constexpr char prefix[] = "유저인터페이스\\";
|
||||
|
||||
// OFFSET: 0x007BBFC0
|
||||
// FUNCTION: fn_09295
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@
|
|||
#include <cstdio>
|
||||
|
||||
namespace {
|
||||
constexpr char prefix[] = "\xC0\xAF\xC0\xFA\xC0\xCE\xC5\xCD\xC6\xE4\xC0\xCC\xBD\xBA\\";
|
||||
constexpr char prefix[] = "유저인터페이스\\";
|
||||
}
|
||||
|
||||
// OFFSET: 0x007BB030
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
|
||||
#include <new>
|
||||
|
||||
#define SHORTCUT_RESOURCE "\xC0\xAF\xC0\xFA\xC0\xCE\xC5\xCD\xC6\xE4\xC0\xCC\xBD\xBA"
|
||||
#define SHORTCUT_RESOURCE "유저인터페이스"
|
||||
|
||||
// OFFSET: 0x0092A190
|
||||
// FUNCTION: fn_12654
|
||||
|
|
@ -22,8 +22,8 @@ ShortcutControls ShortcutControls::Create(
|
|||
result.bank = new (std::nothrow) UICheckBox(windows, buttons);
|
||||
result.bank->SetSize(10, 26);
|
||||
result.bank->SetImages(
|
||||
"\xC0\xAF\xC0\xFA\xC0\xCE\xC5\xCD\xC6\xE4\xC0\xCC\xBD\xBA\\shortcut_2_bts.bmp",
|
||||
"\xC0\xAF\xC0\xFA\xC0\xCE\xC5\xCD\xC6\xE4\xC0\xCC\xBD\xBA\\shortcut_1_bts.bmp", ""
|
||||
"유저인터페이스\\shortcut_2_bts.bmp",
|
||||
"유저인터페이스\\shortcut_1_bts.bmp", ""
|
||||
);
|
||||
result.bank->SetId(549);
|
||||
result.bank->Move(3, 4);
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@
|
|||
#include <cstring>
|
||||
|
||||
namespace {
|
||||
constexpr char prefix[] = "\xC0\xAF\xC0\xFA\xC0\xCE\xC5\xCD\xC6\xE4\xC0\xCC\xBD\xBA";
|
||||
constexpr char prefix[] = "유저인터페이스";
|
||||
|
||||
// INLINED
|
||||
CBitmapRes* Load(ResourceMgr& resources, const char* tail) {
|
||||
|
|
|
|||
|
|
@ -56,7 +56,7 @@ namespace {
|
|||
UITextViewer::UITextViewer(UIWindowContext& windows, UITextViewerContext& text)
|
||||
: UIListBox(windows, text.list), splitTipLinks(0), outline(0), bold(0), m_text(&text) {
|
||||
this->lineHeight = 18;
|
||||
constexpr char path[] = "\xC0\xAF\xC0\xFA\xC0\xCE\xC5\xCD\xC6\xE4\xC0\xCC\xBD\xBA\\colorchip.bmp";
|
||||
constexpr char path[] = "유저인터페이스\\colorchip.bmp";
|
||||
const auto* chip = static_cast<CBitmapRes*>(text.list.resources.Load(path));
|
||||
const auto& image = chip->image;
|
||||
const std::uint32_t pixel = image.width > 18 && image.height > 2 ? image.pixels[18 + 2 * image.width] : 0x00FF0000u;
|
||||
|
|
|
|||
|
|
@ -189,9 +189,9 @@ UIBitmapButton* UIFrameWnd::AddCloseButton(UIButtonContext& controls, const char
|
|||
}
|
||||
|
||||
UIBitmapButton* button = new UIBitmapButton(*this->m_context, controls);
|
||||
button->SetBitmap("\xC0\xAF\xC0\xFA\xC0\xCE\xC5\xCD\xC6\xE4\xC0\xCC\xBD\xBA\\basic_interface\\sys_close_off.bmp", 0, 0);
|
||||
button->SetBitmap("\xC0\xAF\xC0\xFA\xC0\xCE\xC5\xCD\xC6\xE4\xC0\xCC\xBD\xBA\\basic_interface\\sys_close_on.bmp", 1, 0);
|
||||
button->SetBitmap("\xC0\xAF\xC0\xFA\xC0\xCE\xC5\xCD\xC6\xE4\xC0\xCC\xBD\xBA\\basic_interface\\sys_close_on.bmp", 2, 0);
|
||||
button->SetBitmap("유저인터페이스\\basic_interface\\sys_close_off.bmp", 0, 0);
|
||||
button->SetBitmap("유저인터페이스\\basic_interface\\sys_close_on.bmp", 1, 0);
|
||||
button->SetBitmap("유저인터페이스\\basic_interface\\sys_close_on.bmp", 2, 0);
|
||||
button->SetSize(button->BitmapWidth(), button->BitmapHeight());
|
||||
button->Move(width - 14, 3);
|
||||
button->SetId(201);
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@
|
|||
#include <shellapi.h>
|
||||
|
||||
namespace {
|
||||
constexpr char prefix[] = "\xC0\xAF\xC0\xFA\xC0\xCE\xC5\xCD\xC6\xE4\xC0\xCC\xBD\xBA\\";
|
||||
constexpr char prefix[] = "유저인터페이스\\";
|
||||
|
||||
std::uint32_t Palette(ResourceMgr& resources, int x, int y) {
|
||||
const auto* resource = static_cast<CBitmapRes*>(resources.Load((std::string(prefix) + "colorchip.bmp").c_str()));
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@
|
|||
|
||||
#include <limits>
|
||||
|
||||
// INLINED
|
||||
inline int TruncateToInt(double value) {
|
||||
return value > -2147483649.0 && value < 2147483648.0 ? static_cast<int>(value) : std::numeric_limits<int>::min();
|
||||
}
|
||||
|
|
|
|||
20
compile.json
20
compile.json
|
|
@ -20,6 +20,8 @@
|
|||
"-std:c++20",
|
||||
"-MD",
|
||||
"/FS",
|
||||
"/source-charset:utf-8",
|
||||
"/execution-charset:.949",
|
||||
"-c"
|
||||
],
|
||||
[
|
||||
|
|
@ -40,6 +42,8 @@
|
|||
"-std:c++20",
|
||||
"-MD",
|
||||
"/FS",
|
||||
"/source-charset:utf-8",
|
||||
"/execution-charset:.949",
|
||||
"-c"
|
||||
],
|
||||
[
|
||||
|
|
@ -64,6 +68,8 @@
|
|||
"-std:c++20",
|
||||
"-MD",
|
||||
"/FS",
|
||||
"/source-charset:utf-8",
|
||||
"/execution-charset:.949",
|
||||
"-c"
|
||||
],
|
||||
[
|
||||
|
|
@ -85,6 +91,8 @@
|
|||
"-std:c++20",
|
||||
"-MD",
|
||||
"/FS",
|
||||
"/source-charset:utf-8",
|
||||
"/execution-charset:.949",
|
||||
"-c"
|
||||
],
|
||||
[
|
||||
|
|
@ -109,6 +117,8 @@
|
|||
"-std:c++20",
|
||||
"-MD",
|
||||
"/FS",
|
||||
"/source-charset:utf-8",
|
||||
"/execution-charset:.949",
|
||||
"-c"
|
||||
],
|
||||
[
|
||||
|
|
@ -128,6 +138,8 @@
|
|||
"-std:c++20",
|
||||
"-MD",
|
||||
"/FS",
|
||||
"/source-charset:utf-8",
|
||||
"/execution-charset:.949",
|
||||
"-c"
|
||||
],
|
||||
[
|
||||
|
|
@ -141,6 +153,8 @@
|
|||
"/DNDEBUG",
|
||||
"-MD",
|
||||
"/FS",
|
||||
"/source-charset:utf-8",
|
||||
"/execution-charset:.949",
|
||||
"-c"
|
||||
],
|
||||
[
|
||||
|
|
@ -156,6 +170,8 @@
|
|||
"/DNDEBUG",
|
||||
"-MD",
|
||||
"/FS",
|
||||
"/source-charset:utf-8",
|
||||
"/execution-charset:.949",
|
||||
"-c"
|
||||
],
|
||||
[
|
||||
|
|
@ -175,6 +191,8 @@
|
|||
"-std:c++20",
|
||||
"-MD",
|
||||
"/FS",
|
||||
"/source-charset:utf-8",
|
||||
"/execution-charset:.949",
|
||||
"-c"
|
||||
],
|
||||
[
|
||||
|
|
@ -188,6 +206,8 @@
|
|||
"/DNDEBUG",
|
||||
"-MD",
|
||||
"/FS",
|
||||
"/source-charset:utf-8",
|
||||
"/execution-charset:.949",
|
||||
"-c"
|
||||
]
|
||||
],
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue