diff --git a/Source/control.cpp b/Source/control.cpp index 6892ab6ab..d10de8c5d 100644 --- a/Source/control.cpp +++ b/Source/control.cpp @@ -444,7 +444,7 @@ int CapStatPointsToAdd(int remainingStatPoints, const Player &player, CharacterA return std::min(remainingStatPoints, pointsToReachCap); } -int DrawDurIcon4Item(const Surface &out, ItemStruct &pItem, int x, int c) +int DrawDurIcon4Item(const Surface &out, Item &pItem, int x, int c) { if (pItem.isEmpty()) return x; diff --git a/Source/controls/plrctrls.cpp b/Source/controls/plrctrls.cpp index 384043a66..5e73ddb55 100644 --- a/Source/controls/plrctrls.cpp +++ b/Source/controls/plrctrls.cpp @@ -585,7 +585,7 @@ Size GetItemSizeOnSlot(int slot, char &itemInvId) iv = -ii; } - ItemStruct &item = myPlayer.InvList[iv - 1]; + Item &item = myPlayer.InvList[iv - 1]; if (!item.isEmpty()) { auto size = GetInvItemSize(item._iCurs + CURSOR_FIRSTITEM); size.width /= InventorySlotSizeInPixels.width; @@ -1467,7 +1467,7 @@ void PerformSpellAction() void CtrlUseInvItem() { - ItemStruct *item; + Item *item; if (pcursinvitem == -1) return; diff --git a/Source/engine/render/cel_render.cpp b/Source/engine/render/cel_render.cpp index 96a3f3ecd..1d94b85c0 100644 --- a/Source/engine/render/cel_render.cpp +++ b/Source/engine/render/cel_render.cpp @@ -649,7 +649,7 @@ void CelDrawLightRedTo(const Surface &out, Point position, const CelSprite &cel, RenderCelWithLightTable(out, position, pRLEBytes, nDataSize, cel.Width(frame), GetLightTable(1)); } -void CelDrawItem(const ItemStruct &item, const Surface &out, Point position, const CelSprite &cel, int frame) +void CelDrawItem(const Item &item, const Surface &out, Point position, const CelSprite &cel, int frame) { bool usable = item._iStatFlag; if (!usable) { diff --git a/Source/engine/render/cel_render.hpp b/Source/engine/render/cel_render.hpp index ffd5e37d6..a4b1966f5 100644 --- a/Source/engine/render/cel_render.hpp +++ b/Source/engine/render/cel_render.hpp @@ -91,7 +91,7 @@ void CelDrawLightRedTo(const Surface &out, Point position, const CelSprite &cel, * @param cel CEL sprite * @param frame CEL frame number */ -void CelDrawItem(const ItemStruct &item, const Surface &out, Point position, const CelSprite &cel, int frame); +void CelDrawItem(const Item &item, const Surface &out, Point position, const CelSprite &cel, int frame); /** * @brief Blit a solid colder shape one pixel larger than the given sprite shape, to the target buffer at the given coordianates diff --git a/Source/inv.cpp b/Source/inv.cpp index 4cff753ae..35b9821f6 100644 --- a/Source/inv.cpp +++ b/Source/inv.cpp @@ -181,7 +181,7 @@ void AddItemToInvGrid(Player &player, int invGridIndex, int invListIndex, Size i * @param item The item whose size is to be determined. * @return The size, in inventory cells, of the item. */ -Size GetInventorySize(const ItemStruct &item) +Size GetInventorySize(const Item &item) { int itemSizeIndex = item._iCurs + CURSOR_FIRSTITEM; auto size = GetInvItemSize(itemSizeIndex); @@ -194,7 +194,7 @@ Size GetInventorySize(const ItemStruct &item) * @param item The item to be checked. * @return 'True' in case the item can fit a belt slot and 'False' otherwise. */ -bool FitsInBeltSlot(const ItemStruct &item) +bool FitsInBeltSlot(const Item &item) { return GetInventorySize(item) == Size { 1, 1 }; } @@ -205,7 +205,7 @@ bool FitsInBeltSlot(const ItemStruct &item) * @param item The item to be checked. * @return 'True' in case the item can be placed on the belt and 'False' otherwise. */ -bool CanBePlacedOnBelt(const ItemStruct &item) +bool CanBePlacedOnBelt(const Item &item) { return FitsInBeltSlot(item) && item._itype != ITYPE_GOLD @@ -219,27 +219,27 @@ bool CanBePlacedOnBelt(const ItemStruct &item) * @param item The item to check. * @return 'True' in case the item could be equipped in a player, and 'False' otherwise. */ -bool CanEquip(const ItemStruct &item) +bool CanEquip(const Item &item) { return item.isEquipment() && item._iStatFlag; } /** - * @brief A specialized version of 'CanEquip(int, ItemStruct&, int)' that specifically checks whether the item can be equipped + * @brief A specialized version of 'CanEquip(int, Item&, int)' that specifically checks whether the item can be equipped * in one/both of the player's hands. * @param player The player whose inventory will be checked for compatibility with the item. * @param item The item to check. * @return 'True' if the player can currently equip the item in either one of his hands (i.e. the required hands are empty and * allow the item), and 'False' otherwise. */ -bool CanWield(Player &player, const ItemStruct &item) +bool CanWield(Player &player, const Item &item) { if (!CanEquip(item) || (item._iLoc != ILOC_ONEHAND && item._iLoc != ILOC_TWOHAND)) return false; - ItemStruct &leftHandItem = player.InvBody[INVLOC_HAND_LEFT]; - ItemStruct &rightHandItem = player.InvBody[INVLOC_HAND_RIGHT]; + Item &leftHandItem = player.InvBody[INVLOC_HAND_LEFT]; + Item &rightHandItem = player.InvBody[INVLOC_HAND_RIGHT]; if (leftHandItem.isEmpty() && rightHandItem.isEmpty()) { return true; @@ -249,7 +249,7 @@ bool CanWield(Player &player, const ItemStruct &item) return false; } - ItemStruct &occupiedHand = !leftHandItem.isEmpty() ? leftHandItem : rightHandItem; + Item &occupiedHand = !leftHandItem.isEmpty() ? leftHandItem : rightHandItem; // Barbarian can wield two handed swords and maces in one hand, so we allow equiping any sword/mace as long as his occupied // hand has a shield (i.e. no dual wielding allowed) @@ -285,7 +285,7 @@ bool CanWield(Player &player, const ItemStruct &item) * @return 'True' if the player can currently equip the item in the specified body location (i.e. the body location is empty and * allows the item), and 'False' otherwise. */ -bool CanEquip(Player &player, const ItemStruct &item, inv_body_loc bodyLocation) +bool CanEquip(Player &player, const Item &item, inv_body_loc bodyLocation) { if (!CanEquip(item) || player._pmode > PM_WALK3 || !player.InvBody[bodyLocation].isEmpty()) { return false; @@ -324,7 +324,7 @@ bool CanEquip(Player &player, const ItemStruct &item, inv_body_loc bodyLocation) * whether the player can equip the item but you don't want the item to actually be equipped. 'True' by default. * @return 'True' if the item was equipped and 'False' otherwise. */ -bool AutoEquip(int playerId, const ItemStruct &item, inv_body_loc bodyLocation, bool persistItem) +bool AutoEquip(int playerId, const Item &item, inv_body_loc bodyLocation, bool persistItem) { auto &player = Players[playerId]; @@ -346,7 +346,7 @@ bool AutoEquip(int playerId, const ItemStruct &item, inv_body_loc bodyLocation, return true; } -int SwapItem(ItemStruct *a, ItemStruct *b) +int SwapItem(Item *a, Item *b) { std::swap(*a, *b); @@ -564,7 +564,7 @@ void CheckInvPaste(int pnum, Point cursorPosition) break; case ILOC_TWOHAND: if (!player.InvBody[INVLOC_HAND_LEFT].isEmpty() && !player.InvBody[INVLOC_HAND_RIGHT].isEmpty()) { - ItemStruct tempitem = player.HoldItem; + Item tempitem = player.HoldItem; if (player.InvBody[INVLOC_HAND_RIGHT]._itype == ITYPE_SHIELD) player.HoldItem = player.InvBody[INVLOC_HAND_RIGHT]; else @@ -719,14 +719,14 @@ void CheckInvCut(int pnum, Point cursorPosition, bool automaticMove) return; } - ItemStruct &holdItem = player.HoldItem; + Item &holdItem = player.HoldItem; holdItem._itype = ITYPE_NONE; bool automaticallyMoved = false; bool automaticallyEquipped = false; bool automaticallyUnequip = false; - ItemStruct &headItem = player.InvBody[INVLOC_HEAD]; + Item &headItem = player.InvBody[INVLOC_HEAD]; if (r >= SLOTXY_HEAD_FIRST && r <= SLOTXY_HEAD_LAST && !headItem.isEmpty()) { holdItem = headItem; if (automaticMove) { @@ -740,7 +740,7 @@ void CheckInvCut(int pnum, Point cursorPosition, bool automaticMove) } } - ItemStruct &leftRingItem = player.InvBody[INVLOC_RING_LEFT]; + Item &leftRingItem = player.InvBody[INVLOC_RING_LEFT]; if (r == SLOTXY_RING_LEFT && !leftRingItem.isEmpty()) { holdItem = leftRingItem; if (automaticMove) { @@ -754,7 +754,7 @@ void CheckInvCut(int pnum, Point cursorPosition, bool automaticMove) } } - ItemStruct &rightRingItem = player.InvBody[INVLOC_RING_RIGHT]; + Item &rightRingItem = player.InvBody[INVLOC_RING_RIGHT]; if (r == SLOTXY_RING_RIGHT && !rightRingItem.isEmpty()) { holdItem = rightRingItem; if (automaticMove) { @@ -768,7 +768,7 @@ void CheckInvCut(int pnum, Point cursorPosition, bool automaticMove) } } - ItemStruct &amuletItem = player.InvBody[INVLOC_AMULET]; + Item &amuletItem = player.InvBody[INVLOC_AMULET]; if (r == SLOTXY_AMULET && !amuletItem.isEmpty()) { holdItem = amuletItem; if (automaticMove) { @@ -782,7 +782,7 @@ void CheckInvCut(int pnum, Point cursorPosition, bool automaticMove) } } - ItemStruct &leftHandItem = player.InvBody[INVLOC_HAND_LEFT]; + Item &leftHandItem = player.InvBody[INVLOC_HAND_LEFT]; if (r >= SLOTXY_HAND_LEFT_FIRST && r <= SLOTXY_HAND_LEFT_LAST && !leftHandItem.isEmpty()) { holdItem = leftHandItem; if (automaticMove) { @@ -796,7 +796,7 @@ void CheckInvCut(int pnum, Point cursorPosition, bool automaticMove) } } - ItemStruct &rightHandItem = player.InvBody[INVLOC_HAND_RIGHT]; + Item &rightHandItem = player.InvBody[INVLOC_HAND_RIGHT]; if (r >= SLOTXY_HAND_RIGHT_FIRST && r <= SLOTXY_HAND_RIGHT_LAST && !rightHandItem.isEmpty()) { holdItem = rightHandItem; if (automaticMove) { @@ -810,7 +810,7 @@ void CheckInvCut(int pnum, Point cursorPosition, bool automaticMove) } } - ItemStruct &chestItem = player.InvBody[INVLOC_CHEST]; + Item &chestItem = player.InvBody[INVLOC_CHEST]; if (r >= SLOTXY_CHEST_FIRST && r <= SLOTXY_CHEST_LAST && !chestItem.isEmpty()) { holdItem = chestItem; if (automaticMove) { @@ -846,7 +846,7 @@ void CheckInvCut(int pnum, Point cursorPosition, bool automaticMove) } if (r >= SLOTXY_BELT_FIRST) { - ItemStruct &beltItem = player.SpdList[r - SLOTXY_BELT_FIRST]; + Item &beltItem = player.SpdList[r - SLOTXY_BELT_FIRST]; if (!beltItem.isEmpty()) { holdItem = beltItem; if (automaticMove) { @@ -937,7 +937,7 @@ void CheckNaKrulNotes(Player &player) } int itemNum = ActiveItems[0]; - ItemStruct tmp = Items[itemNum]; + Item tmp = Items[itemNum]; memset(&Items[itemNum], 0, sizeof(*Items)); GetItemAttrs(Items[itemNum], IDI_FULLNOTE, 16); SetupItem(Items[itemNum]); @@ -996,7 +996,7 @@ void CheckQuestItem(Player &player) CheckNaKrulNotes(player); } -void CleanupItems(ItemStruct *item, int ii) +void CleanupItems(Item *item, int ii) { dItem[item->position.x][item->position.y] = 0; @@ -1059,7 +1059,7 @@ bool PutItem(Player &player, Point &position) return false; } -bool CanUseStaff(ItemStruct &staff, spell_id spell) +bool CanUseStaff(Item &staff, spell_id spell) { return !staff.isEmpty() && (staff._iMiscId == IMISC_STAFF || staff._iMiscId == IMISC_UNIQUE) @@ -1272,7 +1272,7 @@ void DrawInvBelt(const Surface &out) * @param persistItem Pass 'True' to actually place the item in the belt. The default is 'False'. * @return 'True' in case the item can be placed on the player's belt and 'False' otherwise. */ -bool AutoPlaceItemInBelt(Player &player, const ItemStruct &item, bool persistItem) +bool AutoPlaceItemInBelt(Player &player, const Item &item, bool persistItem) { if (!CanBePlacedOnBelt(item)) { return false; @@ -1302,7 +1302,7 @@ bool AutoPlaceItemInBelt(Player &player, const ItemStruct &item, bool persistIte * whether the player can equip the item but you don't want the item to actually be equipped. 'True' by default. * @return 'True' if the item was equipped and 'False' otherwise. */ -bool AutoEquip(int playerId, const ItemStruct &item, bool persistItem) +bool AutoEquip(int playerId, const Item &item, bool persistItem) { if (!CanEquip(item)) { return false; @@ -1323,7 +1323,7 @@ bool AutoEquip(int playerId, const ItemStruct &item, bool persistItem) * @param item The item to check. * @return 'True' if auto-equipping behavior is enabled for the player and item and 'False' otherwise. */ -bool AutoEquipEnabled(const Player &player, const ItemStruct &item) +bool AutoEquipEnabled(const Player &player, const Item &item) { if (item.isWeapon()) { // Monk can use unarmed attack as an encouraged option, thus we do not automatically equip weapons on him so as to not @@ -1357,7 +1357,7 @@ bool AutoEquipEnabled(const Player &player, const ItemStruct &item) * @param persistItem Pass 'True' to actually place the item in the inventory. The default is 'False'. * @return 'True' in case the item can be placed on the player's inventory and 'False' otherwise. */ -bool AutoPlaceItemInInventory(Player &player, const ItemStruct &item, bool persistItem) +bool AutoPlaceItemInInventory(Player &player, const Item &item, bool persistItem) { Size itemSize = GetInventorySize(item); @@ -1425,7 +1425,7 @@ bool AutoPlaceItemInInventory(Player &player, const ItemStruct &item, bool persi * @param persistItem Pass 'True' to actually place the item in the inventory slot. The default is 'False'. * @return 'True' in case the item can be placed on the specified player's inventory slot and 'False' otherwise. */ -bool AutoPlaceItemInInventorySlot(Player &player, int slotIndex, const ItemStruct &item, bool persistItem) +bool AutoPlaceItemInInventorySlot(Player &player, int slotIndex, const Item &item, bool persistItem) { int yy = (slotIndex > 0) ? (10 * (slotIndex / 10)) : 0; @@ -1577,7 +1577,7 @@ void CheckInvScrn(bool isShiftHeld) void CheckItemStats(Player &player) { - ItemStruct &item = player.HoldItem; + Item &item = player.HoldItem; item._iStatFlag = false; @@ -1588,7 +1588,7 @@ void CheckItemStats(Player &player) } } -void InvGetItem(int pnum, ItemStruct *item, int ii) +void InvGetItem(int pnum, Item *item, int ii) { if (dropGoldFlag) { dropGoldFlag = false; @@ -1617,7 +1617,7 @@ void InvGetItem(int pnum, ItemStruct *item, int ii) NewCursor(player.HoldItem._iCurs + CURSOR_FIRSTITEM); } -void AutoGetItem(int pnum, ItemStruct *item, int ii) +void AutoGetItem(int pnum, Item *item, int ii) { bool done; @@ -1891,7 +1891,7 @@ int8_t CheckInvHLight() int8_t rv = -1; InfoColor = UiFlags::ColorSilver; - ItemStruct *pi = nullptr; + Item *pi = nullptr; auto &myPlayer = Players[MyPlayerId]; ClearPanel(); @@ -2033,7 +2033,7 @@ bool UseStaff() bool UseInvItem(int pnum, int cii) { int c; - ItemStruct *item; + Item *item; auto &player = Players[pnum]; diff --git a/Source/inv.h b/Source/inv.h index a027350b1..670494617 100644 --- a/Source/inv.h +++ b/Source/inv.h @@ -86,7 +86,7 @@ extern const Point InvRect[73]; /** * @brief Function type which performs an operation on the given item. */ -using ItemFunc = void (*)(ItemStruct &); +using ItemFunc = void (*)(Item &); void FreeInvGFX(); void InitInv(); @@ -97,11 +97,11 @@ void InitInv(); void DrawInv(const Surface &out); void DrawInvBelt(const Surface &out); -bool AutoEquipEnabled(const Player &player, const ItemStruct &item); -bool AutoEquip(int playerId, const ItemStruct &item, bool persistItem = true); -bool AutoPlaceItemInInventory(Player &player, const ItemStruct &item, bool persistItem = false); -bool AutoPlaceItemInInventorySlot(Player &player, int slotIndex, const ItemStruct &item, bool persistItem); -bool AutoPlaceItemInBelt(Player &player, const ItemStruct &item, bool persistItem = false); +bool AutoEquipEnabled(const Player &player, const Item &item); +bool AutoEquip(int playerId, const Item &item, bool persistItem = true); +bool AutoPlaceItemInInventory(Player &player, const Item &item, bool persistItem = false); +bool AutoPlaceItemInInventorySlot(Player &player, int slotIndex, const Item &item, bool persistItem); +bool AutoPlaceItemInBelt(Player &player, const Item &item, bool persistItem = false); bool GoldAutoPlace(Player &player); bool GoldAutoPlaceInInventorySlot(Player &player, int slotIndex); void CheckInvSwap(Player &player, BYTE bLoc, int idx, uint16_t wCI, int seed, bool bId, uint32_t dwBuff); @@ -109,8 +109,8 @@ void inv_update_rem_item(Player &player, BYTE iv); void CheckInvItem(bool isShiftHeld = false); void CheckInvScrn(bool isShiftHeld); void CheckItemStats(Player &player); -void InvGetItem(int pnum, ItemStruct *item, int ii); -void AutoGetItem(int pnum, ItemStruct *item, int ii); +void InvGetItem(int pnum, Item *item, int ii); +void AutoGetItem(int pnum, Item *item, int ii); int FindGetItem(int idx, uint16_t ci, int iseed); void SyncGetItem(Point position, int idx, uint16_t ci, int iseed); bool CanPut(Point position); diff --git a/Source/inv_iterators.hpp b/Source/inv_iterators.hpp index 6b7dce616..4ecb986a6 100644 --- a/Source/inv_iterators.hpp +++ b/Source/inv_iterators.hpp @@ -20,13 +20,13 @@ public: public: using iterator_category = std::forward_iterator_tag; using difference_type = void; - using value_type = ItemStruct; + using value_type = Item; using pointer = value_type *; using reference = value_type &; Iterator() = default; - Iterator(ItemStruct *items, std::size_t count, std::size_t index) + Iterator(Item *items, std::size_t count, std::size_t index) : items_(items) , count_(count) , index_(index) @@ -81,12 +81,12 @@ public: } } - ItemStruct *items_ = nullptr; + Item *items_ = nullptr; std::size_t count_ = 0; std::size_t index_ = 0; }; - ItemsContainerRange(ItemStruct *items, std::size_t count) + ItemsContainerRange(Item *items, std::size_t count) : items_(items) , count_(count) { @@ -103,7 +103,7 @@ public: } private: - ItemStruct *items_; + Item *items_; std::size_t count_; }; @@ -116,7 +116,7 @@ public: public: using iterator_category = std::forward_iterator_tag; using difference_type = void; - using value_type = ItemStruct; + using value_type = Item; using pointer = value_type *; using reference = value_type &; diff --git a/Source/items.cpp b/Source/items.cpp index 3b7d86567..b7d2aef56 100644 --- a/Source/items.cpp +++ b/Source/items.cpp @@ -36,7 +36,7 @@ namespace devilution { /** Contains the items on ground in the current game. */ -ItemStruct Items[MAXITEMS + 1]; +Item Items[MAXITEMS + 1]; int ActiveItems[MAXITEMS]; int ActiveItemCount; int AvailableItems[MAXITEMS]; @@ -131,7 +131,7 @@ enum class PlayerArmorGraphic : uint8_t { // clang-format on }; -ItemStruct curruitem; +Item curruitem; /** Holds item get records, tracking items being recently looted. This is in an effort to prevent items being picked up more than once. */ ItemGetRecordStruct itemrecord[MAXITEMS]; @@ -506,7 +506,7 @@ void CalcSelfItems(Player &player) } while (changeflag); } -bool ItemMinStats(const Player &player, ItemStruct &x) +bool ItemMinStats(const Player &player, Item &x) { if (player._pMagic < x._iMinMag) return false; @@ -550,7 +550,7 @@ void WitchBookLevel(int ii) } } -bool StoreStatOk(ItemStruct &item) +bool StoreStatOk(Item &item) { const auto &myPlayer = Players[MyPlayerId]; @@ -591,7 +591,7 @@ void CalcPlrBookVals(Player &player) } } -void SetPlrHandSeed(ItemStruct &item, int iseed) +void SetPlrHandSeed(Item &item, int iseed) { item._iSeed = iseed; } @@ -666,7 +666,7 @@ void GetSuperItemSpace(Point position, int8_t inum) } } -void CalcItemValue(ItemStruct &item) +void CalcItemValue(Item &item) { int v = item._iVMult1 + item._iVMult2; if (v > 0) { @@ -679,7 +679,7 @@ void CalcItemValue(ItemStruct &item) item._iIvalue = std::max(v, 1); } -void GetBookSpell(ItemStruct &item, int lvl) +void GetBookSpell(Item &item, int lvl) { int rv; @@ -762,7 +762,7 @@ int CalculateToHitBonus(int level) } } -int SaveItemPower(ItemStruct &item, const ItemPower &power) +int SaveItemPower(Item &item, const ItemPower &power) { int r = RndPL(power.param1, power.param2); @@ -1133,7 +1133,7 @@ int PLVal(int pv, int p1, int p2, int minv, int maxv) return minv + (maxv - minv) * (100 * (pv - p1) / (p2 - p1)) / 100; } -void SaveItemAffix(ItemStruct &item, const PLStruct &affix) +void SaveItemAffix(Item &item, const PLStruct &affix) { auto power = affix.power; @@ -1156,7 +1156,7 @@ void SaveItemAffix(ItemStruct &item, const PLStruct &affix) } } -void GetStaffPower(ItemStruct &item, int lvl, int bs, bool onlygood) +void GetStaffPower(Item &item, int lvl, int bs, bool onlygood) { int preidx = -1; if (GenerateRnd(10) == 0 || onlygood) { @@ -1199,7 +1199,7 @@ void GetStaffPower(ItemStruct &item, int lvl, int bs, bool onlygood) CalcItemValue(item); } -void GetItemPower(ItemStruct &item, int minlvl, int maxlvl, affix_item_type flgs, bool onlygood) +void GetItemPower(Item &item, int minlvl, int maxlvl, affix_item_type flgs, bool onlygood) { int l[256]; char istr[128]; @@ -1286,7 +1286,7 @@ void GetItemPower(ItemStruct &item, int minlvl, int maxlvl, affix_item_type flgs CalcItemValue(item); } -void GetStaffSpell(ItemStruct &item, int lvl, bool onlygood) +void GetStaffSpell(Item &item, int lvl, bool onlygood) { if (!gbIsHellfire && GenerateRnd(4) == 0) { GetItemPower(item, lvl / 2, lvl, PLT_STAFF, onlygood); @@ -1339,7 +1339,7 @@ void GetStaffSpell(ItemStruct &item, int lvl, bool onlygood) GetStaffPower(item, lvl, bs, onlygood); } -void GetOilType(ItemStruct &item, int maxLvl) +void GetOilType(Item &item, int maxLvl) { int cnt = 2; int8_t rnd[32] = { 5, 6 }; @@ -1366,7 +1366,7 @@ void GetOilType(ItemStruct &item, int maxLvl) item._iIvalue = OilValues[t]; } -void GetItemBonus(ItemStruct &item, int minlvl, int maxlvl, bool onlygood, bool allowspells) +void GetItemBonus(Item &item, int minlvl, int maxlvl, bool onlygood, bool allowspells) { if (minlvl > 25) minlvl = 25; @@ -1501,7 +1501,7 @@ int RndTypeItems(int itype, int imid, int lvl) return ril[GenerateRnd(ri)]; } -_unique_items CheckUnique(ItemStruct &item, int lvl, int uper, bool recreate) +_unique_items CheckUnique(Item &item, int lvl, int uper, bool recreate) { std::bitset<128> uok = {}; @@ -1535,7 +1535,7 @@ _unique_items CheckUnique(ItemStruct &item, int lvl, int uper, bool recreate) return (_unique_items)itemData; } -void GetUniqueItem(ItemStruct &item, _unique_items uid) +void GetUniqueItem(Item &item, _unique_items uid) { UniqueItemFlags[uid] = true; @@ -1556,13 +1556,13 @@ void GetUniqueItem(ItemStruct &item, _unique_items uid) item._iCreateInfo |= CF_UNIQUE; } -void ItemRndDur(ItemStruct &item) +void ItemRndDur(Item &item) { if (item._iDurability > 0 && item._iDurability != DUR_INDESTRUCTIBLE) item._iDurability = GenerateRnd(item._iMaxDur / 2) + (item._iMaxDur / 4) + 1; } -void SetupAllItems(ItemStruct &item, int idx, int iseed, int lvl, int uper, bool onlygood, bool recreate, bool pregen) +void SetupAllItems(Item &item, int idx, int iseed, int lvl, int uper, bool onlygood, bool recreate, bool pregen) { int iblvl; @@ -1635,7 +1635,7 @@ void SetupBaseItem(Point position, int idx, bool onlygood, bool sendmsg, bool de DeltaAddItem(ii); } -void SetupAllUseful(ItemStruct &item, int iseed, int lvl) +void SetupAllUseful(Item &item, int iseed, int lvl) { int idx; @@ -1735,7 +1735,7 @@ void ItemDoppel() for (int idoppelx = 16; idoppelx < 96; idoppelx++) { if (dItem[idoppelx][idoppely] != 0) { - ItemStruct *i = &Items[dItem[idoppelx][idoppely] - 1]; + Item *i = &Items[dItem[idoppelx][idoppely] - 1]; if (i->position.x != idoppelx || i->position.y != idoppely) dItem[idoppelx][idoppely] = 0; } @@ -1746,7 +1746,7 @@ void ItemDoppel() idoppely = 16; } -void RepairItem(ItemStruct &item, int lvl) +void RepairItem(Item &item, int lvl) { if (item._iDurability == item._iMaxDur) { return; @@ -1770,7 +1770,7 @@ void RepairItem(ItemStruct &item, int lvl) item._iDurability = std::min(item._iDurability + rep, item._iMaxDur); } -void RechargeItem(ItemStruct &item, int r) +void RechargeItem(Item &item, int r) { if (item._iCharges == item._iMaxCharges) return; @@ -1786,7 +1786,7 @@ void RechargeItem(ItemStruct &item, int r) item._iCharges = std::min(item._iCharges, item._iMaxCharges); } -bool ApplyOilToItem(ItemStruct &item, Player &player) +bool ApplyOilToItem(Item &item, Player &player) { int r; @@ -2052,7 +2052,7 @@ void DrawUniqueInfoDevider(const Surface &out, int y) memcpy(dst, src, 267); // BUGFIX: should be 267 (fixed) } -void PrintItemMisc(ItemStruct &item) +void PrintItemMisc(Item &item) { if (item._iMiscId == IMISC_SCROLL) { strcpy(tempstr, _("Right-click to read")); @@ -2101,7 +2101,7 @@ void PrintItemMisc(ItemStruct &item) } } -void PrintItemInfo(ItemStruct &item) +void PrintItemInfo(Item &item) { PrintItemMisc(item); uint8_t str = item._iMinStr; @@ -2173,13 +2173,13 @@ int RndSmithItem(int lvl) return RndVendorItem(0, lvl); } -void SortVendor(ItemStruct *itemList) +void SortVendor(Item *itemList) { int count = 1; while (!itemList[count].isEmpty()) count++; - auto cmp = [](const ItemStruct &a, const ItemStruct &b) { + auto cmp = [](const Item &a, const Item &b) { return a.IDidx < b.IDidx; }; @@ -2216,7 +2216,7 @@ void SpawnOnePremium(int i, int plvl, int playerId) { int itemValue = 0; bool keepGoing = false; - ItemStruct tempItem = Items[0]; + Item tempItem = Items[0]; auto &player = Players[playerId]; @@ -2253,7 +2253,7 @@ void SpawnOnePremium(int i, int plvl, int playerId) case ITYPE_MARMOR: case ITYPE_HARMOR: { const auto *const mostValuablePlayerArmor = player.GetMostValuableItem( - [](const ItemStruct &item) { + [](const Item &item) { return item._itype == ITYPE_LARMOR || item._itype == ITYPE_MARMOR || item._itype == ITYPE_HARMOR; @@ -2272,7 +2272,7 @@ void SpawnOnePremium(int i, int plvl, int playerId) case ITYPE_RING: case ITYPE_AMULET: { const auto *const mostValuablePlayerItem = player.GetMostValuableItem( - [](const ItemStruct &item) { return item._itype == Items[0]._itype; }); + [](const Item &item) { return item._itype == Items[0]._itype; }); itemValue = mostValuablePlayerItem == nullptr ? 0 : mostValuablePlayerItem->_iIvalue; break; @@ -2369,7 +2369,7 @@ int RndHealerItem(int lvl) return RndVendorItem(0, lvl); } -void RecreateSmithItem(ItemStruct &item, int lvl, int iseed) +void RecreateSmithItem(Item &item, int lvl, int iseed) { SetRndSeed(iseed); int itype = RndSmithItem(lvl) - 1; @@ -2380,7 +2380,7 @@ void RecreateSmithItem(ItemStruct &item, int lvl, int iseed) item._iIdentified = true; } -void RecreatePremiumItem(ItemStruct &item, int plvl, int iseed) +void RecreatePremiumItem(Item &item, int plvl, int iseed) { SetRndSeed(iseed); int itype = RndPremiumItem(plvl / 4, plvl) - 1; @@ -2392,7 +2392,7 @@ void RecreatePremiumItem(ItemStruct &item, int plvl, int iseed) item._iIdentified = true; } -void RecreateBoyItem(ItemStruct &item, int lvl, int iseed) +void RecreateBoyItem(Item &item, int lvl, int iseed) { SetRndSeed(iseed); int itype = RndBoyItem(lvl) - 1; @@ -2404,7 +2404,7 @@ void RecreateBoyItem(ItemStruct &item, int lvl, int iseed) item._iIdentified = true; } -void RecreateWitchItem(ItemStruct &item, int idx, int lvl, int iseed) +void RecreateWitchItem(Item &item, int idx, int lvl, int iseed) { if (idx == IDI_MANA || idx == IDI_FULLMANA || idx == IDI_PORTAL) { GetItemAttrs(item, idx, lvl); @@ -2430,7 +2430,7 @@ void RecreateWitchItem(ItemStruct &item, int idx, int lvl, int iseed) item._iIdentified = true; } -void RecreateHealerItem(ItemStruct &item, int idx, int lvl, int iseed) +void RecreateHealerItem(Item &item, int idx, int lvl, int iseed) { if (idx == IDI_HEAL || idx == IDI_FULLHEAL || idx == IDI_RESURRECT) { GetItemAttrs(item, idx, lvl); @@ -2445,7 +2445,7 @@ void RecreateHealerItem(ItemStruct &item, int idx, int lvl, int iseed) item._iIdentified = true; } -void RecreateTownItem(ItemStruct &item, int idx, uint16_t icreateinfo, int iseed) +void RecreateTownItem(Item &item, int idx, uint16_t icreateinfo, int iseed) { if ((icreateinfo & CF_SMITH) != 0) RecreateSmithItem(item, icreateinfo & CF_LEVEL, iseed); @@ -2552,7 +2552,7 @@ bool IsItemAvailable(int i) sgOptions.Gameplay.bTestBard && (i == IDI_BARDSWORD || i == IDI_BARDDAGGER)); } -BYTE GetOutlineColor(const ItemStruct &item, bool checkReq) +BYTE GetOutlineColor(const Item &item, bool checkReq) { if (checkReq && !item._iStatFlag) return ICOL_RED; @@ -3004,7 +3004,7 @@ void CalcPlrInv(Player &player, bool loadgfx) } } -void SetPlrHandItem(ItemStruct &item, int itemData) +void SetPlrHandItem(Item &item, int itemData) { auto &pAllItem = AllItemsList[itemData]; @@ -3043,12 +3043,12 @@ void SetPlrHandItem(ItemStruct &item, int itemData) item.dwBuff |= CF_HELLFIRE; } -void GetPlrHandSeed(ItemStruct *h) +void GetPlrHandSeed(Item *h) { h->_iSeed = AdvanceRndSeed(); } -void SetGoldSeed(Player &player, ItemStruct &gold) +void SetGoldSeed(Player &player, Item &gold) { int s = 0; @@ -3088,7 +3088,7 @@ int GetGoldCursor(int value) * @brief Update the gold cursor on the given gold item * @param h The item to update */ -void SetPlrHandGoldCurs(ItemStruct &gold) +void SetPlrHandGoldCurs(Item &gold) { gold._iCurs = GetGoldCursor(gold._ivalue); } @@ -3269,7 +3269,7 @@ Point GetSuperItemLoc(Point position) return { 0, 0 }; // TODO handle no space for dropping items } -void GetItemAttrs(ItemStruct &item, int itemData, int lvl) +void GetItemAttrs(Item &item, int itemData, int lvl) { item._itype = AllItemsList[itemData].itype; item._iCurs = AllItemsList[itemData].iCurs; @@ -3326,7 +3326,7 @@ void GetItemAttrs(ItemStruct &item, int itemData, int lvl) SetPlrHandGoldCurs(item); } -void SetupItem(ItemStruct &item) +void SetupItem(Item &item) { item.SetNewAnimation(Players[MyPlayerId].pLvlLoad == 0); item._iIdentified = false; @@ -3473,7 +3473,7 @@ void CreateTypeItem(Point position, bool onlygood, int itype, int imisc, bool se SetupBaseItem(position, idx, onlygood, sendmsg, delta); } -void RecreateItem(ItemStruct &item, int idx, uint16_t icreateinfo, int iseed, int ivalue, bool isHellfire) +void RecreateItem(Item &item, int idx, uint16_t icreateinfo, int iseed, int ivalue, bool isHellfire) { bool tmpIsHellfire = gbIsHellfire; gbIsHellfire = isHellfire; @@ -3525,7 +3525,7 @@ void RecreateItem(ItemStruct &item, int idx, uint16_t icreateinfo, int iseed, in gbIsHellfire = tmpIsHellfire; } -void RecreateEar(ItemStruct &item, uint16_t ic, int iseed, int id, int dur, int mdur, int ch, int mch, int ivalue, int ibuff) +void RecreateEar(Item &item, uint16_t ic, int iseed, int id, int dur, int mdur, int ch, int mch, int ivalue, int ibuff) { SetPlrHandItem(item, IDI_EAR); tempstr[0] = static_cast((ic >> 8) & 0x7F); @@ -3685,7 +3685,7 @@ void SpawnTheodore(Point position) SpawnRewardItem(IDI_THEODORE, position); } -void RespawnItem(ItemStruct *item, bool flipFlag) +void RespawnItem(Item *item, bool flipFlag) { int it = ItemCAnimTbl[item->_iCurs]; item->SetNewAnimation(flipFlag); @@ -3745,12 +3745,12 @@ void FreeItemGFX() } } -void GetItemFrm(ItemStruct &item) +void GetItemFrm(Item &item) { item.AnimInfo.pCelSprite = &*itemanims[ItemCAnimTbl[item._iCurs]]; } -void GetItemStr(ItemStruct &item) +void GetItemStr(Item &item) { if (item._itype != ITYPE_GOLD) { if (item._iIdentified) @@ -3767,7 +3767,7 @@ void GetItemStr(ItemStruct &item) void CheckIdentify(Player &player, int cii) { - ItemStruct *pi; + Item *pi; if (cii >= NUM_INVLOC) pi = &player.InvList[cii - NUM_INVLOC]; @@ -3783,7 +3783,7 @@ void CheckIdentify(Player &player, int cii) void DoRepair(Player &player, int cii) { - ItemStruct *pi; + Item *pi; PlaySfxLoc(IS_REPAIR, player.position.tile); @@ -3802,7 +3802,7 @@ void DoRepair(Player &player, int cii) void DoRecharge(Player &player, int cii) { - ItemStruct *pi; + Item *pi; if (cii >= NUM_INVLOC) { pi = &player.InvList[cii - NUM_INVLOC]; @@ -3822,7 +3822,7 @@ void DoRecharge(Player &player, int cii) void DoOil(Player &player, int cii) { - ItemStruct *pi; + Item *pi; if (cii >= NUM_INVLOC) { pi = &player.InvList[cii - NUM_INVLOC]; } else { @@ -3835,7 +3835,7 @@ void DoOil(Player &player, int cii) NewCursor(CURSOR_HAND); } -void PrintItemPower(char plidx, ItemStruct *x) +void PrintItemPower(char plidx, Item *x) { switch (plidx) { case IPL_TOHIT: @@ -4149,7 +4149,7 @@ void DrawUniqueInfo(const Surface &out) } } -void PrintItemDetails(ItemStruct *x) +void PrintItemDetails(Item *x) { if (x->_iClass == ICLASS_WEAPON) { if (x->_iMinDam == x->_iMaxDam) { @@ -4196,7 +4196,7 @@ void PrintItemDetails(ItemStruct *x) PrintItemInfo(*x); } -void PrintItemDur(ItemStruct *x) +void PrintItemDur(Item *x) { if (x->_iClass == ICLASS_WEAPON) { if (x->_iMinDam == x->_iMaxDam) { @@ -4443,7 +4443,7 @@ void SpawnSmith(int lvl) { constexpr int PinnedItemCount = 0; - ItemStruct holditem; + Item holditem; holditem = Items[0]; int maxValue = 140000; @@ -4631,7 +4631,7 @@ void SpawnBoy(int lvl) case ITYPE_MARMOR: case ITYPE_HARMOR: { const auto *const mostValuablePlayerArmor = myPlayer.GetMostValuableItem( - [](const ItemStruct &item) { + [](const Item &item) { return item._itype == ITYPE_LARMOR || item._itype == ITYPE_MARMOR || item._itype == ITYPE_HARMOR; @@ -4650,7 +4650,7 @@ void SpawnBoy(int lvl) case ITYPE_RING: case ITYPE_AMULET: { const auto *const mostValuablePlayerItem = myPlayer.GetMostValuableItem( - [itemType](const ItemStruct &item) { return item._itype == itemType; }); + [itemType](const Item &item) { return item._itype == itemType; }); ivalue = mostValuablePlayerItem == nullptr ? 0 : mostValuablePlayerItem->_iIvalue; break; @@ -4905,7 +4905,7 @@ std::string DebugSpawnItem(std::string itemName, bool unique) int uper = (unique ? 15 : 1); Point bkp = item.position; - memset(&item, 0, sizeof(ItemStruct)); + memset(&item, 0, sizeof(Item)); item.position = bkp; memset(UniqueItemFlags, 0, sizeof(UniqueItemFlags)); SetupAllItems(item, idx, AdvanceRndSeed(), fake_m.mLevel, uper, onlygood, false, false); @@ -4926,7 +4926,7 @@ std::string DebugSpawnItem(std::string itemName, bool unique) } #endif -void ItemStruct::SetNewAnimation(bool showAnimation) +void Item::SetNewAnimation(bool showAnimation) { int it = ItemCAnimTbl[_iCurs]; int numberOfFrames = ItemAnimLs[it]; diff --git a/Source/items.h b/Source/items.h index 59de608f9..57ef77325 100644 --- a/Source/items.h +++ b/Source/items.h @@ -171,7 +171,7 @@ enum icreateinfo_flag2 { // All item animation frames have this width. constexpr int ItemAnimWidth = 96; -struct ItemStruct { +struct Item { /** Randomly generated identifier */ int32_t _iSeed; uint16_t _iCreateInfo; @@ -393,12 +393,12 @@ struct ItemGetRecordStruct { struct CornerStoneStruct { Point position; bool activated; - ItemStruct item; + Item item; }; struct Player; -extern ItemStruct Items[MAXITEMS + 1]; +extern Item Items[MAXITEMS + 1]; extern int ActiveItems[MAXITEMS]; extern int ActiveItemCount; extern int AvailableItems[MAXITEMS]; @@ -406,35 +406,35 @@ extern bool ShowUniqueItemInfoBox; extern CornerStoneStruct CornerStone; extern bool UniqueItemFlags[128]; -BYTE GetOutlineColor(const ItemStruct &item, bool checkReq); +BYTE GetOutlineColor(const Item &item, bool checkReq); bool IsItemAvailable(int i); bool IsUniqueAvailable(int i); void InitItemGFX(); void InitItems(); void CalcPlrItemVals(Player &player, bool Loadgfx); void CalcPlrInv(Player &player, bool Loadgfx); -void SetPlrHandItem(ItemStruct &item, int itemData); -void GetPlrHandSeed(ItemStruct *h); +void SetPlrHandItem(Item &item, int itemData); +void GetPlrHandSeed(Item *h); /** * @brief Set a new unique seed value on the given item */ -void SetGoldSeed(Player &player, ItemStruct &gold); +void SetGoldSeed(Player &player, Item &gold); int GetGoldCursor(int value); -void SetPlrHandGoldCurs(ItemStruct &gold); +void SetPlrHandGoldCurs(Item &gold); void CreatePlrItems(int playerId); bool ItemSpaceOk(Point position); int AllocateItem(); Point GetSuperItemLoc(Point position); -void GetItemAttrs(ItemStruct &item, int itemData, int lvl); -void SetupItem(ItemStruct &item); +void GetItemAttrs(Item &item, int itemData, int lvl); +void SetupItem(Item &item); int RndItem(const MonsterStruct &monster); void SpawnUnique(_unique_items uid, Point position); void SpawnItem(MonsterStruct &monster, Point position, bool sendmsg); void CreateRndItem(Point position, bool onlygood, bool sendmsg, bool delta); void CreateRndUseful(Point position, bool sendmsg); void CreateTypeItem(Point position, bool onlygood, int itype, int imisc, bool sendmsg, bool delta); -void RecreateItem(ItemStruct &item, int idx, uint16_t icreateinfo, int iseed, int ivalue, bool isHellfire); -void RecreateEar(ItemStruct &item, uint16_t ic, int iseed, int Id, int dur, int mdur, int ch, int mch, int ivalue, int ibuff); +void RecreateItem(Item &item, int idx, uint16_t icreateinfo, int iseed, int ivalue, bool isHellfire); +void RecreateEar(Item &item, uint16_t ic, int iseed, int Id, int dur, int mdur, int ch, int mch, int ivalue, int ibuff); void CornerstoneSave(); void CornerstoneLoad(Point position); void SpawnQuestItem(int itemid, Point position, int randarea, int selflag); @@ -442,20 +442,20 @@ void SpawnRewardItem(int itemid, Point position); void SpawnMapOfDoom(Point position); void SpawnRuneBomb(Point position); void SpawnTheodore(Point position); -void RespawnItem(ItemStruct *item, bool FlipFlag); +void RespawnItem(Item *item, bool FlipFlag); void DeleteItem(int ii, int i); void ProcessItems(); void FreeItemGFX(); -void GetItemFrm(ItemStruct &item); -void GetItemStr(ItemStruct &item); +void GetItemFrm(Item &item); +void GetItemStr(Item &item); void CheckIdentify(Player &player, int cii); void DoRepair(Player &player, int cii); void DoRecharge(Player &player, int cii); void DoOil(Player &player, int cii); -void PrintItemPower(char plidx, ItemStruct *x); +void PrintItemPower(char plidx, Item *x); void DrawUniqueInfo(const Surface &out); -void PrintItemDetails(ItemStruct *x); -void PrintItemDur(ItemStruct *x); +void PrintItemDetails(Item *x); +void PrintItemDur(Item *x); void UseItem(int p, item_misc_id Mid, spell_id spl); void SpawnSmith(int lvl); void SpawnPremium(int pnum); diff --git a/Source/loadsave.cpp b/Source/loadsave.cpp index c1e8d77c4..0eb31bdea 100644 --- a/Source/loadsave.cpp +++ b/Source/loadsave.cpp @@ -207,7 +207,7 @@ public: } }; -void LoadItemData(LoadHelper *file, ItemStruct *pItem) +void LoadItemData(LoadHelper *file, Item *pItem) { pItem->_iSeed = file->NextLE(); pItem->_iCreateInfo = file->NextLE(); @@ -297,7 +297,7 @@ void LoadItemData(LoadHelper *file, ItemStruct *pItem) RemoveInvalidItem(pItem); } -void LoadItems(LoadHelper *file, const int n, ItemStruct *pItem) +void LoadItems(LoadHelper *file, const int n, Item *pItem) { for (int i = 0; i < n; i++) { LoadItemData(file, &pItem[i]); @@ -843,9 +843,9 @@ void ConvertLevels() leveltype = tmpLeveltype; } -void LoadMatchingItems(LoadHelper *file, const int n, ItemStruct *pItem) +void LoadMatchingItems(LoadHelper *file, const int n, Item *pItem) { - ItemStruct tempItem; + Item tempItem; for (int i = 0; i < n; i++) { LoadItemData(file, &tempItem); @@ -869,7 +869,7 @@ void RemoveEmptyLevelItems() } } -void SaveItem(SaveHelper *file, ItemStruct *pItem) +void SaveItem(SaveHelper *file, Item *pItem) { auto idx = pItem->IDidx; if (!gbIsHellfire) @@ -962,7 +962,7 @@ void SaveItem(SaveHelper *file, ItemStruct *pItem) file->WriteLE(pItem->_iDamAcFlags); } -void SaveItems(SaveHelper *file, ItemStruct *pItem, const int n) +void SaveItems(SaveHelper *file, Item *pItem, const int n) { for (int i = 0; i < n; i++) { SaveItem(file, &pItem[i]); @@ -1438,7 +1438,7 @@ const int HellfireItemSaveSize = 372; } // namespace -void RemoveInvalidItem(ItemStruct *pItem) +void RemoveInvalidItem(Item *pItem) { bool isInvalid = !IsItemAvailable(pItem->IDidx) || !IsUniqueAvailable(pItem->_iUid); diff --git a/Source/loadsave.h b/Source/loadsave.h index 343d2ffb8..05c0a7d99 100644 --- a/Source/loadsave.h +++ b/Source/loadsave.h @@ -12,7 +12,7 @@ namespace devilution { extern bool gbIsHellfireSaveGame; extern uint8_t giNumberOfLevels; -void RemoveInvalidItem(ItemStruct *pItem); +void RemoveInvalidItem(Item *pItem); _item_indexes RemapItemIdxFromDiablo(_item_indexes i); _item_indexes RemapItemIdxToDiablo(_item_indexes i); _item_indexes RemapItemIdxFromSpawn(_item_indexes i); diff --git a/Source/msg.h b/Source/msg.h index 9444dde27..6fa072837 100644 --- a/Source/msg.h +++ b/Source/msg.h @@ -236,7 +236,7 @@ struct TCmdPItem { uint16_t wCI; /** * Item identifier - * @see ItemStruct::_iSeed + * @see Item::_iSeed */ int32_t dwSeed; uint8_t bId; diff --git a/Source/objects.cpp b/Source/objects.cpp index dd51357a2..5fb673d82 100644 --- a/Source/objects.cpp +++ b/Source/objects.cpp @@ -2679,7 +2679,7 @@ bool OperateShrineGloomy(int pnum) auto &player = Players[pnum]; // Increment armor class by 2 and decrements max damage by 1. - for (ItemStruct &item : PlayerItemsRange(player)) { + for (Item &item : PlayerItemsRange(player)) { switch (item._itype) { case ITYPE_SWORD: case ITYPE_AXE: diff --git a/Source/pack.cpp b/Source/pack.cpp index caafae598..a581e101c 100644 --- a/Source/pack.cpp +++ b/Source/pack.cpp @@ -35,7 +35,7 @@ void VerifyGoldSeeds(Player &player) } // namespace -void PackItem(PkItemStruct *id, const ItemStruct *is) +void PackItem(PkItemStruct *id, const Item *is) { memset(id, 0, sizeof(*id)); if (is->isEmpty()) { @@ -137,14 +137,14 @@ void PackPlayer(PlayerPack *pPack, const Player &player, bool manashield) } /** - * Expand a PkItemStruct in to a ItemStruct + * Expand a PkItemStruct in to a Item * * Note: last slot of item[MAXITEMS+1] used as temporary buffer - * find real name reference below, possibly [sizeof(item[])/sizeof(ItemStruct)] + * find real name reference below, possibly [sizeof(item[])/sizeof(Item)] * @param is The source packed item * @param id The distination item */ -void UnPackItem(const PkItemStruct *is, ItemStruct *id, bool isHellfire) +void UnPackItem(const PkItemStruct *is, Item *id, bool isHellfire) { auto &item = Items[MAXITEMS]; auto idx = static_cast<_item_indexes>(SDL_SwapLE16(is->idx)); diff --git a/Source/pack.h b/Source/pack.h index fda676ea3..0a83e142b 100644 --- a/Source/pack.h +++ b/Source/pack.h @@ -81,7 +81,7 @@ struct PlayerPack { void PackPlayer(PlayerPack *pPack, const Player &player, bool manashield); void UnPackPlayer(const PlayerPack *pPack, Player &player, bool netSync); -void PackItem(PkItemStruct *id, const ItemStruct *is); -void UnPackItem(const PkItemStruct *is, ItemStruct *id, bool isHellfire); +void PackItem(PkItemStruct *id, const Item *is); +void UnPackItem(const PkItemStruct *is, Item *id, bool isHellfire); } // namespace devilution diff --git a/Source/player.cpp b/Source/player.cpp index 59f0f958a..b868bcc1e 100644 --- a/Source/player.cpp +++ b/Source/player.cpp @@ -568,7 +568,7 @@ void StartSpell(int pnum, Direction d, int cx, int cy) player._pVar4 = GetSpellLevel(pnum, player._pSpell); } -void RespawnDeadItem(ItemStruct *itm, Point target) +void RespawnDeadItem(Item *itm, Point target) { if (ActiveItemCount >= MAXITEMS) return; @@ -584,7 +584,7 @@ void RespawnDeadItem(ItemStruct *itm, Point target) itm->_itype = ITYPE_NONE; } -void DeadItem(Player &player, ItemStruct *itm, Displacement direction) +void DeadItem(Player &player, Item *itm, Displacement direction) { if (itm->isEmpty()) return; @@ -1399,7 +1399,7 @@ bool DoBlock(int pnum) void DamageArmor(int pnum) { int a; - ItemStruct *pi; + Item *pi; if (pnum != MyPlayerId) { return; @@ -1540,7 +1540,7 @@ void CheckNewPath(int pnum, bool pmWillBeCalled) MonsterStruct *monster; Player *target; ObjectStruct *object; - ItemStruct *item; + Item *item; int targetId = player.destParam1; @@ -3049,7 +3049,7 @@ StartPlayerKill(int pnum, int earflag) DropHalfPlayersGold(pnum); if (earflag != -1) { if (earflag != 0) { - ItemStruct ear; + Item ear; SetPlrHandItem(ear, IDI_EAR); strcpy(ear._iName, fmt::format(_("Ear of {:s}"), player._pName).c_str()); switch (player._pClass) { @@ -3092,7 +3092,7 @@ StartPlayerKill(int pnum, int earflag) void StripTopGold(Player &player) { - ItemStruct tmpItem = player.HoldItem; + Item tmpItem = player.HoldItem; for (int i = 0; i < player._pNumInv; i++) { if (player.InvList[i]._itype == ITYPE_GOLD) { diff --git a/Source/player.h b/Source/player.h index 022373b40..533da4d9d 100644 --- a/Source/player.h +++ b/Source/player.h @@ -258,12 +258,12 @@ struct Player { int _pHFrames; int _pDFrames; int _pBFrames; - ItemStruct InvBody[NUM_INVLOC]; - ItemStruct InvList[NUM_INV_GRID_ELEM]; + Item InvBody[NUM_INVLOC]; + Item InvList[NUM_INV_GRID_ELEM]; int _pNumInv; int8_t InvGrid[NUM_INV_GRID_ELEM]; - ItemStruct SpdList[MAXBELTITEMS]; - ItemStruct HoldItem; + Item SpdList[MAXBELTITEMS]; + Item HoldItem; int _pIMinDam; int _pIMaxDam; int _pIAC; @@ -322,9 +322,9 @@ struct Player { * matching items were found. */ template - const ItemStruct *GetMostValuableItem(const TPredicate &itemPredicate) const + const Item *GetMostValuableItem(const TPredicate &itemPredicate) const { - const auto getMostValuableItem = [&itemPredicate](const ItemStruct *begin, const ItemStruct *end, const ItemStruct *mostValuableItem = nullptr) { + const auto getMostValuableItem = [&itemPredicate](const Item *begin, const Item *end, const Item *mostValuableItem = nullptr) { for (const auto *item = begin; item < end; item++) { if (item->isEmpty() || !itemPredicate(*item)) { continue; @@ -338,7 +338,7 @@ struct Player { return mostValuableItem; }; - const ItemStruct *mostValuableItem = getMostValuableItem(SpdList, SpdList + MAXBELTITEMS); + const Item *mostValuableItem = getMostValuableItem(SpdList, SpdList + MAXBELTITEMS); mostValuableItem = getMostValuableItem(InvBody, InvBody + inv_body_loc::NUM_INVLOC, mostValuableItem); mostValuableItem = getMostValuableItem(InvList, InvList + _pNumInv, mostValuableItem); diff --git a/Source/qol/itemlabels.cpp b/Source/qol/itemlabels.cpp index ffdc6f977..9917aff59 100644 --- a/Source/qol/itemlabels.cpp +++ b/Source/qol/itemlabels.cpp @@ -63,7 +63,7 @@ void AddItemToLabelQueue(int id, int x, int y) { if (!IsHighlightingLabelsEnabled()) return; - ItemStruct &item = Items[id]; + Item &item = Items[id]; const char *textOnGround; if (item._itype == ITYPE_GOLD) { @@ -146,7 +146,7 @@ void DrawItemNameLabels(const Surface &out) } for (const ItemLabel &label : labelQueue) { - ItemStruct &item = Items[label.id]; + Item &item = Items[label.id]; if (MousePosition.x >= label.pos.x && MousePosition.x < label.pos.x + label.width && MousePosition.y >= label.pos.y - Height + MarginY && MousePosition.y < label.pos.y + MarginY) { if (!gmenu_is_active() && PauseMode == 0 && !MyPlayerIsDead && IsMouseOverGameArea()) { diff --git a/Source/stores.cpp b/Source/stores.cpp index d037c6008..efc3dd85f 100644 --- a/Source/stores.cpp +++ b/Source/stores.cpp @@ -22,7 +22,7 @@ namespace devilution { -ItemStruct golditem; +Item golditem; std::optional pSTextBoxCels; std::optional pSTextSlidCels; @@ -31,19 +31,19 @@ talk_id stextflag; int storenumh; char storehidx[48]; -ItemStruct storehold[48]; +Item storehold[48]; -ItemStruct smithitem[SMITH_ITEMS]; +Item smithitem[SMITH_ITEMS]; int numpremium; int premiumlevel; -ItemStruct premiumitems[SMITH_PREMIUM_ITEMS]; +Item premiumitems[SMITH_PREMIUM_ITEMS]; -ItemStruct healitem[20]; +Item healitem[20]; -ItemStruct witchitem[WITCH_ITEMS]; +Item witchitem[WITCH_ITEMS]; int boylevel; -ItemStruct boyitem; +Item boyitem; namespace { @@ -160,7 +160,7 @@ void AddSText(int x, int y, const char *str, UiFlags flags, bool sel) stext[y]._ssel = sel; } -void PrintStoreItem(ItemStruct *x, int l, UiFlags flags) +void PrintStoreItem(Item *x, int l, UiFlags flags) { char sstr[128]; @@ -364,7 +364,7 @@ bool StartSmithPremiumBuy() bool SmithSellOk(int i) { - ItemStruct *pI; + Item *pI; if (i >= 0) { pI = &Players[MyPlayerId].InvList[i]; @@ -668,7 +668,7 @@ void StartWitchBuy() bool WitchSellOk(int i) { - ItemStruct *pI; + Item *pI; bool rv = false; @@ -782,7 +782,7 @@ bool WitchRechargeOk(int i) return false; } -void AddStoreHoldRecharge(ItemStruct itm, int8_t i) +void AddStoreHoldRecharge(Item itm, int8_t i) { storehold[storenumh] = itm; storehold[storenumh]._ivalue += spelldata[itm._iSpell].sStaffCost; @@ -1057,7 +1057,7 @@ void StartStoryteller() AddSLine(5); } -bool IdItemOk(ItemStruct *i) +bool IdItemOk(Item *i) { if (i->isEmpty()) { return false; @@ -1068,7 +1068,7 @@ bool IdItemOk(ItemStruct *i) return !i->_iIdentified; } -void AddStoreHoldId(ItemStruct itm, int8_t i) +void AddStoreHoldId(Item itm, int8_t i) { storehold[storenumh] = itm; storehold[storenumh]._ivalue = 100; @@ -2174,9 +2174,9 @@ void DrawSelector(const Surface &out, const Rectangle &rect, const char *text, U } // namespace -void AddStoreHoldRepair(ItemStruct *itm, int8_t i) +void AddStoreHoldRepair(Item *itm, int8_t i) { - ItemStruct *item; + Item *item; int v; item = &storehold[storenumh]; diff --git a/Source/stores.h b/Source/stores.h index 1b19aff4c..503c39fa6 100644 --- a/Source/stores.h +++ b/Source/stores.h @@ -69,32 +69,32 @@ extern int storenumh; /** Map of inventory items being presented in the store */ extern char storehidx[48]; /** Copies of the players items as presented in the store */ -extern ItemStruct storehold[48]; +extern Item storehold[48]; /** Temporary item used to generate gold piles by various function */ -extern ItemStruct golditem; +extern Item golditem; /** Items sold by Griswold */ -extern ItemStruct smithitem[SMITH_ITEMS]; +extern Item smithitem[SMITH_ITEMS]; /** Number of premium items for sale by Griswold */ extern int numpremium; /** Base level of current premium items sold by Griswold */ extern int premiumlevel; /** Premium items sold by Griswold */ -extern ItemStruct premiumitems[SMITH_PREMIUM_ITEMS]; +extern Item premiumitems[SMITH_PREMIUM_ITEMS]; /** Items sold by Pepin */ -extern ItemStruct healitem[20]; +extern Item healitem[20]; /** Items sold by Adria */ -extern ItemStruct witchitem[WITCH_ITEMS]; +extern Item witchitem[WITCH_ITEMS]; /** Current level of the item sold by Wirt */ extern int boylevel; /** Current item sold by Wirt */ -extern ItemStruct boyitem; +extern Item boyitem; -void AddStoreHoldRepair(ItemStruct *itm, int8_t i); +void AddStoreHoldRepair(Item *itm, int8_t i); void InitStores(); void SetupTownStores(); void FreeStoreMem(); diff --git a/test/inv_test.cpp b/test/inv_test.cpp index c82104bb1..24f8073b7 100644 --- a/test/inv_test.cpp +++ b/test/inv_test.cpp @@ -7,7 +7,7 @@ using namespace devilution; /* Set up a given item as a spell scroll, allowing for its usage. */ -void set_up_scroll(ItemStruct &item, spell_id spell) +void set_up_scroll(Item &item, spell_id spell) { pcurs = CURSOR_HAND; leveltype = DTYPE_CATACOMBS; @@ -21,7 +21,7 @@ void set_up_scroll(ItemStruct &item, spell_id spell) void clear_inventory() { for (int i = 0; i < NUM_INV_GRID_ELEM; i++) { - memset(&Players[MyPlayerId].InvList[i], 0, sizeof(ItemStruct)); + memset(&Players[MyPlayerId].InvList[i], 0, sizeof(Item)); Players[MyPlayerId].InvGrid[i] = 0; } Players[MyPlayerId]._pNumInv = 0; diff --git a/test/pack_test.cpp b/test/pack_test.cpp index 9e9262b20..fa6e89ee0 100644 --- a/test/pack_test.cpp +++ b/test/pack_test.cpp @@ -86,7 +86,7 @@ typedef struct TestItemStruct { int IDidx; } TestItemStruct; -static void CompareItems(const ItemStruct *item1, const TestItemStruct *item2) +static void CompareItems(const Item *item1, const TestItemStruct *item2) { ASSERT_STREQ(item1->_iIName, item2->_iIName); EXPECT_EQ(item1->_itype, item2->_itype); @@ -328,7 +328,7 @@ const TestItemStruct DiabloItems[] = { TEST(pack, UnPackItem_diablo) { - ItemStruct id; + Item id; PkItemStruct is; gbIsHellfire = false; @@ -356,7 +356,7 @@ TEST(pack, UnPackItem_diablo_unique_bug) gbIsMultiplayer = false; gbIsSpawn = false; - ItemStruct id; + Item id; UnPackItem(&pkItemBug, &id, false); ASSERT_STREQ(id._iIName, "Veil of Steel"); ASSERT_EQ(id._itype, ITYPE_HELM); @@ -399,7 +399,7 @@ const TestItemStruct SpawnItems[] = { TEST(pack, UnPackItem_spawn) { - ItemStruct id; + Item id; PkItemStruct is; gbIsHellfire = false; @@ -443,7 +443,7 @@ const TestItemStruct DiabloMPItems[] = { TEST(pack, UnPackItem_diablo_multiplayer) { - ItemStruct id; + Item id; PkItemStruct is; gbIsHellfire = false; @@ -652,7 +652,7 @@ const TestItemStruct HellfireItems[] = { TEST(pack, UnPackItem_hellfire) { - ItemStruct id; + Item id; PkItemStruct is; gbIsHellfire = true; @@ -675,7 +675,7 @@ TEST(pack, UnPackItem_hellfire) TEST(pack, UnPackItem_diablo_strip_hellfire_items) { PkItemStruct is = { 1478792102, 259, 92, 0, 0, 0, 0, 0, 0, 0 }; // Scroll of Search - ItemStruct id; + Item id; gbIsHellfire = false; gbIsMultiplayer = false; @@ -689,7 +689,7 @@ TEST(pack, UnPackItem_diablo_strip_hellfire_items) TEST(pack, UnPackItem_empty) { PkItemStruct is = { 0, 0, 0xFFFF, 0, 0, 0, 0, 0, 0, 0 }; - ItemStruct id; + Item id; UnPackItem(&is, &id, false); @@ -699,7 +699,7 @@ TEST(pack, UnPackItem_empty) TEST(pack, PackItem_empty) { PkItemStruct is; - ItemStruct id; + Item id; id._itype = ITYPE_NONE; @@ -710,7 +710,7 @@ TEST(pack, PackItem_empty) static void compareGold(const PkItemStruct *is, int iCurs) { - ItemStruct id; + Item id; UnPackItem(is, &id, false); ASSERT_EQ(id._iCurs, iCurs); ASSERT_EQ(id.IDidx, IDI_GOLD); @@ -744,7 +744,7 @@ TEST(pack, UnPackItem_gold_large) TEST(pack, UnPackItem_ear) { PkItemStruct is = { 1633955154, 17509, 23, 111, 103, 117, 101, 68, 19843, 0 }; - ItemStruct id; + Item id; UnPackItem(&is, &id, false); ASSERT_STREQ(id._iName, "Ear of Dead-RogueDM"); diff --git a/test/player_test.h b/test/player_test.h index 7619cad81..ff548204e 100644 --- a/test/player_test.h +++ b/test/player_test.h @@ -10,7 +10,7 @@ using namespace devilution; -static int CountItems(ItemStruct *items, int n) +static int CountItems(Item *items, int n) { int count = n; for (int i = 0; i < n; i++) diff --git a/test/stores_test.cpp b/test/stores_test.cpp index 2d50baf5a..b321cf87e 100644 --- a/test/stores_test.cpp +++ b/test/stores_test.cpp @@ -8,7 +8,7 @@ namespace { TEST(Stores, AddStoreHoldRepair_magic) { - ItemStruct *item; + Item *item; item = &storehold[0]; @@ -41,7 +41,7 @@ TEST(Stores, AddStoreHoldRepair_magic) TEST(Stores, AddStoreHoldRepair_normal) { - ItemStruct *item; + Item *item; item = &storehold[0];