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