/*
 ******************************************************************************
 *              
 *      ボールのヘッダー
 *	$Id: ac_ball.h,v 1.1 2003/06/06 00:15:11 tong Exp $
 *
 ******************************************************************************
 */
#ifndef AC_BALLh
#define AC_BALLh

#ifdef _LANGUAGE_C_PLUS_PLUS
extern "C" {
#endif

#include "m_play.h"


typedef struct Ball_actor_s	BALL_ACTOR;
/*
 ************************************************
 *						*
 *		クラス設定			*
 *						*
 ************************************************
 */
/*
 *	ボールのアクタークラス
 */

struct Ball_actor_s {
    ACTOR		actor_cl;	/* 基底クラス */

    ClObjPipe		all_pipe;	/* 衝突情報 */
    
    MtxF		mtx_f;

    xyz_t		reverse;	/* ＢＧチェック補正値	*/

    ACTOR		*oc_actor;	/* あたってきたアクター */
    void		(*process)(ACTOR *, GAME *);

#if DEBUG
    int			ball_id;
#endif	/* DEBUG */
    MemPtr		ball_bank;
    float		offset_y;
    float		maxSpd;
    float		accel;
    float		axis_roll_spd;
    int			model_indx;	/*ボールモデルのインデックス*/
    short		timer;		/*汎用タイマー（各プロセスで初期化）*/
    short		wade_timer;	/*スクロールチェックタイマー*/
    s_xyz		ball_angle;	/*ボールの回転角度ＸＹＺ*/
    short		ground_hit_count;
    short		status_flag;
    short		quest_flag;	/*ボールクエスト判定フラグ*/
};
typedef void (*aBALL_Clip)(void);
/*クリップ登録チェック*/
#define aBall_PROC_CHECK	(ZCommonGet(clip.ball_redma))
/*クリップ実行マクロ*/
#define aBall_REDMA()		(ZCommonGet(clip.ball_redma))()
/*--------------------------------------------------------------------------
 *
 *	マクロ
 *
 *-------------------------------------------------------------------------*/
#define aBall_PLY_CHECK_RADIUS	20.0f
/*ステータス管理マクロ*/
#define aBall_Status_Water		0x0001
#define aBall_Status_Hole		0x0002
#define aBall_Status_Scoope		0x0004
#define aBall_Status_Axe		0x0008
#define aBall_Scoope_Flag(Actorx)	bitset(((struct Ball_actor_s *)(Actorx))->status_flag, aBall_Status_Scoope)
#define aBall_Axe_Flag(Actorx)	bitset(((struct Ball_actor_s *)(Actorx))->status_flag, aBall_Status_Axe)
/*
 *
 *	プロファイル
 *
 */
extern Actor_profile	Ball_Profile;

#ifdef _LANGUAGE_C_PLUS_PLUS
} /* extern "C" */
#endif

#endif
/*** ac_ball.h ***/


