/*********************
    daisuke's define
**********************/

/* unit volume */

#define DAI_NO_OBJ	30

/* unit id */

#define DAI_ANIMAL_NULL	0
#define	DAI_DUCK	1
#define	DAI_DUCK2	2
#define	DAI_SEAGULL	3
#define	DAI_SEAGULL2	4
#define	DAI_ORCA	5
#define	DAI_DOLPHIN	6
#define	DAI_FISH	7
#define	DAI_FISH2	8
#define	DAI_FISH5	9
#define	DAI_TROUT	10
#define	DAI_FLYINGFISH	11
#define DAI_HELI	12
#define DAI_PENGUIN	13

/* animation max counter */

#define DAI_DUCK_NUM_MAX  24
#define DAI_DUCK2_NUM_MAX 30
#define DAI_SEAGULL_NUM_MAX 19
#define DAI_SEAGULL2_NUM_MAX 30
#define DAI_ORCA_NUM_MAX 27
#define DAI_DOLPHIN_NUM_MAX 27
#define DAI_FISH_NUM_MAX 30
#define DAI_FISH2_NUM_MAX 30
#define DAI_FISH5_NUM_MAX 30
#define DAI_TROUT_NUM_MAX 30
#define DAI_FLYFISH_NUM_MAX 30
#define DAI_HELI_NUM_MAX 30

/* frames of animation kind(=An) */

/* A0 : fluttering and gliding */
#define DAI_SEAGULL_A0_MAX 54
#define DAI_SEAGULL_A0_FLUTTER_BEGIN 0
#define DAI_SEAGULL_A0_FLUTTER_END 15
#define DAI_SEAGULL_A0_FLUTTER_TO_GLIDE_BEGIN 16
#define DAI_SEAGULL_A0_FLUTTER_TO_GLIDE_END 24
#define DAI_SEAGULL_A0_GLIDE_BEGIN 25
#define DAI_SEAGULL_A0_GLIDE_END 44
#define DAI_SEAGULL_A0_GLIDE_TO_FLUTTER_BEGIN 45
#define DAI_SEAGULL_A0_GLIDE_TO_FLUTTER_END 54

/* A0 : fluttering */
#define DAI_DUCK_A0_MAX 10
#define DAI_HELI_A0_MAX 2

/* A0 : swiming */
/* A1 : jumping */
/* A2 : loop-jumping */
/* A3 : folding body */
/* A4 : standing low */
/* A5 : standing highly */
/* A6 : swinging one fin */
/* A7 : swinging both fins */
#define DAI_DOLPHIN_A0_MAX 16
#define DAI_DOLPHIN_A1_MAX 54
#define DAI_DOLPHIN_A2_MAX 59
#define DAI_DOLPHIN_A3_MAX 16
#define DAI_DOLPHIN_A4_MAX 85
#define DAI_DOLPHIN_A5_MAX 85
#define DAI_DOLPHIN_A6_MAX 85
#define DAI_DOLPHIN_A7_MAX 85


/*************************
	TYPEDEF
**************************/

typedef struct {
    int	        id;
    int 	debug_id;
    int	        class;
    float	px, py, pz, ang,slant,yaw;/*cal pos*/
    float       vx, vy, vz;/*speed vectot*/
    float       fx, fy, fz;/*front vector*/
    float       ux, uy, uz;/*upper vector*/
    float       scale;
    float 	speed;

    int 	move_kind,move_cnt;
    
    float       ax,ay,az;/* a vector */    

    float	mpx,mpy,mpz;
    float	radius;    
    int  	anime_kind, anime_cnt;
    int  	parent;
    float	sx, sy, sz, sang ,sslant,syaw;/*sub position*/
    int         now,next;
    int         target_player;
    int         cnt1,cnt2,cnt3,cnt4,cnt5;
    int	data_type;
	int		flag;
} dai_animal;


/*************************
        VARIABLE
**************************/

extern dai_animal dai_obj[DAI_NO_OBJ];

/*******************************
	FUNCTION
********************************/
extern void dai_animal_init(void);
extern void dai_animal_end(void);
extern void dai_animal_cal(void);
extern Gfx *sot_xlu_draw(Gfx *gp);

