diff Player.cpp @ 1383:0a4254e80036

Player::PutItemArInventoryIndex, Player::RemoveItemAtInventoryIndex cleanup, slightly simplified
author Grumpy7
date Tue, 16 Jul 2013 00:40:01 +0200
parents 132a6a0d5cef
children b51332ab228f
line wrap: on
line diff
--- a/Player.cpp	Tue Jul 16 00:20:17 2013 +0200
+++ b/Player.cpp	Tue Jul 16 00:40:01 2013 +0200
@@ -895,25 +895,8 @@
   }
   else
   {
-    texturePtr = pIcons_LOD->LoadTexturePtr(pItemsTable->pItems[uItemID].pIconName, TEXTURE_16BIT_PALETTE);
-    widthInSlots = GetSizeInInventorySlots(texturePtr->uTextureWidth);
-    heightInSlots = GetSizeInInventorySlots(texturePtr->uTextureHeight);
-    if ( !areWeLoadingTexture )
-    {
-      texturePtr->Release();
-      pIcons_LOD->SyncLoadedFilesCount();
-    }
-    if (widthInSlots > 0)
-    {
-      v9 = &this->pInventoryIndices[uSlot];
-      for (unsigned int i = 0; i < heightInSlots; i++)
-      {
-        memset32(v9, -1 - uSlot, widthInSlots); //TODO: try to come up with a better solution. negative values are used when drawing the inventory - nothing is drawn
-        v9 += INVETORYSLOTSWIDTH;
-      }
-    }
+    PutItemArInventoryIndex(uItemID, freeSlot, uSlot);
     result = freeSlot + 1;
-    this->pInventoryIndices[uSlot] = freeSlot + 1;
     this->pInventoryItems[freeSlot].uItemID = uItemID;
   }
   return result;
@@ -1025,25 +1008,7 @@
   }
   else
   {
-    item_texture = pIcons_LOD->LoadTexturePtr(pItemsTable->pItems[Src->uItemID].pIconName, TEXTURE_16BIT_PALETTE);
-    slot_width = GetSizeInInventorySlots(item_texture->uTextureWidth);
-    slot_height = GetSizeInInventorySlots(item_texture->uTextureHeight);
-    if ( !areWeLoadingTexture )
-    {
-      item_texture->Release();
-      pIcons_LOD->SyncLoadedFilesCount();
-    }
-
-    if ( slot_width > 0 )
-    {
-      pInvPos = &pInventoryIndices[uSlot];
-      for (unsigned int i = 0; i < slot_height; i++)
-      {
-        memset32(pInvPos, -1 - uSlot, slot_width);
-        pInvPos += INVETORYSLOTSWIDTH;
-      }
-    }
-    pInventoryIndices[uSlot] = freeSlot + 1;
+    PutItemArInventoryIndex(Src->uItemID, freeSlot, uSlot);
     memcpy(&pInventoryItems[freeSlot], Src, sizeof(ItemGen));
     result = freeSlot + 1;
   }
@@ -1052,16 +1017,14 @@
 // 506128: using guessed type int areWeLoadingTexture;
 
 //----- (0049298B) --------------------------------------------------------
-int Player::PutItemArInventoryIndex( ItemGen *item, int item_id, int uSlot )
-    {
-  //Player *v4; // ebx@1
-  //unsigned int v5; // eax@1
+void Player::PutItemArInventoryIndex( int uItemID, int item_id, int uSlot )
+{
   Texture *item_texture; // esi@1
   int *pInvPos; // esi@4
   unsigned int slot_width; // [sp+Ch] [bp-4h]@1
   unsigned int slot_height; // [sp+18h] [bp+8h]@1
 
-  item_texture = pIcons_LOD->LoadTexturePtr(pItemsTable->pItems[item->uItemID].pIconName, TEXTURE_16BIT_PALETTE);
+  item_texture = pIcons_LOD->LoadTexturePtr(pItemsTable->pItems[uItemID].pIconName, TEXTURE_16BIT_PALETTE);
   slot_width =  GetSizeInInventorySlots(item_texture->uTextureWidth);
   slot_height = GetSizeInInventorySlots(item_texture->uTextureHeight);
   if ( !areWeLoadingTexture )
@@ -1069,28 +1032,23 @@
     item_texture->Release();
     pIcons_LOD->SyncLoadedFilesCount();
   }
-  if ( (signed int)slot_height > 0 )
-  {
-    pInvPos = &pInventoryIndices[uSlot]; //14x9
-    do
-    {
-      if ( (signed int)slot_width > 0 )
-        memset32(pInvPos, -1 - uSlot, slot_width);
-      pInvPos +=14;
-      --slot_height;
-    }
-    while ( slot_height );
+  if ( slot_width > 0 )
+  {
+    pInvPos = &pInventoryIndices[uSlot];
+    for (unsigned int i = 0; i < slot_height; i++)
+    {
+      memset32(pInvPos, -1 - uSlot, slot_width);//TODO: try to come up with a better solution. negative values are used when drawing the inventory - nothing is drawn
+      pInvPos += INVETORYSLOTSWIDTH;
+    }
   }
   pInventoryIndices[uSlot] = item_id + 1;
-  return 1;
 }
 
 // 506128: using guessed type int areWeLoadingTexture;
 
 //----- (00492A36) --------------------------------------------------------
 void Player::RemoveItemAtInventoryIndex( unsigned int uSlot )
-    {
-
+{
   ItemGen *item_in_slot; // ecx@1
   Texture *item_texture; // esi@1
   unsigned int slot_height; // ebp@1
@@ -1107,19 +1065,15 @@
     item_texture->Release();
     pIcons_LOD->SyncLoadedFilesCount();
   }
-  if ( slot_height > 0 )
+  if ( slot_width > 0 )
   {
     pInvPos = &pInventoryIndices[uSlot];
-    do
-    {
-      if (slot_width > 0 )
-        memset32(pInvPos, 0, slot_width);
-      pInvPos += 14;
-      --slot_height;
-    }
-    while ( slot_height );
-  }
-  
+    for (unsigned int i = 0; i < slot_height; i++)
+    {
+      memset32(pInvPos, 0, slot_width);
+      pInvPos += INVETORYSLOTSWIDTH;
+    }
+  }
 }
 // 506128: using guessed type int areWeLoadingTexture;
 
@@ -9641,7 +9595,7 @@
             pX = v0->AddItem2(0xFFFFFFFFu, &pParty->pPickedItem);
             if ( !pX )
             {
-              v0->PutItemArInventoryIndex(&this_, v13 - 1, a4);
+              v0->PutItemArInventoryIndex(this_.uItemID, v13 - 1, a4);
               memcpy((void *)a2.y, &this_, sizeof(ItemGen));
               return;
             }