160 lines
5.4 KiB
XML
Executable File
160 lines
5.4 KiB
XML
Executable File
// offroad_globals.sch
|
|
USING "script_maths.sch"
|
|
|
|
ENUM OFFROADRACE_BIT_FLAGS
|
|
OFFROAD_F_WonCurrentRace = BIT0, // This is temporarily set when the race setup needs to tell the controller that we won the race. (BIT0)
|
|
|
|
OFFROAD_F_Race5Won = BIT1,
|
|
OFFROAD_F_Race8Won = BIT2,
|
|
OFFROAD_F_Race9Won = BIT3,
|
|
OFFROAD_F_Race10Won = BIT4,
|
|
OFFROAD_F_Race11Won = BIT5,
|
|
OFFROAD_F_Race12Won = BIT6,
|
|
OFFROAD_F_Race13Won = BIT7
|
|
|
|
ENDENUM
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
INT g_ORR_DebugLaunchWarpTime = 0
|
|
#ENDIF
|
|
|
|
/// PURPOSE: Indices to our races.
|
|
/// EACH TIME YOU DEFINE A NEW ONE, ADD IT TO THE FUNC BELOW
|
|
ENUM OFFROAD_RACE_INDEX
|
|
OFFROAD_RACE_NONE = -1,
|
|
|
|
OFFROAD_RACE_CANYON_CLIFFS = 0,
|
|
OFFROAD_RACE_RIDGE_RUN,
|
|
OFFROAD_RACE_MINEWARD_SPIRAL,
|
|
OFFROAD_RACE_VALLEY_TRAIL,
|
|
OFFROAD_RACE_LAKESIDE_SPLASH,
|
|
OFFROAD_RACE_ECO_FRIENDLY,
|
|
OFFROAD_RACE13,
|
|
|
|
NUM_OFFROAD_RACES
|
|
ENDENUM
|
|
|
|
STRUCT RACE_LAUNCH_DATA
|
|
OFFROAD_RACE_INDEX raceToLaunch
|
|
VECTOR raceStartLoc
|
|
PED_INDEX Racer[5]
|
|
VEHICLE_INDEX RaceVehicle[5]
|
|
PED_INDEX Loaner
|
|
VEHICLE_INDEX LoanerVehicle
|
|
ENDSTRUCT
|
|
|
|
STRUCT OffroadSaved
|
|
INT iBitFlags
|
|
OFFROAD_RACE_INDEX eCurrentRace
|
|
INT iBestRank[NUM_OFFROAD_RACES]
|
|
FLOAT fBestTime[NUM_OFFROAD_RACES]
|
|
INT iRacePlaceEarned
|
|
INT iRaceBestPlaces[NUM_OFFROAD_RACES]
|
|
ENDSTRUCT
|
|
|
|
// We don't have any save data yet... I kind just need this function.
|
|
FUNC VECTOR OFFROAD_RACE_GET_LOC_FOR_INDEX(OFFROAD_RACE_INDEX raceIndex)
|
|
// Make sure it's valid.
|
|
IF (raceIndex >= NUM_OFFROAD_RACES) OR (raceIndex <= OFFROAD_RACE_NONE)
|
|
//DEBUG_MESSAGE("You're asking for a race location out of range. Returning <<0,0,0>>!!")
|
|
RETURN <<0,0,0>>
|
|
ENDIF
|
|
|
|
// Get the race loc for that index.
|
|
SWITCH (raceIndex)
|
|
CASE OFFROAD_RACE_CANYON_CLIFFS
|
|
RETURN <<-1939.4829, 4443.9526, 37.3474>> // Canyon Cliffs - 1 in menu.
|
|
|
|
CASE OFFROAD_RACE_RIDGE_RUN
|
|
RETURN <<-516.9256, 2008.0140, 204.0998>> // Ridge Run - 2 in menu.
|
|
|
|
CASE OFFROAD_RACE_VALLEY_TRAIL
|
|
RETURN <<-223.6755, 4224.6436, 43.7304>> // Valley Trail - 3 in menu.
|
|
|
|
CASE OFFROAD_RACE_LAKESIDE_SPLASH
|
|
RETURN <<1606.5785, 3841.1882, 33.2931>> // Lakeside Splash - 4 in menu.
|
|
|
|
CASE OFFROAD_RACE_ECO_FRIENDLY
|
|
RETURN <<2037.6644, 2137.3862, 92.7095>> // Eco Friendly - 5 in menu.
|
|
|
|
CASE OFFROAD_RACE_MINEWARD_SPIRAL
|
|
RETURN <<2996.7759, 2774.0850, 43.2600>> // Mineward Spiral - 6 in menu.
|
|
|
|
// CASE OFFROAD_RACE13
|
|
// RETURN << 1222.9738, 2373.2100, 64.7099 >> // Construction Course - 7 in menu.
|
|
// BREAK
|
|
ENDSWITCH
|
|
|
|
//DEBUG_MESSAGE("You're asking for a race location and the index hasn't been assigned a point. Returning <<0,0,0>>!!")
|
|
RETURN <<0, 0, 0>>
|
|
ENDFUNC
|
|
|
|
|
|
/// PURPOSE:
|
|
/// Returns the OFFROAD_RACE_INDEX that the player is nearest to.
|
|
/// PARAMS:
|
|
/// vCurLoc - Player's current location
|
|
/// RETURNS:
|
|
/// OFFROAD_RACE_INDEX that we're closest to.
|
|
FUNC OFFROAD_RACE_INDEX GET_RACE_INDEX_BY_POSITION(VECTOR vCurLoc, VECTOR & vRaceStartLoc)
|
|
// We'll return this.
|
|
OFFROAD_RACE_INDEX eRetInd = OFFROAD_RACE_CANYON_CLIFFS
|
|
|
|
// STORE ALL RACE LOCATIONS HERE:
|
|
VECTOR raceLocs[NUM_OFFROAD_RACES]
|
|
raceLocs[OFFROAD_RACE_CANYON_CLIFFS] = OFFROAD_RACE_GET_LOC_FOR_INDEX(OFFROAD_RACE_CANYON_CLIFFS)
|
|
raceLocs[OFFROAD_RACE_RIDGE_RUN] = OFFROAD_RACE_GET_LOC_FOR_INDEX(OFFROAD_RACE_RIDGE_RUN)
|
|
raceLocs[OFFROAD_RACE_VALLEY_TRAIL] = OFFROAD_RACE_GET_LOC_FOR_INDEX(OFFROAD_RACE_VALLEY_TRAIL)
|
|
raceLocs[OFFROAD_RACE_LAKESIDE_SPLASH] = OFFROAD_RACE_GET_LOC_FOR_INDEX(OFFROAD_RACE_LAKESIDE_SPLASH)
|
|
raceLocs[OFFROAD_RACE_ECO_FRIENDLY] = OFFROAD_RACE_GET_LOC_FOR_INDEX(OFFROAD_RACE_ECO_FRIENDLY)
|
|
raceLocs[OFFROAD_RACE_MINEWARD_SPIRAL] = OFFROAD_RACE_GET_LOC_FOR_INDEX(OFFROAD_RACE_MINEWARD_SPIRAL)
|
|
raceLocs[OFFROAD_RACE13] = OFFROAD_RACE_GET_LOC_FOR_INDEX(OFFROAD_RACE13)
|
|
|
|
// We assume first = closest. We'll figure it out later.
|
|
FLOAT fClosestDist = VDIST2(vCurLoc, raceLocs[0])
|
|
|
|
INT index = 0
|
|
FLOAT fDist = 0.0
|
|
FOR index = 1 TO (ENUM_TO_INT(NUM_OFFROAD_RACES) - 1)
|
|
fDist = VDIST2(vCurLoc, raceLocs[index])
|
|
IF (fDist < fClosestDist)
|
|
// Found a closer one!
|
|
eRetInd = INT_TO_ENUM(OFFROAD_RACE_INDEX, index)
|
|
fClosestDist = fDist
|
|
ENDIF
|
|
ENDFOR
|
|
|
|
// Return the closest one we found.
|
|
vRaceStartLoc = raceLocs[eRetInd]
|
|
RETURN eRetInd
|
|
ENDFUNC
|
|
|
|
/// PURPOSE:
|
|
/// Given the race index, returns the bit flag for "won race" and the static blip for this race.
|
|
PROC GET_RACE_BITFLAG_AND_STATIC_BLIP(OFFROAD_RACE_INDEX eRaceIndex, OFFROADRACE_BIT_FLAGS & eWonFlag, STATIC_BLIP_NAME_ENUM & eStaticBlipEnum)
|
|
IF (eRaceIndex = OFFROAD_RACE_CANYON_CLIFFS)
|
|
eWonFlag = OFFROAD_F_Race5Won
|
|
eStaticBlipEnum = STATIC_BLIP_MINIGAME_OFFROAD_RACE5
|
|
|
|
ELIF (eRaceIndex = OFFROAD_RACE_RIDGE_RUN)
|
|
eWonFlag = OFFROAD_F_Race8Won
|
|
eStaticBlipEnum = STATIC_BLIP_MINIGAME_OFFROAD_RACE8
|
|
|
|
ELIF (eRaceIndex = OFFROAD_RACE_VALLEY_TRAIL)
|
|
eWonFlag = OFFROAD_F_Race9Won
|
|
eStaticBlipEnum = STATIC_BLIP_MINIGAME_OFFROAD_RACE9
|
|
|
|
ELIF (eRaceIndex = OFFROAD_RACE_LAKESIDE_SPLASH)
|
|
eWonFlag = OFFROAD_F_Race10Won
|
|
eStaticBlipEnum = STATIC_BLIP_MINIGAME_OFFROAD_RACE10
|
|
|
|
ELIF (eRaceIndex = OFFROAD_RACE_ECO_FRIENDLY)
|
|
eWonFlag = OFFROAD_F_Race11Won
|
|
eStaticBlipEnum = STATIC_BLIP_MINIGAME_OFFROAD_RACE11
|
|
|
|
ELIF (eRaceIndex = OFFROAD_RACE_MINEWARD_SPIRAL)
|
|
eWonFlag = OFFROAD_F_Race12Won
|
|
eStaticBlipEnum = STATIC_BLIP_MINIGAME_OFFROAD_RACE12
|
|
ENDIF
|
|
ENDPROC
|