#ifndef _Z_BG_HEAVY_BLOCK_H_
#define _Z_BG_HEAVY_BLOCK_H_

#include "ultra64.h"
#include "global.h"

struct BgHeavyBlock;

typedef void (*BgHeavyBlockActionFunc)(struct BgHeavyBlock*, GlobalContext*);

typedef struct BgHeavyBlock {
    /* 0x0000 */ DynaPolyActor dyna;
    /* 0x0164 */ Vec3f unk_164;
    /* 0x0170 */ s16 timer;
    /* 0x0172 */ u16 pieceFlags;
    /* 0x0174 */ BgHeavyBlockActionFunc actionFunc;
} BgHeavyBlock; // size = 0x0178

typedef enum {
    /* 0x00 */ HEAVYBLOCK_UNBREAKABLE,
    /* 0x01 */ HEAVYBLOCK_BREAKABLE,
    /* 0x02 */ HEAVYBLOCK_BIG_PIECE,
    /* 0x03 */ HEAVYBLOCK_SMALL_PIECE,
    /* 0x04 */ HEAVYBLOCK_UNBREAKABLE_OUTSIDE_CASTLE
} HeavyBlockType;

extern const ActorInit Bg_Heavy_Block_InitVars;

#endif
