#ifndef Z_EN_WONDER_ITEM_H #define Z_EN_WONDER_ITEM_H #include "ultra64.h" #include "global.h" struct EnWonderItem; typedef void (*EnWonderItemUpdateFunc)(struct EnWonderItem*, GlobalContext*); typedef struct EnWonderItem { /* 0x0000 */ Actor actor; /* 0x014C */ EnWonderItemUpdateFunc updateFunc; /* 0x0150 */ f32 unkHeight; // sets height of dummied out mode 4 /* 0x0154 */ s16 wonderMode; /* 0x0156 */ s16 itemDrop; /* 0x0158 */ s16 numTagPoints; /* 0x015A */ s16 dropCount; /* 0x015C */ s16 timer; /* 0x015E */ s16 tagFlags; /* 0x015A */ s16 tagCount; /* 0x0162 */ s16 switchFlag; /* 0x0164 */ char unk_164[4]; /* 0x0168 */ s16 nextTag; /* 0x016A */ s16 timerMod; /* 0x016C */ Vec3f unkPos; // set to initial position by mode bomb soldier, then never used. /* 0x0178 */ char unk_178[8]; /* 0x0180 */ ColliderCylinder collider; /* 0x01CC */ char unk_1CC[4]; } EnWonderItem; // size = 0x01D0 typedef enum { /* 0 */ WONDERITEM_MULTITAG_FREE, /* 1 */ WONDERITEM_TAG_POINT_FREE, /* 2 */ WONDERITEM_PROXIMITY_DROP, /* 3 */ WONDERITEM_INTERACT_SWITCH, /* 4 */ WONDERITEM_UNUSED, /* 5 */ WONDERITEM_MULTITAG_ORDERED, /* 6 */ WONDERITEM_TAG_POINT_ORDERED, /* 7 */ WONDERITEM_PROXIMITY_SWITCH, /* 8 */ WONDERITEM_BOMB_SOLDIER, /* 9 */ WONDERITEM_ROLL_DROP } EnWonderItemMode; typedef enum { /* 0 */ WONDERITEM_DROP_NUTS, /* 1 */ WONDERITEM_DROP_HEART_PIECE, /* 2 */ WONDERITEM_DROP_MAGIC_LARGE, /* 3 */ WONDERITEM_DROP_MAGIC_SMALL, /* 4 */ WONDERITEM_DROP_HEART, /* 5 */ WONDERITEM_DROP_ARROWS_SMALL, /* 6 */ WONDERITEM_DROP_ARROWS_MEDIUM, /* 7 */ WONDERITEM_DROP_ARROWS_LARGE, /* 8 */ WONDERITEM_DROP_GREEN_RUPEE, /* 9 */ WONDERITEM_DROP_BLUE_RUPEE, /* A */ WONDERITEM_DROP_RED_RUPEE, /* B */ WONDERITEM_DROP_FLEXIBLE, /* C */ WONDERITEM_DROP_RANDOM } EnWonderItemDrop; #endif