1#pragma once
2
3#include <math/seadQuat.h>
4#include <math/seadVector.h>
5
6namespace al {
7struct ActorInitInfo;
8class LiveActor;
9} // namespace al
10class Shine;
11class KuriboMini;
12
13class ItemGenerator {
14public:
15 ItemGenerator();
16 ItemGenerator(al::LiveActor* creator, const al::ActorInitInfo& info);
17
18 void initLinkShine(al::LiveActor* creator, const al::ActorInitInfo& info, bool isAppearAbove);
19 void initNoLinkShine(al::LiveActor* creator, const al::ActorInitInfo& info, bool isAppearAbove);
20 void initHintPhotoShine(al::LiveActor* creator, const al::ActorInitInfo& info);
21 void createShineEffectInsideObject(const al::ActorInitInfo& info);
22 bool tryUpdateHintTransIfExistShine();
23 bool tryUpdateHintTransIfExistShine(const sead::Vector3f& trans);
24 bool isEnableGenerateByCount(s32 count) const;
25 void generate(const sead::Vector3f& pos, const sead::Quatf& quat);
26 void generate(const sead::Vector3f& pos, const sead::Vector3f& vec);
27 bool tryGenerate(const sead::Vector3f& pos, const sead::Quatf& quat, s32 count);
28 bool tryGenerate(const sead::Vector3f& pos, const sead::Vector3f& vec, s32 count);
29 bool isNone() const;
30 bool isShine() const;
31 bool isLifeUp() const;
32 bool isLifeMaxUp() const;
33 bool isCoin() const;
34 bool isCoinBlow() const;
35 bool isCoinStackBound() const;
36 bool isKuriboMini3() const;
37 bool isKuriboMini8() const;
38
39private:
40 al::LiveActor* mCreator = nullptr;
41 Shine* mLinkShine = nullptr;
42 KuriboMini** mKuriboMiniArray = nullptr;
43 s32 mKuriboMiniCount = 0;
44 s32 mItemType = -1;
45 s32 mGeneratedItemCount = 0;
46};
47