#ifndef ITEM_H
#define ITEM_H

#include "global.h"
#include "entity.h"
#include "player.h"

void CreateItemEntity(u32, u32, u32);
void sub_08081404(Entity*, u32);

extern void ItemDebug(ItemBehavior*, u32);
extern void ItemSword(ItemBehavior*, u32);
extern void ItemBomb(ItemBehavior*, u32);
extern void ItemBow(ItemBehavior*, u32);
extern void ItemBoomerang(ItemBehavior*, u32);
extern void ItemShield(ItemBehavior*, u32);
extern void ItemLantern(ItemBehavior*, u32);
extern void ItemGustJar(ItemBehavior*, u32);
extern void ItemPacciCane(ItemBehavior*, u32);
extern void ItemMoleMitts(ItemBehavior*, u32);
extern void ItemRocsCape(ItemBehavior*, u32);
extern void ItemPegasusBoots(ItemBehavior*, u32);
extern void ItemOcarina(ItemBehavior*, u32);
extern void ItemTryPickupObject(ItemBehavior*, u32);
extern void ItemJarEmpty(ItemBehavior*, u32);

typedef enum {
    ITEM_NONE,
    ITEM_SMITH_SWORD,
    ITEM_GREEN_SWORD,
    ITEM_RED_SWORD,
    ITEM_BLUE_SWORD,
    ITEM_UNUSED_SWORD,
    ITEM_FOURSWORD,
    ITEM_BOMBS,
    ITEM_REMOTE_BOMBS,
    ITEM_BOW,
    ITEM_LIGHT_ARROW,
    ITEM_BOOMERANG,
    ITEM_MAGIC_BOOMERANG,
    ITEM_SHIELD,
    ITEM_MIRROR_SHIELD,
    ITEM_LANTERN_OFF,
    ITEM_LANTERN_ON,
    ITEM_GUST_JAR,
    ITEM_PACCI_CANE,
    ITEM_MOLE_MITTS,
    ITEM_ROCS_CAPE,
    ITEM_PEGASUS_BOOTS,
    ITEM_FIRE_ROD,
    ITEM_OCARINA,
    ITEM_ORB_GREEN,
    ITEM_ORB_BLUE,
    ITEM_ORB_RED,
    ITEM_TRAP,
    ITEM_BOTTLE1,
    ITEM_BOTTLE2,
    ITEM_BOTTLE3,
    ITEM_BOTTLE4,
    ITEM_BOTTLE_EMPTY,
    ITEM_BOTTLE_BUTTER,
    ITEM_BOTTLE_MILK,
    ITEM_BOTTLE_HALF_MILK,
    ITEM_BOTTLE_RED_POTION,
    ITEM_BOTTLE_BLUE_POTION,
    ITEM_BOTTLE_WATER,
    ITEM_BOTTLE_MINERAL_WATER,
    ITEM_BOTTLE_FAIRY,
    ITEM_BOTTLE_PICOLYTE_RED,
    ITEM_BOTTLE_PICOLYTE_ORANGE,
    ITEM_BOTTLE_PICOLYTE_YELLOW,
    ITEM_BOTTLE_PICOLYTE_GREEN,
    ITEM_BOTTLE_PICOLYTE_BLUE,
    ITEM_BOTTLE_PICOLYTE_WHITE,
    BOTTLE_CHARM_NAYRU,
    BOTTLE_CHARM_FARORE,
    BOTTLE_CHARM_DIN,
    ITEM_32,
    ITEM_33,
    ITEM_QST_SWORD,
    ITEM_QST_BROKEN_SWORD,
    ITEM_QST_DOGFOOD,
    ITEM_QST_LONLON_KEY,
    ITEM_QST_MUSHROOM,
    ITEM_QST_BOOK1,
    ITEM_QST_BOOK2,
    ITEM_QST_BOOK3,
    ITEM_QST_GRAVEYARD_KEY,
    ITEM_QST_TINGLE_TROPHY,
    ITEM_QST_CARLOV_MEDAL,
    ITEM_SHELLS,
    ITEM_EARTH_ELEMENT,
    ITEM_FIRE_ELEMENT,
    ITEM_WATER_ELEMENT,
    ITEM_WIND_ELEMENT,
    ITEM_GRIP_RING,
    ITEM_POWER_BRACELETS,
    ITEM_FLIPPERS,
    ITEM_MAP,
    ITEM_SKILL_SPIN_ATTACK,
    ITEM_SKILL_ROLL_ATTACK,
    ITEM_SKILL_DASH_ATTACK,
    ITEM_SKILL_ROCK_BREAKER,
    ITEM_SKILL_SWORD_BEAM,
    ITEM_SKILL_GREAT_SPIN,
    ITEM_SKILL_DOWN_THRUST,
    ITEM_SKILL_PERIL_BEAM,
    ITEM_DUNGEON_MAP,
    ITEM_COMPASS,
    ITEM_BIG_KEY,
    ITEM_SMALL_KEY,
    ITEM_RUPEE1,
    ITEM_RUPEE5,
    ITEM_RUPEE20,
    ITEM_RUPEE50,
    ITEM_RUPEE100,
    ITEM_RUPEE200,
    ITEM_5A,
    ITEM_JABBERNUT,
    ITEM_KINSTONE,
    ITEM_BOMBS5,
    ITEM_ARROWS5,
    ITEM_HEART,
    ITEM_FAIRY,
    ITEM_SHELLS30,
    ITEM_HEART_CONTAINER,
    ITEM_HEART_PIECE,
    ITEM_WALLET,
    ITEM_BOMBBAG,
    ITEM_LARGE_QUIVER,
    ITEM_KINSTONE_BAG,
    ITEM_BRIOCHE,
    ITEM_CROISSANT,
    ITEM_PIE,
    ITEM_CAKE,
    ITEM_BOMBS10,
    ITEM_BOMBS30,
    ITEM_ARROWS10,
    ITEM_ARROWS30,
    ITEM_ARROW_BUTTERFLY,
    ITEM_DIG_BUTTERFLY,
    ITEM_SWIM_BUTTERFLY,
    ITEM_SKILL_FAST_SPIN,
    ITEM_SKILL_FAST_SPLIT,
    ITEM_SKILL_LONG_SPIN,

    // these are not actually item ids but special values used by item drops for example
    ITEM_KINSTONE_GREEN = 0xfc,
    ITEM_KINSTONE_BLUE,
    ITEM_KINSTONE_RED,
    ITEM_ENEMY_BEETLE
} Item;

#endif
