progress display simplified and boosted loading speed .

This commit is contained in:
Zero Fanker 2024-06-05 00:10:50 -04:00
parent 12914b8303
commit 767264156f

View file

@ -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<double>(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;