Translate Korean comments/strings to English; fix UTF-8 encoding across source tree

Korean translation (84 source files, 876 lines):
- Translated all EUC-KR/CP949 Korean developer comments to English across
  84 source files in Gameleap/code/. Zero Korean bytes remain outside the
  intentional font-table headers (D3FFontEdit2/fontedit all.h etc.).
- Comment markers: //상훈 앞/뒤 -> //sanghoon begin/end (Sang-hun's code
  region markers); //상훈짱 begin/end, //상훈.. variants; // 鉉 -> // hyun
  (second developer's markers); // 鉉 - start/end patterns.
- Functional string translations in recscore.cpp (mw4 + mw4print copies):
  body-part return values (왼발/오른발/etc. -> Left Leg/Right Leg/etc.),
  kill-announcer format strings (~30 entries), and the nonmfc.h assert dialog.
- GosView profiler: 킪 -> us (microseconds) in timing display strings.
- Network/socket code (ctcl.cpp, mugsocs.h, ctime.cpp across Launcher/
  MW4Application/MW4GameEd2/AnimScript): state-machine comments, socket
  ID comments, login/session management comments.
- render.hpp CHSH_Device member comments; GUIRadarManager.cpp drawing
  routine comments; hudchat/hudcomp2/huddamage/hudmap/hudweapon/hudtarg
  HUD component comments.
- DXRasterizer.cpp: cleaned residual U+FFFD replacement characters left
  from a prior partial encoding conversion.

UTF-8 encoding cleanup (76+ files):
- Latin-1 single bytes converted to proper UTF-8 multi-byte sequences:
  © (0xA9) in 3dsmax4/Maxscrpt Autodesk/Wainwright copyright headers,
  ® (0xAE) in gosHelp/Remote.cpp, · (0xB7) bullet points in ai command.hpp,
  Û (0xDB) in SafeChain_Test.cpp tool header,
  ß (0xDF) in AnimationSuite version strings (8 files).
- Font lookup tables (D3FFontEdit2/, fontedit/ *.h) intentionally left
  as-is: raw byte values are C array data, not text.

Language DLL:
- Replaced Gameleap/mw4/Language.dll (original Korean binary) and
  MW4/Language.dll with freshly built English version from
  Language - Win32 English config (Language.dsp). Fixes Korean button
  labels in the GameOS exception/crash dialog (??? ??... / ?? / ???
  were showing instead of More Details.../Continue/Exit).
This commit is contained in:
2026-07-18 13:10:31 -05:00
parent eaa5fd3bbe
commit af416960fa
171 changed files with 973 additions and 973 deletions
+37 -37
View File
@@ -1,5 +1,5 @@
#include "MW4Headers.hpp"
//상훈 앞
//sanghoon begin
#include "MWMission.hpp"
#include "VehicleInterface.hpp"
#include "Vehicle.hpp"
@@ -21,7 +21,7 @@
#include "mech.hpp"
#include "mechlabheaders.h"
#include "bucket.hpp"
//상훈 뒤
//sanghoon end
#include "hudcomp.hpp"
#include "HUDChat.hpp"
#include "hudcomm.hpp"
@@ -30,7 +30,7 @@
#include "mwapplication.hpp"
#include "..\missionlang\resource.h"
//상훈짱 begin
//sanghoon begin
#include <windows.h>
#include <ddraw.h>
#include <d3d.h>
@@ -43,7 +43,7 @@
extern Scalar g_fLastStartTime;
extern Adept::ReplicatorID g_LastTarget;
//상훈짱 end
//sanghoon end
extern "C" char* _stdcall CharPrevA(const char* lpszStart, const char* lpszCurrent);
#define CharPrev CharPrevA
@@ -164,7 +164,7 @@ void HUDChat::Reset (void)
// KillData ();
comm = Cast_Object (HUDComm *, MWGUIManager::GetInstance ()->Component (MWGUIManager::HUD_COMM));
//mr_device의 맵 데이타를 로드한다.
//Load map data for mr_device.
if(hsh_mrdev_initialized){
extern char AssetsDirectory1[MAX_PATH];
const Map__GameModel *model = Map::GetInstance ()->GetGameModel ();
@@ -228,12 +228,12 @@ static const float sm1_offset[][2]={
{ 0*2, 0*2}, //special2
};
//number: 0,1,2,3 lancemate의 순서..
//part: 해당 lancemate mech의 part
//color:해당 part의 color
//number: 0,1,2,3 lancemate order..
//part: mech part of the lancemate
//color: color for this part
void RenderAux1SmallMech(int num,int part,int color)
{
//각각의 offset에 따라서 그린다.
//Draw according to each offset.
if(sm1_texture[part][2]!=0){
mfd_device.DrawTexture(
sm1_offset[part][0]+190+num*160,
@@ -598,15 +598,15 @@ void HUDChat::DrawImplementation(void)
#endif
if(draw_mr){
//미션 리뷰 내용을 그린다.
//Draw mission review content.
//_______________________________________________________________________________________________________
//
// Mech상태 및 메시지
// Mech status and messages
//_______________________________________________________________________________________________________
if(!mr_device.map_loaded){
comm = Cast_Object (HUDComm *, MWGUIManager::GetInstance ()->Component (MWGUIManager::HUD_COMM));
//mr_device의 맵 데이타를 로드한다.
//Load map data for mr_device.
extern char AssetsDirectory1[MAX_PATH];
const Map__GameModel *model = Map::GetInstance ()->GetGameModel ();
char temp[256];
@@ -629,7 +629,7 @@ void HUDChat::DrawImplementation(void)
int mech_count=0;
PMechInfo pMechInfos = &g_aMechInfos[0];
{
//현재 다른 메크들의 이름 /Kill/Death를 그린다.
//Draw the name/Kill/Death stats of other mechs.
mech_count=MWApplication::GetInstance()->GetMechInfos(2, g_aMechInfos, g_TeamOrderOthers);
g_TeamOrderCount=mech_count;
if (mech_count > 8) // jcem
@@ -657,7 +657,7 @@ void HUDChat::DrawImplementation(void)
mr_device.pD3DDevice->SetTexture(0,mr_device.pDDSTexture);
//메크의 Damage 상태를 그린다.
//Draw mech Damage status.
for (j=0;j<11;j++){
if (j==7 || j==9 || j==10)
continue;
@@ -669,7 +669,7 @@ void HUDChat::DrawImplementation(void)
}
}
//메크의 Callsign/Score/Kills/Deaths를 그린다.
//Draw mech Callsign/Score/Kills/Deaths.
int nScore = 0, nKills = 0, nDeaths = 0;
callsign=pMechInfos->m_pcszName;
if (hud) {
@@ -695,7 +695,7 @@ void HUDChat::DrawImplementation(void)
pMechInfos++;
}
//채팅장의 내용을 그린다.
//Draw the contents of the chat window.
stlport::list<ChatData>::iterator iter;
int cy=300+30;//chat_y
for (iter = m_Messages.begin ();iter != m_Messages.end ();iter++){
@@ -733,8 +733,8 @@ void HUDChat::DrawImplementation(void)
int i;
// Secondary Maps
//맵과 맵 경계선을 그린다. (게임중에 변하지 않으므로 한번만 그린다.)
//DrawMapBoundary();//다른 버전 구현할 것...
//Draw map and boundary. (Drawn once since it does not change during game.)
//DrawMapBoundary();//Implement alternate version...
mr_device.pD3DDevice->SetRenderState(D3DRENDERSTATE_CLIPPING ,TRUE);
mr_device.pD3DDevice->SetTexture(0,mr_device.pDDSMapTexture);
mr_device.pD3DDevice->SetRenderState( D3DRENDERSTATE_ALPHABLENDENABLE, TRUE );
@@ -748,7 +748,7 @@ void HUDChat::DrawImplementation(void)
//MechWarrior4::VehicleInterface* p = MechWarrior4::VehicleInterface::GetInstance();
//미션 리뷰에서는 현재 메크가 중심에 표시되므로 맵이 스크롤 되어 표시된다.
//In mission review, current mech is shown at center so the map scrolls.
float MR_MSF=4.0f;//Mission Review - Map Scale Factor
const float ViewSize=300.0f;//Mission Review - Map Size
const float ViewLMargin=10;
@@ -758,9 +758,9 @@ void HUDChat::DrawImplementation(void)
D3DVIEWPORT7 viewport={ViewLMargin,ViewTMargin,ViewSize,ViewSize,0.0f,1.0f};
mr_device.pD3DDevice->SetViewport(&viewport);
///////////////////// MAP 시작 //////////////////////
///////////////////// MAP BEGIN //////////////////////
//Focus Mech를 설정하는 루틴을 넣어야한다.
//Need to add routine to set Focus Mech.
Scalar multx,multz;
@@ -787,10 +787,10 @@ void HUDChat::DrawImplementation(void)
mr_device.pD3DDevice->SetTexture(0,mr_device.pDDSTexture);
//맵상에 메크들들 그리기.텍스트 먼저..
//Draw mechs on map. Text first..
for(i=0,pMechInfos = &g_aMechInfos[0];i<mech_count;i++,pMechInfos++){
Mech* pMech = pMechInfos->m_pMech;
//메크의 위치를 구할 것..
//TODO: get mech position..
Stuff::Point3D pos;
@@ -827,10 +827,10 @@ void HUDChat::DrawImplementation(void)
color,callsign,TEXTALIGN_HCENTER|TEXTALIGN_TOP);
}
//아이콘 그리기.
//Draw icon.
for(i=0,pMechInfos = &g_aMechInfos[0];i<mech_count;i++,pMechInfos++){
Mech* pMech = pMechInfos->m_pMech;
//메크의 위치를 구할 것..
//TODO: get mech position..
Stuff::Point3D pos;
@@ -886,7 +886,7 @@ void HUDChat::DrawImplementation(void)
mr_device.pD3DDevice->SetViewport(&viewport2);
///////////////////// MAP //////////////////////
///////////////////// MAP END //////////////////////
//_______________________________________________________________________________________________________
//
@@ -894,7 +894,7 @@ void HUDChat::DrawImplementation(void)
//_______________________________________________________________________________________________________
//미션 시간 그리기...hudtimer.cpp에 DrawImplementation에서 따온것임..
//Draw mission timer... taken from DrawImplementation in hudtimer.cpp..
MWMission *mwmiss = Cast_Object (MWMission *,Mission::GetInstance ());
Verify (mwmiss);
Stuff::Scalar cur_time=mwmiss->GetMissionTime();//-mwmiss->GetMissionTime();
@@ -923,7 +923,7 @@ void HUDChat::DrawImplementation(void)
if(g_nTeamOrderMode==TEAM_MODE){
int i,j;
int size=3;
//메크들의 상태를 그린다.
//Draw mech status.
PMechInfo pMechInfos = &g_aMechInfos[1];
size=MWApplication::GetInstance()->GetMechInfos(0, g_aMechInfos, g_TeamOrderOthers);
size--;
@@ -970,7 +970,7 @@ void HUDChat::DrawImplementation(void)
pMechInfos++;
}
mfd_device.DrawMFDBackText(mfd_text_comm1);
//채팅장의 내용을 그린다.
//Draw the contents of the chat window.
stlport::list<ChatData>::iterator iter;
int cy=240;//chat_y
for (iter = m_Messages.begin ();iter != m_Messages.end ();iter++){
@@ -996,7 +996,7 @@ void HUDChat::DrawImplementation(void)
}
}else if(g_nTeamOrderMode==FREEFORALL_MODE){
//현재 다른 메크들의 이름 /Kill/Death를 그린다.
//Draw the name/Kill/Death stats of other mechs.
int size=0;
PMechInfo pMechInfos = &g_aMechInfos[1];
size=MWApplication::GetInstance()->GetMechInfos(2, g_aMechInfos, g_TeamOrderOthers);
@@ -1006,10 +1006,10 @@ void HUDChat::DrawImplementation(void)
size = 7;
int i;
//번호를 먼저 지운다.
//Clear the numbers first.
// MSL 5.03 Comm MFD
for(i=0;i<7;i++)mfd_text_comm3[i][0]=0;
//번호를 채워 넣는다.
//Fill in the numbers.
// MSL 5.03 Comm MFD
for(i=0;i<size;i++)itoa(i+1,mfd_text_comm3[i],10);
@@ -1064,8 +1064,8 @@ void HUDChat::DrawImplementation(void)
if(size.cx<160){
mfd_device.pFont[1].DrawText((float)p2->x,(float)p2->y,0xFFFFFFFF,callsign,TEXTALIGN_ORG);
}else{
//최소크기 폰트도.. 넘어선다...
//2line으로 만든다.
//Even the minimum font size is exceeded...
//Split into 2 lines.
char callsign2[128];
strcpy(callsign2,callsign);
int len2=strlen(callsign)/2;
@@ -1120,7 +1120,7 @@ void HUDChat::DrawImplementation(void)
pMechInfos++;
}
//채팅장의 내용을 그린다.
//Draw the contents of the chat window.
stlport::list<ChatData>::iterator iter;
int cy=180;//chat_y
for (iter = m_Messages.begin ();iter != m_Messages.end ();iter++){
@@ -1145,7 +1145,7 @@ void HUDChat::DrawImplementation(void)
iter = m_Messages.erase (iter);
}
/*
//MWMission.cpp에서 가져온것인
//Taken from MWMission.cpp
MWMission *mwmiss = Cast_Object (MWMission *,Mission::GetInstance ());
int death=0,kill=0;//,score
@@ -1167,7 +1167,7 @@ void HUDChat::DrawImplementation(void)
}else if(g_nTeamOrderMode==TEAM_MESSAGE2){
;//do nothing
}
//상훈 뒤
//sanghoon end
mfd_device.EndChannel();
} else {
}//hsh_initialized