/***************************************************************************
 *
 * camera.h
 *
 ***************************************************************************
 *
 *
 *
 ***************************************************************************/

#ifndef CAMERA_H_INCLUDED
#define CAMERA_H_INCLUDED

/*
 * includes
 */

/*
 * defines
 */

extern bool switch_ends_flag;
#define SWITCHED_BASKET_Y	(switch_ends_flag?-current_basket_y:current_basket_y)
#define SWITCHED_SCORED_FLAG	(switch_ends_flag?-scored_flag:scored_flag)

/*
 * typedefs
 */

/*
 * structures
 */

typedef struct _camPos
{
	signed long	x,y,z;
	signed long	thi,theta;
} camPos;

typedef struct SCamera
{
	s32
		Yaw,
		Pitch,
		x,
		y,
		z;
} SCamera;


/*
 * globals
 */

extern int	camMoving;
extern int	camMode;
extern int	camZoomUser;
extern camPos	camIdeal,camCurrent,camZoomed;
extern int	camTargetNo;
extern int	camLetterBox;

extern int	inSpecial;


extern s32
	ScoreBoardCam,
	ScoreBoardTime;


/*
 * function prototypes
 */

extern void	init_camera(void);
extern void	move_camera(void);
extern void	CamQueueSnap(camPos *p);
extern void	CamInitGame(void);

extern void CameraSpecialStart(int zoom);
extern void CameraSpecialEnd(void);
extern void CameraSpecialEndQuick(void);

extern void CamStartActionReplay(int multi);
extern void CamStopActionReplay(void);
extern void CamSwitchActionReplay(void);

extern void CamStartSpecial(int mode,int targetNo,int cutFlag,int limit);
extern void CamStopSpecial(void);

extern void CamScoreBoard( s32 start );

void Cam_Save( SCamera *camera );
void Cam_Load( SCamera *camera );
void Cam_Interpolate( SCamera *a, SCamera *b, s32 interp );


#endif
