
/********************
	sea.h
 ********************/

#ifndef __sea_h__
#define __sea_h__


/*******************************************************************************
	DEFINE
*******************************************************************************/


/*******************************************************************************
	TYPEDEF
*******************************************************************************/
typedef struct {
	int		center_px ;
	int		center_pz ;
	float		world_center_px ;
	float		world_center_pz ;
	float		world_size2 ;
	float		difference_x ;
	float		difference_z ;
} Sea ;

typedef struct {
	float		px ;		/* position */
	float		pz ;
	float		hx ;		/* H vector */	
	float		hz ;
	float		vx ;		/* V vector */
	float		vz ;
	float		amp ;		/* amplitude */
	int		hn ;		/* H size */
	int		vn ;		/* V size */
	int		ntime ;		/* time + ntime * vn */
	int		time ;		/* time += time_a */
	int		time_a ;
	int		pieces ;	/* even number */
	int		piece_1 ;	/* display piece */
	int		piece_2 ;
	ushort		display_fg ;
} Bigwave ;


/*******************************************************************************
	VARIABLE
*******************************************************************************/
extern Sea		sea[] ;
extern int		sea_offset ;

extern float		world_xmax, world_xmin, world_xsize ;
extern float		world_zmax, world_zmin, world_zsize ;

extern int		sea_id[] ;

extern int		sea_disp_blocks ;
extern int		sea_disp_size ;
extern int		sea_disp_size_around ;
extern int		sea_disp_points ;

extern float		cloud_real_offset ;
extern int		cloud_Xscale ;
extern int		cloud_Zscale ;
extern int		cloud_Xtrans ;
extern int		cloud_Ztrans ;
extern float		cloud_XFscale, bottom_ZFscale ;

extern float		bottom_real_offset ;
extern int		bottom_Xscale ;
extern int		bottom_Zscale ;
extern int		bottom_Xtrans ;
extern int		bottom_Ztrans ;
extern float		bottom_XFscale, bottom_ZFscale ;


/*******************************************************************************
	FUNCTION
*******************************************************************************/
extern float		get_sea_high( float px, float pz ) ;
extern void		plus_sea( Object *obj ) ;
extern void		plus_sea_b( Object *obj, float offset ) ;
extern void		plus_sea_b_flat( Object *obj, float offset ) ;
extern void		push_sea( float fpx, float fpz, int fdp ) ;
extern void		push_sea_trig( float fpx, float fpz, int fdp, int id ) ;
extern void		push_sea_b( float fpx, float fpz, int fdp ) ;
extern void		init_sea( int offset, int high ) ;
extern void		move_sea( void ) ;
extern void		waving_sea( float px, float pz, int amp, int frq, int a ) ;
extern void		set_bottom_vertex( int number, Vtx *vp ) ;
extern void		set_cloud_vertex( int number, Vtx *vp ) ;
extern void		waving_big( Bigwave *bw ) ;
extern void		push_sea_jump( float high, float px, float pz, float vx, float vz, int vn ) ;


#endif
