From 767264156f3e80d91a0e9f8daf0f701cecacd89c Mon Sep 17 00:00:00 2001 From: Zero Fanker Date: Wed, 5 Jun 2024 00:10:50 -0400 Subject: [PATCH] progress display simplified and boosted loading speed . --- MissionEditor/Loading.cpp | 146 ++++++++++++-------------------------- 1 file changed, 45 insertions(+), 101 deletions(-) diff --git a/MissionEditor/Loading.cpp b/MissionEditor/Loading.cpp index 663de6a..5726fab 100644 --- a/MissionEditor/Loading.cpp +++ b/MissionEditor/Loading.cpp @@ -129,7 +129,7 @@ BOOL bUseFirestorm = TRUE; void CLoading::Load() { - auto startTime = std::chrono::steady_clock::now(); + m_progress.SetRange(0, 100); CString artFile; @@ -157,6 +157,10 @@ void CLoading::Load() ms.dwLength = sizeof(MEMORYSTATUS); GlobalMemoryStatus(&ms); int cs = ms.dwAvailPhys + ms.dwAvailPageFile; + + m_progress.SetPos(10); + UpdateWindow(); + InitMixFiles(); errstream << "Loading palettes" << std::endl << std::endl; errstream.flush(); @@ -169,13 +173,11 @@ void CLoading::Load() // create a ini file containing some info XCC Mixer needs CreateINI(); - // set progress bar range to 0-2 - m_progress.SetRange(0, 2); - // rules.ini m_cap.SetWindowText(GetLanguageStringACP("LoadLoadRules")); - m_progress.SetPos(1); + m_progress.SetPos(30); UpdateWindow(); + LoadTSIni("Rules.ini", &rules, FALSE); #ifdef TS_MODE @@ -253,21 +255,17 @@ void CLoading::Load() } } #endif - - m_progress.SetPos(2); //rules.DeleteLeadingSpaces(TRUE, TRUE); //rules.DeleteEndingSpaces(TRUE, TRUE); PrepareHouses(); HackRules(); - UpdateWindow(); - - // art.ini m_cap.SetWindowText(GetLanguageStringACP("LoadLoadArt")); - m_progress.SetPos(1); + m_progress.SetPos(35); UpdateWindow(); + LoadTSIni("Art.ini", &art, FALSE); #ifdef TS_MODE if (bUseFirestorm) // LoadTSIni("ArtFs.ini", &art, TRUE); @@ -318,22 +316,16 @@ void CLoading::Load() } #endif - - - m_progress.SetPos(2); //art.DeleteLeadingSpaces(TRUE, TRUE); //art.DeleteEndingSpaces(TRUE, TRUE); - UpdateWindow(); // tutorial.ini m_cap.SetWindowText(GetLanguageStringACP("LoadLoadTutorial")); - m_progress.SetPos(1); - UpdateWindow(); LoadTSIni("Tutorial.ini", &tutorial, FALSE); // sound.ini m_cap.SetWindowText(GetLanguageStringACP("LoadLoadSound")); - m_progress.SetPos(1); + m_progress.SetPos(40); UpdateWindow(); @@ -360,76 +352,73 @@ void CLoading::Load() LoadTSIni("Sound.ini", &sound, FALSE); } - m_progress.SetPos(2); - UpdateWindow(); - // eva.INI m_cap.SetWindowText(GetLanguageStringACP("LoadLoadEva")); - m_progress.SetPos(1); + m_progress.SetPos(45); UpdateWindow(); + LoadTSIni("eva.ini", &eva, FALSE); - m_progress.SetPos(2); - UpdateWindow(); // theme.INI m_cap.SetWindowText(GetLanguageStringACP("LoadLoadTheme")); - m_progress.SetPos(1); - UpdateWindow(); - LoadTSIni("theme.ini", &theme, FALSE); - m_progress.SetPos(2); + m_progress.SetPos(50); UpdateWindow(); + LoadTSIni("theme.ini", &theme, FALSE); // AI.INI m_cap.SetWindowText(GetLanguageStringACP("LoadLoadAI")); - m_progress.SetPos(1); + m_progress.SetPos(55); UpdateWindow(); + LoadTSIni("Ai.ini", &ai, FALSE); #ifdef TS_MODE if (bUseFirestorm) LoadTSIni("aifs.ini", &ai, TRUE);; #else - if (bUseFirestorm && yuri_mode) LoadTSIni("aimd.ini", &ai, TRUE); // YR -#endif - m_progress.SetPos(2); - UpdateWindow(); + if (bUseFirestorm && yuri_mode) { + // YR + LoadTSIni("aimd.ini", &ai, TRUE); + } +#endif const BOOL preferLocalTheater = theApp.m_Options.bPreferLocalTheaterFiles ? TRUE : FALSE; // Temperat.INI m_cap.SetWindowText(GetLanguageStringACP("LoadLoadTemperat")); - m_progress.SetPos(1); + m_progress.SetPos(60); UpdateWindow(); + LoadTSIni("Temperat.ini", &tiles_t, FALSE, preferLocalTheater); - if (yuri_mode) LoadTSIni("TemperatMD.ini", &tiles_t, TRUE, preferLocalTheater); - m_progress.SetPos(2); - UpdateWindow(); + if (yuri_mode) { + LoadTSIni("TemperatMD.ini", &tiles_t, TRUE, preferLocalTheater); + } // Snow.INI m_cap.SetWindowText(GetLanguageStringACP("LoadLoadSnow")); - m_progress.SetPos(1); + m_progress.SetPos(65); UpdateWindow(); + LoadTSIni("Snow.ini", &tiles_s, FALSE, preferLocalTheater); - if (yuri_mode) LoadTSIni("SnowMD.ini", &tiles_s, TRUE, preferLocalTheater); - m_progress.SetPos(2); - UpdateWindow(); + if (yuri_mode) { + LoadTSIni("SnowMD.ini", &tiles_s, TRUE, preferLocalTheater); + } // Urban.INI m_cap.SetWindowText(GetLanguageStringACP("LoadLoadUrban")); - m_progress.SetPos(1); + m_progress.SetPos(70); UpdateWindow(); + LoadTSIni("Urban.ini", &tiles_u, FALSE, preferLocalTheater); - if (yuri_mode) LoadTSIni("UrbanMD.ini", &tiles_u, TRUE, preferLocalTheater); - m_progress.SetPos(2); - UpdateWindow(); + if (yuri_mode) { + LoadTSIni("UrbanMD.ini", &tiles_u, TRUE, preferLocalTheater); + } if (yuri_mode) { m_cap.SetWindowText(GetLanguageStringACP("LoadLoadUrbanN")); - m_progress.SetPos(1); + m_progress.SetPos(75); UpdateWindow(); LoadTSIni("UrbanNMD.ini", &tiles_un, FALSE, preferLocalTheater); - m_progress.SetPos(2); - UpdateWindow(); // MW FIX: MAKE URBAN RAMPS MORPHABLE: if (!tiles_un["TileSet0117"].Exists("Morphable")) { @@ -437,18 +426,16 @@ void CLoading::Load() } m_cap.SetWindowText(GetLanguageStringACP("LoadLoadLunar")); - m_progress.SetPos(1); - UpdateWindow(); - LoadTSIni("LunarMD.ini", &tiles_l, FALSE, preferLocalTheater); - m_progress.SetPos(2); + m_progress.SetPos(80); UpdateWindow(); + LoadTSIni("LunarMD.ini", &tiles_l, FALSE, preferLocalTheater); + m_cap.SetWindowText(GetLanguageStringACP("LoadLoadDesert")); - m_progress.SetPos(1); + m_progress.SetPos(85); UpdateWindow(); + LoadTSIni("DesertMD.ini", &tiles_d, FALSE, preferLocalTheater); - m_progress.SetPos(2); - UpdateWindow(); } @@ -456,14 +443,14 @@ void CLoading::Load() // load Command & Conquer Rules.ini section names LoadStrings(); - // ok now directdraw m_cap.SetWindowText(GetLanguageStringACP("LoadInitDDraw")); - m_progress.SetRange(0, 4); + m_progress.SetPos(95); + UpdateWindow(); InitDirectDraw(); - m_progress.SetPos(3); + m_progress.SetPos(100); UpdateWindow(); /*errstream << "Now calling InitPics()\n"; @@ -473,11 +460,6 @@ void CLoading::Load() errstream << "InitPics() finished\n\n\n"; errstream.flush();*/ - auto delay = std::chrono::duration(theApp.m_Options.fLoadScreenDelayInSeconds); - if ((std::chrono::steady_clock::now() - startTime) < delay) { - std::this_thread::sleep_until(startTime + delay); - } - DestroyWindow(); } @@ -707,8 +689,6 @@ void CLoading::InitPics(CProgressCtrl* prog) CalcPicCount(); - if (m_progress.m_hWnd != NULL) m_progress.SetRange(0, m_pic_count / 15 + 1); - if (!theApp.m_Options.bDoNotLoadBMPs) { int k; CFileFind ff; @@ -742,11 +722,6 @@ void CLoading::InitPics(CProgressCtrl* prog) FSunPackLib::SetColorKey(((LPDIRECTDRAWSURFACE4)(pics[(LPCTSTR)ff.GetFileName()].pic)), -1); } catch (const BitmapNotFound&) { } - - if (m_progress.m_hWnd != NULL && k % 15 == 0) { - m_progress.SetPos(m_progress.GetPos() + 1); - UpdateWindow(); - } } } } @@ -1062,10 +1037,6 @@ void CLoading::InitSHPs(CProgressCtrl* prog) auto const& sec = rules["OverlayTypes"]; for (i = 0; i < sec.Size(); i++) { LoadOverlayGraphic(sec.Nth(i).second, i); - if (m_progress.m_hWnd != NULL && i % 15 == 0) { - m_progress.SetPos(m_progress.GetPos() + 1); - UpdateWindow(); - } } } @@ -1073,10 +1044,6 @@ void CLoading::InitSHPs(CProgressCtrl* prog) auto const& sec = rules["VehicleTypes"]; for (i = 0; i < sec.Size(); i++) { LoadUnitGraphic(sec.Nth(i).second); - if (m_progress.m_hWnd != NULL && i % 15 == 0) { - m_progress.SetPos(m_progress.GetPos() + 1); - UpdateWindow(); - } } } @@ -1084,10 +1051,6 @@ void CLoading::InitSHPs(CProgressCtrl* prog) auto const& sec = rules.GetSection("InfantryTypes"); for (i = 0; i < sec.Size(); i++) { LoadUnitGraphic(sec.Nth(i).second); - if (m_progress.m_hWnd != NULL && i % 15 == 0) { - m_progress.SetPos(m_progress.GetPos() + 1); - UpdateWindow(); - } } } @@ -1096,10 +1059,6 @@ void CLoading::InitSHPs(CProgressCtrl* prog) auto const& sec = rules.GetSection("BuildingTypes"); for (i = 0; i < sec.Size(); i++) { LoadUnitGraphic(sec.Nth(i).second); - if (m_progress.m_hWnd != NULL && i % 15 == 0) { - m_progress.SetPos(m_progress.GetPos() + 1); - UpdateWindow(); - } } } @@ -1107,10 +1066,6 @@ void CLoading::InitSHPs(CProgressCtrl* prog) auto const& sec = rules.GetSection("AircraftTypes"); for (i = 0; i < sec.Size(); i++) { LoadUnitGraphic(sec.Nth(i).second); - if (m_progress.m_hWnd != NULL && i % 15 == 0) { - m_progress.SetPos(m_progress.GetPos() + 1); - UpdateWindow(); - } } } @@ -1118,10 +1073,6 @@ void CLoading::InitSHPs(CProgressCtrl* prog) auto const& sec = rules.GetSection("TerrainTypes"); for (i = 0; i < sec.Size(); i++) { LoadUnitGraphic(sec.Nth(i).second); - if (m_progress.m_hWnd != NULL && i % 15 == 0) { - m_progress.SetPos(m_progress.GetPos() + 1); - UpdateWindow(); - } } } @@ -3602,9 +3553,6 @@ BOOL CLoading::InitDirectDraw() errstream << "DirectDrawCreate() successful\n\n"; errstream.flush(); - if (m_progress.m_hWnd) m_progress.SetPos(1); - if (m_hWnd) UpdateWindow(); - errstream << "Now querying the DirectX 7 or 6 interface\n"; errstream.flush(); @@ -3642,10 +3590,6 @@ BOOL CLoading::InitDirectDraw() errstream << "SetCooperativeLevel() successful\n\nCreating primary surface\n"; errstream.flush(); - - if (m_progress.m_hWnd) m_progress.SetPos(2); - if (m_hWnd) UpdateWindow(); - DDSURFACEDESC2 ddsd;