1#pragma once
2
3#include <basis/seadTypes.h>
4#include <container/seadPtrArray.h>
5
6#include "System/GameDataHolderAccessor.h"
7
8namespace al {
9class IUseSceneObjHolder;
10class IUseMessageSystem;
11} // namespace al
12
13namespace ShopItem {
14struct ItemInfo;
15enum class ItemType : u32;
16struct ShopItemInfo;
17} // namespace ShopItem
18
19namespace rs {
20void buyItemInShopItemList(const al::IUseSceneObjHolder* user, s32 itemIdx);
21bool isBuyItemInShopItemList(const al::IUseSceneObjHolder* user, s32 itemIdx);
22void buyItem(const al::IUseSceneObjHolder* user, const ShopItem::ItemInfo* itemInfo);
23void buyItemAll(const al::IUseSceneObjHolder* user);
24bool isBuyItem(GameDataHolderAccessor accessor, const ShopItem::ItemInfo* itemInfo);
25bool isHaveCloth(GameDataHolderAccessor accessor, const char* name);
26bool isHaveCap(GameDataHolderAccessor accessor, const char* name);
27bool isHaveSticker(GameDataHolderAccessor accessor, const char* name);
28bool isHaveGift(GameDataHolderAccessor accessor, const char* name);
29const sead::PtrArray<ShopItem::ItemInfo>& getClothList(GameDataHolderAccessor accessor);
30s32 getClothListSize(GameDataHolderAccessor accessor);
31bool isHaveCloth(GameDataHolderAccessor accessor, s32 clothIdx);
32bool isHaveClothByFileId(GameDataHolderAccessor accessor, const char* clothName, s32 fileId);
33s32 calcHaveClothNum(GameDataHolderAccessor accessor);
34void buyCloth(const al::IUseSceneObjHolder* user, const char* clothName);
35const sead::PtrArray<ShopItem::ItemInfo>& getCapList(GameDataHolderAccessor accessor);
36s32 getCapListSize(GameDataHolderAccessor accessor);
37bool isHaveCap(GameDataHolderAccessor accessor, s32 capIdx);
38bool isHaveCapByFileId(GameDataHolderAccessor accessor, const char* capName, s32 fileId);
39bool isCompleteClothCap(const al::IUseSceneObjHolder* user);
40bool isCompleteCloth(const al::IUseSceneObjHolder* user);
41bool isCompleteCap(const al::IUseSceneObjHolder* user);
42bool isCompleteCloth(const al::IUseSceneObjHolder* user, s32 fileId);
43bool isCompleteCap(const al::IUseSceneObjHolder* user, s32 fileId);
44s32 calcHaveCapNum(GameDataHolderAccessor accessor);
45void buyCap(const al::IUseSceneObjHolder* user, const char* capName);
46const sead::PtrArray<ShopItem::ItemInfo>& getGiftList(GameDataHolderAccessor accessor);
47s32 getGiftListSize(GameDataHolderAccessor accessor);
48bool isHaveGift(GameDataHolderAccessor accessor, s32 giftIdx);
49s32 calcHaveGiftNum(GameDataHolderAccessor accessor);
50bool checkCompleteGift(GameDataHolderAccessor accessor, s32 fileId);
51const sead::PtrArray<ShopItem::ItemInfo>& getStickerList(GameDataHolderAccessor accessor);
52s32 getStickerListSize(GameDataHolderAccessor accessor);
53bool isHaveSticker(GameDataHolderAccessor accessor, s32 fileId);
54s32 calcHaveStickerNum(GameDataHolderAccessor accessor);
55bool checkCompleteSticker(GameDataHolderAccessor accessor, s32 fileId);
56const char* getTestClothesName();
57const char* getTestCapName();
58const char* getTestGiftName();
59const char* getTestStickerName();
60const char* getTestItemName();
61const char* getTestShineName();
62const char* getMsTextName(const ShopItem::ItemType& itemType);
63const char16* getDisplayName(const al::IUseMessageSystem* user, const ShopItem::ItemInfo& itemInfo);
64bool isTypeWear(const ShopItem::ShopItemInfo* itemInfo);
65} // namespace rs
66