aab9678b02
In the Pokémon Storage System, even FONT_SMALL_NARROWER isn't sufficient to prevent clipping in all cases. e.g. Unremarkable Teacup clips. We have decided to accept that cost to make the rest of the user experience better, but downstream projects that don't like that trade-off can either a) alter the Pokémon Storage System UI, or b) set I_EXPANDED_ITEM_NAMES to FALSE.
103 lines
2.8 KiB
C
103 lines
2.8 KiB
C
#ifndef GUARD_ITEM_H
|
|
#define GUARD_ITEM_H
|
|
|
|
#include "constants/item.h"
|
|
#include "constants/items.h"
|
|
#include "constants/tms_hms.h"
|
|
|
|
typedef void (*ItemUseFunc)(u8);
|
|
|
|
struct Item
|
|
{
|
|
u32 price;
|
|
u16 secondaryId;
|
|
ItemUseFunc fieldUseFunc;
|
|
const u8 *description;
|
|
const u8 *effect;
|
|
u8 name[ITEM_NAME_LENGTH];
|
|
u8 pluralName[ITEM_NAME_PLURAL_LENGTH];
|
|
u8 holdEffect;
|
|
u8 holdEffectParam;
|
|
u8 importance;
|
|
u8 pocket;
|
|
u8 type;
|
|
u8 battleUsage;
|
|
u8 flingPower;
|
|
};
|
|
|
|
struct BagPocket
|
|
{
|
|
struct ItemSlot *itemSlots;
|
|
u8 capacity;
|
|
};
|
|
|
|
extern const struct Item gItemsInfo[];
|
|
extern struct BagPocket gBagPockets[];
|
|
|
|
void ApplyNewEncryptionKeyToBagItems(u32 newKey);
|
|
void ApplyNewEncryptionKeyToBagItems_(u32 newKey);
|
|
void SetBagItemsPointers(void);
|
|
u8 *CopyItemName(u16 itemId, u8 *dst);
|
|
u8 *CopyItemNameHandlePlural(u16 itemId, u8 *dst, u32 quantity);
|
|
bool8 IsBagPocketNonEmpty(u8 pocket);
|
|
bool8 CheckBagHasItem(u16 itemId, u16 count);
|
|
bool8 HasAtLeastOneBerry(void);
|
|
bool8 CheckBagHasSpace(u16 itemId, u16 count);
|
|
u32 GetFreeSpaceForItemInBag(u16 itemId);
|
|
bool8 AddBagItem(u16 itemId, u16 count);
|
|
bool8 RemoveBagItem(u16 itemId, u16 count);
|
|
u8 GetPocketByItemId(u16 itemId);
|
|
void ClearItemSlots(struct ItemSlot *itemSlots, u8 itemCount);
|
|
u8 CountUsedPCItemSlots(void);
|
|
bool8 CheckPCHasItem(u16 itemId, u16 count);
|
|
bool8 AddPCItem(u16 itemId, u16 count);
|
|
void RemovePCItem(u8 index, u16 count);
|
|
void CompactPCItems(void);
|
|
void SwapRegisteredBike(void);
|
|
u16 BagGetItemIdByPocketPosition(u8 pocketId, u16 pocketPos);
|
|
u16 BagGetQuantityByPocketPosition(u8 pocketId, u16 pocketPos);
|
|
void CompactItemsInBagPocket(struct BagPocket *bagPocket);
|
|
void SortBerriesOrTMHMs(struct BagPocket *bagPocket);
|
|
void MoveItemSlotInList(struct ItemSlot* itemSlots_, u32 from, u32 to_);
|
|
void ClearBag(void);
|
|
u16 CountTotalItemQuantityInBag(u16 itemId);
|
|
bool8 AddPyramidBagItem(u16 itemId, u16 count);
|
|
bool8 RemovePyramidBagItem(u16 itemId, u16 count);
|
|
const u8 *ItemId_GetName(u16 itemId);
|
|
u32 ItemId_GetPrice(u16 itemId);
|
|
const u8 *ItemId_GetEffect(u32 itemId);
|
|
u32 ItemId_GetHoldEffect(u32 itemId);
|
|
u32 ItemId_GetHoldEffectParam(u32 itemId);
|
|
const u8 *ItemId_GetDescription(u16 itemId);
|
|
u8 ItemId_GetImportance(u16 itemId);
|
|
u8 ItemId_GetPocket(u16 itemId);
|
|
u8 ItemId_GetType(u16 itemId);
|
|
ItemUseFunc ItemId_GetFieldFunc(u16 itemId);
|
|
u8 ItemId_GetBattleUsage(u16 itemId);
|
|
u8 ItemId_GetSecondaryId(u16 itemId);
|
|
u32 ItemId_GetFlingPower(u32 itemId);
|
|
u32 GetItemStatus1Mask(u16 itemId);
|
|
u32 GetItemStatus2Mask(u16 itemId);
|
|
|
|
/* Expands to:
|
|
* enum
|
|
* {
|
|
* ITEM_TM_FOCUS_PUNCH,
|
|
* ...
|
|
* ITEM_HM_CUT,
|
|
* ...
|
|
* }; */
|
|
#define ENUM_TM(id) CAT(ITEM_TM_, id),
|
|
#define ENUM_HM(id) CAT(ITEM_HM_, id),
|
|
enum
|
|
{
|
|
ENUM_TM_START_ = ITEM_TM01 - 1,
|
|
FOREACH_TM(ENUM_TM)
|
|
|
|
ENUM_HM_START_ = ITEM_HM01 - 1,
|
|
FOREACH_HM(ENUM_HM)
|
|
};
|
|
#undef ENUM_TM
|
|
#undef ENUM_HM
|
|
|
|
#endif // GUARD_ITEM_H
|