Complete disaster-recovery snapshot: engine/game source, game data assets, VC6 toolchain + DX SDKs, build outputs, deployed game, and _UNUSED archive. Large binaries in Git LFS; text preserved byte-for-byte (core.autocrlf=false, no eol attributes). See RECOVERY.md for the one-clone rebuild procedure.
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;
|
||
} |