From 58c9f64a1689fbf3364beec0f362103b02c856a0 Mon Sep 17 00:00:00 2001 From: Christopher Leggett Date: Sat, 13 Aug 2022 01:44:19 -0400 Subject: [PATCH] Extends GetItemEntry to include GID. This allows for using it later when drawing freestanding items. Addresses https://github.com/HarbourMasters/Shipwright/pull/1050#discussion_r943168136 --- soh/soh/Enhancements/item-tables/ItemTableTypes.h | 5 +++-- soh/src/code/z_en_item00.c | 4 ++-- soh/src/overlays/actors/ovl_En_Ex_Item/z_en_ex_item.c | 2 +- soh/src/overlays/actors/ovl_Item_B_Heart/z_item_b_heart.c | 4 ++-- soh/src/overlays/actors/ovl_Item_Etcetera/z_item_etcetera.c | 4 ++-- 5 files changed, 10 insertions(+), 9 deletions(-) diff --git a/soh/soh/Enhancements/item-tables/ItemTableTypes.h b/soh/soh/Enhancements/item-tables/ItemTableTypes.h index affdf267f..f5a2c1f68 100644 --- a/soh/soh/Enhancements/item-tables/ItemTableTypes.h +++ b/soh/soh/Enhancements/item-tables/ItemTableTypes.h @@ -7,7 +7,7 @@ #define CHEST_ANIM_LONG 1 #define GET_ITEM(itemId, objectId, drawId, textId, field, chestAnim, modIndex, getItemId) \ - { itemId, field, (chestAnim != CHEST_ANIM_SHORT ? 1 : -1) * (drawId + 1), textId, objectId, modIndex, getItemId } + { itemId, field, (chestAnim != CHEST_ANIM_SHORT ? 1 : -1) * (drawId + 1), textId, objectId, modIndex, getItemId, drawId } #define GET_ITEM_NONE \ { ITEM_NONE, 0, 0, 0, 0, 0, 0 } @@ -20,4 +20,5 @@ typedef struct { /* 0x04 */ uint16_t objectId; /* 0x06 */ uint16_t modIndex; // 0 = Vanilla, 1 = Randomizer, future mods will increment up? /* 0x08 */ uint16_t getItemId; -} GetItemEntry; // size = 0x08 + /* 0x10 */ uint16_t gid; // Stores the GID value unmodified for future reference. +} GetItemEntry; // size = 0x10 diff --git a/soh/src/code/z_en_item00.c b/soh/src/code/z_en_item00.c index 352f2b466..b2ac1bd72 100644 --- a/soh/src/code/z_en_item00.c +++ b/soh/src/code/z_en_item00.c @@ -1338,7 +1338,7 @@ void EnItem00_DrawCollectible(EnItem00* this, GlobalContext* globalCtx) { GetItemEntry randoGetItemEntry = Randomizer_GetRandomizedItem(this->getItemId, this->actor.id, this->ogParams, globalCtx->sceneNum); EnItem00_CustomItemsParticles(&this->actor, globalCtx, randoGetItemEntry); - GetItem_Draw(globalCtx, ABS(randoGetItemEntry.gi) - 1); + GetItem_Draw(globalCtx, randoGetItemEntry.gid); } else { s32 texIndex = this->actor.params - 3; @@ -1397,7 +1397,7 @@ void EnItem00_DrawHeartPiece(EnItem00* this, GlobalContext* globalCtx) { GetItemEntry randoGetItemEntry = Randomizer_GetRandomizedItem(GI_HEART_PIECE, this->actor.id, this->ogParams, globalCtx->sceneNum); EnItem00_CustomItemsParticles(&this->actor, globalCtx, randoGetItemEntry); - GetItem_Draw(globalCtx, ABS(randoGetItemEntry.gi) - 1); + GetItem_Draw(globalCtx, randoGetItemEntry.gid); } else { s32 pad; diff --git a/soh/src/overlays/actors/ovl_En_Ex_Item/z_en_ex_item.c b/soh/src/overlays/actors/ovl_En_Ex_Item/z_en_ex_item.c index 3b96ad22f..34f16e8df 100644 --- a/soh/src/overlays/actors/ovl_En_Ex_Item/z_en_ex_item.c +++ b/soh/src/overlays/actors/ovl_En_Ex_Item/z_en_ex_item.c @@ -533,7 +533,7 @@ void EnExItem_DrawHeartPiece(EnExItem* this, GlobalContext* globalCtx) { GetItemEntry randoGetItem = Randomizer_GetItemFromKnownCheck(RC_MARKET_BOMBCHU_BOWLING_SECOND_PRIZE, GI_HEART_PIECE); EnItem00_CustomItemsParticles(&this->actor, globalCtx, randoGetItem); - GetItem_Draw(globalCtx, ABS(randoGetItem.gi) - 1); + GetItem_Draw(globalCtx, randoGetItem.gid); } else { GetItem_Draw(globalCtx, GID_HEART_PIECE); } diff --git a/soh/src/overlays/actors/ovl_Item_B_Heart/z_item_b_heart.c b/soh/src/overlays/actors/ovl_Item_B_Heart/z_item_b_heart.c index 07fbb5a26..0c6e3dedc 100644 --- a/soh/src/overlays/actors/ovl_Item_B_Heart/z_item_b_heart.c +++ b/soh/src/overlays/actors/ovl_Item_B_Heart/z_item_b_heart.c @@ -99,8 +99,8 @@ void ItemBHeart_Draw(Actor* thisx, GlobalContext* globalCtx) { } if (gSaveContext.n64ddFlag) { - GetItem_Draw(globalCtx, ABS(Randomizer_GetRandomizedItem( - GI_HEART_CONTAINER_2, this->actor.id,this->actor.params, globalCtx->sceneNum).gi) - 1); + GetItem_Draw(globalCtx, Randomizer_GetRandomizedItem(GI_HEART_CONTAINER_2, + this->actor.id,this->actor.params, globalCtx->sceneNum).gid); } else { if (flag) { func_80093D84(globalCtx->state.gfxCtx); diff --git a/soh/src/overlays/actors/ovl_Item_Etcetera/z_item_etcetera.c b/soh/src/overlays/actors/ovl_Item_Etcetera/z_item_etcetera.c index affe9fe71..7b8f97ae6 100644 --- a/soh/src/overlays/actors/ovl_Item_Etcetera/z_item_etcetera.c +++ b/soh/src/overlays/actors/ovl_Item_Etcetera/z_item_etcetera.c @@ -233,7 +233,7 @@ void ItemEtcetera_DrawThroughLens(Actor* thisx, GlobalContext* globalCtx) { GetItemEntry randoGetItem = GetChestGameRandoGetItem(this->actor.room, this->giDrawId, globalCtx); EnItem00_CustomItemsParticles(&this->actor, globalCtx, randoGetItem); if (randoGetItem.itemId != RG_NONE) { - GetItem_Draw(globalCtx, ABS(randoGetItem.gi) - 1); + GetItem_Draw(globalCtx, randoGetItem.gid); return; } } @@ -257,7 +257,7 @@ void ItemEtcetera_Draw(Actor* thisx, GlobalContext* globalCtx) { EnItem00_CustomItemsParticles(&this->actor, globalCtx, randoGetItem); if (randoGetItem.itemId != RG_NONE) { - this->giDrawId = ABS(randoGetItem.gi) - 1; + this->giDrawId = randoGetItem.gid; } }