summaryrefslogtreecommitdiff
path: root/include/toBeSorted/special_item_drop_mgr.h
blob: 7a7d43b4a19b97de1115eceb145e2674b36ac481 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#ifndef SPECIAL_ITEM_DROP_MGR_H
#define SPECIAL_ITEM_DROP_MGR_H

#include "common.h"
#include "m/m_angle.h"
#include "m/m_vec.h"

enum SpecialItemDropTable {
    SPECIAL_ITEM_0 = 0,
    SPECIAL_ITEM_1,
    SPECIAL_ITEM_2,
    SPECIAL_ITEM_3,
    SPECIAL_ITEM_4,
    SPECIAL_ITEM_5,
    SPECIAL_ITEM_6,
    SPECIAL_ITEM_7,
    SPECIAL_ITEM_8,
    SPECIAL_ITEM_9,
    SPECIAL_ITEM_10,
    SPECIAL_ITEM_10BOMBS,
    SPECIAL_ITEM_ARROWS,
    SPECIAL_ITEM_SEEDS,
    // ...
};

class SpecialItemDropMgr {
private:
    static SpecialItemDropMgr *sInstance;

public:
    static SpecialItemDropMgr *GetInstance() {
        return sInstance;
    }

    SpecialItemDropMgr();
    virtual ~SpecialItemDropMgr() {}

    static SpecialItemDropMgr *create();

    int fn_800C7BB0(int specialItemId);
    bool shouldTryExtraHearts(int specialItemId);
    bool shouldTryExtraRupees(int specialItemId);
    int giveSpecialDropItem(int specialItemId, int roomid, mVec3_c *pos, int subtype, mAng rot, s32 unused);
    bool spawnSpecialDropItem(int specialItemId, int roomid, mVec3_c *pos, int subtype, mAng rot);
};

#endif