#ifndef GUARD_CONFETTI_UTIL_H
#define GUARD_CONFETTI_UTIL_H

struct ConfettiUtil
{
    struct OamData oam;
    s16 x;
    s16 y;
    s16 xDelta;
    s16 yDelta;
    u16 tileTag;
    u16 palTag;
    u16 tileNum;
    u8 id;
    u8 filler;
    u8 animNum;
    u8 active:1;
    u8 allowUpdates:1;
    u8 dummied:1;
    u8 priority:2;
    s16 data[8];
    void (*callback)(struct ConfettiUtil *);
};

bool32 ConfettiUtil_Init(u8 count);
bool32 ConfettiUtil_Free(void);
bool32 ConfettiUtil_Update(void);
u8 ConfettiUtil_SetCallback(u8 id, void (*func)(struct ConfettiUtil *));
u8 ConfettiUtil_SetData(u8 id, u8 dataArrayId, s16 dataValue);
u8 ConfettiUtil_AddNew(const struct OamData *oam, u16 tileTag, u16 palTag, s16 x, s16 y, u8 animNum, u8 priority);
u8 ConfettiUtil_Remove(u8 id);

#endif // GUARD_CONFETTI_UTIL_H