Mercurial > might-and-magic-trilogy
diff SaveLoad.cpp @ 10:5983336e1300
Слияние
author | Серик@ПончиК |
---|---|
date | Wed, 10 Oct 2012 22:30:37 +0600 |
parents | 540178ef9b18 |
children | 93bf1d5f6a6d |
line wrap: on
line diff
--- a/SaveLoad.cpp Wed Oct 10 22:30:20 2012 +0600 +++ b/SaveLoad.cpp Wed Oct 10 22:30:37 2012 +0600 @@ -9,40 +9,37 @@ +struct SavegameList *pSavegameList = new SavegameList; unsigned int uNumSavegameFiles; unsigned int pSavegameUsedSlots[45]; -struct SavegameList *pSavegameList; -struct RGBTexture *pSavegameThumbnails; +struct RGBTexture *pSavegameThumbnails = new RGBTexture[45]; +SavegameHeader *pSavegameHeader = new SavegameHeader[45]; //----- (0045E297) -------------------------------------------------------- -void SavegameList::Initialize(unsigned int a1) +void SavegameList::Initialize(unsigned int bHideEmptySlots) { - signed int v1; // edi@4 - unsigned int v2; // eax@6 - unsigned int v3; // [sp+10h] [bp-4h]@1 - - v3 = a1; - memset(&pSavegameList, 0, 0x3138u); - _chdir("saves"); uNumSavegameFiles = 0; - if ( !v3 && _access(pGlobalTXT_LocalizationStrings[613], 0) != -1 ) - strcpy(pSavegameList->pSavesNames[uNumSavegameFiles++], pGlobalTXT_LocalizationStrings[613]); - v1 = 0; - do + + _chdir("saves"); { - sprintfex(pTmpBuf, "save%03d.mm7", v1); - if ( _access(pTmpBuf, 0) != -1 ) + if (!bHideEmptySlots && _access(pGlobalTXT_LocalizationStrings[613], 0) != -1 ) + strcpy(pSavesNames[uNumSavegameFiles++], pGlobalTXT_LocalizationStrings[613]); + + for (uint i = 0; i < 40; ++i) { - v2 = v1; - if ( !v3 ) - v2 = uNumSavegameFiles; - strcpy(pSavegameList->pSavesNames[v2], pTmpBuf); + sprintf(pTmpBuf, "save%03d.mm7", i); + if (_access(pTmpBuf, 0) == -1) + continue; + + uint idx = i; + if (!bHideEmptySlots) + idx = uNumSavegameFiles; + strcpy(pSavesNames[idx], pTmpBuf); + ++uNumSavegameFiles; } - ++v1; } - while ( v1 < 40 ); _chdir(".."); } \ No newline at end of file