diff SaveLoad.cpp @ 2176:2f9689a85c31

Слияние
author Ritor1
date Tue, 21 Jan 2014 18:32:43 +0600
parents 5ca3251ea543
children e1199b655710
line wrap: on
line diff
--- a/SaveLoad.cpp	Tue Jan 21 18:32:23 2014 +0600
+++ b/SaveLoad.cpp	Tue Jan 21 18:32:43 2014 +0600
@@ -25,24 +25,12 @@
 #include "mm7_data.h"
 
 
-
-
-
 struct SavegameList *pSavegameList = new SavegameList;
 unsigned int uNumSavegameFiles;
 std::array<unsigned int, 45> pSavegameUsedSlots;
 std::array<struct RGBTexture, 45> pSavegameThumbnails;
 std::array<SavegameHeader, 45> pSavegameHeader;
 
-
-
-
-
-
-
-
-
-
 //----- (0045EE8A) --------------------------------------------------------
 void __fastcall LoadGame(unsigned int uSlot)
 {
@@ -68,7 +56,6 @@
       remove(pTmpBuf.data());
     }
 
-
   if (SoundSetAction[24][0])
     for (uint i = 0; i < 4; ++i)
     {
@@ -161,7 +148,6 @@
     Log::Warning(L"NPCStats: deserialization warning");
   fread(pNPCStats->pGroups_copy, sizeof(pNPCStats->pGroups_copy), 1, file);
 
-
   uActiveCharacter = 0;
   for (uint i = 0; i < 4; ++i)
     if (pParty->pPlayers[i].CanAct())
@@ -224,11 +210,9 @@
   viewparams->bRedrawGameUI = true;
 }
 
-
 //----- (0045F469) --------------------------------------------------------
 void SaveGame( bool IsAutoSAve, bool NotSaveWorld )
 {
-  //unsigned short *pScreenshot; // edi@5
   int text_pos; // eax@6
   FILE *pLLoidFile; // edi@24
   char* compressed_buf; // edi@30
@@ -278,7 +262,7 @@
   else
     pOutdoor->loc_time.uLastVisitDay = pParty->uTimePlayed;
 
-  pRenderer->PackScreenshot(150, 112, uncompressed_buff, 1000000, &pLodDirectory.uDataSize);
+  pRenderer->PackScreenshot(150, 112, uncompressed_buff, 1000000, &pLodDirectory.uDataSize);// 
   strcpy(pLodDirectory.pFilename, "image.pcx");
 
   if (pCurrentScreen == SCREEN_SAVEGAME)
@@ -398,19 +382,17 @@
       data_write_pos += sizeof(DDM_DLV_Header);
       memcpy(data_write_pos, pIndoor->_visible_outlines, 0x36B);
       data_write_pos += 875;
-    
-        for (int i =  0; i <(signed int)pIndoor->uNumFaces; ++i)
-        {
-          memcpy(data_write_pos, &pIndoor->pFaces[i].uAttributes, 4);
-          data_write_pos += 4;
-        }
+      for (int i =  0; i <(signed int)pIndoor->uNumFaces; ++i)
+      {
+        memcpy(data_write_pos, &pIndoor->pFaces[i].uAttributes, 4);
+        data_write_pos += 4;
+      }
 
-        for (int i =  0; i <(signed int)uNumLevelDecorations; ++i)
-        {
-          memcpy(data_write_pos, &pLevelDecorations[i].uFlags, 2);
-     
-          data_write_pos+= 2;
-        }
+      for (int i =  0; i <(signed int)uNumLevelDecorations; ++i)
+      {
+        memcpy(data_write_pos, &pLevelDecorations[i].uFlags, 2);
+        data_write_pos += 2;
+      }
       memcpy(data_write_pos, &uNumActors, 4);
       data_write_pos += 4;
       memcpy(data_write_pos, &pActors, uNumActors * sizeof(Actor));
@@ -433,13 +415,11 @@
       data_write_pos += 56;
 
     }
-    else
+    else//for Outdoor
     {
       pOutdoor->ddm.uNumFacesInBModels = 0;
-      for (int i=0; i<pOutdoor->uNumBModels;++i)
-          {
-          pOutdoor->ddm.uNumFacesInBModels +=pOutdoor->pBModels[i].uNumFaces;
-          }
+      for ( int i = 0; i < pOutdoor->uNumBModels; ++i )
+        pOutdoor->ddm.uNumFacesInBModels += pOutdoor->pBModels[i].uNumFaces;
       pOutdoor->ddm.uNumBModels = pOutdoor->uNumBModels;
       pOutdoor->ddm.uNumDecorations = uNumLevelDecorations;
       memcpy(data_write_pos, &pOutdoor->ddm, sizeof(DDM_DLV_Header));//0x28
@@ -448,18 +428,18 @@
       data_write_pos += 968;
       memcpy(data_write_pos, pOutdoor->uDicovered_area, 0x3C8);
       data_write_pos += 968;
-		for (int i =  0; i < pOutdoor->uNumBModels ; ++i)  
-			for (int j =  0; j < pOutdoor->pBModels[i].uNumFaces;++j)//*(int *)&pOutdoor->pBModels->pModelName[v24]; ++j)
-            {		 
-              memcpy(data_write_pos, &(pOutdoor->pBModels[i].pFaces[j].uAttributes), 4);
-              data_write_pos += 4;
-            }
-      
-        for (int i = 0; i < (signed int)uNumLevelDecorations; ++i)
+      for (int i =  0; i < pOutdoor->uNumBModels ; ++i)  
+        for (int j =  0; j < pOutdoor->pBModels[i].uNumFaces;++j)//*(int *)&pOutdoor->pBModels->pModelName[v24]; ++j)
         {
-          memcpy(data_write_pos, &pLevelDecorations[i].uFlags, 2);
-          data_write_pos += 2;
+          memcpy(data_write_pos, &(pOutdoor->pBModels[i].pFaces[j].uAttributes), 4);
+          data_write_pos += 4;
         }
+
+      for (int i = 0; i < (signed int)uNumLevelDecorations; ++i)
+      {
+        memcpy(data_write_pos, &pLevelDecorations[i].uFlags, 2);
+        data_write_pos += 2;
+      }
       memcpy(data_write_pos, &uNumActors, 4);
       data_write_pos += 4;
       memcpy(data_write_pos, pActors.data(), 836 * uNumActors);
@@ -519,34 +499,21 @@
   pParty->sRotationX = sPRotationX;
 }
 
-
 //----- (00460078) --------------------------------------------------------
 void __fastcall DoSavegame(unsigned int uSlot)
 {
-  //unsigned int v1; // esi@1
-  //int v2; // esi@2
-  //RGBTexture *v3; // ebx@3
-  int bNotArena; // [sp+2Ch] [bp-8h]@1
-  //unsigned int v6; // [sp+30h] [bp-4h]@1
-
-  //__debugbreak();
-
-  //v1 = uSlot;
-  //v6 = uSlot;
-  bNotArena = _stricmp(pCurrentMapName, "d05.blv");
-  if ( bNotArena )
+  if ( _stricmp(pCurrentMapName, "d05.blv") )//Not Arena( )
   {
     LOD::Directory pDir; // [sp+Ch] [bp-28h]@2
     SaveGame(0, 0);
-    //v2 = 100 * v1;
-    strcpy(pSavegameHeader[uSlot].pLocationName, pCurrentMapName);
-    pSavegameHeader[uSlot].uWordTime = pParty->uTimePlayed;
+    strcpy(pSavegameHeader[uSlot].pLocationName, pCurrentMapName);//  
+    pSavegameHeader[uSlot].uWordTime = pParty->uTimePlayed;// 
     strcpy(pDir.pFilename, "header.bin");
     pDir.uDataSize = 100;
     pNew_LOD->Write(&pDir, &pSavegameHeader[uSlot], 0);
     sprintf(pTmpBuf.data(), "saves\\save%03d.mm7", uSlot);
-    pNew_LOD->CloseWriteFile();
-    CopyFileA("data\\new.lod", pTmpBuf.data(), 0);
+    pNew_LOD->CloseWriteFile();// 
+    CopyFileA("data\\new.lod", pTmpBuf.data(), 0);//    saves
   }
   GUI_UpdateWindows();
   pGUIWindow_CurrentMenu->Release();
@@ -556,7 +523,7 @@
   for (uint i = 0; i < 45; i++)
     pSavegameThumbnails[i].Release();
 
-  if ( bNotArena )
+  if ( _stricmp(pCurrentMapName, "d05.blv") )
     pNew_LOD->_4621A7();
   else
     ShowStatusBarString(pGlobalTXT_LocalizationStrings[583], 2);// "No saving in the Arena"
@@ -608,37 +575,37 @@
 //----- (0046086A) --------------------------------------------------------
 void SaveNewGame()
 {
-  FILE *v3; // eax@7
+  FILE *file; // eax@7
   void *pSave; // [sp+170h] [bp-8h]@3
 
   if ( pVideoPlayer->AnyMovieLoaded() )
     pVideoPlayer->Unload();
   pSave = malloc(1000000);
   pNew_LOD->CloseWriteFile();
-  remove("data\\new.lod");
+  remove("data\\new.lod");// new.lod
 
-  LOD::FileHeader this_; // [sp+Ch] [bp-16Ch]@3
-  strcpy(this_.LodVersion, "MMVII");
-  strcpy(this_.LodDescription, "newmaps for MMVII");
-  this_.LODSize = 100;
-  this_.dword_0000A8 = 0;
+  LOD::FileHeader header; // [sp+Ch] [bp-16Ch]@3 
+  strcpy(header.LodVersion, "MMVII");
+  strcpy(header.LodDescription, "newmaps for MMVII");
+  header.LODSize = 100;
+  header.dword_0000A8 = 0;
 
   LOD::Directory a3; // [sp+14Ch] [bp-2Ch]@3
   a3.dword_000018 = 0;
   a3.word_00001E = 0;
   strcpy(a3.pFilename, "current");
-  pNew_LOD->CreateNewLod(&this_, &a3, "data\\new.lod");
-  if (pNew_LOD->LoadFile("data\\new.lod", false))
+  pNew_LOD->CreateNewLod(&header, &a3, "data\\new.lod");// new.lod  
+  if (pNew_LOD->LoadFile("data\\new.lod", false))//  new.lod(isFileOpened = true)
   {
-    pNew_LOD->CreateTempFile();
+    pNew_LOD->CreateTempFile();//   OutputFileHandle
     pNew_LOD->uNumSubDirs = 0;
 
     LOD::Directory pDir; // [sp+10Ch] [bp-6Ch]@4
-    for (int i = pGames_LOD->uNumSubDirs / 2; i < pGames_LOD->uNumSubDirs; ++i)
+    for (int i = pGames_LOD->uNumSubDirs / 2; i < pGames_LOD->uNumSubDirs; ++i)//   76  151
     {
-      memcpy(&pDir, &pGames_LOD->pSubIndices[i], sizeof(pDir));
-      v3 = pGames_LOD->FindContainer(pGames_LOD->pSubIndices[i].pFilename, 1);
-      fread(pSave, pGames_LOD->pSubIndices[i].uDataSize, 1, v3);
+      memcpy(&pDir, &pGames_LOD->pSubIndices[i], sizeof(pDir));//    pDir
+      file = pGames_LOD->FindContainer(pGames_LOD->pSubIndices[i].pFilename, 1);
+      fread(pSave, pGames_LOD->pSubIndices[i].uDataSize, 1, file);
       pNew_LOD->AppendDirectory(&pDir, pSave);
     }