From b1b30687434b992623047ec24a6b9558cac1f779 Mon Sep 17 00:00:00 2001 From: lahm86 <33758420+lahm86@users.noreply.github.com> Date: Thu, 6 Feb 2025 14:33:43 +0000 Subject: [PATCH] items: introduce Item_GetIndex This provides a common function to retrieve an item index. --- src/libtrx/game/items.c | 5 +++++ src/libtrx/include/libtrx/game/items/common.h | 1 + src/tr1/game/lara/cheat.c | 2 +- src/tr1/game/overlay.c | 2 +- src/tr2/game/lara/cheat.c | 2 +- src/tr2/game/objects/creatures/skidoo_driver.c | 5 ++--- 6 files changed, 11 insertions(+), 6 deletions(-) diff --git a/src/libtrx/game/items.c b/src/libtrx/game/items.c index c025bee66..5a2837efc 100644 --- a/src/libtrx/game/items.c +++ b/src/libtrx/game/items.c @@ -26,6 +26,11 @@ void Item_TakeDamage( } } +int16_t Item_GetIndex(const ITEM *const item) +{ + return item - Item_Get(0); +} + ITEM *Item_Find(const GAME_OBJECT_ID obj_id) { for (int32_t item_num = 0; item_num < Item_GetTotalCount(); item_num++) { diff --git a/src/libtrx/include/libtrx/game/items/common.h b/src/libtrx/include/libtrx/game/items/common.h index 3a554caee..24dfd2901 100644 --- a/src/libtrx/include/libtrx/game/items/common.h +++ b/src/libtrx/include/libtrx/game/items/common.h @@ -4,6 +4,7 @@ #include "./types.h" ITEM *Item_Get(int16_t num); +int16_t Item_GetIndex(const ITEM *item); ITEM *Item_Find(GAME_OBJECT_ID obj_id); int32_t Item_GetTotalCount(void); int32_t Item_GetDistance(const ITEM *item, const XYZ_32 *target); diff --git a/src/tr1/game/lara/cheat.c b/src/tr1/game/lara/cheat.c index 10276b19b..d89911d61 100644 --- a/src/tr1/game/lara/cheat.c +++ b/src/tr1/game/lara/cheat.c @@ -448,7 +448,7 @@ bool Lara_Cheat_Teleport(int32_t x, int32_t y, int32_t z) g_LaraItem->floor = height; if (g_LaraItem->room_num != room_num) { - const int16_t item_num = g_LaraItem - Item_Get(0); + const int16_t item_num = Item_GetIndex(g_LaraItem); Item_NewRoom(item_num, room_num); } diff --git a/src/tr1/game/overlay.c b/src/tr1/game/overlay.c index 46373c5cb..558785bcd 100644 --- a/src/tr1/game/overlay.c +++ b/src/tr1/game/overlay.c @@ -569,7 +569,7 @@ static void M_BarDrawEnemy(void) break; case BSM_BOSS_ONLY: - m_EnemyBar.show = Creature_IsBoss(g_Lara.target - Item_Get(0)); + m_EnemyBar.show = Creature_IsBoss(Item_GetIndex(g_Lara.target)); break; } diff --git a/src/tr2/game/lara/cheat.c b/src/tr2/game/lara/cheat.c index 6f6341410..a07feefdf 100644 --- a/src/tr2/game/lara/cheat.c +++ b/src/tr2/game/lara/cheat.c @@ -373,7 +373,7 @@ bool Lara_Cheat_Teleport(int32_t x, int32_t y, int32_t z) g_LaraItem->floor = height; if (g_LaraItem->room_num != room_num) { - const int16_t item_num = g_LaraItem - Item_Get(0); + const int16_t item_num = Item_GetIndex(g_LaraItem); Item_NewRoom(item_num, room_num); } diff --git a/src/tr2/game/objects/creatures/skidoo_driver.c b/src/tr2/game/objects/creatures/skidoo_driver.c index 2b4de933a..7f062ffdf 100644 --- a/src/tr2/game/objects/creatures/skidoo_driver.c +++ b/src/tr2/game/objects/creatures/skidoo_driver.c @@ -40,8 +40,7 @@ static int16_t M_ControlAlive(ITEM *driver_item, ITEM *skidoo_item); static void M_KillDriver(ITEM *const driver_item) { - // TODO: Item_GetIndex(const ITEM *item) - const int32_t driver_item_num = driver_item - Item_Get(0); + const int32_t driver_item_num = Item_GetIndex(driver_item); Item_RemoveActive(driver_item_num); driver_item->collidable = 0; driver_item->flags |= IF_ONE_SHOT; @@ -50,7 +49,7 @@ static void M_KillDriver(ITEM *const driver_item) static void M_MakeMountable(ITEM *const skidoo_item) { - const int32_t skidoo_item_num = skidoo_item - Item_Get(0); + const int32_t skidoo_item_num = Item_GetIndex(skidoo_item); LOT_DisableBaddieAI(skidoo_item_num); skidoo_item->object_id = O_SKIDOO_FAST; skidoo_item->status = IS_DEACTIVATED;