| 1 | cycrow | 1 | // GameLauncher.cpp : main project file.
 | 
        
           |  |  | 2 |   | 
        
           |  |  | 3 | #include "stdafx.h"
 | 
        
           |  |  | 4 | #include "Forms/Form1.h"
 | 
        
           |  |  | 5 | #include "X3Data.h"
 | 
        
           |  |  | 6 |   | 
        
           |  |  | 7 | using namespace GameLauncher;
 | 
        
           |  |  | 8 |   | 
        
           |  |  | 9 | [STAThreadAttribute]
 | 
        
           |  |  | 10 | int main(array<System::String ^> ^args)
 | 
        
           |  |  | 11 | {
 | 
        
           |  |  | 12 | 	// Enabling Windows XP visual effects before any controls are created
 | 
        
           |  |  | 13 | 	Application::EnableVisualStyles();
 | 
        
           |  |  | 14 | 	Application::SetCompatibleTextRenderingDefault(false); 
 | 
        
           |  |  | 15 |   | 
        
           |  |  | 16 | 	System::String ^runFile;
 | 
        
           |  |  | 17 | 	System::String ^gameFile;
 | 
        
           |  |  | 18 | 	System::String ^arguments;
 | 
        
           |  |  | 19 |   | 
        
           |  |  | 20 | 	bool intoArgs = false;
 | 
        
           | 105 | cycrow | 21 | 	bool advanced = false;
 | 
        
           | 1 | cycrow | 22 | 	for ( int i = 0; i < args->Length; i++ )
 | 
        
           |  |  | 23 | 	{
 | 
        
           | 105 | cycrow | 24 | 		if ( String::Compare(args[i], "--gameargs", false) == 0 )
 | 
        
           | 106 | cycrow | 25 | 			intoArgs = true;
 | 
        
           | 1 | cycrow | 26 | 		else
 | 
        
           |  |  | 27 | 		{
 | 
        
           | 106 | cycrow | 28 | 			if ( String::Compare(args[i]->Substring(0, 2), "--", false) == 0 ) {
 | 
        
           |  |  | 29 | 				if ( String::Compare(args[i], "--advanced", false) == 0 )
 | 
        
           |  |  | 30 | 					advanced = true;
 | 
        
           |  |  | 31 | 			}
 | 
        
           |  |  | 32 | 			else if ( !intoArgs && !gameFile )
 | 
        
           | 1 | cycrow | 33 | 				gameFile = args[i];
 | 
        
           | 105 | cycrow | 34 | 			else if ( !intoArgs && !runFile )
 | 
        
           | 1 | cycrow | 35 | 				runFile = args[i];
 | 
        
           |  |  | 36 | 			else if ( arguments )
 | 
        
           |  |  | 37 | 				arguments += " " + args[i];
 | 
        
           |  |  | 38 | 			else
 | 
        
           |  |  | 39 | 				arguments = args[i];
 | 
        
           |  |  | 40 | 		}
 | 
        
           |  |  | 41 | 	}
 | 
        
           | 106 | cycrow | 42 |   | 
        
           |  |  | 43 | 	if ( !gameFile && args->Length >= 1 )
 | 
        
           | 1 | cycrow | 44 | 		gameFile = args[0];
 | 
        
           | 106 | cycrow | 45 | 	if ( !runFile && args->Length > 1 )
 | 
        
           | 1 | cycrow | 46 | 		runFile = args[1];
 | 
        
           | 106 | cycrow | 47 |   | 
        
           | 1 | cycrow | 48 | 	// Create the main window and run it
 | 
        
           |  |  | 49 | 	if ( !runFile || !runFile->Length )
 | 
        
           |  |  | 50 | 	{
 | 
        
           |  |  | 51 | 		RegistryKey ^searchKey = Registry::CurrentUser->OpenSubKey("Software\\Egosoft\\PluginManagerSettings");
 | 
        
           |  |  | 52 | 		if ( searchKey )
 | 
        
           |  |  | 53 | 			runFile = System::Convert::ToString(searchKey->GetValue("Run"));
 | 
        
           |  |  | 54 | 	}
 | 
        
           |  |  | 55 |   | 
        
           |  |  | 56 | 	Form1 ^form = gcnew Form1(gameFile, arguments, runFile);
 | 
        
           |  |  | 57 | 	Application::Run(form);
 | 
        
           |  |  | 58 |   | 
        
           |  |  | 59 |   | 
        
           |  |  | 60 | 	if ( runFile && form->Resume())
 | 
        
           |  |  | 61 | 	{
 | 
        
           |  |  | 62 | 		System::Diagnostics::ProcessStartInfo ^info = gcnew System::Diagnostics::ProcessStartInfo(runFile);
 | 
        
           |  |  | 63 | 		info->WorkingDirectory = System::IO::FileInfo(runFile).DirectoryName;
 | 
        
           | 105 | cycrow | 64 | 		if ( advanced )
 | 
        
           |  |  | 65 | 			info->Arguments = "--advanced";
 | 
        
           | 1 | cycrow | 66 | 		info->UseShellExecute = false;
 | 
        
           |  |  | 67 | 		info->WindowStyle = System::Diagnostics::ProcessWindowStyle::Normal;
 | 
        
           |  |  | 68 | 		System::Diagnostics::Process ^process = System::Diagnostics::Process::Start(info);
 | 
        
           |  |  | 69 | 	}
 | 
        
           |  |  | 70 |   | 
        
           |  |  | 71 | 	return 0;
 | 
        
           |  |  | 72 | }
 |