/***************************************************************************
 *
 * cammodes.h
 *
 ***************************************************************************
 *
 * camera mode functions
 *
 ***************************************************************************/

#ifndef CAMMODES_H_INCLUDED
#define CAMMODES_H_INCLUDED

/*
 * includes
 */

#include "camera.h"
#include "define.h"
#include "ml.h"

/*
 * defines
 */

#define CAM_MODE_PRESS				0
#define CAM_MODE_SIDELINE			1
#define CAM_MODE_SIDELINE2		2
#define CAM_MODE_OVERHEAD			3
#define CAM_MODE_SKY					4
#define CAM_MODE_SKY2					5
#define CAM_MODE_CLASSIC			6
#define CAM_MODE_BEHIND				7
#define CAM_MODE_END					8
#define CAM_MODE_FACE_KB			9
#define CAM_MODE_FACE_SO			10
#define CAM_MODE_FACE_SP			11
#define CAM_MODE_DUNK_AI			12
#define CAM_MODE_REPLAY				13
#define CAM_MODE_SPECIAL			14
#define CAM_MODE_3PT_CONTEST	15

#define CAM_NUMUSERMODES	9


#define CAM_SPECIAL_DRIBBLEI			0
#define CAM_SPECIAL_BACKBOARD			1
#define CAM_SPECIAL_BACKBOARD2		2
#define CAM_SPECIAL_BASKET				3
#define CAM_SPECIAL_BASELINE			4
#define CAM_SPECIAL_BASELINE2			5
#define CAM_SPECIAL_CHEER					6
#define CAM_SPECIAL_OVERHEAD			7
#define CAM_SPECIAL_OVERHEAD2			8
#define CAM_SPECIAL_SIDEHOOP			9
#define CAM_SPECIAL_INYOURFACE		10
#define CAM_SPECIAL_SHOULDER1			11
#define CAM_SPECIAL_SHOULDER2			12
#define CAM_SPECIAL_SHOULDER3			13
#define CAM_SPECIAL_FREETHROW			14
#define CAM_SPECIAL_UPCHEST				15
#define CAM_SPECIAL_DRIBBLEK			16
#define CAM_SPECIAL_INTRO3				17
#define CAM_SPECIAL_INTRO4				18
#define CAM_SPECIAL_CIRCLE				19
#define CAM_SPECIAL_BASTARD				20
#define CAM_SPECIAL_FREETHROW2		21
#define CAM_SPECIAL_FREETHROW_CPU	22
#define CAM_SPECIAL_NEW1					23
#define CAM_SPECIAL_NEW2					24
#define CAM_SPECIAL_NEW3					25
#define CAM_SPECIAL_NEW4					26
#define CAM_SPECIAL_NEW5					27
#define CAM_SPECIAL_NEW6					28
#define CAM_SPECIAL_NEW7					29
#define CAM_SPECIAL_NEW8					30
#define CAM_SPECIAL_NEW9					31

#define CAM_FLGOFFSET		1
#define CAM_FLGLIMIT		2
#define CAM_FLGTARGETBALL	4

#define SPECIAL_STATIC		1	// fixed pos, not relative
#define SPECIAL_XFLIP		2	// flip X if target X negative
#define SPECIAL_NOYFLIP		4	// hard coded Y!

/*
 * typedefs
 */

typedef struct _specialDef
{
	char	*name;
	int	x,y,z,thi,theta;
	int	flags;
} specialDef;

/*
 * structures
 */

/*
 * globals
 */

extern char		*camModeNames[];
extern void		(*camModeFunctions[])(camPos *,camPos *,playert *,int);
extern int		camReplayTargetNo;

extern int		camSpecialTargetNo;
extern int		camSpecialMode;
extern int		camSpecialCut;
extern int		camSpecialCutOnReturn;
extern int		camSpecialFirstTime;
extern specialDef	specialDefs[];

extern int		camActionX,camActionY,camActionAngle,camActionPlayer;
extern int		camActionBasket;

/*
 * function prototypes
 */

extern void		CamInitReplay(void);
extern void		CamProcessReplay(unsigned long p);


#endif
