Browse Source

Smoother and faster loading

Predictable: Always have the same number of steps in the progress bar
Faster: Increate size of steps to fit with the number of steps
pull/380/head
Anders Jenbo 7 years ago
parent
commit
760aaa8b37
  1. 14
      Source/diablo.cpp
  2. 14
      Source/interfac.cpp

14
Source/diablo.cpp

@ -1464,7 +1464,11 @@ void LoadGameLevel(BOOL firstflag, int lvldir)
InitThemes();
LoadAllGFX();
} else {
IncProgress();
IncProgress();
InitMissileGFX();
IncProgress();
IncProgress();
}
IncProgress();
@ -1502,9 +1506,11 @@ void LoadGameLevel(BOOL firstflag, int lvldir)
glMid1Seed[currlevel] = GetRndSeed();
InitMonsters();
glMid2Seed[currlevel] = GetRndSeed();
IncProgress();
InitObjects();
InitItems();
CreateThemeRooms();
IncProgress();
glMid3Seed[currlevel] = GetRndSeed();
InitMissiles();
InitDead();
@ -1550,14 +1556,19 @@ void LoadGameLevel(BOOL firstflag, int lvldir)
LoadSetMap();
IncProgress();
GetLevelMTypes();
IncProgress();
InitMonsters();
IncProgress();
InitMissileGFX();
IncProgress();
InitDead();
IncProgress();
FillSolidBlockTbls();
IncProgress();
if (lvldir == 5)
GetPortalLvlPos();
IncProgress();
for (i = 0; i < MAX_PLRS; i++) {
if (plr[i].plractive && currlevel == plr[i].plrlevel) {
@ -1566,6 +1577,7 @@ void LoadGameLevel(BOOL firstflag, int lvldir)
InitPlayer(i, firstflag);
}
}
IncProgress();
InitMultiView();
IncProgress();
@ -1606,8 +1618,8 @@ void LoadGameLevel(BOOL firstflag, int lvldir)
if (firstflag) {
InitControlPan();
IncProgress();
}
IncProgress();
if (leveltype != DTYPE_TOWN) {
ProcessLightList();
ProcessVisionList();

14
Source/interfac.cpp

@ -24,7 +24,7 @@ void interface_msg_pump()
BOOL IncProgress()
{
interface_msg_pump();
sgdwProgress += 15;
sgdwProgress += 23;
if ((DWORD)sgdwProgress > 534)
sgdwProgress = 534;
if (sgpBackCel)
@ -86,15 +86,18 @@ void ShowProgress(unsigned int uMsg)
switch (uMsg) {
case WM_DIABLOADGAME:
IncProgress();
IncProgress();
LoadGame(TRUE);
IncProgress();
IncProgress();
break;
case WM_DIABNEWGAME:
IncProgress();
FreeGameMem();
IncProgress();
pfile_remove_temp_files();
IncProgress();
LoadGameLevel(TRUE, 0);
IncProgress();
break;
@ -105,6 +108,7 @@ void ShowProgress(unsigned int uMsg)
} else {
DeltaSaveLevel();
}
IncProgress();
FreeGameMem();
currlevel++;
leveltype = gnLevelTypeTbl[currlevel];
@ -131,11 +135,13 @@ void ShowProgress(unsigned int uMsg)
break;
case WM_DIABSETLVL:
SetReturnLvlPos();
IncProgress();
if (gbMaxPlayers == 1) {
SaveLevel();
} else {
DeltaSaveLevel();
}
IncProgress();
setlevel = TRUE;
leveltype = setlvltype;
FreeGameMem();
@ -144,11 +150,13 @@ void ShowProgress(unsigned int uMsg)
IncProgress();
break;
case WM_DIABRTNLVL:
IncProgress();
if (gbMaxPlayers == 1) {
SaveLevel();
} else {
DeltaSaveLevel();
}
IncProgress();
setlevel = FALSE;
FreeGameMem();
IncProgress();
@ -163,6 +171,7 @@ void ShowProgress(unsigned int uMsg)
} else {
DeltaSaveLevel();
}
IncProgress();
FreeGameMem();
GetPortalLevel();
IncProgress();
@ -176,6 +185,7 @@ void ShowProgress(unsigned int uMsg)
} else {
DeltaSaveLevel();
}
IncProgress();
FreeGameMem();
currlevel = plr[myplr].plrlevel;
leveltype = gnLevelTypeTbl[currlevel];
@ -191,6 +201,7 @@ void ShowProgress(unsigned int uMsg)
} else {
DeltaSaveLevel();
}
IncProgress();
FreeGameMem();
currlevel = plr[myplr].plrlevel;
leveltype = gnLevelTypeTbl[currlevel];
@ -206,6 +217,7 @@ void ShowProgress(unsigned int uMsg)
} else {
DeltaSaveLevel();
}
IncProgress();
FreeGameMem();
currlevel = plr[myplr].plrlevel;
leveltype = gnLevelTypeTbl[currlevel];

Loading…
Cancel
Save