short dlgStartupShowModal(void){ WndProperty* wp; #if TESTBENCH StartupStore(TEXT(". Startup dialog, RUN_MODE=%d %s"),RUN_MODE,NEWLINE); #endif char filename[MAX_PATH]; strcpy(filename,""); // FLY SIM PROFILE EXIT if (RUN_MODE==RUN_WELCOME) { if (!ScreenLandscape) { LocalPathS(filename, TEXT("dlgFlySim_L.xml")); wf = dlgLoadFromXML(CallBackTable, filename, hWndMainWindow, TEXT("IDR_XML_FLYSIM_L")); } else { LocalPathS(filename, TEXT("dlgFlySim.xml")); wf = dlgLoadFromXML(CallBackTable, filename, hWndMainWindow, TEXT("IDR_XML_FLYSIM")); } if (!wf) { return 0; } } // PROFILE AIRCRAFT CLOSE if (RUN_MODE==RUN_DUALPROF) { if (!ScreenLandscape) { LocalPathS(filename, TEXT("dlgDualProfile_L.xml")); wf = dlgLoadFromXML(CallBackTable, filename, hWndMainWindow, TEXT("IDR_XML_DUALPROFILE_L")); } else { LocalPathS(filename, TEXT("dlgDualProfile.xml")); wf = dlgLoadFromXML(CallBackTable, filename, hWndMainWindow, TEXT("IDR_XML_DUALPROFILE")); } if (!wf) return 0; } // CHOOSE PROFILE if (RUN_MODE==RUN_PROFILE || RUN_MODE==RUN_AIRCRAFT || RUN_MODE==RUN_PILOT) { if (!ScreenLandscape) { LocalPathS(filename, TEXT("dlgStartup_L.xml")); wf = dlgLoadFromXML(CallBackTable, filename, hWndMainWindow, TEXT("IDR_XML_STARTUP_L")); } else { LocalPathS(filename, TEXT("dlgStartup.xml")); wf = dlgLoadFromXML(CallBackTable, filename, hWndMainWindow, TEXT("IDR_XML_STARTUP")); } if (!wf) return 0; } wSplash = (WndOwnerDrawFrame*)wf->FindByName(TEXT("frmSplash")); wSplash->SetWidth(ScreenSizeX); int PROFWIDTH=0, PROFACCEPTWIDTH=0, PROFHEIGHT=0, PROFSEPARATOR=0; if (RUN_MODE==RUN_WELCOME) { ((WndButton *)wf->FindByName(TEXT("cmdFLY"))) ->SetOnClickNotify(OnFLYClicked); ((WndButton *)wf->FindByName(TEXT("cmdSIM"))) ->SetOnClickNotify(OnSIMClicked); ((WndButton *)wf->FindByName(TEXT("cmdDUALPROFILE"))) ->SetOnClickNotify(OnDUALPROFILEClicked); ((WndButton *)wf->FindByName(TEXT("cmdEXIT"))) ->SetOnClickNotify(OnEXITClicked); if (ScreenLandscape) { PROFWIDTH=(ScreenSizeX-IBLSCALE(320))/3; switch(ScreenSize) { case ss800x480: case ss400x240: ((WndButton *)wf->FindByName(TEXT("cmdFLY"))) ->SetWidth(IBLSCALE(110)); ((WndButton *)wf->FindByName(TEXT("cmdSIM"))) ->SetWidth(IBLSCALE(110)); ((WndButton *)wf->FindByName(TEXT("cmdSIM"))) ->SetLeft(IBLSCALE(208)+PROFWIDTH*3); ((WndButton *)wf->FindByName(TEXT("cmdDUALPROFILE"))) ->SetLeft(IBLSCALE(88)+PROFWIDTH); ((WndButton *)wf->FindByName(TEXT("cmdDUALPROFILE"))) ->SetWidth(IBLSCALE(92)+PROFWIDTH/6); ((WndButton *)wf->FindByName(TEXT("cmdEXIT"))) ->SetLeft(IBLSCALE(161)+PROFWIDTH*2); ((WndButton *)wf->FindByName(TEXT("cmdEXIT"))) ->SetWidth(IBLSCALE(65)+PROFWIDTH/5); break; case ss480x272: ((WndButton *)wf->FindByName(TEXT("cmdFLY"))) ->SetWidth(IBLSCALE(117)); ((WndButton *)wf->FindByName(TEXT("cmdFLY"))) ->SetHeight(IBLSCALE(38)); ((WndButton *)wf->FindByName(TEXT("cmdFLY"))) ->SetTop(IBLSCALE(197)); ((WndButton *)wf->FindByName(TEXT("cmdSIM"))) ->SetWidth(IBLSCALE(117)); ((WndButton *)wf->FindByName(TEXT("cmdSIM"))) ->SetLeft(IBLSCALE(201)+PROFWIDTH*3); ((WndButton *)wf->FindByName(TEXT("cmdSIM"))) ->SetHeight(IBLSCALE(38)); ((WndButton *)wf->FindByName(TEXT("cmdSIM"))) ->SetTop(IBLSCALE(197)); ((WndButton *)wf->FindByName(TEXT("cmdDUALPROFILE"))) ->SetLeft(IBLSCALE(88)+PROFWIDTH); ((WndButton *)wf->FindByName(TEXT("cmdDUALPROFILE"))) ->SetWidth(IBLSCALE(99)+PROFWIDTH/6); ((WndButton *)wf->FindByName(TEXT("cmdDUALPROFILE"))) ->SetHeight(IBLSCALE(38)); ((WndButton *)wf->FindByName(TEXT("cmdDUALPROFILE"))) ->SetTop(IBLSCALE(197)); ((WndButton *)wf->FindByName(TEXT("cmdEXIT"))) ->SetLeft(IBLSCALE(161)+PROFWIDTH*2); ((WndButton *)wf->FindByName(TEXT("cmdEXIT"))) ->SetWidth(IBLSCALE(65)+PROFWIDTH/5); ((WndButton *)wf->FindByName(TEXT("cmdEXIT"))) ->SetHeight(IBLSCALE(38)); ((WndButton *)wf->FindByName(TEXT("cmdEXIT"))) ->SetTop(IBLSCALE(197)); break; case ss640x480: case ss320x240: ((WndButton *)wf->FindByName(TEXT("cmdDUALPROFILE"))) ->SetLeft(IBLSCALE(93)+PROFWIDTH); ((WndButton *)wf->FindByName(TEXT("cmdDUALPROFILE"))) ->SetWidth(IBLSCALE(73)+PROFWIDTH/6); ((WndButton *)wf->FindByName(TEXT("cmdEXIT"))) ->SetLeft(IBLSCALE(166)+PROFWIDTH*2); ((WndButton *)wf->FindByName(TEXT("cmdEXIT"))) ->SetWidth(IBLSCALE(60)+PROFWIDTH/5); ((WndButton *)wf->FindByName(TEXT("cmdSIM"))) ->SetLeft(IBLSCALE(228)+PROFWIDTH*3); ((WndButton *)wf->FindByName(TEXT("cmdSIM"))) ->SetWidth(IBLSCALE(88)); break; default: ((WndButton *)wf->FindByName(TEXT("cmdDUALPROFILE"))) ->SetLeft(IBLSCALE(93)+PROFWIDTH); ((WndButton *)wf->FindByName(TEXT("cmdDUALPROFILE"))) ->SetWidth(IBLSCALE(73)+PROFWIDTH/6); ((WndButton *)wf->FindByName(TEXT("cmdEXIT"))) ->SetLeft(IBLSCALE(166)+PROFWIDTH*2); ((WndButton *)wf->FindByName(TEXT("cmdEXIT"))) ->SetWidth(IBLSCALE(60)+PROFWIDTH/5); ((WndButton *)wf->FindByName(TEXT("cmdSIM"))) ->SetLeft(IBLSCALE(228)+PROFWIDTH*3); break; } } else { PROFWIDTH=IBLSCALE(236); PROFACCEPTWIDTH=NIBLSCALE(45); PROFHEIGHT=NIBLSCALE(25); PROFSEPARATOR=NIBLSCALE(2); } } if (RUN_MODE==RUN_DUALPROF) { ((WndButton *)wf->FindByName(TEXT("cmdAIRCRAFT"))) ->SetOnClickNotify(OnAIRCRAFTClicked); ((WndButton *)wf->FindByName(TEXT("cmdPROFILE"))) ->SetOnClickNotify(OnPROFILEClicked); ((WndButton *)wf->FindByName(TEXT("cmdPILOT"))) ->SetOnClickNotify(OnPILOTClicked); ((WndButton *)wf->FindByName(TEXT("cmdCLOSE"))) ->SetOnClickNotify(OnCloseClicked); //((WndButton *)wf->FindByName(TEXT("cmdFLY"))) ->SetOnClickNotify(OnFLYClicked); //((WndButton *)wf->FindByName(TEXT("cmdSIM"))) ->SetOnClickNotify(OnSIMClicked); //((WndButton *)wf->FindByName(TEXT("cmdDUALPROFILE"))) ->SetOnClickNotify(OnDUALPROFILEClicked); //((WndButton *)wf->FindByName(TEXT("cmdEXIT"))) ->SetOnClickNotify(OnEXITClicked); if (ScreenLandscape) { PROFWIDTH=(ScreenSizeX-IBLSCALE(320))/3; switch(ScreenSize) { case ss800x480: case ss400x240: ((WndButton *)wf->FindByName(TEXT("cmdAIRCRAFT"))) ->SetWidth(IBLSCALE(110)); ((WndButton *)wf->FindByName(TEXT("cmdCLOSE"))) ->SetWidth(IBLSCALE(110)); ((WndButton *)wf->FindByName(TEXT("cmdCLOSE"))) ->SetLeft(IBLSCALE(208)+PROFWIDTH*3); ((WndButton *)wf->FindByName(TEXT("cmdPROFILE"))) ->SetLeft(IBLSCALE(88)+PROFWIDTH); ((WndButton *)wf->FindByName(TEXT("cmdPROFILE"))) ->SetWidth(IBLSCALE(92)+PROFWIDTH/6); ((WndButton *)wf->FindByName(TEXT("cmdPILOT"))) ->SetLeft(IBLSCALE(161)+PROFWIDTH*2); ((WndButton *)wf->FindByName(TEXT("cmdPILOT"))) ->SetWidth(IBLSCALE(65)+PROFWIDTH/5); break; case ss480x272: ((WndButton *)wf->FindByName(TEXT("cmdAIRCRAFT"))) ->SetWidth(IBLSCALE(117)); ((WndButton *)wf->FindByName(TEXT("cmdAIRCRAFT"))) ->SetHeight(IBLSCALE(38)); ((WndButton *)wf->FindByName(TEXT("cmdAIRCRAFT"))) ->SetTop(IBLSCALE(197)); ((WndButton *)wf->FindByName(TEXT("cmdCLOSE"))) ->SetWidth(IBLSCALE(117)); ((WndButton *)wf->FindByName(TEXT("cmdCLOSE"))) ->SetLeft(IBLSCALE(201)+PROFWIDTH*3); ((WndButton *)wf->FindByName(TEXT("cmdCLOSE"))) ->SetHeight(IBLSCALE(38)); ((WndButton *)wf->FindByName(TEXT("cmdCLOSE"))) ->SetTop(IBLSCALE(197)); ((WndButton *)wf->FindByName(TEXT("cmdPROFILE"))) ->SetLeft(IBLSCALE(88)+PROFWIDTH); ((WndButton *)wf->FindByName(TEXT("cmdPROFILE"))) ->SetWidth(IBLSCALE(99)+PROFWIDTH/6); ((WndButton *)wf->FindByName(TEXT("cmdPROFILE"))) ->SetHeight(IBLSCALE(38)); ((WndButton *)wf->FindByName(TEXT("cmdPROFILE"))) ->SetTop(IBLSCALE(197)); ((WndButton *)wf->FindByName(TEXT("cmdPILOT"))) ->SetLeft(IBLSCALE(161)+PROFWIDTH*2); ((WndButton *)wf->FindByName(TEXT("cmdPILOT"))) ->SetWidth(IBLSCALE(65)+PROFWIDTH/5); ((WndButton *)wf->FindByName(TEXT("cmdPILOT"))) ->SetHeight(IBLSCALE(38)); ((WndButton *)wf->FindByName(TEXT("cmdPILOT"))) ->SetTop(IBLSCALE(197)); break; case ss640x480: case ss320x240: ((WndButton *)wf->FindByName(TEXT("cmdPROFILE"))) ->SetLeft(IBLSCALE(93)+PROFWIDTH); ((WndButton *)wf->FindByName(TEXT("cmdPROFILE"))) ->SetWidth(IBLSCALE(73)+PROFWIDTH/6); ((WndButton *)wf->FindByName(TEXT("cmdPILOT"))) ->SetLeft(IBLSCALE(166)+PROFWIDTH*2); ((WndButton *)wf->FindByName(TEXT("cmdPILOT"))) ->SetWidth(IBLSCALE(60)+PROFWIDTH/5); ((WndButton *)wf->FindByName(TEXT("cmdCLOSE"))) ->SetLeft(IBLSCALE(228)+PROFWIDTH*3); ((WndButton *)wf->FindByName(TEXT("cmdCLOSE"))) ->SetWidth(IBLSCALE(88)); break; default: ((WndButton *)wf->FindByName(TEXT("cmdPROFILE"))) ->SetLeft(IBLSCALE(93)+PROFWIDTH); ((WndButton *)wf->FindByName(TEXT("cmdPROFILE"))) ->SetWidth(IBLSCALE(73)+PROFWIDTH/6); ((WndButton *)wf->FindByName(TEXT("cmdPILOT"))) ->SetLeft(IBLSCALE(166)+PROFWIDTH*2); ((WndButton *)wf->FindByName(TEXT("cmdPILOT"))) ->SetWidth(IBLSCALE(60)+PROFWIDTH/5); ((WndButton *)wf->FindByName(TEXT("cmdCLOSE"))) ->SetLeft(IBLSCALE(228)+PROFWIDTH*3); break; } } else { PROFWIDTH=IBLSCALE(236); PROFACCEPTWIDTH=NIBLSCALE(45); PROFHEIGHT=NIBLSCALE(25); PROFSEPARATOR=NIBLSCALE(2); } } if (RUN_MODE==RUN_PROFILE || RUN_MODE==RUN_AIRCRAFT || RUN_MODE==RUN_PILOT) { ((WndButton *)wf->FindByName(TEXT("cmdClose"))) ->SetOnClickNotify(OnCloseClicked); if (ScreenLandscape) { PROFWIDTH=IBLSCALE(256); PROFACCEPTWIDTH=NIBLSCALE(60); PROFHEIGHT=NIBLSCALE(30); PROFSEPARATOR=NIBLSCALE(4); ((WndButton *)wf->FindByName(TEXT("cmdClose"))) ->SetWidth(PROFACCEPTWIDTH); ((WndButton *)wf->FindByName(TEXT("cmdClose"))) -> SetLeft((((ScreenSizeX-PROFWIDTH-PROFSEPARATOR-PROFACCEPTWIDTH)/2)+PROFSEPARATOR+PROFWIDTH)-NIBLSCALE(2)); ((WndButton *)wf->FindByName(TEXT("cmdClose"))) ->SetHeight(PROFHEIGHT-NIBLSCALE(4)); } else { PROFWIDTH=IBLSCALE(236); PROFACCEPTWIDTH=NIBLSCALE(45); PROFHEIGHT=NIBLSCALE(25); PROFSEPARATOR=NIBLSCALE(2); ((WndButton *)wf->FindByName(TEXT("cmdClose"))) ->SetWidth(ScreenSizeX-NIBLSCALE(6)); ((WndButton *)wf->FindByName(TEXT("cmdClose"))) -> SetLeft(NIBLSCALE(2)); } } TCHAR temp[MAX_PATH]; wf->SetHeight(ScreenSizeY); wf->SetWidth(ScreenSizeX); wp = ((WndProperty *)wf->FindByName(TEXT("prpProfile"))); if (wp) { DataFieldFileReader* dfe; dfe = (DataFieldFileReader*)wp->GetDataField(); if (RUN_MODE==RUN_PROFILE) { _stprintf(temp,_T("*%S"),LKS_PRF); dfe->ScanDirectoryTop(_T(LKD_CONF),temp); dfe->addFile(gettext(_T("_@M1741_")),_T("PROFILE_RESET")); dfe->Lookup(startProfileFile); } if (RUN_MODE==RUN_AIRCRAFT) { _stprintf(temp,_T("*%S"),LKS_AIRCRAFT); dfe->ScanDirectoryTop(_T(LKD_CONF),temp); dfe->Lookup(startAircraftFile); } if (RUN_MODE==RUN_PILOT) { _stprintf(temp,_T("*%S"),LKS_PILOT); dfe->ScanDirectoryTop(_T(LKD_CONF),temp); dfe->Lookup(startPilotFile); } wp->SetHeight(PROFHEIGHT); wp->SetWidth(PROFWIDTH); if (ScreenLandscape) wp->SetLeft(((ScreenSizeX-PROFWIDTH-PROFSEPARATOR-PROFACCEPTWIDTH)/2)-NIBLSCALE(2)); else wp->SetLeft(0); wp->RefreshDisplay(); } if (!CheckRootDir()) { TCHAR mydir[MAX_PATH]; TCHAR mes[MAX_PATH]; LocalPath(mydir,_T("")); _stprintf(mes,_T("%s"),mydir); MessageBoxX(hWndMainWindow, _T("NO LK8000 DIRECTORY\nCheck Installation!"), _T("FATAL ERROR 000"), MB_OK|MB_ICONQUESTION); MessageBoxX(hWndMainWindow, mes, _T("NO LK8000 DIRECTORY"), MB_OK|MB_ICONQUESTION, true); RUN_MODE=RUN_EXIT; Shutdown(); goto _exit; } if (!CheckDataDir()) { TCHAR mydir[MAX_PATH]; TCHAR mes[MAX_PATH]; LocalPath(mydir,_T(LKD_SYSTEM)); _stprintf(mes,_T("%s"),mydir); MessageBoxX(hWndMainWindow, _T("NO SYSTEM DIRECTORY\nCheck Installation!"), _T("FATAL ERROR 001"), MB_OK|MB_ICONQUESTION); MessageBoxX(hWndMainWindow, mes, _T("NO SYSTEM DIRECTORY"), MB_OK|MB_ICONQUESTION, true); RUN_MODE=RUN_EXIT; Shutdown(); goto _exit; } if (!CheckLanguageDir()) { TCHAR mydir[MAX_PATH]; TCHAR mes[MAX_PATH]; StartupStore(_T("... CHECK LANGUAGE DIRECTORY FAILED!%s"),NEWLINE); LocalPath(mydir,_T(LKD_LANGUAGE)); _stprintf(mes,_T("%s"),mydir); MessageBoxX(hWndMainWindow, _T("LANGUAGE DIRECTORY CHECK FAIL\nCheck Language Install"), _T("FATAL ERROR 002"), MB_OK|MB_ICONQUESTION); MessageBoxX(hWndMainWindow, mes, _T("NO LANGUAGE DIRECTORY"), MB_OK|MB_ICONQUESTION, true); RUN_MODE=RUN_EXIT; Shutdown(); goto _exit; } if (!CheckLanguageEngMsg()) { TCHAR mydir[MAX_PATH]; TCHAR mes[MAX_PATH]; StartupStore(_T("... CHECK LANGUAGE ENG_MSG FAILED!%s"),NEWLINE); LocalPath(mydir,_T(LKD_LANGUAGE)); _stprintf(mes,_T("%s/ENG_MSG.TXT"),mydir); MessageBoxX(hWndMainWindow, _T("ENG_MSG.TXT MISSING in LANGUAGE\nCheck Language Install"), _T("FATAL ERROR 012"), MB_OK|MB_ICONQUESTION); MessageBoxX(hWndMainWindow, mes, _T("MISSING FILE!"), MB_OK|MB_ICONQUESTION, true); RUN_MODE=RUN_EXIT; Shutdown(); goto _exit; } if (!CheckSystemDefaultMenu()) { TCHAR mydir[MAX_PATH]; TCHAR mes[MAX_PATH]; StartupStore(_T("... CHECK SYSTEM DEFAULT_MENU.TXT FAILED!%s"),NEWLINE); LocalPath(mydir,_T(LKD_SYSTEM)); _stprintf(mes,_T("%s/DEFAULT_MENU.TXT"),mydir); MessageBoxX(hWndMainWindow, _T("DEFAULT_MENU.TXT MISSING in SYSTEM\nCheck System Install"), _T("FATAL ERROR 022"), MB_OK|MB_ICONQUESTION); MessageBoxX(hWndMainWindow, mes, _T("MISSING FILE!"), MB_OK|MB_ICONQUESTION, true); RUN_MODE=RUN_EXIT; Shutdown(); goto _exit; } if (!CheckSystemBitmaps()) { TCHAR mydir[MAX_PATH]; TCHAR mes[MAX_PATH]; StartupStore(_T("... CHECK SYSTEM _BITMAPSH FAILED!%s"),NEWLINE); LocalPath(mydir,_T(LKD_BITMAPS)); _stprintf(mes,_T("%s/_BITMAPSH"),mydir); MessageBoxX(hWndMainWindow, _T("_BITMAPSH MISSING in SYSTEM Bitmaps\nCheck System Install"), _T("FATAL ERROR 032"), MB_OK|MB_ICONQUESTION); MessageBoxX(hWndMainWindow, mes, _T("MISSING FILE!"), MB_OK|MB_ICONQUESTION, true); RUN_MODE=RUN_EXIT; Shutdown(); goto _exit; } if (!CheckPolarsDir()) { TCHAR mydir[MAX_PATH]; TCHAR mes[MAX_PATH]; StartupStore(_T("... CHECK POLARS DIRECTORY FAILED!%s"),NEWLINE); LocalPath(mydir,_T(LKD_POLARS)); _stprintf(mes,_T("%s"),mydir); MessageBoxX(hWndMainWindow, _T("NO POLARS DIRECTORY\nCheck Install"), _T("FATAL ERROR 003"), MB_OK|MB_ICONQUESTION); MessageBoxX(hWndMainWindow, mes, _T("NO POLARS DIRECTORY"), MB_OK|MB_ICONQUESTION, true); RUN_MODE=RUN_EXIT; Shutdown(); goto _exit; } // Standby for a system request to close the application during this phase. wf->SetTimerNotify(OnTimerNotify); #if 0 srand(GetTickCount()); #endif wf->ShowModal(); if (RUN_MODE==RUN_SHUTDOWN) goto _exit; wp = (WndProperty*)wf->FindByName(TEXT("prpProfile")); if (wp) { DataFieldFileReader* dfe; dfe = (DataFieldFileReader*)wp->GetDataField(); if (RUN_MODE==RUN_PROFILE) { if (_tcslen(dfe->GetPathFile())>0) { if (_tcscmp(dfe->GetPathFile(),startProfileFile) ) { // if they are not the same _tcscpy(startProfileFile,dfe->GetPathFile()); if (_tcscmp(startProfileFile,_T("PROFILE_RESET"))==0) { #if TESTBENCH StartupStore(_T("... Selected FULL RESET virtual profile\n")); #endif if (MessageBoxX(NULL, gettext(TEXT("_@M1758_")), gettext(TEXT("_@M1757_")), MB_OK|MB_ICONQUESTION)); fullresetasked=true; } else { #if TESTBENCH StartupStore(_T("... Selected new profile, preloading..\n")); #endif LKProfileLoad(startProfileFile); fullresetasked=false; } } } } if (RUN_MODE==RUN_AIRCRAFT) { if (_tcslen(dfe->GetPathFile())>0) { if (_tcscmp(dfe->GetPathFile(),startAircraftFile) ) { // if they are not the same _tcscpy(startAircraftFile,dfe->GetPathFile()); #if TESTBENCH StartupStore(_T("... Selected new aircraft, preloading..\n")); #endif LKProfileLoad(startAircraftFile); } } } if (RUN_MODE==RUN_PILOT) { if (_tcslen(dfe->GetPathFile())>0) { if (_tcscmp(dfe->GetPathFile(),startPilotFile) ) { // if they are not the same _tcscpy(startPilotFile,dfe->GetPathFile()); #if TESTBENCH StartupStore(_T("... Selected new pilot, preloading..\n")); #endif LKProfileLoad(startPilotFile); } } } RUN_MODE=RUN_DUALPROF; } if (RUN_MODE==RUN_EXIT) { if (EnableSoundModes) LKSound(_T("LK_SLIDE.WAV")); if (MessageBoxX(hWndMainWindow, // LKTOKEN _@M198_ = "Confirm Exit?" gettext(TEXT("_@M198_")), TEXT("LK8000"), MB_YESNO|MB_ICONQUESTION) == IDYES) { Shutdown(); } else RUN_MODE=RUN_WELCOME; } _exit: if (wf!=NULL) { delete wf; wf = NULL; } if (RUN_MODE==RUN_FLY || RUN_MODE==RUN_SIM) { if (EnableSoundModes) LKSound(_T("LK_SLIDE.WAV")); return 0; // do not repeat dialog } if (RUN_MODE==RUN_EXIT || RUN_MODE==RUN_SHUTDOWN) return -1; // terminate else return 1; // repeat dialog }
short dlgStartupShowModal(void) { WndProperty* wp = nullptr; #if TESTBENCH StartupStore(TEXT(". Startup dialog, RUN_MODE=%d %s"), RUN_MODE, NEWLINE); #endif switch(RUN_MODE) { case RUN_WELCOME: // FLY SIM PROFILE EXIT wf = InitFlySim(); break; case RUN_DUALPROF: // PROFILE AIRCRAFT CLOSE wf = InitDualProfile(); break; case RUN_PROFILE: case RUN_AIRCRAFT: case RUN_PILOT: case RUN_DEVICE: // CHOOSE PROFILE wf = InitStartup(RUN_MODE); break; } if (!wf) { return 0; } wf->SetHeight(ScreenSizeY); wf->SetWidth(ScreenSizeX); WindowControl* wSplash = wf->FindByName(TEXT("frmSplash")); if(wSplash) { wSplash->SetWidth(ScreenSizeX); // wSplash->SetHeight(ScreenSizeY);// - IBLSCALE(55)); } if (!CheckRootDir()) { TCHAR mydir[MAX_PATH]; TCHAR mes[MAX_PATH]; LocalPath(mydir, _T("")); _stprintf(mes, _T("%s"), mydir); MessageBoxX(_T("NO LK8000 DIRECTORY\nCheck Installation!"), _T("FATAL ERROR 000"), mbOk); MessageBoxX(mes, _T("NO LK8000 DIRECTORY"), mbOk, true); RUN_MODE = RUN_EXIT; Shutdown(); goto _exit; } if (!CheckDataDir()) { TCHAR mydir[MAX_PATH]; TCHAR mes[MAX_PATH]; SystemPath(mydir, _T(LKD_SYSTEM)); _stprintf(mes, _T("%s"), mydir); MessageBoxX(_T("NO SYSTEM DIRECTORY\nCheck Installation!"), _T("FATAL ERROR 001"), mbOk); MessageBoxX(mes, _T("NO SYSTEM DIRECTORY"), mbOk, true); RUN_MODE = RUN_EXIT; Shutdown(); goto _exit; } if (!CheckLanguageDir()) { TCHAR mydir[MAX_PATH]; TCHAR mes[MAX_PATH]; StartupStore(_T("... CHECK LANGUAGE DIRECTORY FAILED!%s"), NEWLINE); LocalPath(mydir, _T(LKD_LANGUAGE)); _stprintf(mes, _T("%s"), mydir); MessageBoxX(_T("LANGUAGE DIRECTORY CHECK FAIL\nCheck Language Install"), _T("FATAL ERROR 002"), mbOk); MessageBoxX(mes, _T("NO LANGUAGE DIRECTORY"), mbOk, true); RUN_MODE = RUN_EXIT; Shutdown(); goto _exit; } if (!CheckLanguageEngMsg()) { TCHAR mydir[MAX_PATH]; TCHAR mes[MAX_PATH]; StartupStore(_T("... CHECK LANGUAGE ENG_MSG FAILED!%s"), NEWLINE); LocalPath(mydir, _T(LKD_LANGUAGE)); _stprintf(mes, _T("%s/ENG_MSG.TXT"), mydir); MessageBoxX(_T("ENG_MSG.TXT MISSING in LANGUAGE\nCheck Language Install"), _T("FATAL ERROR 012"), mbOk); MessageBoxX(mes, _T("MISSING FILE!"), mbOk, true); RUN_MODE = RUN_EXIT; Shutdown(); goto _exit; } if (!CheckSystemDefaultMenu()) { TCHAR mydir[MAX_PATH]; TCHAR mes[MAX_PATH]; StartupStore(_T("... CHECK SYSTEM DEFAULT_MENU.TXT FAILED!%s"), NEWLINE); SystemPath(mydir, _T(LKD_SYSTEM)); _stprintf(mes, _T("%s/DEFAULT_MENU.TXT"), mydir); MessageBoxX(_T("DEFAULT_MENU.TXT MISSING in SYSTEM\nCheck System Install"), _T("FATAL ERROR 022"), mbOk); MessageBoxX(mes, _T("MISSING FILE!"), mbOk, true); RUN_MODE = RUN_EXIT; Shutdown(); goto _exit; } if (!CheckSystemBitmaps()) { TCHAR mydir[MAX_PATH]; TCHAR mes[MAX_PATH]; StartupStore(_T("... CHECK SYSTEM _BITMAPSH FAILED!%s"), NEWLINE); SystemPath(mydir, _T(LKD_BITMAPS)); _stprintf(mes, _T("%s/_BITMAPSH"), mydir); MessageBoxX(_T("_BITMAPSH MISSING in SYSTEM Bitmaps\nCheck System Install"), _T("FATAL ERROR 032"), mbOk); MessageBoxX(mes, _T("MISSING FILE!"), mbOk, true); RUN_MODE = RUN_EXIT; Shutdown(); goto _exit; } extern unsigned short Bitmaps_Errors; if (Bitmaps_Errors) { TCHAR mes[MAX_PATH]; _stprintf(mes, _T("MISSING %d SYSTEM BITMAPS! CHECK INSTALLATION."), Bitmaps_Errors); MessageBoxX(mes, _T("MISSING FILES!"), mbOk, true); } if (!CheckPolarsDir()) { TCHAR mydir[MAX_PATH]; TCHAR mes[MAX_PATH]; StartupStore(_T("... CHECK POLARS DIRECTORY FAILED!%s"), NEWLINE); LocalPath(mydir, _T(LKD_POLARS)); _stprintf(mes, _T("%s"), mydir); MessageBoxX(_T("NO POLARS DIRECTORY\nCheck Install"), _T("FATAL ERROR 003"), mbOk); MessageBoxX(mes, _T("NO POLARS DIRECTORY"), mbOk, true); RUN_MODE = RUN_EXIT; Shutdown(); goto _exit; } extern bool CheckFilesystemWritable(void); if (!CheckFilesystemWritable()) { MessageBoxX(_T("LK8000 CANNOT WRITE IN MEMORY CARD!\nCARD IS LOCKED, OR DAMAGED, OR FULL."), _T("CRITICAL PROBLEM"), mbOk); RUN_MODE = RUN_EXIT; Shutdown(); goto _exit; } // Standby for a system request to close the application during this phase. wf->SetTimerNotify(500, OnTimerNotify); if (wf->ShowModal() == mrCancel) { RUN_MODE = RUN_EXIT; } if (RUN_MODE == RUN_SHUTDOWN) goto _exit; wp = (WndProperty*) wf->FindByName(TEXT("prpProfile")); if (wp) { DataFieldFileReader* dfe = (DataFieldFileReader*) wp->GetDataField(); if (RUN_MODE == RUN_PROFILE) { if (_tcslen(dfe->GetPathFile()) > 0) { if (_tcscmp(dfe->GetPathFile(), startProfileFile)) { // if they are not the same _tcscpy(startProfileFile, dfe->GetPathFile()); if (_tcscmp(startProfileFile, _T("PROFILE_RESET")) == 0) { #if TESTBENCH StartupStore(_T("... Selected FULL RESET virtual profile\n")); #endif MessageBoxX(MsgToken(1758), MsgToken(1757), mbOk); FullResetAsked = true; } else { #if TESTBENCH StartupStore(_T("... Selected new profile, preloading..\n")); #endif FullResetAsked = false; } } } } if (RUN_MODE == RUN_AIRCRAFT) { if (_tcslen(dfe->GetPathFile()) > 0) { if (_tcscmp(dfe->GetPathFile(), startAircraftFile)) { // if they are not the same _tcscpy(startAircraftFile, dfe->GetPathFile()); #if TESTBENCH StartupStore(_T("... Selected new aircraft, preloading..\n")); #endif } } } if (RUN_MODE == RUN_DEVICE) { if (_tcslen(dfe->GetPathFile()) > 0) { if (_tcscmp(dfe->GetPathFile(), startDeviceFile)) { // if they are not the same _tcscpy(startDeviceFile, dfe->GetPathFile()); #if TESTBENCH StartupStore(_T("... Selected new device, preloading..\n")); #endif } } } if (RUN_MODE == RUN_PILOT) { if (_tcslen(dfe->GetPathFile()) > 0) { if (_tcscmp(dfe->GetPathFile(), startPilotFile)) { // if they are not the same _tcscpy(startPilotFile, dfe->GetPathFile()); #if TESTBENCH StartupStore(_T("... Selected new pilot, preloading..\n")); #endif } } } RUN_MODE = RUN_DUALPROF; } if (RUN_MODE == RUN_EXIT) { #if __linux__ RUN_MODE = RUN_WELCOME; #endif LKSound(_T("LK_SLIDE.WAV")); if (MessageBoxX( // LKTOKEN _@M198_ = "Confirm Exit?" MsgToken(198), TEXT("LK8000"), mbYesNo) == IdYes) { Shutdown(); } else { RUN_MODE = RUN_WELCOME; } } _exit: if (wf != NULL) { delete wf; wf = NULL; } StartBitmap.Release(); ProfileBitmap.Release(); if (RUN_MODE == RUN_FLY || RUN_MODE == RUN_SIM) { LKSound(_T("LK_SLIDE.WAV")); return 0; // do not repeat dialog } if (RUN_MODE == RUN_EXIT || RUN_MODE == RUN_SHUTDOWN) return -1; // terminate else return 1; // repeat dialog }