Full Unicode patch with RTL Support & BiDi logic.

This commit is well documented, so no need to tell you my life story.

Full Unicode patch with RTL Support & BiDi logic.

Removed the legacy codePage, normalised to UTF8 (65001).

It also comes with:

CTRL + A : select text (highlighted)
CTRL + C : copy
CTRL + V : paste
CTRL + X : cut
CTRL + Y : redo
CTRL + Z : undo
This commit is contained in:
rtw1x1
2025-12-26 12:32:43 +00:00
parent d37607baa1
commit a955c50744
86 changed files with 4076 additions and 3839 deletions

View File

@@ -1268,7 +1268,7 @@ void CPythonNetworkStream::__ConvertEmpireText(DWORD dwEmpireID, char* szText)
bool CPythonNetworkStream::RecvChatPacket()
{
TPacketGCChat kChat;
char buf[1024 + 1];
char buf[1024 + 1];
char line[1024 + 1];
if (!Recv(sizeof(kChat), &kChat))
@@ -1280,16 +1280,6 @@ bool CPythonNetworkStream::RecvChatPacket()
return false;
buf[uChatSize]='\0';
// 유럽 아랍 버전 처리
// "이름: 내용" 입력을 "내용: 이름" 순서로 출력하기 위해 탭(0x08)을 넣음
// 탭을 아랍어 기호로 처리해 (영어1) : (영어2) 로 입력되어도 (영어2) : (영어1) 로 출력하게 만든다
if (LocaleService_IsEUROPE() && GetDefaultCodePage() == 1256)
{
char * p = strchr(buf, ':');
if (p && p[1] == ' ')
p[1] = 0x08;
}
if (kChat.type >= CHAT_TYPE_MAX_NUM)
return true;
@@ -4030,7 +4020,6 @@ bool CPythonNetworkStream::RecvWalkModePacket()
bool CPythonNetworkStream::RecvChangeSkillGroupPacket()
{
TPacketGCChangeSkillGroup ChangeSkillGroup;
if (!Recv(sizeof(ChangeSkillGroup), &ChangeSkillGroup))
return false;
@@ -4038,7 +4027,6 @@ bool CPythonNetworkStream::RecvChangeSkillGroupPacket()
CPythonPlayer::Instance().NEW_ClearSkillData();
__RefreshCharacterWindow();
return true;
}
@@ -4164,30 +4152,6 @@ bool CPythonNetworkStream::RecvNPCList()
bool CPythonNetworkStream::__SendCRCReportPacket()
{
/*
DWORD dwProcessCRC = 0;
DWORD dwFileCRC = 0;
CFilename exeFileName;
//LPCVOID c_pvBaseAddress = NULL;
GetExeCRC(dwProcessCRC, dwFileCRC);
CFilename strRootPackFileName = CEterPackManager::Instance().GetRootPacketFileName();
strRootPackFileName.ChangeDosPath();
TPacketCGCRCReport kReportPacket;
kReportPacket.header = HEADER_CG_CRC_REPORT;
kReportPacket.byPackMode = CEterPackManager::Instance().GetSearchMode();
kReportPacket.dwBinaryCRC32 = dwFileCRC;
kReportPacket.dwProcessCRC32 = dwProcessCRC;
kReportPacket.dwRootPackCRC32 = GetFileCRC32(strRootPackFileName.c_str());
if (!Send(sizeof(kReportPacket), &kReportPacket))
Tracef("SendClientReportPacket Error");
return SendSequence();
*/
return true;
}
@@ -4200,29 +4164,17 @@ bool CPythonNetworkStream::SendClientVersionPacket()
filename = CFileNameHelper::NoPath(filename);
CFileNameHelper::ChangeDosPath(filename);
if (LocaleService_IsEUROPE() && false == LocaleService_IsYMIR())
{
TPacketCGClientVersion2 kVersionPacket;
kVersionPacket.header = HEADER_CG_CLIENT_VERSION2;
strncpy(kVersionPacket.filename, filename.c_str(), sizeof(kVersionPacket.filename)-1);
strncpy(kVersionPacket.timestamp, "1215955205", sizeof(kVersionPacket.timestamp)-1); // # python time.time 앞자리
//strncpy(kVersionPacket.timestamp, __TIMESTAMP__, sizeof(kVersionPacket.timestamp)-1); // old_string_ver
//strncpy(kVersionPacket.timestamp, "1218055205", sizeof(kVersionPacket.timestamp)-1); // new_future
//strncpy(kVersionPacket.timestamp, "1214055205", sizeof(kVersionPacket.timestamp)-1); // old_past
TPacketCGClientVersion kVersionPacket{};
kVersionPacket.header = HEADER_CG_CLIENT_VERSION;
if (!Send(sizeof(kVersionPacket), &kVersionPacket))
Tracef("SendClientReportPacket Error");
}
else
{
TPacketCGClientVersion kVersionPacket;
kVersionPacket.header = HEADER_CG_CLIENT_VERSION;
strncpy(kVersionPacket.filename, filename.c_str(), sizeof(kVersionPacket.filename)-1);
strncpy(kVersionPacket.timestamp, __TIMESTAMP__, sizeof(kVersionPacket.timestamp)-1);
strncpy(kVersionPacket.filename, filename.c_str(), sizeof(kVersionPacket.filename) - 1);
kVersionPacket.filename[sizeof(kVersionPacket.filename) - 1] = '\0';
snprintf(kVersionPacket.timestamp, sizeof(kVersionPacket.timestamp), "%u", 1215955205u);
if (!Send(sizeof(kVersionPacket), &kVersionPacket))
Tracef("SendClientReportPacket Error");
if (!Send(sizeof(kVersionPacket), &kVersionPacket))
Tracef("SendClientReportPacket Error");
}
return SendSequence();
}