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).
104 lines
2.7 KiB
C++
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;
|
|
} |