Files
firestorm/Gameleap/code/mw4/Code/MW4Application/Eula.cpp
T
dicion af416960fa 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).
2026-07-18 13:10:31 -05:00

104 lines
2.7 KiB
C++

#include"MW4AppHeaders.hpp"
#include<Windows.h>
//
//Do not use ....\EulaTest\\1.0 as the key for your game; use your game name and version instead...
// PLEASE NOTE: do not place backslashes on beginning or end of regkey.
//
#define GAME_REG_KEY "Software\\Microsoft\\Microsoft Games\\MechWarrior Vengeance"
typedef DWORD (*EBUPROC) (LPCTSTR lpRegKeyLocation, LPCTSTR lpEULAFileName, LPCSTR lpWarrantyFileName, BOOL fCheckForFirstRun);
//
//The game application's .RC file should define strings for the EULA and WARRANTY pathnames...
//
bool FirstRunEula(const char *eula_filename,const char *warranty_filename)
{
#if 1 // jcem
return true;
#else // jcem
EBUPROC pfnEBUEula;
HINSTANCE hMod;
hMod = LoadLibrary("Assets\\binaries\\EBUEula.dll");
if (NULL == hMod)
hMod = LoadLibrary("EBUEula.dll");
if (NULL == hMod) // can't attach to DLL
{
STOP(("Cannot Load EBUEula.dll"));
}
pfnEBUEula = (EBUPROC) GetProcAddress(hMod, "EBUEula");
if (NULL == pfnEBUEula) // can't find entry point
{
FreeLibrary(hMod);
STOP(("Cannot Find Entry Point to EBUEula.dll"));
}
//
//This call enables both EULA and warranty accepting/viewing/printing. If your
//game doesn't ship with a WARRANTY file, specifiy NULL instead of szWarranty...
//The code below, for instance, works with both OEM and retail builds...
//
const char *pszWarrantyParam = 0xFFFFFFFF != GetFileAttributes(warranty_filename) ? warranty_filename : NULL;
BOOL fAllowGameToRun = pfnEBUEula(GAME_REG_KEY, eula_filename, pszWarrantyParam, TRUE);
FreeLibrary(hMod);
return fAllowGameToRun?true:false;
#endif // jcem
}
bool EulaDeclineMsg(const char *str,const char *caption)
{
return IDOK==MessageBox(NULL,str,caption,MB_OKCANCEL);
}
bool ExecuteAndWait(const char *exename)
{
STARTUPINFO sinfo;
PROCESS_INFORMATION pinfo;
ZeroMemory(&sinfo,sizeof(sinfo));
sinfo.cb=sizeof(sinfo);
if(CreateProcess(exename,NULL,NULL,NULL,FALSE,NULL,NULL,NULL,&sinfo,&pinfo)==NULL) return false;
DWORD eflag;
do
{
if(GetExitCodeProcess(pinfo.hProcess,&eflag)==0) return false;
}
while(eflag==STILL_ACTIVE);
return true;
}
extern HWND hWindow;
extern void __stdcall EnterWindowMode();
extern void __stdcall EnterFullScreenMode();
bool WinMessageBox(const char *str,const char *msg,int mode)
{
bool res=false;
bool needflip=Environment.fullScreen;
if(needflip) gos_EnableSetting(gos_Set_MinMaxApp,0);
switch(mode)
{
case 0:
res=(IDRETRY==MessageBox(hWindow,msg,str,MB_RETRYCANCEL));
break;
case 1:
res=(IDOK==MessageBox(hWindow,msg,str,MB_OK));
break;
}
if(needflip) gos_EnableSetting(gos_Set_MinMaxApp,1);
return res;
}