#ifndef Z_ARMS_HOOK_H
#define Z_ARMS_HOOK_H

#include "ultra64.h"
#include "actor.h"
#include "player.h"

struct ArmsHook;

typedef void (*ArmsHookActionFunc)(struct ArmsHook*, struct PlayState*);

typedef struct ArmsHook {
    /* 0x0000 */ Actor actor;
    /* 0x014C */ ColliderQuad collider;
    /* 0x01CC */ WeaponInfo weaponInfo;
    /* 0x01E8 */ Vec3f unk_1E8;
    /* 0x01F4 */ Vec3f unk_1F4;
    /* 0x0200 */ Actor* attachedActor;
    /* 0x0204 */ Vec3f attachPointOffset; // Distance from the hookshot attach point to world pos of `attachedActor`
    /* 0x0210 */ s16 timer;
    /* 0x0214 */ ArmsHookActionFunc actionFunc;
} ArmsHook; // size = 0x0218

#endif
