#ifndef Z_DEMO_SYOTEN_H
#define Z_DEMO_SYOTEN_H

#include "global.h"

struct DemoSyoten;

typedef void (*DemoSyotenActionFunc)(struct DemoSyoten*, PlayState*);

#define DEMOSYOTEN_GET_F(thisx) ((thisx)->params & 0xF)
#define DEMOSYOTEN_GET_7E00(thisx) (((thisx)->params & 0x7E00) >> 9)

#define DEMOSYOTEN_7E00_3F 0x3F

enum {
    /* 0 */ DEMOSYOTEN_F_0,
    /* 1 */ DEMOSYOTEN_F_1,
    /* 2 */ DEMOSYOTEN_F_2,
    /* 3 */ DEMOSYOTEN_F_3,
    /* 4 */ DEMOSYOTEN_F_4
};

typedef struct DemoSyoten {
    /* 0x000 */ Actor actor;
    /* 0x144 */ SkeletonInfo unk_144;
    /* 0x174 */ Vec3s unk_174[51];
    /* 0x2A6 */ Vec3s unk_2A6[51];
    /* 0x3D8 */ f32 unk_3D8;
    /* 0x3DC */ Gfx* unk_3DC;
    /* 0x3E0 */ AnimatedMaterial* unk_3E0;
    /* 0x3E4 */ u16 unk_3E4;
    /* 0x3E6 */ s16 unk_3E6;
    /* 0x3E8 */ Path* unk_3E8;
    /* 0x3EC */ s32 unk_3EC;
    /* 0x3F0 */ u16 unk_3F0;
    /* 0x3F2 */ u16 unk_3F2;
    /* 0x3F4 */ DemoSyotenActionFunc actionFunc;
} DemoSyoten; // size = 0x3F8

extern const ActorInit Demo_Syoten_InitVars;

#endif // Z_DEMO_SYOTEN_H
