Improve FindItem()

This commit is contained in:
asasas9500 2021-02-07 17:12:41 -03:00
parent 12ebf162ad
commit ad446ad534
4 changed files with 11 additions and 36 deletions

View file

@ -271,13 +271,13 @@ void PoseidonSFX(ITEM_INFO* item)
void RubbleFX(ITEM_INFO* item)
{
int itemNumber = FindItemNumber(ID_EARTHQUAKE);
const auto itemList = FindItem(ID_EARTHQUAKE);
if (itemNumber != NO_ITEM)
if (itemList.size() > 0)
{
ITEM_INFO* eq = &g_Level.Items[itemNumber];
ITEM_INFO* eq = &g_Level.Items[itemList[0]];
AddActiveItem(itemNumber);
AddActiveItem(itemList[0]);
eq->status = ITEM_ACTIVE;
eq->flags |= IFLAG_ACTIVATION_MASK;
}

View file

@ -491,38 +491,15 @@ int GlobalItemReplace(short search, short replace)
return changed;
}
ITEM_INFO* find_a_fucking_item(short objectNum)
std::vector<int> FindItem(short objectNumber)
{
int itemNumber = FindItemNumber(objectNum);
return (itemNumber != NO_ITEM ? &g_Level.Items[itemNumber] : NULL);
}
std::vector<int> itemList;
int FindItemNumber(short objectNum)
{
for (int i = 0; i < g_Level.NumItems; i++)
{
ITEM_INFO* item = &g_Level.Items[i];
if (item->objectNumber == objectNum)
return i;
if (g_Level.Items[i].objectNumber == objectNumber)
itemList.push_back(i);
}
return NO_ITEM;
return itemList;
}
ITEM_INFO* FindItem(short objectNumber)
{
#ifdef _DEBUG
printf("Called FindItem()\n");
#endif
if (g_Level.NumItems > 0)
{
for (int i = 0; i < g_Level.NumItems; i++)
{
if (g_Level.Items[i].objectNumber == objectNumber)
return &g_Level.Items[i];
}
}
return NULL;
}

View file

@ -110,6 +110,4 @@ void KillEffect(short fxNumber);
void InitialiseItem(short itemNum);
void InitialiseItemArray(int numItems);
void KillItem(short itemNum);
ITEM_INFO* find_a_fucking_item(short objectNum);
int FindItemNumber(short objectNumber);
ITEM_INFO* FindItem(short objectNumber);
std::vector<int> FindItem(short objectNumber);

View file

@ -397,7 +397,7 @@ void InitialiseWreckingBall(short itemNumber)
short room;
item = &g_Level.Items[itemNumber];
item->itemFlags[3] = find_a_fucking_item(ID_ANIMATING16) - g_Level.Items.data();
item->itemFlags[3] = FindItem(ID_ANIMATING16)[0];
room = item->roomNumber;
item->pos.yPos = GetCeiling(GetFloor(item->pos.xPos, item->pos.yPos, item->pos.zPos, &room), item->pos.xPos, item->pos.yPos, item->pos.zPos) + 1644;
GetFloor(item->pos.xPos, item->pos.yPos, item->pos.zPos, &room);