// **************************************************************************
// **************************************************************************
// **************************************************************************
// **                                                                      **
// ** STATES.H                                                      MODULE **
// **                                                                      **
// ** Functions for the shell's state machine.                             **
// **                                                                      **
// ** Last modified : 25 Feb 1998 by John Brandwood                        **
// **                                                                      **
// **************************************************************************
// **************************************************************************
// **************************************************************************

#ifndef __STATES_h
#define __STATES_h

#ifndef __LFPTYPES_h
 #include "lfptypes.h"
#endif

/*
#ifndef __MENU_h
 #include "menu.h"
#endif
*/

//
// GLOBAL DATA STRUCTURES AND DEFINITIONS
//

#define LOGIC_HZ            30

#define LOGIC_ABORT         0
#define LOGIC_END           1
#define LOGIC_PADDING       2

#define	STATE_NULL           0			//  0 STATE_NULL
#define	STATE_EXIT_SHELL     1			//  1 STATE_EXIT_SHELL
#define	STATE_STOP_SHELL     2			//  2 STATE_STOP_SHELL
#define	STATE_ENDOFQTR       3			//  3 STATE_ENDOFQTR
#define	STATE_HALFTIME       4			//  4 STATE_HALFTIME
#define	STATE_FULLTIME       5			//  5 STATE_FULLTIME
#define	STATE_SSIMULATE      6			//  6 STATE_SSIMULATE
#define	STATE_PSIMULATE      7			//  7 STATE_PSIMULATE
#define	STATE_A              8			//  8 STATE_A
#define	STATE_B              9			//  9 STATE_B  - preseason teams
#define	STATE_C             10			// 10 STATE_C  - controllers
#define	STATE_D             11			// 11 STATE_D  - pregame show
#define	STATE_E             12			// 12 STATE_E  - substitute
#define	STATE_F             13			// 13 STATE_F  - season menu
#define	STATE_G             14			// 14 STATE_G  - new season teams
#define	STATE_G1            15			// 15 STATE_G1 - new playoff teams
#define	STATE_H             16			// 16 STATE_H  - continue season
#define	STATE_H1            17			// 17 STATE_H1 - continue playoff
#define	STATE_H2            18			// 18 STATE_H2 - end of season
#define	STATE_I             19			// 19 STATE_I  - statistics menu
#define	STATE_I1            20			// 20 STATE_I1 - team standings
#define	STATE_I2            21			// 21 STATE_I2 - team stats
#define	STATE_I3            22			// 22 STATE_I3 - plyr stats
#define	STATE_I3a           23			// 23 STATE_I3 - plyr stats (starter)
#define	STATE_I3b           24			// 24 STATE_I3 - plyr stats (trading)
#define	STATE_I4            25			// 25 STATE_I4 - league leaders
#define	STATE_I5            26			// 26 STATE_I5 - team stats (in game)
#define	STATE_I6            27			// 27 STATE_I6 - plyr stats (in game)
#define	STATE_I6a           28			// 28 STATE_I6 - plyr stats (fullgam)	IS THIS USED??? - in pause screen!?!
#define	STATE_I6b           29			// 29 STATE_I6 - plyr stats (fullsim)
#define	STATE_J             30			// 30 STATE_J  - playoff menu
#define	STATE_K             31			// 31 STATE_K  - playoff tree
#define	STATE_L0            32			// 32 STATE_L0 - in-game options
#define	STATE_L1            33			// 33 STATE_L1 - pre-game options
#define	STATE_L2            34			// 34 STATE_L2 - ssn-game options
#define	STATE_L3            35			// 35 STATE_L3 - ply-game options
#define	STATE_L4            36			// 36 STATE_L4 - new-ssn options
#define	STATE_L5            37			// 37 STATE_L5 - new-ply options
#define	STATE_L6            38			// 38 STATE_L6 - preferences
#define	STATE_L7            39			// 39 STATE_L7 - in-game preferences
#define	STATE_P             40			// 40 STATE_P  - rosters menu
#define	STATE_Q             41			// 41 STATE_Q  - view starters
#define	STATE_Q1            42			// 42 STATE_Q1 - edit starters
#define	STATE_R             43			// 43 STATE_R  - trades
#define	STATE_S             44			// 44 STATE_S  - edit plyr 1 of 3
#define	STATE_S1            45			// 45 STATE_S1 - edit plyr 1 of 3
#define	STATE_S2            46			// 46 STATE_S2 - edit plyr 1 of 3
#define	PAUSE_E             47			// 47 PAUSE_E        - substitute
#define	PAUSE_CONTROLS      48			// 48 PAUSE_CONTROLS - controllers
#define	PAUSE_ENDOFQTR      49			// 49 PAUSE_ENDOFQTR
#define	PAUSE_HALFTIME      50			// 50 PAUSE_HALFTIME
#define	PAUSE_FULLTIME      51			// 51 PAUSE_FULLTIME
// new for 1999
#define	STATE_T             52			// 52 STATE_T  - NBA Season Play menu
#define	STATE_3PT_START     53			// 53 STATE_3pT  - Player Select for 3 point contest
#define	STATE_QP1			54			// 54 - QuickPlay Team Select
#define	STATE_QP2			55			// 55 - Quick Play Controller Select
#define	STATE_3PT_ROUNDS    56			// 56 STATE_3pT  - Handles Rounds 1-3 for 3 point contest
#define	STATE_3PT_CONTROL   57			// 57 STATE_3pT  - Controller Select for 3 point contest
#define	STATE_3PT_SELECT	58			// 58 STATE_3pT  - Player Select for 3 point contest
#define	STATE_DRAFT			59			// 59 STATE_DRAFT - Preseason Draft of all players
#define	STATE_DRAFT_TEAM_ORDER 60		// 60 Preseason Draft - Reorder teams
#define	STATE_Z				61			// 61 Post Draft - Menu
#define	STATE_DRAFT_REVIEW	62			// 62 Post Draft - Review Draft
#define	STATE_DRAFT_STARTERS 63			// 63 Post Draft - View Starters
#define	STATE_DRAFT_TRADES	64			// 64 Post Draft - trading
#define	STATE_DRAFT_EDIT	65			// 65 Post Draft - Edit/Create Player
#define	STATE_DRAFT_EDIT1	66			// 66 Post Draft - Edit/Create Player - Step 1
#define	STATE_DRAFT_EDIT2	67			// 67 Post Draft - Edit/Create Player- Step 2
#define	STATE_ARCADE_MODE	68			// 68 Arcade Mode
#define	STATE_PRACTICE_MODE	69			// 69 Practice Mode
#define	STATE_PRACTICE_CONT	70			// 70 Practice Controllers
#define	STATE_PRACTICE_SUB	71			// 71 Practice Substitution

#define	STATE_TEAM_SCHEDULE	72			// 72	Season Schedules
#define	STATE_DATE_SCHEDULE	73			// 73	Season Schedules
#define	STATE_SPECIAL_MENU	74			// 74 - from pause mode

#define STATE_TEAM_SETUP	75			// 75 Team Sets from PAUSE
#define STATE_OFFENSIVE_SETS 76			// 76 Offensive Sets from PAUSE
#define STATE_PAUSE_MENU	77			// 77 Separate PAUSE menu to isolate player gfx reloading
#define STATE_RP_POSTGAME	78			// 78 Rookie Role Play Mode after game screen (menu)
#define STATE_RP_ABILITIES	79			// 79 Rookie Role Play Mode after game screen (single player)
#define STATE_MEMPAK_CONFIG	80			// 80 MemPAk configuration (on power up)
#define STATE_CREATE_ROOKIE	81			// 81 Create Rookie (Skip ScreenS0)
#define STATE_POST_GAME_MENU 82			// 82 Postgame Menu
#define STATE_SHELL_ENTRY	83			// 83 Shell Entry
#define STATE_CREATE_USER	84			// 84 [Create] User Team
#define	STATE_DRAFT_EDIT_STARTERS 85	// 85 Post Draft - Edit Starters
#define STATE_VIEW_CUSTOM_USER	86		// 86 View Custom User Team Stats
#define STATE_CREDITS		87			// 87 Credit
#define STATE_CREATE_PLAYER_MENU 88		// 87 Create Player Menu
#define STATE_CREATE_NORMAL_PLAYER 89	// 89 Create Normal Player (Skip ScreenS0)
#define	STATE_SPECIAL_MENU1	90			// 90 in shell



//#define STATE_CP_MENU		STATE_CREATE_PLAYER_MENU 

#define	PAUSE_TEAMSTAT      STATE_I5
#define	PAUSE_PLYRSTAT      STATE_I6
#define	PAUSE_PLYRSTAT2     STATE_I6a
#define	PAUSE_OPTIONS       STATE_L0
#define	PAUSE_PREFERENCES   STATE_L7
#define STATE_MAIN_MENU		STATE_A
#define STATE_POST_GAME_TEAM_STATS		STATE_FULLTIME	// final team stats
#define STATE_POST_GAME_PLAYER_STATS	STATE_I6b	// final player stats

#define PAUSE_REV_STATE		STATE_PAUSE_MENU	//	STATE_NULL // where backup/forward from any PAUSE sub menu goes to


//
// DEFINITIONS
//

#define	RGB_SOLID_YEL       DP_RGB(55), DP_RGB(42), DP_RGB(26), 0xFF
#define	RGB_SOLID_GRN       DP_RGB( 8), DP_RGB(36), DP_RGB( 8), 0xFF
#define	RGB_SOLID_LT_GREEN  DP_RGB( 8), DP_RGB(24), DP_RGB( 8), 0xFF

#define	RGB_SOLID_BNC       DP_RGB(48), DP_RGB(32), DP_RGB(23), 0xFF

#define	RGB_SOLID_BLK       DP_RGB(0),  DP_RGB( 0), DP_RGB( 0), 0xFF
#define	RGB_SOLID_RED       DP_RGB(23), DP_RGB( 4), DP_RGB( 4), 0xFF
#define	RGB_SOLID_BLU       DP_RGB(10), DP_RGB(10), DP_RGB(30), 0xFF
#define	RGB_SOLID_CYN       DP_RGB(18), DP_RGB(53), DP_RGB(56), 0xFF
#define	RGB_SOLID_LT_GRAY   DP_RGB(30), DP_RGB(30), DP_RGB(30), 0xFF


//  NOTE - SOLID(bright) white tends to oover-saturated the TV on vertical transitions to 
// dark colors  - so grey all whites toned down (i.e. gray)
#define	RGB_SOLID_WHT       DP_RGB(50), DP_RGB(50), DP_RGB(50), 0xFF
//#define	RGB_SOLID_FULL_WHT  DP_RGB(99), DP_RGB(99), DP_RGB(99), 0xFF	// don't use this - too bright - oversaturates TV
#define	RGB_SOLID_MAIN_WHT  DP_RGB(75), DP_RGB(75), DP_RGB(75), 0xFF	
#define	RGB_MENU_LINE_COLOR DP_RGB(81), DP_RGB(81), DP_RGB(81), 0xFF	 // don't use this - too bright - oversaturates TV
//#define	RGB_MENU_LINE_COLOR DP_RGB(68), DP_RGB(68), DP_RGB(68), 0xFF
#define	RGB_SOLID_WHITE	 RGB_SOLID_WHT 
#define	RGB_SOLID_GREEN	 RGB_SOLID_GRN 

#define	RGB_TRANS_PUS       DP_RGB(28), DP_RGB(24), DP_RGB( 5), 0x80
#define	RGB_TRANS_PUS2      DP_RGB(28), DP_RGB(24), DP_RGB( 5), 0xFF
#define	RGB_TRANS_MENU      DP_RGB(30), DP_RGB(40), DP_RGB(55), 0x55

//#define	RGB_TRANS_LOG       DP_RGB(60), DP_RGB(60), DP_RGB(60), 0xB0
//#define	RGB_TRANS_LOG       DP_RGB(50), DP_RGB(50), DP_RGB(50), 0xC0
//#define	RGB_TRANS_LOG       DP_RGB(50), DP_RGB(50), DP_RGB(50), 0xD0

#define	RGB_TRANS_LOG       DP_RGB(50), DP_RGB(50), DP_RGB(50), 0xD0

#define	RGB_TRANS_WHT       DP_RGB(60), DP_RGB(60), DP_RGB(60), 0x80
//#define	RGB_TRANS_BLU       DP_RGB(25), DP_RGB(30), DP_RGB(50), 0x55
#define	RGB_TRANS_GRY       DP_RGB(70), DP_RGB(70), DP_RGB(70), 0x55
#define	RGB_TRANS_DKGRY     DP_RGB(40), DP_RGB(40), DP_RGB(40), 0x80
#define	RGB_TRANS_VDKGRY    DP_RGB(30), DP_RGB(30), DP_RGB(30), 0x80

//#define	RGB_TRANS_RED       DP_RGB(25), DP_RGB( 6), DP_RGB( 6), 0xA0
//#define	RGB_TRANS_RED       0,0,150, 0xA0	// red--> blue 8/13/99
#define	RGB_TRANS_RED       15,15,130, 0x70	// red--> blue 8/13/99
#define	RGB_TRANS_BLUE       15,15,130, 0x70	// red--> blue 8/13/99

//#define	RGB_TRANS_LTRED     DP_RGB(55), DP_RGB(21), DP_RGB(21), 0x80
#define	RGB_TRANS_LTRED     DP_RGB(72), DP_RGB( 4), DP_RGB(4), 0x80
//#define	RGB_TRANS_YEL       DP_RGB(59), DP_RGB(47), DP_RGB(30), 0xC0
//#define	RGB_TRANS_YEL       DP_RGB(70), DP_RGB(67), DP_RGB(20), 0xC0	banana popsicle
//#define	RGB_TRANS_YEL       DP_RGB(97), DP_RGB(91), DP_RGB( 4), 0x80
//#define	RGB_TRANS_YEL       DP_RGB(97), DP_RGB(91), DP_RGB( 4), 0x70		// 3/11/99

//#define	RGB_TRANS_YEL       184,55,0, 0x70		// 8/13/99 - actualy it's orange
#define	RGB_TRANS_YEL       184,80,0, 0x70		// 8/13/99 - actualy it's orange
#define	RGB_TRANS_ORANGE	184,80,0, 0x70

// testing color for real time modification
extern int	TYR,TYG,TYB,TYA;
extern int	TPR,TPG,TPB,TPA;
extern int	TRR,TRG,TRB,TRA;

#define RGB_TY	TYR,TYG,TYB,TYA
#define RGB_TP	TPR,TPG,TPB,TPA
#define RGB_TEST_RED	TRR,TRG,TRB,TRA


//#define	RGB_TRANS_PURPLE    DP_RGB(41), DP_RGB(10), DP_RGB(37), 0xC0
//#define	RGB_TRANS_PURPLE    DP_RGB(60), DP_RGB( 4), DP_RGB(60), 0x80
//#define	RGB_TRANS_PURPLE    0x60,0x00,0x9A,0x70			// Jeff's favorite color 3/22/99
#define	RGB_TRANS_PURPLE    RGB_TRANS_YEL			// orange - 8/13/99

#define	RGB_TRANS_PURPLE2   0xa0,0x00,0xc0,0x70			// Jeff's second favorite color 3/26/99 - sub screen only
#define	RGB_TRANS_DKBLUE	0x20,0x20,0x50, 0xC0

#define	RGB_TRANS_NUL       0,0,0,0

#define MENUBG_TEST		RGB_TRANS_RED
//#define MENUBG_TEST  dbr,dbg,dbb,dba

//  transparent palettes used in stats screens
#define STAT_PAL1	RGB_TRANS_BLUE			// top (team logo)
#define STAT_PAL2	RGB_TRANS_ORANGE		// middle (player photo)
#define STAT_PAL3	RGB_TRANS_BLUE			// bottom (if needed)

//  transparent palettes used in Team Select screens (season,playoff, practice only select 1 team)
#define TS_PAL1	RGB_TRANS_BLUE
#define TS_PAL2	RGB_TRANS_ORANGE
#define TS_PAL3	RGB_TRANS_BLUE

#define BOTTOM_COLORS	{0,  MENU_BOTTOM_LINE_Ya,512, 240-MENU_BOTTOM_LINE_Ya, RGB_TRANS_ORANGE,NO_CORNERS},


//#define OVAL_CURSOR_COLOR	DP_RGB(53), DP_RGB(7), DP_RGB(7), 0xFF
#define BLUE_OVAL_CURSOR_COLOR		DP_RGB(22), DP_RGB(22), DP_RGB(67), 0xFF
#define ORANGE_OVAL_CURSOR_COLOR	DP_RGB(64), DP_RGB(23), DP_RGB(9), 0xFF



/*****
#define SFX_BACKWARD	0
#define SFX_ERROR	1
#define SFX_FORWARD	2
#define SFX_UPDOWN	3
****/

#define	SFX_SHELL_STRT      SFX_FORWARD		//SFX_ID_OK
#define	SFX_SHELL_BTNA      SFX_FORWARD		//SFX_ID_OK
#define	SFX_ID_OK		     SFX_FORWARD

#define	SFX_SHELL_BTNB      SFX_BACKWARD	//SFX_ID_BACK
#define	SFX_ID_BACK			SFX_BACKWARD	//

#define	SFX_SHELL_MOVE      SFX_UPDOWN		//SFX_ID_SCROLL

#define	SFX_SHELL_NOMV      SFX_ERROR		//SFX_ID_CANTMOVE
#define	SFX_ID_CANTMOVE		SFX_ERROR

#define	SFX_SHELL_CHNG      SFX_UPDOWN				//SFX_ID_CHANGE
#define	SFX_ID_SCROLL		SFX_UPDOWN		

// parameter si__type in function DrawPlyrCard
#define	CARD_L              0x00
#define	CARD_R              0x01
#define	CARD_BLOOD			0x02	
#define	CARD_BLUE			0x04

#define	NAMEFLG_PNUM        1
#define	NAMEFLG_CNAM        2
#define	NAMEFLG_LWRC        4
#define	NAMEFLG_SNAM        8
#define	NAMEFLG_UPRS        16

#define	JOYBITS_TO_DIRN(x)  (asb__gJoyBitsToDirn[(((x) >> 11) & 15)])



#define	MENU_BAR_HEIGHT			22		// actually a lack of a bar





typedef	struct SHELL_STATUS_S			// Initial values ...
	{
	UD                  ud___GMask;		// 0,

	SB                  sb___AMain;		// 0,
	SB                  sb___BHome;		// TEAM_SEA,
	SB                  sb___BAway;		// TEAM_LAL,
	SB                  sb___BView;		// 0,

	SB                  sb___BOptn;		// 5,
	SB                  sb___FMain;		// 0,
	SB                  sb___GTeam;		// TEAM_BOS,
	SB                  sb___IMain;		// 0,

	SB                  sb___IDivn;		// DIV_ATLANTIC,
	SB                  sb___ITeam;		// TEAM_ATL,
	SB                  sb___ILead;		// 0,
	SB                  sb___JMain;		// 0,

	SB                  sb___PMain;		// 0,
	SB                  sb___RMode;		// 0,
	SB                  asb__RTeam [2];	// TEAM_ATL,TEAM_BOS

	SB                  sb___TMain;		// 0,
	SB                  sb___ZMain;		// 0,
	SB                  sb___PauseMain;	// 0,
	SB                  sb___PausePracticeMain;	// 0,

	SB                  sb___PauseArcadeMain;	// 0,
	SB                  sb___CPMain;	// 0,
	SB					pad0;
	SB					pad1;
	} SHELL_STATUS_T;

typedef	struct SprCtl_S
	{
	SI                  si___CurFrame;
	SI                  si___MinFrame;
	SI                  si___MaxFrame;
	SI                  si___HltFrame;
	SI                  si___ChgFrame;

	SI                  si___CurBase;
	SI                  si___CurDelta;
	SI                  si___NxtBase;
	SI                  si___NxtDelta;
	SI                  si___OldBase;

	SI                  si___CurDelay;
	SI                  si___MaxDelay;
	} SprCtl_T;

//
// GLOBAL VARIABLES
//

extern	SHELL_STATUS_T      cl___gStatus;
extern	SprCtl_T            acl__gSprCtl [2];

extern	int                 si___gOldState;
extern	int                 si___gCurState;
extern	int                 si___gNxtState;

extern	SB                  sb___gECourt;

extern	int                 si___gFlash;
extern	SB                  sb___gSubState;
extern	SB                  sb___gSubShown;
extern	SB                  fl___gReverse;

extern	SB                  sb___gStartNew;

extern	int                 (*(apfn_gStateInit[]))(int);
extern	int                 (*(apfn_gStateExit[]))(int);
extern	int                 (*(apfn_gStateProc[]))(int);
extern	Gfx *               (*(apfn_gStateDraw[]))(int, Gfx *);

extern	SB                  asb__gStateNextFwd [];
extern	SB                  asb__gStateNextRev [];
extern	SB                  asb__gStateMusic [];
extern	char *              apcz_gStateHelpMsg [];

extern	SB                  asb__gJoyBitsToDirn [];

extern	UB                  aub__gPrevDivision [];
extern	UB                  aub__gNextDivision [];

extern	char                ach__gNumeric [];
extern	char *              apcz_gDivision [];
extern	char *              apcz_gConference [];
extern	char *              apcz_gScheduleDay [];
extern	char *              apcz_gScheduleDate [];
extern	char *              apcz_gScheduleMonth [];
extern	char *              apcz_gStrPosCourt [];
extern	char *              apcz_gStrPosNBA [];

extern	char *				positionNames[];	// all possibilites (11?)


extern	int			CUFromState;	// makes returning form CU easier
extern	int			CUControlPad;	// 0-3

//
// GLOBAL FUNCTION PROTOTYPES
//

extern	int                 InitShellState          (
								int                 si___State);
extern	int                 ProcShellState          (
								int                 si___State);
extern	int                 ExitShellState          (
								int                 si___State);

extern	Gfx *               DrawShellState          (
								int                 si___State,
								Gfx *               gp);

extern	char *              DrawTxtStr              (
								TXTCEL_T *          pcl__C,
								char *              pcz__S,
								SI                  si___X,
								SI                  si___Y);

extern	void                InitFontBtn             (void);
extern	Gfx *               DrawFontBtn             (Gfx *);

extern	char *              DrawPlyrName            (TXTCEL_T *, PlyrRomData_T *, SI, SI, SI, SI);

extern	Gfx *               DrawHelpTeaser          (Gfx *, int);

extern	void                InitializeLogos         (int, int);
extern	SI                  AnimateLogo             (SprCtl_T *);
extern	SI                  LoadUsedTeamLogos       (void);

extern	Gfx *               DrawPlyrCard            (Gfx *, PlyrRamData_T *, int, int, int);


extern 	Gfx *PrintBigTeamName(Gfx *gp,TeamRomData_T *pcl__TeamRom, int selected, int homeaway);		//used by team stats, roster, plyr stats
extern	Gfx *DrawPlayerAndTeamInfo(Gfx *gp,PlyrRamData_T *pcl__PlyrRam, int homeaway);
extern void CondenseString(char *tmp,int pixelwidth);	// if name too long, put in dots...



//#define NameToUpper(string)	StrToUprCase(string)
//#define NameToUpper(string)	StrToUprName(string)	// checks for McWilliams (little c) and others
#define LastNameToUpper(string)	StrToUprName(string)	// checks for McWilliams (little c) and others



//   3    P O I N T    C O N T E S T     I N F O

#define MAX_3PT_PLAYERS		8
#define MAX_3PT_ROUNDS		4	// round = 0 means haven't started yet 1,2,3 are active , 4 menas over


enum threepointcontrolmodes { 
	CPU_3PT_PLAYER,
	HUMAN_3PT_PLAYER,
};




#define DONT_DISPLAY_3PT_SCORE		-2	//in ThreePointScores[r][p]	 - shows blank
#define NO_3PT_SCORE_YET			-1	//in ThreePointScores[r][p] - shows "--"

extern int Cur3PtPlayerIndex;
extern int Cur3PtRoundNum;			// 0,  1-2-3, 4 means it's over

extern SW ThreePointScores[MAX_3PT_ROUNDS][MAX_3PT_PLAYERS];
extern SW TieBreakerThreePointScores[MAX_3PT_ROUNDS][MAX_3PT_PLAYERS];
extern int Human3PtMatchPlayers[MAX_3PT_PLAYERS];
extern int CPU3PtMatchPlayers[MAX_3PT_PLAYERS];
int ThreePointTieBreaker;		// TRUE if in tie break mode


extern UW ControlType3Pt[MAX_3PT_PLAYERS];	// = { 0,0,0,0,  0,0,0,0};	// all CPUs
extern UW Sorted3PtPlayers[MAX_3PT_PLAYERS];

extern UW Default3PtPlayers[MAX_3PT_PLAYERS];
extern UW Current3PtPlayers[MAX_3PT_PLAYERS];

//extern int Human3PtMatchPlayers[2];		// range = 0- 7 (index of teamroster)
extern int Human3PtMatchControllers[2];	// range = 0-MAX_JPADS or -1 if CPU
extern int Human3PtMatchScores[2];		// filled by arcade game

extern int Find3PtHumans(void);	// fills Human3PtMatchPlayers with trueindex (return 0 if all humans done)
extern void	CheckForNext3PtRound(void);


void InitDefault3PtPlayers(void);
void SetupNew3PtPlayer(int index, int playerindex);

Gfx * DrawRoundNumber(Gfx *gp, int x, int y);	
void Free3PtMatchTeam(void);

extern  int		gSelectedPlayerIndex;	// for swapping during 3pt contest
void Set3PtStarters(void);
void Restart3PtContestAfterMatch(void);

int MoveRomAbilitiesToEditAbilities(PlyrRomData_T * pcl__PlyrRom);	// returns average of ratings
int MoveEditAbilitiesToRomAbilities(PlyrRomData_T * pcl__PlyrRom);	// returns average of ratings
void UpdateCustomPlayerRatings(PlyrRomData_T *rom);
int FigureOverallRating(PlyrRomData_T *  pcl__Plyr);


global	Gfx * DrawOvalCursor(Gfx * gp, int centerx, int centery, int w);
global	Gfx * DrawOvalCursorHilite(Gfx * gp, int centerx, int centery, int w);




struct _rookiebars {
	SW pregamebar;
	SW postgamebar;
	SW improvement;
};

extern struct _rookiebars RookieBarDisplay[CUSTOM_PLYRS][NUM_ABILITIES];


enum draftsortenums {
	DRAFT_SORT_OVERALL,
	DRAFT_SORT_FG,
	DRAFT_SORT_3P,
	DRAFT_SORT_FT,

	DRAFT_SORT_POST,
	DRAFT_SORT_REB,
	DRAFT_SORT_BLK,
	DRAFT_SORT_STL,

	DRAFT_SORT_PASSING,
	DRAFT_SORT_ALPHABETICALLY,

	MAX_DRAFT_SORT_MODES
};



//
// End Of __STATES_h
//

#endif



// **************************************************************************
// **************************************************************************
// **************************************************************************
//	END OF STATES.H
// **************************************************************************
// **************************************************************************
// **************************************************************************

