#ifndef _RACESTRT_H_
 
#define _RACESTRT_H_
 
 
 
#include "brender/br_types.h"
 
#include "dr_types.h"
 
 
 
extern int gGrid_number_colour[4];
 
extern int gJust_bought_part;
 
extern tU32 gLast_host_query;
 
extern br_pixelmap* gDead_car;
 
extern int gFade_away_parts_shop;
 
extern tU32 gDare_start_time;
 
extern int gRefund_rate;
 
extern int gSwap_grid_2;
 
extern int gSwap_grid_1;
 
extern int gChange_race_net_mode;
 
extern tParts_category gPart_category;
 
extern tU32 gNet_synch_start;
 
extern tNet_game_details* gChoose_car_net_game;
 
extern int gPart_index;
 
extern int gChallenger_index__racestrt; // suffix added to avoid duplicate symbol
 
extern tGrid_draw gDraw_grid_status;
 
extern tNet_sequence_type gNet_race_sequence__racestrt; // suffix added to avoid duplicate symbol
 
extern br_pixelmap* gTaken_image;
 
extern int gGrid_number_x_coords[31];
 
extern int gGrid_transition_stage;
 
extern int gGrid_y_adjust;
 
extern br_pixelmap* gBullet_image;
 
extern br_pixelmap* gDeceased_image;
 
extern int gBest_pos_available;
 
extern int gChallenger_position;
 
extern int gOpponent_index;
 
extern int gChallenge_time;
 
extern int gOriginal_position;
 
extern int gCurrent_race_index;
 
extern tInterface_spec* gStart_interface_spec;
 
extern int gCurrent_car_index;
 
extern int gOur_starting_position;
 
 
 
void DrawRaceList(int pOffset);
 
 
 
void MoveRaceList(int pFrom, int pTo, tS32 pTime_to_move);
 
 
 
int UpRace(int* pCurrent_choice, int* pCurrent_mode);
 
 
 
int DownRace(int* pCurrent_choice, int* pCurrent_mode);
 
 
 
int ClickOnRace(int* pCurrent_choice, int* pCurrent_mode, int pX_offset, int pY_offset);
 
 
 
int UpClickRace(int* pCurrent_choice, int* pCurrent_mode, int pX_offset, int pY_offset);
 
 
 
int DownClickRace(int* pCurrent_choice, int* pCurrent_mode, int pX_offset, int pY_offset);
 
 
 
void StartChangeRace(void);
 
 
 
int ChangeRace(int* pRace_index, int pNet_mode, tNet_sequence_type pNet_race_sequence);
 
 
 
void DoChangeRace(void);
 
 
 
void DrawCar(int pCurrent_choice, int pCurrent_mode);
 
 
 
void SetCarFlic(void);
 
 
 
int UpCar(int* pCurrent_choice, int* pCurrent_mode);
 
 
 
int DownCar(int* pCurrent_choice, int* pCurrent_mode);
 
 
 
int UpClickCar(int* pCurrent_choice, int* pCurrent_mode, int pX_offset, int pY_offset);
 
 
 
int DownClickCar(int* pCurrent_choice, int* pCurrent_mode, int pX_offset, int pY_offset);
 
 
 
int ChangeCarGoAhead(int* pCurrent_choice, int* pCurrent_mode);
 
 
 
int ChangeCar(int pNet_mode, int* pCar_index, tNet_game_details* pNet_game);
 
 
 
void DoChangeCar(void);
 
 
 
int PartsShopRecommended(void);
 
 
 
void CalcPartPrice(int pCategory, int pIndex, int* pPrice, int* pCost);
 
 
 
int BuyPart(int pCategory, int pIndex);
 
 
 
void DoAutoParts(void);
 
 
 
void DrawPartsLabel(void);
 
 
 
void ErasePartsText(int pTotal_as_well);
 
 
 
void DrawPartsText(void);
 
 
 
void SetPartsImage(void);
 
 
 
int GetPartsMax(void);
 
 
 
void CalcPartsIndex(void);
 
 
 
void DoExchangePart(void);
 
 
 
int PartsShopGoAhead(int* pCurrent_choice, int* pCurrent_mode);
 
 
 
int UpPart(int* pCurrent_choice, int* pCurrent_mode);
 
 
 
int DownPart(int* pCurrent_choice, int* pCurrent_mode);
 
 
 
int UpClickPart(int* pCurrent_choice, int* pCurrent_mode, int pX_offset, int pY_offset);
 
 
 
int DownClickPart(int* pCurrent_choice, int* pCurrent_mode, int pX_offset, int pY_offset);
 
 
 
int PartsArrowsOn(int* pCurrent_choice, int* pCurrent_mode);
 
 
 
int PartsArrowsOff(int* pCurrent_choice, int* pCurrent_mode);
 
 
 
void StartPartsShop(void);
 
 
 
int DonePartsShop(int pCurrent_choice, int pCurrent_mode, int pGo_ahead, int pEscaped, int pTimed_out);
 
 
 
void DrawPartsShop(int pCurrent_choice, int pCurrent_mode);
 
 
 
void DoPartsShop(int pFade_away);
 
 
 
int AutoPartsDone(int pCurrent_choice, int pCurrent_mode, int pGo_ahead, int pEscaped, int pTimed_out);
 
 
 
tSO_result DoAutoPartsShop(void);
 
 
 
void SetOpponentFlic(void);
 
 
 
void DrawSceneyMappyInfoVieweyThing(void);
 
 
 
void DismissSceneyMappyInfoVieweyThing(void);
 
 
 
int SelectRaceDone(int pCurrent_choice, int pCurrent_mode, int pGo_ahead, int pEscaped, int pTimed_out);
 
 
 
int StartRaceGoAhead(int* pCurrent_choice, int* pCurrent_mode);
 
 
 
int TryToMoveToArrows(int* pCurrent_choice, int* pCurrent_mode);
 
 
 
int UpOpponent(int* pCurrent_choice, int* pCurrent_mode);
 
 
 
int DownOpponent(int* pCurrent_choice, int* pCurrent_mode);
 
 
 
int UpClickOpp(int* pCurrent_choice, int* pCurrent_mode, int pX_offset, int pY_offset);
 
 
 
int DownClickOpp(int* pCurrent_choice, int* pCurrent_mode, int pX_offset, int pY_offset);
 
 
 
void SelectRaceStart(void);
 
 
 
int SuggestRace(void);
 
 
 
void SelectRaceDraw(int pCurrent_choice, int pCurrent_mode);
 
 
 
tSO_result DoSelectRace(int* pSecond_time_around);
 
 
 
void DrawGridCar(int pX, int pY, br_pixelmap* pImage);
 
 
 
void DrawGrid(int pOffset, int pDraw_it);
 
 
 
void MoveGrid(int pFrom, int pTo, tS32 pTime_to_move);
 
 
 
int CalcGridOffset(int pPosition);
 
 
 
void GridDraw(int pCurrent_choice, int pCurrent_mode);
 
 
 
void ActuallySwapOrder(int pFirst_index, int pSecond_index);
 
 
 
void DoGridTransition(int pFirst_index, int pSecond_index);
 
 
 
void ChallengeStart(void);
 
 
 
int CheckNextStage(int* pCurrent_choice, int* pCurrent_mode);
 
 
 
int ChallengeDone(int pCurrent_choice, int pCurrent_mode, int pGo_ahead, int pEscaped, int pTimed_out);
 
 
 
void DoChallengeScreen(void);
 
 
 
int GridDone(int pCurrent_choice, int pCurrent_mode, int pGo_ahead, int pEscaped, int pTimed_out);
 
 
 
void GridStart(void);
 
 
 
int GridMoveLeft(int* pCurrent_choice, int* pCurrent_mode);
 
 
 
int GridMoveRight(int* pCurrent_choice, int* pCurrent_mode);
 
 
 
int GridClickCar(int* pCurrent_choice, int* pCurrent_mode, int pX_offset, int pY_offset);
 
 
 
int GridClickNumbers(int* pCurrent_choice, int* pCurrent_mode, int pX_offset, int pY_offset);
 
 
 
int GridClickLeft(int* pCurrent_choice, int* pCurrent_mode, int pX_offset, int pY_offset);
 
 
 
int GridClickRight(int* pCurrent_choice, int* pCurrent_mode, int pX_offset, int pY_offset);
 
 
 
int CheckChallenge(int* pCurrent_choice, int* pCurrent_mode);
 
 
 
int FindBestPos(int pOur_rank);
 
 
 
int SortGridFunction(const void* pFirst_one, const void* pSecond_one);
 
 
 
void SortOpponents(void);
 
 
 
tSO_result DoGridPosition(void);
 
 
 
void CheckPlayersAreResponding(void);
 
 
 
void NetSynchStartStart(void);
 
 
 
// Suffix added to avoid duplicate symbol
 
void DrawAnItem__racestrt(int pX, int pY_index, int pFont_index, char* pText);
 
 
 
void NetSynchStartDraw(int pCurrent_choice, int pCurrent_mode);
 
 
 
int NetSynchStartDone(int pCurrent_choice, int pCurrent_mode, int pGo_ahead, int pEscaped, int pTimed_out);
 
 
 
int NetSynchStartGoAhead(int* pCurrent_choice, int* pCurrent_mode);
 
 
 
int ExitWhenReady(int* pCurrent_choice, int* pCurrent_mode);
 
 
 
tSO_result NetSynchRaceStart2(tNet_synch_mode pMode);
 
 
 
tSO_result NetSynchRaceStart(void);
 
 
 
#endif