mirror of
https://foundry.openuru.org/gitblit/r/CWE-ou-minkata.git
synced 2025-07-18 19:29:09 +00:00
Kill high level TransGaming support
This commit is contained in:
@ -151,30 +151,6 @@ static wchar_t s_patcherExeName[] = L"UruLauncher.exe";
|
|||||||
//============================================================================
|
//============================================================================
|
||||||
static wchar_t s_physXSetupExeName[] = L"PhysX_Setup.exe";
|
static wchar_t s_physXSetupExeName[] = L"PhysX_Setup.exe";
|
||||||
|
|
||||||
//============================================================================
|
|
||||||
// TRANSGAMING detection & dialog replacement
|
|
||||||
//============================================================================
|
|
||||||
typedef BOOL (WINAPI *IsTransgaming) (void);
|
|
||||||
typedef const char * (WINAPI *TGGetOS) (void);
|
|
||||||
typedef LPVOID (WINAPI *TGLaunchUNIXApp) (const char *pPath, const char *pMode);
|
|
||||||
typedef BOOL (WINAPI *TGUNIXAppReadLine) (LPVOID pApp, char *pBuf, int bufSize);
|
|
||||||
typedef BOOL (WINAPI *TGUNIXAppWriteLine) (LPVOID pApp, const char *pLine);
|
|
||||||
typedef BOOL (WINAPI *TGUNIXAppClose) (LPVOID pApp);
|
|
||||||
|
|
||||||
static bool TGIsCider = false;
|
|
||||||
static TGLaunchUNIXApp pTGLaunchUNIXApp;
|
|
||||||
static TGUNIXAppReadLine pTGUNIXAppReadLine;
|
|
||||||
static TGUNIXAppWriteLine pTGUNIXAppWriteLine;
|
|
||||||
static TGUNIXAppClose pTGUNIXAppClose;
|
|
||||||
|
|
||||||
#define TG_NEW_LOGIN_PATH "C:\\Program Files\\Uru Live\\Cider\\URU Live Login.app"
|
|
||||||
#define TG_NEW_LOGIN_POPEN_PATH "/transgaming/c_drive/Program Files/Uru Live/Cider/URU Live Login.app/Contents/MacOS/URU Live Login"
|
|
||||||
#define TG_OLD_LOGIN_POPEN_PATH "/URU Live Login.app/Contents/MacOS/URU Live Login"
|
|
||||||
|
|
||||||
#define TG_NEW_EULA_PATH "C:\\Program Files\\Uru Live\\Cider\\URU Live EULA.app"
|
|
||||||
#define TG_NEW_EULA_POPEN_PATH "/transgaming/c_drive/Program Files/Uru Live/Cider/URU Live EULA.app/Contents/MacOS/URU Live EULA"
|
|
||||||
#define TG_OLD_EULA_POPEN_PATH "/URU Live EULA.app/Contents/MacOS/URU Live EULA"
|
|
||||||
|
|
||||||
//============================================================================
|
//============================================================================
|
||||||
// LoginDialogParam
|
// LoginDialogParam
|
||||||
//============================================================================
|
//============================================================================
|
||||||
@ -194,176 +170,6 @@ static void AuthFailedStrings (ENetError authError,
|
|||||||
const char **ppStr1, const char **ppStr2,
|
const char **ppStr1, const char **ppStr2,
|
||||||
const wchar_t **ppWStr);
|
const wchar_t **ppWStr);
|
||||||
|
|
||||||
|
|
||||||
// Detect whether we're running under TRANSGAMING Cider
|
|
||||||
//==============================================================================
|
|
||||||
static void TGDoCiderDetection ()
|
|
||||||
{
|
|
||||||
HMODULE hMod = GetModuleHandle ("ntdll");
|
|
||||||
if (!hMod)
|
|
||||||
return;
|
|
||||||
|
|
||||||
IsTransgaming pIsTg = (IsTransgaming)GetProcAddress (hMod, "IsTransgaming");
|
|
||||||
if (!pIsTg || !pIsTg ())
|
|
||||||
return;
|
|
||||||
|
|
||||||
TGGetOS pTGOS = (TGGetOS)GetProcAddress (hMod, "TGGetOS");
|
|
||||||
const char *pOS = NULL;
|
|
||||||
if (pTGOS)
|
|
||||||
pOS = pTGOS ();
|
|
||||||
if (!pOS || strcmp (pOS, "MacOSX"))
|
|
||||||
return;
|
|
||||||
|
|
||||||
TGIsCider = true;
|
|
||||||
pTGLaunchUNIXApp = (TGLaunchUNIXApp)GetProcAddress (hMod, "TGLaunchUNIXApp");
|
|
||||||
pTGUNIXAppReadLine = (TGUNIXAppReadLine)GetProcAddress (hMod, "TGUNIXAppReadLine");
|
|
||||||
pTGUNIXAppWriteLine = (TGUNIXAppWriteLine)GetProcAddress (hMod, "TGUNIXAppWriteLine");
|
|
||||||
pTGUNIXAppClose = (TGUNIXAppClose)GetProcAddress (hMod, "TGUNIXAppClose");
|
|
||||||
}
|
|
||||||
|
|
||||||
static bool TGRunLoginDialog (LoginDialogParam *pLoginParam)
|
|
||||||
{
|
|
||||||
while (true)
|
|
||||||
{
|
|
||||||
LPVOID pApp;
|
|
||||||
if (GetFileAttributes (TG_NEW_LOGIN_PATH) != INVALID_FILE_ATTRIBUTES)
|
|
||||||
pApp = pTGLaunchUNIXApp (TG_NEW_LOGIN_POPEN_PATH, "r+");
|
|
||||||
else
|
|
||||||
pApp = pTGLaunchUNIXApp (TG_OLD_LOGIN_POPEN_PATH, "r+");
|
|
||||||
|
|
||||||
if (!pApp)
|
|
||||||
{
|
|
||||||
hsMessageBox ("Incomplete or corrupted installation!\nUnable to locate Login dialog",
|
|
||||||
"Error", hsMessageBoxNormal);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Send user/pwd/remember
|
|
||||||
pTGUNIXAppWriteLine (pApp, pLoginParam->username);
|
|
||||||
if (pLoginParam->remember)
|
|
||||||
pTGUNIXAppWriteLine (pApp, FAKE_PASS_STRING);
|
|
||||||
else
|
|
||||||
pTGUNIXAppWriteLine (pApp, "");
|
|
||||||
if (pLoginParam->remember)
|
|
||||||
pTGUNIXAppWriteLine (pApp, "y");
|
|
||||||
else
|
|
||||||
pTGUNIXAppWriteLine (pApp, "n");
|
|
||||||
|
|
||||||
if (!pTGUNIXAppReadLine (pApp, pLoginParam->username, sizeof (pLoginParam->username)))
|
|
||||||
{
|
|
||||||
pTGUNIXAppClose (pApp);
|
|
||||||
hsMessageBox ("Incomplete or corrupted installation!\nUnable to locate Login dialog",
|
|
||||||
"Error", hsMessageBoxNormal);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Check if user selected 'Cancel'
|
|
||||||
if (StrCmp (pLoginParam->username, "text:", 5) != 0)
|
|
||||||
{
|
|
||||||
pTGUNIXAppClose (pApp);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
memmove (pLoginParam->username, pLoginParam->username + 5, StrLen (pLoginParam->username) - 5);
|
|
||||||
pLoginParam->username[StrLen (pLoginParam->username) - 5] = '\0';
|
|
||||||
|
|
||||||
char Password[kMaxPasswordLength];
|
|
||||||
if (!pTGUNIXAppReadLine (pApp, Password, sizeof (Password)))
|
|
||||||
{
|
|
||||||
pTGUNIXAppClose (pApp);
|
|
||||||
hsMessageBox ("Incomplete or corrupted installation!\nLogin dialog not found or working",
|
|
||||||
"Error", hsMessageBoxNormal);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
char Remember[16];
|
|
||||||
if (!pTGUNIXAppReadLine (pApp, Remember, sizeof (Remember)))
|
|
||||||
{
|
|
||||||
pTGUNIXAppClose (pApp);
|
|
||||||
hsMessageBox ("Incomplete or corrupted installation!\nLogin dialog not found or working",
|
|
||||||
"Error", hsMessageBoxNormal);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
pTGUNIXAppClose (pApp);
|
|
||||||
|
|
||||||
pLoginParam->remember = (Remember[0] == 'y');
|
|
||||||
SaveUserPass (pLoginParam, Password);
|
|
||||||
|
|
||||||
// Do login & see if it failed
|
|
||||||
ENetError auth;
|
|
||||||
bool cancelled = AuthenticateNetClientComm(&auth, NULL);
|
|
||||||
|
|
||||||
if (IS_NET_SUCCESS (auth) && !cancelled)
|
|
||||||
break;
|
|
||||||
|
|
||||||
if (!cancelled)
|
|
||||||
{
|
|
||||||
const char *pStr1, *pStr2;
|
|
||||||
const wchar_t *pWStr;
|
|
||||||
unsigned int Len;
|
|
||||||
char *pTmpStr;
|
|
||||||
|
|
||||||
AuthFailedStrings (auth, &pStr1, &pStr2, &pWStr);
|
|
||||||
|
|
||||||
Len = StrLen (pStr1) + 1;
|
|
||||||
if (pStr2)
|
|
||||||
Len += StrLen (pStr2) + 2;
|
|
||||||
if (pWStr)
|
|
||||||
Len += StrLen (pWStr) + 2;
|
|
||||||
|
|
||||||
pTmpStr = new char[Len];
|
|
||||||
StrCopy (pTmpStr, pStr1, StrLen (pStr1));
|
|
||||||
if (pStr2)
|
|
||||||
{
|
|
||||||
StrCopy (pTmpStr + StrLen (pTmpStr), "\n\n", 2);
|
|
||||||
StrCopy (pTmpStr + StrLen (pTmpStr), pStr2, StrLen (pStr2));
|
|
||||||
}
|
|
||||||
if (pWStr)
|
|
||||||
{
|
|
||||||
StrCopy (pTmpStr + StrLen (pTmpStr), "\n\n", 2);
|
|
||||||
StrToAnsi (pTmpStr + StrLen (pTmpStr), pWStr, StrLen (pWStr));
|
|
||||||
}
|
|
||||||
|
|
||||||
hsMessageBox (pTmpStr, "Error", hsMessageBoxNormal);
|
|
||||||
delete [] pTmpStr;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
NetCommDisconnect();
|
|
||||||
};
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool TGRunTOSDialog ()
|
|
||||||
{
|
|
||||||
char Buf[16];
|
|
||||||
LPVOID pApp;
|
|
||||||
|
|
||||||
if (GetFileAttributes (TG_NEW_EULA_PATH) != INVALID_FILE_ATTRIBUTES)
|
|
||||||
pApp = pTGLaunchUNIXApp (TG_NEW_EULA_POPEN_PATH, "r");
|
|
||||||
else
|
|
||||||
pApp = pTGLaunchUNIXApp (TG_OLD_EULA_POPEN_PATH, "r");
|
|
||||||
|
|
||||||
if (!pApp)
|
|
||||||
{
|
|
||||||
hsMessageBox ("Incomplete or corrupted installation!\nTOS dialog not found or working",
|
|
||||||
"Error", hsMessageBoxNormal);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!pTGUNIXAppReadLine (pApp, Buf, sizeof (Buf)))
|
|
||||||
{
|
|
||||||
hsMessageBox ("Incomplete or corrupted installation!\nTOS dialog not found or working",
|
|
||||||
"Error", hsMessageBoxNormal);
|
|
||||||
pTGUNIXAppClose (pApp);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
pTGUNIXAppClose (pApp);
|
|
||||||
|
|
||||||
return (StrCmp (Buf, "accepted") == 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
void DebugMsgF(const char* format, ...);
|
void DebugMsgF(const char* format, ...);
|
||||||
|
|
||||||
// Handles all the windows messages we might receive
|
// Handles all the windows messages we might receive
|
||||||
@ -1027,10 +833,9 @@ static void SaveUserPass (LoginDialogParam *pLoginParam, char *password)
|
|||||||
}
|
}
|
||||||
|
|
||||||
NetCommSetAccountUsernamePassword(theUser.ToWchar(), pLoginParam->namePassHash);
|
NetCommSetAccountUsernamePassword(theUser.ToWchar(), pLoginParam->namePassHash);
|
||||||
if (TGIsCider)
|
|
||||||
NetCommSetAuthTokenAndOS(nil, L"mac");
|
// FIXME: Real OS detection
|
||||||
else
|
NetCommSetAuthTokenAndOS(nil, L"win");
|
||||||
NetCommSetAuthTokenAndOS(nil, L"win");
|
|
||||||
|
|
||||||
wchar_t fileAndPath[MAX_PATH];
|
wchar_t fileAndPath[MAX_PATH];
|
||||||
PathGetInitDirectory(fileAndPath, arrsize(fileAndPath));
|
PathGetInitDirectory(fileAndPath, arrsize(fileAndPath));
|
||||||
@ -1421,8 +1226,6 @@ int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR lpCmdLine, int nC
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
TGDoCiderDetection ();
|
|
||||||
|
|
||||||
#ifdef PLASMA_EXTERNAL_RELEASE
|
#ifdef PLASMA_EXTERNAL_RELEASE
|
||||||
// if the client was started directly, run the patcher, and shutdown
|
// if the client was started directly, run the patcher, and shutdown
|
||||||
STARTUPINFOW si;
|
STARTUPINFOW si;
|
||||||
@ -1547,24 +1350,16 @@ int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR lpCmdLine, int nC
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (doIntroDialogs) {
|
if (doIntroDialogs) {
|
||||||
if (TGIsCider)
|
needExit = ::DialogBoxParam( hInst, MAKEINTRESOURCE( IDD_URULOGIN_MAIN ), NULL, UruLoginDialogProc, (LPARAM)&loginParam ) <= 0;
|
||||||
needExit = !TGRunLoginDialog(&loginParam);
|
|
||||||
else if (::DialogBoxParam( hInst, MAKEINTRESOURCE( IDD_URULOGIN_MAIN ), NULL, UruLoginDialogProc, (LPARAM)&loginParam ) <= 0)
|
|
||||||
needExit = true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (doIntroDialogs && !needExit) {
|
if (doIntroDialogs && !needExit) {
|
||||||
if (TGIsCider)
|
HINSTANCE hRichEdDll = LoadLibrary("RICHED20.DLL");
|
||||||
needExit = !TGRunTOSDialog ();
|
INT_PTR val = ::DialogBoxParam( hInst, MAKEINTRESOURCE( IDD_URULOGIN_EULA ), NULL, UruTOSDialogProc, (LPARAM)hInst);
|
||||||
else
|
FreeLibrary(hRichEdDll);
|
||||||
{
|
if (val <= 0) {
|
||||||
HINSTANCE hRichEdDll = LoadLibrary("RICHED20.DLL");
|
DWORD error = GetLastError();
|
||||||
INT_PTR val = ::DialogBoxParam( hInst, MAKEINTRESOURCE( IDD_URULOGIN_EULA ), NULL, UruTOSDialogProc, (LPARAM)hInst);
|
needExit = true;
|
||||||
FreeLibrary(hRichEdDll);
|
|
||||||
if (val <= 0) {
|
|
||||||
DWORD error = GetLastError();
|
|
||||||
needExit = true;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -58,11 +58,9 @@ You can contact Cyan Worlds, Inc. by email legal@cyan.com
|
|||||||
***/
|
***/
|
||||||
#ifndef PLASMA_EXTERNAL_RELEASE
|
#ifndef PLASMA_EXTERNAL_RELEASE
|
||||||
static const wchar_t s_manifest[] = L"Internal";
|
static const wchar_t s_manifest[] = L"Internal";
|
||||||
static const wchar_t s_macmanifest[] = L"macInternal";
|
|
||||||
static const wchar_t s_thinmanifest[] = L"ThinInternal";
|
static const wchar_t s_thinmanifest[] = L"ThinInternal";
|
||||||
#else
|
#else
|
||||||
static const wchar_t s_manifest[] = L"External";
|
static const wchar_t s_manifest[] = L"External";
|
||||||
static const wchar_t s_macmanifest[] = L"macExternal";
|
|
||||||
static const wchar_t s_thinmanifest[] = L"ThinExternal";
|
static const wchar_t s_thinmanifest[] = L"ThinExternal";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -760,10 +758,7 @@ static void ThinManifestCallback (
|
|||||||
StrPrintf(path, arrsize(path), "%s%S", s_workingDir, manifest[i].clientName);
|
StrPrintf(path, arrsize(path), "%s%S", s_workingDir, manifest[i].clientName);
|
||||||
if(!MD5Check(path, manifest[i].md5)){
|
if(!MD5Check(path, manifest[i].md5)){
|
||||||
s_patchComplete = false;
|
s_patchComplete = false;
|
||||||
if (info->IsTGCider)
|
NetCliFileManifestRequest(ManifestCallback, info, s_manifest, info->buildId);
|
||||||
NetCliFileManifestRequest(ManifestCallback, info, s_macmanifest, info->buildId);
|
|
||||||
else
|
|
||||||
NetCliFileManifestRequest(ManifestCallback, info, s_manifest, info->buildId);
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
PatchInfo patchInfo;
|
PatchInfo patchInfo;
|
||||||
|
@ -108,30 +108,6 @@ struct SetBytesRemainingEvent : WndEvent {
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
//============================================================================
|
|
||||||
// TRANSGAMING detection & dialog replacement
|
|
||||||
//============================================================================
|
|
||||||
typedef BOOL (WINAPI *IsTransgaming) (void);
|
|
||||||
typedef const char * (WINAPI *TGGetOS) (void);
|
|
||||||
typedef LPVOID (WINAPI *TGLaunchUNIXApp) (const char *pPath, const char *pMode);
|
|
||||||
typedef BOOL (WINAPI *TGUNIXAppReadLine) (LPVOID pApp, char *pBuf, int bufSize);
|
|
||||||
typedef BOOL (WINAPI *TGUNIXAppWriteLine) (LPVOID pApp, const char *pLine);
|
|
||||||
typedef BOOL (WINAPI *TGUNIXAppClose) (LPVOID pApp);
|
|
||||||
|
|
||||||
static bool TGIsCider = false;
|
|
||||||
static void *pTGApp = NULL;
|
|
||||||
static TGLaunchUNIXApp pTGLaunchUNIXApp;
|
|
||||||
static TGUNIXAppReadLine pTGUNIXAppReadLine;
|
|
||||||
static TGUNIXAppWriteLine pTGUNIXAppWriteLine;
|
|
||||||
static TGUNIXAppClose pTGUNIXAppClose;
|
|
||||||
|
|
||||||
#define TG_NEW_DIALOG_PATH "C:\\Program Files\\Uru Live\\Cider\\URU Live Updater.app"
|
|
||||||
#define TG_NEW_DIALOG_POPEN_PATH "/transgaming/c_drive/Program Files/Uru Live/Cider/URU Live Updater.app/Contents/MacOS/URU Live Updater"
|
|
||||||
#define TG_OLD_DIALOG_POPEN_PATH "/URU Live Updater.app/Contents/MacOS/URU Live Updater"
|
|
||||||
#define TG_CUR_FRAMEWORK_FILE "C:\\Program Files\\Uru Live\\Cider\\current.txt"
|
|
||||||
#define TG_LATEST_FRAMEWORK_FILE "C:\\Program Files\\Uru Live\\Cider\\Frameworks\\version.txt"
|
|
||||||
|
|
||||||
|
|
||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
*
|
*
|
||||||
* Private data
|
* Private data
|
||||||
@ -163,32 +139,6 @@ static char s_curlError[CURL_ERROR_SIZE];
|
|||||||
*
|
*
|
||||||
***/
|
***/
|
||||||
|
|
||||||
// Detect whether we're running under TRANSGAMING Cider
|
|
||||||
//==============================================================================
|
|
||||||
static void TGDoCiderDetection () {
|
|
||||||
|
|
||||||
HMODULE hMod = GetModuleHandle ("ntdll");
|
|
||||||
if (!hMod)
|
|
||||||
return;
|
|
||||||
|
|
||||||
IsTransgaming pIsTg = (IsTransgaming)GetProcAddress (hMod, "IsTransgaming");
|
|
||||||
if (!pIsTg || !pIsTg ())
|
|
||||||
return;
|
|
||||||
|
|
||||||
TGGetOS pTGOS = (TGGetOS)GetProcAddress (hMod, "TGGetOS");
|
|
||||||
const char *pOS = NULL;
|
|
||||||
if (pTGOS)
|
|
||||||
pOS = pTGOS ();
|
|
||||||
if (!pOS || strcmp (pOS, "MacOSX"))
|
|
||||||
return;
|
|
||||||
|
|
||||||
TGIsCider = true;
|
|
||||||
pTGLaunchUNIXApp = (TGLaunchUNIXApp)GetProcAddress (hMod, "TGLaunchUNIXApp");
|
|
||||||
pTGUNIXAppReadLine = (TGUNIXAppReadLine)GetProcAddress (hMod, "TGUNIXAppReadLine");
|
|
||||||
pTGUNIXAppWriteLine = (TGUNIXAppWriteLine)GetProcAddress (hMod, "TGUNIXAppWriteLine");
|
|
||||||
pTGUNIXAppClose = (TGUNIXAppClose)GetProcAddress (hMod, "TGUNIXAppClose");
|
|
||||||
}
|
|
||||||
|
|
||||||
//============================================================================
|
//============================================================================
|
||||||
static void Abort () {
|
static void Abort () {
|
||||||
s_retCode = 0;
|
s_retCode = 0;
|
||||||
@ -283,37 +233,11 @@ static void TerminateGame () {
|
|||||||
//============================================================================
|
//============================================================================
|
||||||
static void Recv_SetProgress (HWND hwnd, const SetProgressEvent &event) {
|
static void Recv_SetProgress (HWND hwnd, const SetProgressEvent &event) {
|
||||||
SendMessage(GetDlgItem(s_dialog, IDC_PROGRESS), PBM_SETPOS, event.progress, NULL);
|
SendMessage(GetDlgItem(s_dialog, IDC_PROGRESS), PBM_SETPOS, event.progress, NULL);
|
||||||
|
|
||||||
if (pTGApp)
|
|
||||||
{
|
|
||||||
char buf[64];
|
|
||||||
|
|
||||||
sprintf (buf, "bar:%d", event.progress);
|
|
||||||
if (!pTGUNIXAppWriteLine (pTGApp, buf))
|
|
||||||
{
|
|
||||||
pTGUNIXAppClose (pTGApp);
|
|
||||||
pTGApp = NULL;
|
|
||||||
PostQuitMessage (0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//============================================================================
|
//============================================================================
|
||||||
static void Recv_SetText (HWND hwnd, const SetTextEvent &event) {
|
static void Recv_SetText (HWND hwnd, const SetTextEvent &event) {
|
||||||
bool b = SendMessage(GetDlgItem(s_dialog, IDC_TEXT), WM_SETTEXT, 0, (LPARAM) event.text);
|
bool b = SendMessage(GetDlgItem(s_dialog, IDC_TEXT), WM_SETTEXT, 0, (LPARAM) event.text);
|
||||||
|
|
||||||
if (pTGApp)
|
|
||||||
{
|
|
||||||
char buf[MAX_PATH + 5];
|
|
||||||
|
|
||||||
sprintf (buf, "text:%s", event.text);
|
|
||||||
if (!pTGUNIXAppWriteLine (pTGApp, buf))
|
|
||||||
{
|
|
||||||
pTGUNIXAppClose (pTGApp);
|
|
||||||
pTGApp = NULL;
|
|
||||||
PostQuitMessage (0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//============================================================================
|
//============================================================================
|
||||||
@ -516,14 +440,6 @@ static void WindowThreadProc(void *) {
|
|||||||
(LPCTSTR) 0 // name
|
(LPCTSTR) 0 // name
|
||||||
);
|
);
|
||||||
|
|
||||||
if (TGIsCider)
|
|
||||||
{
|
|
||||||
if (GetFileAttributes (TG_NEW_DIALOG_PATH) != INVALID_FILE_ATTRIBUTES)
|
|
||||||
pTGApp = pTGLaunchUNIXApp (TG_NEW_DIALOG_POPEN_PATH, "w");
|
|
||||||
else
|
|
||||||
pTGApp = pTGLaunchUNIXApp (TG_OLD_DIALOG_POPEN_PATH, "w");
|
|
||||||
}
|
|
||||||
|
|
||||||
s_dialog = ::CreateDialog( s_hInstance, MAKEINTRESOURCE( IDD_DIALOG ), NULL, SplashDialogProc );
|
s_dialog = ::CreateDialog( s_hInstance, MAKEINTRESOURCE( IDD_DIALOG ), NULL, SplashDialogProc );
|
||||||
SetWindowText(s_dialog, "URU Launcher");
|
SetWindowText(s_dialog, "URU Launcher");
|
||||||
|
|
||||||
@ -541,60 +457,11 @@ static void WindowThreadProc(void *) {
|
|||||||
|
|
||||||
MessagePump(s_dialog);
|
MessagePump(s_dialog);
|
||||||
|
|
||||||
if (pTGApp)
|
|
||||||
{
|
|
||||||
pTGUNIXAppWriteLine (pTGApp, "done");
|
|
||||||
pTGUNIXAppClose (pTGApp);
|
|
||||||
pTGApp = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
s_dialog = 0;
|
s_dialog = 0;
|
||||||
s_shutdown = true;
|
s_shutdown = true;
|
||||||
s_shutdownEvent.Signal();
|
s_shutdownEvent.Signal();
|
||||||
}
|
}
|
||||||
|
|
||||||
//============================================================================
|
|
||||||
static bool TGCheckForFrameworkUpdate ()
|
|
||||||
{
|
|
||||||
// If current.txt doesn't exist, then this is the first time we've been
|
|
||||||
// run. Copy version.txt to current.txt and continue starting up
|
|
||||||
if (GetFileAttributes (TG_CUR_FRAMEWORK_FILE) == INVALID_FILE_ATTRIBUTES)
|
|
||||||
{
|
|
||||||
CopyFile (TG_LATEST_FRAMEWORK_FILE, TG_CUR_FRAMEWORK_FILE, FALSE);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
// If it does exist, then compare its contents to the contents of the latest version
|
|
||||||
// If they match, continue starting up
|
|
||||||
FILE *CurFile, *LatestFile;
|
|
||||||
CurFile = fopen (TG_CUR_FRAMEWORK_FILE, "rt");
|
|
||||||
LatestFile = fopen (TG_LATEST_FRAMEWORK_FILE, "rt");
|
|
||||||
|
|
||||||
char CurVer[64], LatestVer[64];
|
|
||||||
CurVer[0] = '\0';
|
|
||||||
LatestVer[0] = '\0';
|
|
||||||
if (CurFile)
|
|
||||||
{
|
|
||||||
fgets (CurVer, sizeof (CurVer), CurFile);
|
|
||||||
fclose (CurFile);
|
|
||||||
}
|
|
||||||
if (LatestFile)
|
|
||||||
{
|
|
||||||
fgets (LatestVer, sizeof (LatestVer), LatestFile);
|
|
||||||
fclose (LatestFile);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (strcmp (CurVer, LatestVer) == 0)
|
|
||||||
return false;
|
|
||||||
|
|
||||||
// Contents don't match. Copy the latest to the current, put up a message box
|
|
||||||
// informing the user to restart the game, and exit
|
|
||||||
CopyFile (TG_LATEST_FRAMEWORK_FILE, TG_CUR_FRAMEWORK_FILE, FALSE);
|
|
||||||
MessageBox (nil, "Game framework requires updating. Please restart URU",
|
|
||||||
"URU Launcher", MB_ICONINFORMATION);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
//============================================================================
|
//============================================================================
|
||||||
static size_t CurlCallback(void *buffer, size_t size, size_t nmemb, void *)
|
static size_t CurlCallback(void *buffer, size_t size, size_t nmemb, void *)
|
||||||
{
|
{
|
||||||
@ -647,8 +514,6 @@ void PrepCallback (int id, void *param) {
|
|||||||
s_prepared = true;
|
s_prepared = true;
|
||||||
if (id)
|
if (id)
|
||||||
s_shutdown = true;
|
s_shutdown = true;
|
||||||
else if (TGIsCider && TGCheckForFrameworkUpdate ())
|
|
||||||
s_shutdown = true;
|
|
||||||
|
|
||||||
if (!s_shutdown)
|
if (!s_shutdown)
|
||||||
InitGame();
|
InitGame();
|
||||||
@ -771,8 +636,6 @@ int __stdcall WinMain (
|
|||||||
if (!cmdParser.IsSpecified(kArgCwd))
|
if (!cmdParser.IsSpecified(kArgCwd))
|
||||||
PathGetProgramDirectory(s_workingDir, arrsize(s_workingDir));
|
PathGetProgramDirectory(s_workingDir, arrsize(s_workingDir));
|
||||||
|
|
||||||
TGDoCiderDetection ();
|
|
||||||
|
|
||||||
s_hInstance = hInstance;
|
s_hInstance = hInstance;
|
||||||
memset(&s_launcherInfo, 0, sizeof(s_launcherInfo));
|
memset(&s_launcherInfo, 0, sizeof(s_launcherInfo));
|
||||||
StrPrintf(s_launcherInfo.cmdLine, arrsize(s_launcherInfo.cmdLine), appCmdLine);
|
StrPrintf(s_launcherInfo.cmdLine, arrsize(s_launcherInfo.cmdLine), appCmdLine);
|
||||||
@ -917,7 +780,6 @@ int __stdcall WinMain (
|
|||||||
s_launcherInfo.SetStatusText = SetStatusTextCallback;
|
s_launcherInfo.SetStatusText = SetStatusTextCallback;
|
||||||
s_launcherInfo.SetTimeRemaining = SetTimeRemainingCallback;
|
s_launcherInfo.SetTimeRemaining = SetTimeRemainingCallback;
|
||||||
s_launcherInfo.SetBytesRemaining = SetBytesRemainingCallback;
|
s_launcherInfo.SetBytesRemaining = SetBytesRemainingCallback;
|
||||||
s_launcherInfo.IsTGCider = TGIsCider;
|
|
||||||
PrepareGame();
|
PrepareGame();
|
||||||
|
|
||||||
while (!s_shutdown) // wait for window to be closed
|
while (!s_shutdown) // wait for window to be closed
|
||||||
@ -964,13 +826,6 @@ int __stdcall WinMain (
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pTGApp)
|
|
||||||
{
|
|
||||||
pTGUNIXAppWriteLine (pTGApp, "done");
|
|
||||||
pTGUNIXAppClose (pTGApp);
|
|
||||||
pTGApp = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
curl_global_cleanup();
|
curl_global_cleanup();
|
||||||
|
|
||||||
return s_launcherInfo.returnCode;
|
return s_launcherInfo.returnCode;
|
||||||
|
@ -85,7 +85,6 @@ struct plLauncherInfo {
|
|||||||
setBytesRemainingCallback SetBytesRemaining;
|
setBytesRemainingCallback SetBytesRemaining;
|
||||||
|
|
||||||
PatchInfo patchInfo;
|
PatchInfo patchInfo;
|
||||||
bool IsTGCider;
|
|
||||||
DWORD returnCode; // used so we can pass a new process id back to gametap. That way gametap wont think uru has exited when the patcher quits.
|
DWORD returnCode; // used so we can pass a new process id back to gametap. That way gametap wont think uru has exited when the patcher quits.
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user