diff Indoor.cpp @ 726:9d13d2ec35a6

Слияние
author Ritor1
date Fri, 22 Mar 2013 01:29:46 +0600
parents 737d7fec67f0 e7c86528a2b3
children 79ad0526166c
line wrap: on
line diff
--- a/Indoor.cpp	Fri Mar 22 01:29:25 2013 +0600
+++ b/Indoor.cpp	Fri Mar 22 01:29:46 2013 +0600
@@ -846,7 +846,7 @@
                 v21 = stru_F8A590._viewport_space_y;
                 a2 = stru_F8A590._viewport_space_y;
                 v110 = v111 * stru_F8A590._viewport_space_y;
-                v97 = v5->pLevelOfDetail0;
+                v97 = v5->pLevelOfDetail0_prolly_alpha_mask;
                 v98 = v5->pLevelOfDetail1;
                 v99 = v5->pLevelOfDetail2;
                 v22 = v5->pLevelOfDetail3;
@@ -1720,69 +1720,32 @@
 }
 
 //----- (00498C45) --------------------------------------------------------
-int IndoorLocation::Alloc()
-{
-  IndoorLocation *v1; // esi@1
-  void *v2; // eax@1
-  const void *v3; // ST3C_4@1
-  void *v4; // eax@1
-  const void *v5; // ST3C_4@1
-  void *v6; // eax@1
-  const void *v7; // ST3C_4@1
-  void *v8; // eax@1
-  const void *v9; // ST3C_4@1
-  void *v10; // eax@1
-  const void *v11; // ST3C_4@1
-  void *v12; // eax@1
-  const void *v13; // ST3C_4@1
-  void *v14; // eax@1
-  const void *v15; // ST3C_4@1
-  void *v16; // eax@1
-  void *v17; // ecx@1
-  signed int result; // eax@9
-
-  v1 = this;
-  v2 = pAllocator->AllocNamedChunk(this->pVertices, 0x15F90u, "L.V");
-  v3 = v1->pFaces;
-  v1->pVertices = (Vec3_short_ *)v2;
-  v4 = pAllocator->AllocNamedChunk(v3, 0xEA600u, "L.F");
-  v5 = v1->pFaceExtras;
-  v1->pFaces = (BLVFace *)v4;
-  v6 = pAllocator->AllocNamedChunk(v5, 0x2BF20u, "L.FX");
-  v7 = v1->pSectors;
-  v1->pFaceExtras = (BLVFaceExtra *)v6;
-  v8 = pAllocator->AllocNamedChunk(v7, 0xE800u, "L.R");
-  v9 = v1->pLights;
-  v1->pSectors = (BLVSector *)v8;
-  v10 = pAllocator->AllocNamedChunk(v9, 0x1900u, "L.L");
-  v11 = v1->pDoors;
-  v1->pLights = (BLVLightMM7 *)v10;
-  v12 = pAllocator->AllocNamedChunk(v11, 0x3E80u, "L.D");
-  v13 = v1->pNodes;
-  v1->pDoors = (BLVDoor *)v12;
-  v14 = pAllocator->AllocNamedChunk(v13, 0x9C40u, "L.BSP");
-  v15 = v1->pMapOutlines;
-  v1->pNodes = (BSPNode *)v14;
-  v16 = pAllocator->AllocNamedChunk(v15, 0x14824u, "L.Map");
-  v17 = v1->pVertices;
-  v1->pMapOutlines = (BLVMapOutlines *)v16;
-  if ( v17 && v1->pFaces && v1->pFaceExtras && v1->pSectors && v1->pLights && v1->pDoors && v1->pNodes && v16 )
+bool IndoorLocation::Alloc()
+    {
+  pVertices   = (Vec3_short_ *)   pAllocator->AllocNamedChunk(pVertices, 15000*sizeof(Vec3_short_),  "L.V");//0x15F90u
+  pFaces      = (BLVFace *)       pAllocator->AllocNamedChunk(pFaces,    10000*sizeof(BLVFace),      "L.F");//0xEA600u
+  pFaceExtras = (BLVFaceExtra *)  pAllocator->AllocNamedChunk(pFaceExtras,5000*sizeof(BLVFaceExtra), "L.FX"); //0x2BF20u
+  pSectors =    (BLVSector *)     pAllocator->AllocNamedChunk(pSectors,    512*sizeof(BLVSector),     "L.R");//0xE800u
+  pLights =     (BLVLightMM7 *)   pAllocator->AllocNamedChunk(pLights,     400*sizeof(BLVLightMM7),   "L.L");//0x1900u
+  pDoors =      (BLVDoor *)       pAllocator->AllocNamedChunk(pDoors,      200*sizeof(BLVDoor),       "L.D");//0x3E80u
+  pNodes =      (BSPNode *)       pAllocator->AllocNamedChunk(pNodes,     5000*sizeof(BSPNode),       "L.BSP");//0x9C40u
+  pMapOutlines =(BLVMapOutlines *)pAllocator->AllocNamedChunk(pMapOutlines,   sizeof(BLVMapOutlines), "L.Map");//0x14824u
+  if (pVertices && pFaces && pFaceExtras && pSectors && pLights && pDoors && pNodes && pMapOutlines )
   {
-    memset(v17, 90000, 0);
-    memset(v1->pFaces, 960000, 0);
-    memset(v1->pFaceExtras, 180000, 0);
-    memset(v1->pSectors, 59392, 0);
-    memset(v1->pLights, 6400, 0);
-    memset(v1->pDoors, 16000, 0);
-    memset(v1->pNodes, 40000, 0);
-    memset(v1->pMapOutlines, 84004, 0);
-    result = 1;
+    memset(pVertices,  0, 15000*sizeof(Vec3_short_));
+    memset(pFaces,     0, 10000*sizeof(BLVFace));
+    memset(pFaceExtras,0,  5000*sizeof(BLVFaceExtra));
+    memset(pSectors,   0,   512*sizeof(BLVSector));
+    memset(pLights,    0,   400*sizeof(BLVLightMM7));
+    memset(pDoors,     0,   200*sizeof(BLVDoor));
+    memset(pNodes,     0,  5000*sizeof(BSPNode));
+    memset(pMapOutlines,0,  sizeof(BLVMapOutlines));
+    return true;
   }
   else
   {
-    result = 0;
+    return false;
   }
-  return result;
 }
 
 
@@ -1802,13 +1765,13 @@
 
 
 //----- (004488F7) --------------------------------------------------------
-void IndoorLocation::ToggleLight(unsigned int uLightID, unsigned int bToggle)
+void IndoorLocation::ToggleLight(signed int sLightID, unsigned int bToggle)
 {
   char *v2; // eax@4
 
-  if ( uCurrentlyLoadedLevelType == LEVEL_Indoor && (signed int)uLightID <= pIndoor->uNumLights - 1 && (uLightID & 0x80000000u) == 0 )
+  if ( uCurrentlyLoadedLevelType == LEVEL_Indoor && (sLightID <= pIndoor->uNumLights - 1) && (sLightID >= 0) )
   {
-    v2 = (char *)&pIndoor->pLights[uLightID].uAtributes;
+    v2 = (char *)&pIndoor->pLights[sLightID].uAtributes;
     if ( bToggle )
       *v2 &= 0xF7u;
     else