diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/decoration.c | 15 | ||||
-rw-r--r-- | src/decoration_inventory.c | 135 | ||||
-rw-r--r-- | src/scrcmd.c | 6 | ||||
-rw-r--r-- | src/trader.c | 6 |
4 files changed, 75 insertions, 87 deletions
diff --git a/src/decoration.c b/src/decoration.c index 4c9e4509a..96cf61548 100644 --- a/src/decoration.c +++ b/src/decoration.c @@ -19,6 +19,7 @@ #include "event_data.h" #include "field_weather.h" #include "decoration.h" +#include "decoration_inventory.h" #include "shop.h" #include "ewram.h" @@ -1555,7 +1556,7 @@ void sub_80FE470(u8 decoCat, u8 left, u8 top, u8 palIdx) // PrintDecorationCateg strptr[2] = palIdx; strptr += 3; strptr = StringCopy(strptr, gUnknown_083EC5E4[decoCat]); - strptr = sub_8072C14(strptr, sub_8134194(decoCat), 0x56, 1); + strptr = sub_8072C14(strptr, GetNumDecorationsInInventoryCategory(decoCat), 0x56, 1); *strptr++ = 0xba; strptr = sub_8072C14(strptr, gDecorationInventories[decoCat].size, 0x68, 1); strptr[0] = EXT_CTRL_CODE_BEGIN; @@ -1609,10 +1610,10 @@ void sub_80FE604(u8 taskId) gUnknown_020388F6 = Menu_GetCursorPos(); if (gUnknown_020388F6 != 8) { - gUnknown_020388D5 = sub_8134194(gUnknown_020388F6); + gUnknown_020388D5 = GetNumDecorationsInInventoryCategory(gUnknown_020388F6); if (gUnknown_020388D5) { - sub_8134104(gUnknown_020388F6); + SortDecorationInventory(gUnknown_020388F6); gUnknown_020388D0 = gDecorationInventories[gUnknown_020388F6].items; sub_80FEF50(taskId); ClearVerticalScrollIndicatorPalettes(); @@ -2022,7 +2023,7 @@ void sub_80FF098(u8 taskId) { gUnknown_020388F4--; } - sub_8134104(gUnknown_020388F6); + SortDecorationInventory(gUnknown_020388F6); sub_80FED90(taskId); sub_80FEF28(); } @@ -2042,7 +2043,7 @@ void sub_80FF114(u8 taskId) } void sub_80FF160(u8 taskId) { - if (!sub_81341D4()) + if (!GetNumDecorationsInInventory()) { DisplayItemMessageOnField(taskId, gSecretBaseText_NoDecors, sub_80FE428, 0); } else @@ -4190,7 +4191,7 @@ void sub_81016F4(void) void sub_8101700(u8 taskId) { - if (!sub_81341D4()) + if (!GetNumDecorationsInInventory()) { DisplayItemMessageOnField(taskId, gSecretBaseText_NoDecors, sub_80FE428, 0); } else @@ -4203,7 +4204,7 @@ void sub_8101700(u8 taskId) void sub_8101750(u8 taskId) { - if (!sub_81341D4()) + if (!GetNumDecorationsInInventory()) { DisplayItemMessageOnField(taskId, gSecretBaseText_NoDecors, sub_80FE428, 0); } else diff --git a/src/decoration_inventory.c b/src/decoration_inventory.c index d4ef2d589..feec11670 100644 --- a/src/decoration_inventory.c +++ b/src/decoration_inventory.c @@ -1,9 +1,9 @@ #include "global.h" -#include "constants/decorations.h" -#include "sprite.h" -#include "task.h" #include "decoration.h" #include "decoration_inventory.h" +#include "sprite.h" +#include "task.h" +#include "constants/decorations.h" #define DECOR_INV(ptr) {.items = ptr, .size = sizeof ptr} @@ -18,154 +18,141 @@ struct DecorationInventory const gDecorationInventories[] = { DECOR_INV(gSaveBlock1.decorCushion) }; -void ClearDecorationInventory(u8 invIdx) +void ClearDecorationInventory(u8 category) { u8 i; - for (i=0; i<gDecorationInventories[invIdx].size; i++) + for (i = 0; i < gDecorationInventories[category].size; i++) { - gDecorationInventories[invIdx].items[i] = DECOR_NONE; + gDecorationInventories[category].items[i] = DECOR_NONE; } } void ClearDecorationInventories(void) { u8 i; - for (i=0; i<8; i++) + for (i = 0; i < 8; i++) { ClearDecorationInventory(i); } } -s8 sub_8133F9C(u8 invIdx) +s8 FindFreeDecorationInventorySlot(u8 category) { s8 i; - for (i=0; i<(s8)gDecorationInventories[invIdx].size; i++) + for (i = 0; i < (s8)gDecorationInventories[category].size; i++) { - if (gDecorationInventories[invIdx].items[i] == DECOR_NONE) - { + if (gDecorationInventories[category].items[i] == DECOR_NONE) return i; - } } + return -1; } -bool8 sub_8133FE4(u8 decorIdx) +bool8 InventoryContainsDecoration(u8 decorationId) { - u8 invIdx; u8 i; - invIdx = gDecorations[decorIdx].category; - for (i=0; i<gDecorationInventories[invIdx].size; i++) + u8 category = gDecorations[decorationId].category; + for (i = 0; i < gDecorationInventories[category].size; i++) { - if (gDecorationInventories[invIdx].items[i] == decorIdx) - { + if (gDecorationInventories[category].items[i] == decorationId) return TRUE; - } } + return FALSE; } -bool8 GiveDecoration(u8 decorIdx) +bool8 GiveDecoration(u8 decorationId) { - u8 invIdx; - s8 invSlot; - if (decorIdx == DECOR_NONE) - { + u8 category; + s8 slot; + if (decorationId == DECOR_NONE) return FALSE; - } - invIdx = gDecorations[decorIdx].category; - invSlot = sub_8133F9C(invIdx); - if (invSlot == -1) - { + + category = gDecorations[decorationId].category; + slot = FindFreeDecorationInventorySlot(category); + if (slot == -1) return FALSE; - } - gDecorationInventories[invIdx].items[invSlot] = decorIdx; + + gDecorationInventories[category].items[slot] = decorationId; return TRUE; } -bool8 sub_8134074(u8 decorIdx) +bool8 CheckDecorationInventoryHasSpace(u8 decorationId) { - u8 invIdx; - if (decorIdx == DECOR_NONE) - { + u8 category; + if (decorationId == DECOR_NONE) return FALSE; - } - invIdx = gDecorations[decorIdx].category; - if (sub_8133F9C(invIdx) == -1) - { + + category = gDecorations[decorationId].category; + if (FindFreeDecorationInventorySlot(category) == -1) return FALSE; - } + return TRUE; } -s8 sub_81340A8(u8 decorIdx) +s8 RemoveDecorationFromInventory(u8 decorationId) { - u8 i; - u8 invIdx; - i = 0; - if (decorIdx == DECOR_NONE) - { + u8 category; + u8 i = 0; + if (decorationId == DECOR_NONE) return FALSE; - } - for (i=0; i<gDecorationInventories[gDecorations[decorIdx].category].size; i++) + + for (i = 0; i < gDecorationInventories[gDecorations[decorationId].category].size; i++) { - invIdx = gDecorations[decorIdx].category; - if (gDecorationInventories[invIdx].items[i] == decorIdx) + category = gDecorations[decorationId].category; + if (gDecorationInventories[category].items[i] == decorationId) { - gDecorationInventories[invIdx].items[i] = DECOR_NONE; - sub_8134104(invIdx); + gDecorationInventories[category].items[i] = DECOR_NONE; + SortDecorationInventory(category); return TRUE; } } + return FALSE; } -void sub_8134104(u8 invIdx) +void SortDecorationInventory(u8 category) { u8 i; u8 j; u8 tmp; - for (i=0; i<gDecorationInventories[invIdx].size; i++) + for (i = 0; i < gDecorationInventories[category].size; i++) { - for (j=i+1; j<gDecorationInventories[invIdx].size; j++) + for (j = i + 1; j < gDecorationInventories[category].size; j++) { - if (gDecorationInventories[invIdx].items[j] != 0 && (gDecorationInventories[invIdx].items[i] == DECOR_NONE || gDecorationInventories[invIdx].items[i] > gDecorationInventories[invIdx].items[j])) + if (gDecorationInventories[category].items[j] != 0 && (gDecorationInventories[category].items[i] == DECOR_NONE || gDecorationInventories[category].items[i] > gDecorationInventories[category].items[j])) { - tmp = gDecorationInventories[invIdx].items[i]; - gDecorationInventories[invIdx].items[i] = gDecorationInventories[invIdx].items[j]; - gDecorationInventories[invIdx].items[j] = tmp; + tmp = gDecorationInventories[category].items[i]; + gDecorationInventories[category].items[i] = gDecorationInventories[category].items[j]; + gDecorationInventories[category].items[j] = tmp; } } } } -u8 sub_8134194(u8 invIdx) +u8 GetNumDecorationsInInventoryCategory(u8 category) { u8 i; - u8 count; - count = 0; - for (i=0; i<gDecorationInventories[invIdx].size; i++) + u8 count = 0; + for (i = 0; i < gDecorationInventories[category].size; i++) { - if (gDecorationInventories[invIdx].items[i] != 0) - { + if (gDecorationInventories[category].items[i] != DECOR_NONE) count++; - } } + return count; } -u8 sub_81341D4(void) +u8 GetNumDecorationsInInventory(void) { u8 i; - u8 count; - count = 0; - for (i=0; i<8; i++) - { - count += sub_8134194(i); - } + u8 count = 0; + for (i = 0; i < 8; i++) + count += GetNumDecorationsInInventoryCategory(i); + return count; } - #if DEBUG void Debug_GiveAllDecorations(void) { diff --git a/src/scrcmd.c b/src/scrcmd.c index 3ad433fb7..ca49dc0df 100644 --- a/src/scrcmd.c +++ b/src/scrcmd.c @@ -556,7 +556,7 @@ bool8 ScrCmd_takedecoration(struct ScriptContext *ctx) { u32 decoration = VarGet(ScriptReadHalfword(ctx)); - gSpecialVar_Result = sub_81340A8(decoration); + gSpecialVar_Result = RemoveDecorationFromInventory(decoration); return FALSE; } @@ -564,7 +564,7 @@ bool8 ScrCmd_checkdecorspace(struct ScriptContext *ctx) { u32 decorId = VarGet(ScriptReadHalfword(ctx)); - gSpecialVar_Result = sub_8134074(decorId); + gSpecialVar_Result = CheckDecorationInventoryHasSpace(decorId); return FALSE; } @@ -572,7 +572,7 @@ bool8 ScrCmd_checkdecor(struct ScriptContext *ctx) { u32 decorId = VarGet(ScriptReadHalfword(ctx)); - gSpecialVar_Result = sub_8133FE4(decorId); + gSpecialVar_Result = InventoryContainsDecoration(decorId); return FALSE; } diff --git a/src/trader.c b/src/trader.c index e8fe743f8..f8606d499 100644 --- a/src/trader.c +++ b/src/trader.c @@ -188,7 +188,7 @@ void ScrSpecial_DoesPlayerHaveNoDecorations(void) for (i = 0; i < 8; i++) { - if (sub_8134194(i)) + if (GetNumDecorationsInInventoryCategory(i)) { gSpecialVar_Result = FALSE; return; @@ -201,7 +201,7 @@ void ScrSpecial_IsDecorationFull(void) { gSpecialVar_Result = FALSE; if (gDecorations[gSpecialVar_0x8004].category != gDecorations[gSpecialVar_0x8006].category - && sub_8133F9C(gDecorations[gSpecialVar_0x8004].category) == -1) + && FindFreeDecorationInventorySlot(gDecorations[gSpecialVar_0x8004].category) == -1) { sub_80FE7D4(gStringVar2, gDecorations[gSpecialVar_0x8004].category); gSpecialVar_Result = TRUE; @@ -248,7 +248,7 @@ void ScrSpecial_TraderDoDecorationTrade(void) { struct MauvilleManTrader *trader = &gSaveBlock1.mauvilleMan.trader; - sub_81340A8(gSpecialVar_0x8006); + RemoveDecorationFromInventory(gSpecialVar_0x8006); GiveDecoration(gSpecialVar_0x8004); StringCopy(trader->unk5[gSpecialVar_0x8005], gSaveBlock2.playerName); trader->unk1[gSpecialVar_0x8005] = gSpecialVar_0x8006; |