1273 lines
45 KiB
XML
Executable File
1273 lines
45 KiB
XML
Executable File
// *****************************************************************************************
|
|
// *****************************************************************************************
|
|
// *****************************************************************************************
|
|
//
|
|
// SCRIPT NAME : TRI_Head.sch
|
|
// AUTHOR : Nicholas Zippmann
|
|
// DESCRIPTION : Single Player Races - Head global data file
|
|
//
|
|
// *****************************************************************************************
|
|
// *****************************************************************************************
|
|
// *****************************************************************************************
|
|
|
|
USING "minigames_helpers.sch"
|
|
//USING "minigame_uiinputs.sch"
|
|
USING "script_usecontext.sch"
|
|
USING "commands_xml.sch"
|
|
USING "commands_water.sch"
|
|
USING "screen_placements.sch"
|
|
USING "minigame_big_message.sch"
|
|
USING "timer_globals.sch"
|
|
|
|
// Variables
|
|
INT iControlFlags
|
|
INT iCinCamTimer
|
|
CONST_INT TRI_CAM_BUTTON_COOLDOWN 500
|
|
BLIP_INDEX blipPlayerVehicle
|
|
|
|
TWEAK_INT TRI_BLOCK_QUIT_INPUT_DURATION 1000
|
|
CONST_INT TRI_ENABLE_WIDGETS 0 // 1 to use widgets
|
|
|
|
|
|
#IF NOT DEFINED(TRI_RACE_IS_TRIATHLON)
|
|
CONST_INT TRI_RACE_IS_TRIATHLON 0
|
|
#ENDIF
|
|
|
|
|
|
// -----------------------------------
|
|
// CONSTANTS
|
|
// -----------------------------------
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
CONST_INT TRI_DEBUG_DISPLAY_TEXT 0
|
|
CONST_FLOAT TRI_GATE_CHKPNT_OFFROAD_ARROW_SCL 3.0 // Gate checkpoint size.
|
|
CONST_FLOAT TRI_GATE_CHKPNT_OFFROAD_CYLINDER_SCL 8.0 // Gate next checkpoint size.
|
|
CONST_FLOAT TRI_GATE_CHKPNT_OFFROAD_FLAG_SCL 4.0 // Gate next checkpoint size.
|
|
|
|
CONST_FLOAT TRI_GATE_CHKPNT_STUNT_ARROW_SCL 3.0 // Gate checkpoint size.
|
|
CONST_FLOAT TRI_GATE_CHKPNT_STUNT_PLANE_SCL 5.0 // Gate checkpoint size.
|
|
CONST_FLOAT TRI_GATE_CHKPNT_STUNT_RING_SCL 8.0 // Gate next checkpoint size.
|
|
CONST_FLOAT TRI_GATE_CHKPNT_STUNT_FLAG_SCL 4.0 // Gate next checkpoint size.
|
|
|
|
CONST_FLOAT TRI_GATE_CHKPNT_TRI_ARROW_SCL 3.0 // Gate checkpoint size.
|
|
CONST_FLOAT TRI_GATE_CHKPNT_TRI_CYLINDER_SCL 8.0 // Gate next checkpoint size.
|
|
CONST_FLOAT TRI_GATE_CHKPNT_TRI_FLAG_SCL 4.0 // Gate next checkpoint size.
|
|
#ENDIF
|
|
|
|
#IF NOT DEFINED(TRI_GATE_MAX)
|
|
CONST_INT TRI_GATE_MAX 33 // Max race gates.
|
|
#ENDIF
|
|
CONST_INT TRI_RACER_MAX 8 // Max race racers.
|
|
CONST_INT TRI_FADE_LONG_TIME 5000 // Fade time (long) (ms).
|
|
CONST_INT TRI_FADE_NORM_TIME 1000 // Fade time (normal) (ms).
|
|
CONST_INT TRI_FADE_QUICK_TIME 500 // Fade time (quick) (ms).
|
|
CONST_FLOAT TRI_CLEAR_AREA_RADIUS 30.0 // Clear area radius (m).
|
|
CONST_FLOAT TRI_ON_GROUND_DIST 10.0 // On ground distance (m).
|
|
CONST_FLOAT TRI_GATE_CHKPNT_SCL 10.25 // Gate checkpoint size.
|
|
CONST_FLOAT TRI_GATE_CHKPNTNXT_SCL 7.0 // Gate next checkpoint size.
|
|
CONST_FLOAT TRI_GATE_BLIPCUR_SCL 1.0 // Gate current blip scale.
|
|
CONST_FLOAT TRI_GATE_BLIPNXT_SCL 0.75 // Gate next blip scale.
|
|
CONST_FLOAT TRI_GATE_MISS_DIST_SCL 5.0 // Gate miss distance scale.
|
|
CONST_FLOAT TRI_GATE_MISS_PENALTY 5.0 // Gate miss penalty (s).
|
|
CONST_FLOAT TRI_GATE_INNER_PASS_BONUS 1.0 // Gate inner pass bonus (s).
|
|
CONST_FLOAT TRI_GATE_OUTTER_PASS_BONUS 0.0 // Gate Outter pass bonus (s).
|
|
CONST_FLOAT TRI_GATE_OUTTER_KNIFE_BONUS 1.5 // Gate Outter Knife bonus (s).
|
|
CONST_FLOAT TRI_GATE_OUTTER_INVERT_BONUS 2.0 // Gate Outter Invert bonus (s).
|
|
CONST_FLOAT TRI_GATE_INNER_KNIFE_BONUS 2.5 // Gate Inner Knife bonus (s).
|
|
CONST_FLOAT TRI_GATE_INNER_INVERT_BONUS 3.0 // Gate Outter pass bonus (s).
|
|
CONST_FLOAT TRI_GATE_STUNT_BONUS 4.0 // Stunt Gate hit bonus
|
|
CONST_FLOAT TRI_GATE_STUNT_HIT 1.5 // Stunt Gate failure to do stunt
|
|
CONST_FLOAT TRI_GATE_WRONG_PENALTY 2.5 // Gate miss penalty (s).
|
|
CONST_INT TRI_GATE_MISS_DISP_TIME 2500 // Gate miss display time (ms).
|
|
CONST_FLOAT TRI_GATE_HEIGHT_CHECK 10.0 // Gate height check - to fix Bug # 666112 - DS
|
|
CONST_FLOAT TRI_WATER_RESET_OFFSET -1.0 // Z offset for resetting player on a swimming checkpoint (m) -AsD (B* 1184990)
|
|
|
|
CONST_FLOAT TRI_STUNT_INVERT_MIN -140.0 // The min amount the player needs to get the invert stunt bonus
|
|
CONST_FLOAT TRI_STUNT_INVERT_MAX 140.0 // The max amount the player can be inverted to get the invert stunt bonus
|
|
|
|
CONST_INT TRI_VEH_STUCK_PLANE_ROOF_TIME 1000 // Vehicle stuck time (roof) (ms).
|
|
CONST_INT TRI_VEH_STUCK_PLANE_SIDE_TIME 1000 // Vehicle stuck time (side) (ms).
|
|
CONST_INT TRI_VEH_STUCK_PLANE_HUNG_TIME 2000 // Vehicle stuck time (hung) (ms).
|
|
CONST_INT TRI_VEH_STUCK_PLANE_JAM_TIME 2000 // Vehicle stuck time (jam) (ms).
|
|
|
|
CONST_INT TRI_VEH_STUCK_BIKE_ROOF_TIME 5000 // Vehicle stuck time (roof) (ms).
|
|
CONST_INT TRI_VEH_STUCK_BIKE_SIDE_TIME 20000 // Vehicle stuck time (side) (ms).
|
|
CONST_INT TRI_VEH_STUCK_BIKE_HUNG_TIME 30000 // Vehicle stuck time (hung) (ms).
|
|
CONST_INT TRI_VEH_STUCK_BIKE_JAM_TIME 60000 // Vehicle stuck time (jam) (ms).
|
|
|
|
CONST_INT TRI_XML_HASH_MASTER -232937294 // XML hash key for "Master" string.
|
|
CONST_INT TRI_XML_HASH_RACES 993425358 // XML hash key for "Races" string.
|
|
CONST_INT TRI_XML_HASH_RACE -1423748980 // XML hash key for "Race" string.
|
|
CONST_INT TRI_XML_HASH_FILENAME 1087019066 // XML hash key for "FileName" string.
|
|
CONST_INT TRI_XML_HASH_NAME -421429484 // XML hash key for "Name" string.
|
|
CONST_INT TRI_XML_HASH_TIME 258444835 // XML hash key for "Time" string.
|
|
CONST_INT TRI_XML_HASH_GATES -1448335268 // XML hash key for "Gates" string.
|
|
CONST_INT TRI_XML_HASH_GATE 145736838 // XML hash key for "Gate" string.
|
|
CONST_INT TRI_XML_HASH_POS 18243940 // XML hash key for "Position" string.
|
|
CONST_INT TRI_XML_HASH_CHKPNT 302512246 // XML hash key for "checkpoint" string
|
|
CONST_INT TRI_XML_HASH_RACERS -1335331260 // XML hash key for "Racers" string.
|
|
CONST_INT TRI_XML_HASH_RACER 361770114 // XML hash key for "Racer" string.
|
|
CONST_INT TRI_XML_HASH_LOC -71226926 // XML hash key for "Location" string.
|
|
CONST_INT TRI_XML_HASH_DRIVER 2096477759 // XML hash key for "Driver" string.
|
|
CONST_INT TRI_XML_HASH_VEHICLE -584819812 // XML hash key for "Vehicle" string.
|
|
CONST_INT TRI_XML_HASH_X -1828477467 // XML hash key for "X" string.
|
|
CONST_INT TRI_XML_HASH_Y -2137718520 // XML hash key for "Y" string
|
|
CONST_INT TRI_XML_HASH_Z -1235194722 // XML hash key for "Z" string.
|
|
CONST_INT TRI_XML_HASH_H 1879302122 // XML hash key for "Z" string.
|
|
CONST_INT TRI_XML_HASH_RADIUS 1337695475 // XML hash key for "Radius" string.
|
|
CONST_INT TRI_XML_HASH_TYPE 828747869 // XML hash key for "Type" string.
|
|
CONST_INT TRI_XML_HASH_STUNT -2122757008 // XML hash key for "Stunt" string.
|
|
CONST_INT TRI_XML_HASH_MODEL 1816327236 // XML hash key for "Model" string.
|
|
|
|
CONST_FLOAT TRI_HUD_NUM_WIDTH 0.0165 // HUD number width for offsetting.
|
|
CONST_FLOAT TRI_HUD_CLN_WIDTH 0.0265 // HUD colon width for offsetting.
|
|
CONST_FLOAT TRI_HUD_PLS_WIDTH 0.0175 // HUD plus width for offsetting.
|
|
CONST_FLOAT TRI_HUD_MNS_WIDTH 0.0095 // HUD minus width for offsetting.
|
|
CONST_FLOAT TRI_HUD_RADAR_POS_X 0.109 // HUD radar overlay pos (x).
|
|
CONST_FLOAT TRI_HUD_RADAR_POS_Y 0.850 // HUD radar overlay pos (y).
|
|
CONST_FLOAT TRI_HUD_RADAR_WIDTH 0.110 // HUD radar overlay width.
|
|
CONST_FLOAT TRI_HUD_RADAR_HEIGHT 0.200 // HUD radar overlay height.
|
|
CONST_FLOAT TRI_HUD_RADAR_ROT_SCL -1.0 // HUD radar overlay rot scale.
|
|
|
|
CONST_FLOAT TRI_UI_CR_HEAD_POS_X 0.4 // UI choose race heading pos (x).
|
|
CONST_FLOAT TRI_UI_CR_HEAD_POS_Y 0.05 // UI choose race heading pos (y). (formally .15)
|
|
CONST_FLOAT TRI_UI_CR_HEAD_SCALE 0.8 // UI choose race heading scale (x/y). (formally 1.0)
|
|
CONST_FLOAT TRI_UI_CR_INFO_POS_X 0.325 // UI choose race info pos (x).
|
|
CONST_FLOAT TRI_UI_CR_INFO_POS_Y 0.11 // UI choose race info pos (y). (formally .25)
|
|
CONST_FLOAT TRI_UI_CR_INFO_SCALE 0.5 // UI choose race info scale (x/y).
|
|
CONST_FLOAT TRI_UI_CR_INFO_SPC_X1 0.23 // UI choose race info space (x1).
|
|
CONST_FLOAT TRI_UI_CR_INFO_SPC_X2 0.282 // UI choose race info space (x2).
|
|
CONST_FLOAT TRI_UI_CR_INFO_SPC_Y 0.052 // UI choose race info space (y).
|
|
CONST_FLOAT TRI_UI_CR_SEL_POS_X 0.32 // UI choose race select pos (x).
|
|
CONST_FLOAT TRI_UI_CR_SEL_POS_Y 0.895 // UI choose race select pos (y). (formally .81)
|
|
CONST_FLOAT TRI_UI_CR_SEL_SCALE 0.625 // UI choose race select scale (x/y).
|
|
CONST_FLOAT TRI_UI_CR_ENT_POS_X 0.435 // UI choose race enter pos (x).
|
|
CONST_FLOAT TRI_UI_CR_ENT_POS_Y 0.895 // UI choose race enter pos (y). (formally .81)
|
|
CONST_FLOAT TRI_UI_CR_ENT_SCALE 0.625 // UI choose race enter scale (x/y).
|
|
CONST_FLOAT TRI_UI_CR_EXIT_POS_X 0.614 // UI choose race exit pos (x).
|
|
CONST_FLOAT TRI_UI_CR_EXIT_POS_Y 0.895 // UI choose race exit pos (y). (formally .81)
|
|
CONST_FLOAT TRI_UI_CR_EXIT_SCALE 0.625 // UI choose race exit scale (x/y).
|
|
CONST_FLOAT TRI_UI_CR_RECT_POS_X 0.5 // UI choose race rectangle pos (x).
|
|
CONST_FLOAT TRI_UI_CR_RECT_POS_Y 0.3 // UI choose race rectangle pos (y). (formally .5)
|
|
CONST_FLOAT TRI_UI_CR_RECT_WIDTH 0.385 // UI choose race rectange width.
|
|
CONST_FLOAT TRI_UI_CR_RECT_HEIGHT 1.30 // UI choose race rectangle height.
|
|
CONST_INT TRI_UI_CR_RECT_ALPHA 191 // UI choose race rectange alpha.
|
|
|
|
CONST_FLOAT TRI_UI_CD_NUM_SCALE 2.0 // UI countdown number scale for both x/y.
|
|
CONST_FLOAT TRI_UI_CD_NUM_POS_X 0.48 // UI countdown number start position (x).
|
|
CONST_FLOAT TRI_UI_CD_NUM_POS_Y 0.4 // UI countdown number start position (y).
|
|
CONST_FLOAT TRI_UI_CD_NUM_TIME 1.25 // UI countdown number display for time (s).
|
|
CONST_FLOAT TRI_UI_CD_GO_SCALE 2.0 // UI countdown "GO!" scale for both x/y.
|
|
CONST_FLOAT TRI_UI_CD_GO_POS_X 0.44 // UI countdown "GO!" start position (x).
|
|
CONST_FLOAT TRI_UI_CD_GO_POS_Y 0.4 // UI countdown "GO!" start position (y).
|
|
CONST_FLOAT TRI_UI_CD_GO_TIME 1.0 // UI countdown "GO!" display for time (s).
|
|
|
|
CONST_FLOAT TRI_UI_FINISH_SCALE 2.0 // UI finish scale for both x/y.
|
|
CONST_FLOAT TRI_UI_FINISH_POS_X 0.4 // UI finish start position (x).
|
|
CONST_FLOAT TRI_UI_FINISH_POS_Y 0.4 // UI finish start position (y).
|
|
CONST_FLOAT TRI_UI_FINISH_TIME 3.0 // UI finish display for time (s).
|
|
|
|
CONST_FLOAT TRI_UI_LB_HEAD_POS_X 0.4 // UI leaderboard heading pos (x).
|
|
CONST_FLOAT TRI_UI_LB_HEAD_POS_Y 0.15 // UI leaderboard heading pos (y).
|
|
CONST_FLOAT TRI_UI_LB_HEAD_SCALE 1.0 // UI leaderboard heading scale (x/y).
|
|
CONST_FLOAT TRI_UI_LB_INFO_POS_X 0.325 // UI leaderboard info pos (x).
|
|
CONST_FLOAT TRI_UI_LB_INFO_POS_Y 0.21 // UI leaderboard info pos (y).
|
|
CONST_FLOAT TRI_UI_LB_INFO_SCALE 0.5 // UI leaderboard info scale (x/y).
|
|
CONST_FLOAT TRI_UI_LB_INFO_SPC_X1 0.23 // UI leaderboard info space (x1).
|
|
CONST_FLOAT TRI_UI_LB_INFO_SPC_X2 0.282 // UI leaderboard info space (x2).
|
|
CONST_FLOAT TRI_UI_LB_INFO_SPC_Y 0.052 // UI leaderboard info space (y).
|
|
CONST_FLOAT TRI_UI_LB_CONT_POS_X 0.32 // UI leaderboard select pos (x).
|
|
CONST_FLOAT TRI_UI_LB_CONT_POS_Y 0.81 // UI leaderboard select pos (y).
|
|
CONST_FLOAT TRI_UI_LB_CONT_SCALE 0.625 // UI leaderboard select scale (x/y).
|
|
CONST_FLOAT TRI_UI_LB_EXIT_POS_X 0.614 // UI leaderboard exit pos (x).
|
|
CONST_FLOAT TRI_UI_LB_EXIT_POS_Y 0.81 // UI leaderboard exit pos (y).
|
|
CONST_FLOAT TRI_UI_LB_EXIT_SCALE 0.625 // UI leaderboard exit scale (x/y).
|
|
CONST_FLOAT TRI_UI_LB_RECT_POS_X 0.5 // UI leaderboard rectangle pos (x).
|
|
CONST_FLOAT TRI_UI_LB_RECT_POS_Y 0.5 // UI leaderboard rectangle pos (y).
|
|
CONST_FLOAT TRI_UI_LB_RECT_WIDTH 0.375 // UI leaderboard rectange width.
|
|
CONST_FLOAT TRI_UI_LB_RECT_HEIGHT 0.750 // UI leaderboard rectangle height.
|
|
CONST_INT TRI_UI_LB_RECT_ALPHA 191 // UI leaderboard rectange alpha.
|
|
CONST_INT TRI_UI_LB_RACER_LIMIT 10 // UI leaderboard racer limit.
|
|
|
|
CONST_INT TRI_UI_TIME_THROTTLE 10 // UI throttle for updating the race time
|
|
|
|
CONST_INT TRI_INPUT_STICK_LIMIT 128 // INPUT stick limit for both x/y.
|
|
CONST_INT TRI_INPUT_STICK_DZ_X 32 // INPUT stick dead zone (x).
|
|
CONST_INT TRI_INPUT_STICK_DZ_Y 32 // INPUT stick dead zone (x).
|
|
|
|
CONST_FLOAT TRI_CAM_INTERP_SPEED 100.0 // CAM interp speed (m/s).
|
|
CONST_INT TRI_CAM_INTERP_TIME_MIN 2000 // CAM interp time max (ms).
|
|
CONST_INT TRI_CAM_INTERP_TIME_MAX 6000 // CAM interp time max (ms).
|
|
CONST_FLOAT TRI_CAM_ROTATE_INC 2.0 // CAM rotate increment (deg).
|
|
CONST_FLOAT TRI_CAM_ROTATE_LIMIT 89.0 // CAM rotate limit (deg).
|
|
|
|
CONST_FLOAT TRI_CAM_ZOOM_INC 0.1 // CAM zoom increment (scalar).
|
|
CONST_FLOAT TRI_CAM_ZOOM_LIMIT_MIN 0.5 // CAM zoom min limit (scalar).
|
|
CONST_FLOAT TRI_CAM_ZOOM_LIMIT_MAX 5.0 // CAM zoom max limit (scalar).
|
|
CONST_FLOAT TRI_CAM_GATE_FOCUS_DIST 50.0 // CAM gate focus distance (m).
|
|
CONST_FLOAT TRI_CAM_RACER_FOCUS_DIST 10.0 // CAM racer focus distance (m).
|
|
|
|
CONST_FLOAT TRI_PLANE_SPD_MAX 60.0 // Plane speed max(m/s).
|
|
CONST_FLOAT TRI_TRICK_ROT_MIN 0.0 // Trick rotation min (deg).
|
|
CONST_FLOAT TRI_TRICK_ROT_MID 180.0 // Trick rotation mid (deg).
|
|
CONST_FLOAT TRI_TRICK_ROT_MAX 360.0 // Trick rotation max (deg).
|
|
CONST_FLOAT TRI_TRICK_ROT_JUMP 90.0 // Trick rotation jump (deg).
|
|
CONST_FLOAT TRI_TRICK_ROT_BUFF 30.0 // Trick rotation buffer (deg).
|
|
CONST_FLOAT TRI_TRICK_LOOP_MIN 1.0 // Trick loop bonus min (s).
|
|
CONST_FLOAT TRI_TRICK_LOOP_MAX 15.0 // Trick loop bonus max (s).
|
|
CONST_FLOAT TRI_TRICK_ROLL_MIN 0.2 // Trick roll bonus min (s).
|
|
CONST_FLOAT TRI_TRICK_ROLL_MAX 3.0 // Trick roll bonus max (s).
|
|
CONST_FLOAT TRI_TRICK_INVT_TIME 10.0 // Trick invert time (s).
|
|
CONST_FLOAT TRI_TRICK_INVT_MIN 0.4 // Trick invert bonus min (s).
|
|
CONST_FLOAT TRI_TRICK_INVT_MAX 6.0 // Trick invert bonus max (s).
|
|
CONST_FLOAT TRI_TRICK_DEGRADE 2.0 // Trick bonus degrade (^x).
|
|
CONST_INT TRI_TRICK_DISP_TIME 2500 // Trick display time (ms).
|
|
|
|
CONST_FLOAT CIN_CAM_TIMER_THRESHOLD 0.200 // Threshold for going into cinematic cam
|
|
CONST_FLOAT CIN_CAM_TIMER_THRESHOLD_LONG 1.000 // Threshold for going back from cinematic cam, like Alwyn's stuff does
|
|
|
|
CONST_INT TRI_EVENT_QUEUE_COUNT 15 // Number of events we can hold in the queue
|
|
CONST_INT TRI_QUEUE_CLEAN_TIME 20000 // 20 seconds til we clean the queue
|
|
CONST_FLOAT TRI_RANK_SAMPLE_TIME 2.0
|
|
|
|
|
|
|
|
// -----------------------------------
|
|
// ENUMERATIONS
|
|
// -----------------------------------
|
|
|
|
// SPR Main Run.
|
|
ENUM TRI_MAIN_RUN_ENUM
|
|
TRI_MAIN_RUN_SETUP,
|
|
TRI_MAIN_RUN_UPDATE,
|
|
TRI_MAIN_RUN_CLEANUP
|
|
ENDENUM
|
|
|
|
// SPR Main Setup.
|
|
ENUM TRI_MAIN_SETUP_ENUM
|
|
TRI_MAIN_SETUP_INIT,
|
|
TRI_MAIN_SETUP_FADE_OUT,
|
|
TRI_MAIN_SETUP_LOAD_INIT,
|
|
TRI_MAIN_SETUP_LOAD_WAIT,
|
|
TRI_MAIN_SETUP_CREATE_INIT,
|
|
TRI_MAIN_SETUP_CREATE_WAIT,
|
|
TRI_MAIN_SETUP_PLACE_INIT,
|
|
TRI_MAIN_SETUP_PLACE_WAIT,
|
|
TRI_MAIN_SETUP_FADE_IN,
|
|
TRI_MAIN_SETUP_WAIT,
|
|
TRI_MAIN_SETUP_CLEANUP
|
|
ENDENUM
|
|
|
|
// SPR Main Udpate.
|
|
ENUM TRI_MAIN_UPDATE_ENUM
|
|
TRI_MAIN_UPDATE_INIT,
|
|
TRI_MAIN_UPDATE_GET_IN_INIT,
|
|
TRI_MAIN_UPDATE_GET_IN_WAIT,
|
|
TRI_MAIN_UPDATE_CHOOSE_RACE,
|
|
TRI_MAIN_RESETTING_LOAD,
|
|
TRI_MAIN_UPDATE_ORCUT_LOAD,
|
|
TRI_MAIN_QUIT_FADE_TELEPORT,
|
|
TRI_MAIN_UPDATE_FADE_OUT,
|
|
TRI_MAIN_UPDATE_SETUP_RACE_INIT,
|
|
TRI_MAIN_UPDATE_SETUP_RACE_WAIT,
|
|
TRI_MAIN_UPDATE_FADE_IN,
|
|
TRI_MAIN_UPDATE_WAIT,
|
|
TRI_MAIN_UPDATE_PRECLEANUP_DELAY,
|
|
TRI_MAIN_RESETTING_LOAD_FADE,
|
|
TRI_MAIN_UPDATE_CLEANUP
|
|
ENDENUM
|
|
|
|
// SPR Camera Mode.
|
|
ENUM TRI_CAMERA_MODE_ENUM
|
|
TRI_CAMERA_MODE_GAME,
|
|
TRI_CAMERA_MODE_FREE,
|
|
TRI_CAMERA_MODE_FLY
|
|
ENDENUM
|
|
|
|
// SPR Camera Focus.
|
|
ENUM TRI_CAMERA_FOCUS_ENUM
|
|
TRI_CAMERA_FOCUS_GATES,
|
|
TRI_CAMERA_FOCUS_RACERS
|
|
ENDENUM
|
|
|
|
// SPR Move Mode.
|
|
ENUM TRI_MOVE_MODE_ENUM
|
|
TRI_MOVE_MODE_CAMERA,
|
|
TRI_MOVE_MODE_GROUND,
|
|
TRI_MOVE_MODE_PREV,
|
|
TRI_MOVE_MODE_NEXT,
|
|
TRI_MOVE_MODE_SELECT
|
|
ENDENUM
|
|
|
|
// SPR Racer Reset.
|
|
ENUM TRI_RACER_RESET_ENUM
|
|
TRI_RACER_RESET_FAIL_OVER,
|
|
TRI_RACER_RESET_FAIL_SELECT_RETRY,
|
|
TRI_RACER_RESET_FAIL_HINT,
|
|
TRI_RACER_RESET_INIT,
|
|
TRI_RACER_RESET_CHOOSE,
|
|
TRI_RACER_RESET_FADE_OUT,
|
|
TRI_RACER_QUIT_FADE_OUT,
|
|
TRI_RACER_RESET_CREATE,
|
|
TRI_RACER_RESET_PLACE,
|
|
TRI_RACER_QUIT_PLACE,
|
|
TRI_RACER_RESET_FADE_IN,
|
|
TRI_RACER_QUIT_FADE_IN,
|
|
TRI_RACER_RESET_WAIT,
|
|
TRI_RACER_QUIT_EXIT
|
|
ENDENUM
|
|
|
|
// SPR Race Type.
|
|
ENUM TRI_RACE_TYPE_ENUM
|
|
TRI_RACE_TYPE_PLANE,
|
|
TRI_RACE_TYPE_OFFROAD,
|
|
TRI_RACE_TYPE_TRIATHLON
|
|
ENDENUM
|
|
|
|
// SPR Race Setup.
|
|
ENUM TRI_RACE_SETUP_ENUM
|
|
TRI_RACE_SETUP_INIT,
|
|
TRI_RACE_SETUP_LOAD_INIT,
|
|
TRI_RACE_SETUP_LOAD_WAIT,
|
|
TRI_RACE_SETUP_CREATE_INIT,
|
|
TRI_RACE_SETUP_CREATE_WAIT,
|
|
TRI_RACE_SETUP_WAIT,
|
|
TRI_RACE_SETUP_CLEANUP
|
|
ENDENUM
|
|
|
|
// SPR Race Update.
|
|
ENUM TRI_RACE_UPDATE_ENUM
|
|
TRI_RACE_UPDATE_INIT,
|
|
TRI_RACE_UPDATE_COUNTDOWN,
|
|
TRI_RACE_UPDATE_FINISH,
|
|
TRI_RACE_UPDATE_LEADERBOARD,
|
|
TRI_RACE_UPDATE_WAIT_ANIM_OUT,
|
|
TRI_RACE_UPDATE_FADE_OUT_BEFORE_FINISH,
|
|
TRI_RACE_UPDATE_FADE_IN_BEFORE_FINISH,
|
|
TRI_RACE_UPDATE_WAIT,
|
|
TRI_RACE_UPDATE_CLEANUP
|
|
ENDENUM
|
|
|
|
// SPR Race Gate stunt types
|
|
ENUM TRI_RACE_STUNT_GATE_ENUM
|
|
TRI_RACE_STUNT_GATE_NORMAL,
|
|
TRI_RACE_STUNT_GATE_INVERTED,
|
|
TRI_RACE_STUNT_GATE_SIDE_LEFT,
|
|
TRI_RACE_STUNT_GATE_SIDE_RIGHT
|
|
ENDENUM
|
|
|
|
//SPR Gate check types
|
|
ENUM TRI_RACE_GATE_STATUS
|
|
TRI_RACE_GATE_STATUS_INVALID = -1,
|
|
TRI_RACE_GATE_STATUS_PASS
|
|
ENDENUM
|
|
|
|
//SPR Gate check types
|
|
ENUM TRI_RACE_CHECKPOINT_TYPE
|
|
TRI_CHKPT_OFFROAD_DEFAULT = 0,
|
|
TRI_CHKPT_OFFROAD_FINISH,
|
|
TRI_CHKPT_STUNT_DEFAULT,
|
|
TRI_CHKPT_STUNT_STUNT,
|
|
TRI_CHKPT_STUNT_FINISH,
|
|
TRI_CHKPT_TRI_SWIM,
|
|
TRI_CHKPT_TRI_BIKE,
|
|
TRI_CHKPT_TRI_RUN,
|
|
TRI_CHKPT_TRI_FINISH,
|
|
TRI_CHKPT_TRI_FIRST_TRANS,
|
|
TRI_CHKPT_TRI_SECOND_TRANS
|
|
ENDENUM
|
|
|
|
ENUM TRI_RACE_GATE_FLAGS
|
|
TRI_RACE_GATE_FLAG_AP_IGNORE_GROUND = BIT0,
|
|
TRI_RACE_GATE_FLAG_CHECK_VEHICLE = BIT1,
|
|
TRI_RACE_GATE_FLAG_DO_NOT_SNAP_TO_GROUND = BIT2,
|
|
TRI_RACE_GATE_FLAG_PLAY_SOUND = BIT3
|
|
ENDENUM
|
|
|
|
#IF TRI_RACE_IS_TRIATHLON
|
|
// Determines how a Tri racer competes.
|
|
ENUM TRI_RACER_COMPETE_MODE
|
|
TRI_RACER_COMPETE_MODE_DEFAULT,
|
|
TRI_RACER_COMPETE_MODE_TIRED,
|
|
TRI_RACER_COMPETE_MODE_AGGRESSIVE,
|
|
TRI_RACER_COMPETE_MODE_FORCED_TIRED
|
|
ENDENUM
|
|
#ENDIF
|
|
|
|
ENUM TRI_SC_SCREEN_TEXT
|
|
TRI_SC_MAIN_TITLE,
|
|
TRI_SC_SCORE_TITLE,
|
|
TRI_SC_AWARD_TXT,
|
|
TRI_SC_SCORE_TXT,
|
|
TRI_SC_HISCORE_TXT,
|
|
TRI_SC_TOTAL_TXT,
|
|
TRI_SC_WEAPON_TXT,
|
|
TRI_SC_FIRED_TXT,
|
|
TRI_SC_HITS_TXT,
|
|
TRI_SC_ACC_TXT,
|
|
TRI_SC_TIMEREM_TXT,
|
|
TRI_SC_AWARDVAL_TXT,
|
|
TRI_SC_SCOREVAL_TXT,
|
|
TRI_SC_HISCOREVAL_TXT,
|
|
TRI_SC_TOTALVAL_TXT,
|
|
TRI_SC_WEAPONVAL_TXT,
|
|
TRI_SC_BRONZE_GOAL_TXT,
|
|
TRI_SC_SILVER_GOAL_TXT,
|
|
TRI_SC_GOLD_GOAL_TXT
|
|
ENDENUM
|
|
|
|
ENUM TRI_SC_SCREEN_SPRITE
|
|
TRI_SCREEN_MAIN_BACKGROUND,
|
|
TRI_SC_SOCIALCLUB_IMG,
|
|
TRI_SC_HITS_IMG,
|
|
TRI_SC_MEDAL_AWARD_IMG,
|
|
TRI_SC_BRONZE_IMG,
|
|
TRI_SC_SILVER_IMG,
|
|
TRI_SC_GOLD_IMG
|
|
ENDENUM
|
|
|
|
ENUM TRI_SC_SCREEN_RECT
|
|
TRI_SC_SCORE_BG,
|
|
TRI_SC_SCORE_EDGE,
|
|
TRI_SC_HIT_BG,
|
|
TRI_SC_INFO1_BG,
|
|
TRI_SC_INFO2_BG,
|
|
TRI_SC_INFO3_BG,
|
|
TRI_SC_INFO4_BG,
|
|
TRI_SC_INFO5_BG,
|
|
TRI_SC_INFO6_BG,
|
|
TRI_SC_INFO7_BG,
|
|
TRI_SC_INFO8_BG,
|
|
TRI_SC_BRONZE_BG,
|
|
TRI_SC_SILVER_BG,
|
|
TRI_SC_GOLD_BG,
|
|
TRI_SC_BRONZE_OVERLAY,
|
|
TRI_SC_SILVER_OVERLAY,
|
|
TRI_SC_GOLD_OVERLAY
|
|
ENDENUM
|
|
|
|
ENUM TRI_PLAYER_RESPAWN_STATE
|
|
TRI_RESPAWN_SET,
|
|
TRI_RESPAWN_INIT,
|
|
TRI_RESPAWN_CHECK,
|
|
TRI_RESPAWN_ACTIVE,
|
|
TRI_RESPAWN_WAIT,
|
|
TRI_RESPAWN_INVALID
|
|
ENDENUM
|
|
|
|
ENUM TRI_RACE_NEWS_EVENT
|
|
TRNE_INVALID = -1,
|
|
TRNE_NPC_WON_SWIM,
|
|
TRNE_NPC_WON_BIKE,
|
|
TRNE_NPC_WON_RACE,
|
|
TRNE_PLAYER_CRASH_NPC,
|
|
TRNE_PLAYER_CRASH,
|
|
TRNE_PLAYER_STAMINA,
|
|
TRNE_PLAYER_FALLBACK,
|
|
TRNE_PLAYER_RALLIED,
|
|
TRNE_PLAYER_MISSED_CHECKPT,
|
|
TRNE_PLAYER_IN_FIRST,
|
|
TRNE_PLAYER_IN_FIRST_LONGTERM,
|
|
TRNE_PLAYER_IN_LAST,
|
|
TRNE_PLAYER_IN_LAST_LONGTERM,
|
|
TRNE_PLAYER_IN_SECOND,
|
|
TRNE_RACE_STARTED
|
|
ENDENUM
|
|
|
|
ENUM TRI_RACE_EVENT_FLAGS
|
|
TREF_VALIDATE = BIT0,
|
|
TREF_TIMESTAMP = BIT1
|
|
ENDENUM
|
|
|
|
ENUM TRI_RACE_EVENT_DATA_FLAGS
|
|
TREDF_EMPTY = 0,
|
|
TREDF_LINE_SPOKEN = BIT0,
|
|
TREDF_PED_ADDED = BIT1,
|
|
TREDF_STAMINA_REGISTERED = BIT2,
|
|
TREDF_RALLYING = BIT3,
|
|
TREDF_FALLINGBACK = BIT4
|
|
ENDENUM
|
|
|
|
// -----------------------------------
|
|
// STRUCTURES
|
|
// -----------------------------------
|
|
|
|
// SPR Main.
|
|
STRUCT TRI_MAIN_STRUCT
|
|
INT iTRIMode
|
|
TRI_MAIN_RUN_ENUM eRun
|
|
StructTimer tSetup
|
|
TRI_MAIN_SETUP_ENUM eSetup
|
|
TRI_MAIN_UPDATE_ENUM eUpdate
|
|
CAM_VIEW_MODE eStartCam
|
|
ENDSTRUCT
|
|
|
|
// SPR Display.
|
|
STRUCT TRI_DISPLAY_STRUCT
|
|
StructTimer tCnt
|
|
ENDSTRUCT
|
|
|
|
// SPR Input.
|
|
STRUCT TRI_INPUT_STRUCT
|
|
INT iLS_X, iLS_Y
|
|
INT iRS_X, iRS_Y
|
|
ENDSTRUCT
|
|
|
|
// SPR Camera.
|
|
STRUCT TRI_CAMERA_STRUCT
|
|
CAMERA_INDEX Lst, Cur
|
|
OBJECT_INDEX DummyCam
|
|
FLOAT fZoom
|
|
TRI_CAMERA_MODE_ENUM eMode
|
|
TRI_CAMERA_FOCUS_ENUM eFocus
|
|
ENDSTRUCT
|
|
|
|
STRUCT TRI_HINT_CAM_STRUCT
|
|
BOOL bActive
|
|
// ENTITY_INDEX Entity
|
|
VECTOR Coord
|
|
// PS_HINT_CAM_ENUM HintType
|
|
CAMERA_INDEX CustomCam
|
|
ENDSTRUCT
|
|
|
|
// SPR Gate.
|
|
STRUCT TRI_GATE_STRUCT
|
|
VECTOR vHeading
|
|
VECTOR vPos
|
|
FLOAT fRadius
|
|
FLOAT fHeightCheck
|
|
INT iHUDAlphaAfterPass
|
|
BLIP_INDEX Blip
|
|
CHECKPOINT_INDEX Chkpnt
|
|
TRI_RACE_CHECKPOINT_TYPE eChkpntType
|
|
INT iGateFlags
|
|
BOOL bIsFading
|
|
ENDSTRUCT
|
|
|
|
/// Everything about the player's vehicle that he drove to the race up in.
|
|
STRUCT TRI_PLAYER_VEHICLE_STRUCT
|
|
BOOL bRecreateSavedVeh = FALSE
|
|
BOOL bProperlyInit = FALSE
|
|
INT iVehicleColor
|
|
MODEL_NAMES modelName = DUMMY_MODEL_FOR_SCRIPT
|
|
VEHICLE_SETUP_STRUCT sVehicleSetup
|
|
ENDSTRUCT
|
|
|
|
FUNC STRING GET_TRI_GATE_FLAG_NAME(TRI_RACE_GATE_FLAGS eFlag)
|
|
SWITCH eFlag
|
|
CASE TRI_RACE_GATE_FLAG_AP_IGNORE_GROUND RETURN "TRI_RACE_GATE_FLAG_AP_IGNORE_GROUND"
|
|
CASE TRI_RACE_GATE_FLAG_CHECK_VEHICLE RETURN "TRI_RACE_GATE_FLAG_CHECK_VEHICLE"
|
|
CASE TRI_RACE_GATE_FLAG_DO_NOT_SNAP_TO_GROUND RETURN "TRI_RACE_GATE_FLAG_DO_NOT_SNAP_TO_GROUND"
|
|
CASE TRI_RACE_GATE_FLAG_PLAY_SOUND RETURN "TRI_RACE_GATE_FLAG_PLAY_SOUND"
|
|
ENDSWITCH
|
|
RETURN "Unknown TRI_RACE_GATE_FLAGS"
|
|
ENDFUNC
|
|
|
|
FUNC BOOL IS_TRI_GATE_FLAG_SET(TRI_GATE_STRUCT &tGateStruct, TRI_RACE_GATE_FLAGS eFlagToCheck)
|
|
RETURN IS_BITMASK_AS_ENUM_SET(tGateStruct.iGateFlags, eFlagToCheck)
|
|
ENDFUNC
|
|
PROC SET_TRI_GATE_FLAG(TRI_GATE_STRUCT &tGateStruct, TRI_RACE_GATE_FLAGS eFlagToSet)
|
|
IF NOT IS_TRI_GATE_FLAG_SET(tGateStruct, eFlagToSet)
|
|
SET_BITMASK_AS_ENUM(tGateStruct.iGateFlags, eFlagToSet)
|
|
CPRINTLN(DEBUG_TRIATHLON, "[Triathlon.sc->SET_TRI_CONTROL_FLAG] :: ", GET_TRI_GATE_FLAG_NAME(eFlagToSet))
|
|
ENDIF
|
|
ENDPROC
|
|
PROC CLEAR_TRI_GATE_FLAG(TRI_GATE_STRUCT &tGateStruct, TRI_RACE_GATE_FLAGS eFlagToClear)
|
|
IF IS_TRI_GATE_FLAG_SET(tGateStruct, eFlagToClear)
|
|
CLEAR_BITMASK_AS_ENUM(tGateStruct.iGateFlags, eFlagToClear)
|
|
CPRINTLN(DEBUG_TRIATHLON, "[Triathlon.sc->CLEAR_TRI_CONTROL_FLAG] :: ", GET_TRI_GATE_FLAG_NAME(eFlagToClear))
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
// SPR Racer.
|
|
STRUCT TRI_RACER_STRUCT
|
|
TEXT_LABEL_31 szName
|
|
PED_INDEX Driver
|
|
VEHICLE_INDEX Vehicle
|
|
BLIP_INDEX Blip
|
|
INT iGateCur, iRank
|
|
FLOAT fClockTime
|
|
FLOAT fPlsMnsLst
|
|
FLOAT fPlsMnsTot
|
|
VECTOR vStartPos
|
|
FLOAT fStartHead
|
|
FLOAT fAnimWait // Used only during the countdown
|
|
PED_TYPE eDriverType
|
|
MODEL_NAMES eDriverModel
|
|
MODEL_NAMES eVehicleModel
|
|
TRI_RACER_RESET_ENUM eReset
|
|
structPedsForConversation pedConvo
|
|
|
|
#IF TRI_RACE_IS_TRIATHLON
|
|
FLOAT fMinMoveBlendRatioOnFoot, fMaxMoveBlendRatioOnFoot
|
|
FLOAT fMinMoveBlendRatioInWater, fMaxMoveBlendRatioInWater
|
|
FLOAT fMinBikeSpeed, fMaxBikeSpeed
|
|
|
|
INT iSkillPlacement
|
|
//Added this for any ai needs for use with TRI_AI_CONTROL_FLAGS primarily used for B*1516859
|
|
INT iAIBitFlags
|
|
|
|
TRI_RACER_COMPETE_MODE eCompeteMode
|
|
|
|
structTimer timerInCurrentCompeteMode
|
|
structTimer timerRacerVehicleIdle
|
|
|
|
STRING szCurrentBikeRecordingName // Necessary for Ironman, to switch a racer's waypoint vehicle recoring.
|
|
#ENDIF
|
|
|
|
ENDSTRUCT
|
|
ENUM TRI_AI_CONTROL_FLAGS
|
|
|
|
TACF_REQUEST_HELMET_ASSETS = BIT0,
|
|
TACF_BANIMSPED = BIT1,
|
|
TACF_BSETSPEED = BIT2,
|
|
TACF_BHASBEENONABIKE = BIT3
|
|
|
|
ENDENUM
|
|
|
|
FUNC STRING GET_TRI_AI_CONTROL_FLAG_NAME(TRI_AI_CONTROL_FLAGS eFlag)
|
|
SWITCH eFlag
|
|
CASE TACF_REQUEST_HELMET_ASSETS RETURN "TACF_REQUEST_HELMET_ASSETS"
|
|
CASE TACF_BANIMSPED RETURN "TACF_BANIMSPED"
|
|
CASE TACF_BSETSPEED RETURN "TACF_BSETSPEED"
|
|
CASE TACF_BHASBEENONABIKE RETURN "TACF_BHASBEENONABIKE"
|
|
ENDSWITCH
|
|
RETURN "Unknown TRI_AI_CONTROL_FLAGS"
|
|
ENDFUNC
|
|
|
|
FUNC BOOL IS_TRI_AI_CONTROL_FLAG_SET(TRI_RACER_STRUCT &tRacerStruct, TRI_AI_CONTROL_FLAGS eFlagToCheck)
|
|
RETURN IS_BITMASK_AS_ENUM_SET(tRacerStruct.iAIBitFlags, eFlagToCheck)
|
|
ENDFUNC
|
|
PROC SET_TRI_AI_CONTROL_FLAG(TRI_RACER_STRUCT &tRacerStruct, TRI_AI_CONTROL_FLAGS eFlagToSet)
|
|
IF NOT IS_TRI_AI_CONTROL_FLAG_SET(tRacerStruct, eFlagToSet)
|
|
SET_BITMASK_AS_ENUM(tRacerStruct.iAIBitFlags, eFlagToSet)
|
|
CPRINTLN(DEBUG_TRIATHLON, "[Triathlon.sc->SET_TRI_AI_CONTROL_FLAG] :: ", GET_TRI_AI_CONTROL_FLAG_NAME(eFlagToSet))
|
|
ENDIF
|
|
ENDPROC
|
|
PROC CLEAR_TRI_AI_CONTROL_FLAG(TRI_RACER_STRUCT &tRacerStruct, TRI_AI_CONTROL_FLAGS eFlagToClear)
|
|
IF IS_TRI_AI_CONTROL_FLAG_SET(tRacerStruct,eFlagToClear)
|
|
CLEAR_BITMASK_AS_ENUM(tRacerStruct.iAIBitFlags, eFlagToClear)
|
|
CPRINTLN(DEBUG_TRIATHLON, "[Triathlon.sc->CLEAR_TRI_AI_CONTROL_FLAG] :: ", GET_TRI_AI_CONTROL_FLAG_NAME(eFlagToClear))
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
ENUM TRI_UI_FLAGS
|
|
TUIF_SCLB_PROFILE_BUTTON_SHOWN = BIT0,
|
|
TUIF_REPLACE_ME_FLAG = BIT1 // replace this, it's unused and just for space in the switch statement below
|
|
ENDENUM
|
|
FUNC STRING GET_STRING_FROM_TRI_UI_FLAG(TRI_UI_FLAGS eFlag)
|
|
SWITCH eFlag
|
|
CASE TUIF_SCLB_PROFILE_BUTTON_SHOWN RETURN "TUIF_SCLB_PROFILE_BUTTON_SHOWN"
|
|
CASE TUIF_REPLACE_ME_FLAG RETURN "TUIF_REPLACE_ME_FLAG"
|
|
ENDSWITCH
|
|
RETURN "Unknown TRI_UI_FLAGS flag"
|
|
ENDFUNC
|
|
|
|
// SPR Race.
|
|
STRUCT TRI_RACE_STRUCT
|
|
StructTimer tClock
|
|
FLOAT fBestClockTime
|
|
FLOAT fBestSplitTime
|
|
FLOAT fCinCamTimer
|
|
FLOAT fCheeringTimer
|
|
INT iBlockQuitInputTimer
|
|
INT iNewsTickerTime, iNewsInterruptStamp
|
|
INT iGateCheck
|
|
INT iGateCnt, iRacerCnt
|
|
INT iCountdownStamp
|
|
INT iCheerMasterSound, iWallaSound
|
|
INT iFrameCount
|
|
STRING FailString
|
|
TRI_DISPLAY_STRUCT Display
|
|
StructTimer tUpdate
|
|
TRI_RACE_SETUP_ENUM eSetup
|
|
TRI_RACE_UPDATE_ENUM eUpdate
|
|
TRI_GATE_STRUCT sGate[TRI_GATE_MAX]
|
|
TRI_RACER_STRUCT Racer[TRI_RACER_MAX]
|
|
MEGA_PLACEMENT_TOOLS uiScorecard
|
|
SCALEFORM_INDEX uiLeaderboard
|
|
SCRIPT_SCALEFORM_BIG_MESSAGE bigMessageUI
|
|
OBJECT_INDEX objSwimLegBuoys[7]
|
|
OBJECT_INDEX objErrantBuoy1
|
|
OBJECT_INDEX objErrantBuoy2
|
|
VECTOR vCheeringAreas[2]
|
|
SCENARIO_BLOCKING_INDEX sbiStart
|
|
TRI_PLAYER_RESPAWN_STATE ePlayerRespawnState
|
|
BOOL bPlayerRespawning = FALSE
|
|
BOOL bDidWeRestart, bRestarting
|
|
TRI_UI_FLAGS eUIFlags
|
|
|
|
//Latest additions are going under here since I don't see any particular order
|
|
TRI_PLAYER_VEHICLE_STRUCT sPlayerVehicleData
|
|
|
|
ENDSTRUCT
|
|
|
|
/// PURPOSE:
|
|
/// Accessor. Sets how long, in ms, the system will block Accept input on the quit screen
|
|
PROC TRI_SET_BLOCK_QUIT_INPUT_TIMER( TRI_RACE_STRUCT & race )
|
|
race.iBlockQuitInputTimer = GET_GAME_TIMER() + TRI_BLOCK_QUIT_INPUT_DURATION
|
|
CDEBUG2LN( DEBUG_TRIATHLON, "TRI_SET_BLOCK_QUIT_INPUT_TIMER, TRI_BLOCK_QUIT_INPUT_DURATION = ", TRI_BLOCK_QUIT_INPUT_DURATION, ", race.iBlockQuitInputTimer = ", race.iBlockQuitInputTimer )
|
|
ENDPROC
|
|
|
|
/// PURPOSE:
|
|
/// Accessor. Denotes when we can accept accept input on the quit screen, check against game time
|
|
FUNC INT TRI_GET_BLOCK_QUIT_INPUT_TIMER( TRI_RACE_STRUCT & race )
|
|
RETURN race.iBlockQuitInputTimer
|
|
ENDFUNC
|
|
|
|
/// PURPOSE:
|
|
/// Needs to be called during quit screen to update the timer. This is because GET_GAME_TIMER() doesn't update during the pause.
|
|
PROC TRI_UPDATE_BLOCK_QUIT_INPUT_TIMER( TRI_RACE_STRUCT & race )
|
|
FLOAT fFrameTime = GET_FRAME_TIME()
|
|
race.iBlockQuitInputTimer -= ROUND( fFrameTime * 1000 )
|
|
CDEBUG2LN( DEBUG_TRIATHLON, "TRI_SET_BLOCK_QUIT_INPUT_TIMER, fFrameTime = ", fFrameTime, ", race.iBlockQuitInputTimer = ", race.iBlockQuitInputTimer )
|
|
ENDPROC
|
|
|
|
PROC SET_TRI_RACE_UI_FLAG(TRI_RACE_STRUCT &race, TRI_UI_FLAGS eFlag)
|
|
CDEBUG2LN(DEBUG_TRIATHLON, "SET_TRI_RACE_UI_FLAG :: setting ", GET_STRING_FROM_TRI_UI_FLAG(eFlag))
|
|
race.eUIFlags = race.eUIFlags | eFlag
|
|
ENDPROC
|
|
|
|
PROC CLEAR_TRI_RACE_UI_FLAG(TRI_RACE_STRUCT &race, TRI_UI_FLAGS eFlag)
|
|
CDEBUG2LN(DEBUG_TRIATHLON, "CLEAR_TRI_RACE_UI_FLAG :: clearing ", GET_STRING_FROM_TRI_UI_FLAG(eFlag))
|
|
race.eUIFlags -= race.eUIFlags & eFlag
|
|
ENDPROC
|
|
|
|
FUNC BOOL IS_TRI_RACE_UI_FLAG_SET(TRI_RACE_STRUCT &race, TRI_UI_FLAGS eFlag)
|
|
RETURN (ENUM_TO_INT(race.eUIFlags) & ENUM_TO_INT(eFlag)) <> 0
|
|
ENDFUNC
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
|
|
// SPR Widget toggle.
|
|
STRUCT TRI_WIDGET_TOGGLE
|
|
BOOL bCur, bLst
|
|
ENDSTRUCT
|
|
|
|
// SPR Widget button.
|
|
STRUCT TRI_WIDGET_BUTTON
|
|
BOOL bCur
|
|
ENDSTRUCT
|
|
|
|
// SPR Widget int.
|
|
STRUCT TRI_WIDGET_INT
|
|
INT iCur, iLst
|
|
ENDSTRUCT
|
|
|
|
// SPR Widget float.
|
|
STRUCT TRI_WIDGET_FLOAT
|
|
FLOAT fCur, fLst
|
|
ENDSTRUCT
|
|
|
|
// SPR Widget vector.
|
|
STRUCT TRI_WIDGET_VECTOR
|
|
VECTOR vCur, vLst
|
|
ENDSTRUCT
|
|
|
|
// SPR Widget Textbox.
|
|
STRUCT TRI_WIDGET_TEXTBOX
|
|
TEXT_WIDGET_ID WidgetID
|
|
TEXT_LABEL_31 szCur, szLst
|
|
ENDSTRUCT
|
|
|
|
// SPR Widget Listbox.
|
|
STRUCT TRI_WIDGET_LISTBOX
|
|
INT iCur, iLst
|
|
ENDSTRUCT
|
|
|
|
// SPR Widget Gates.
|
|
STRUCT TRI_WIDGET_GATES
|
|
WIDGET_GROUP_ID GroupID
|
|
TRI_WIDGET_BUTTON Create
|
|
TRI_WIDGET_BUTTON Delete
|
|
TRI_WIDGET_TOGGLE ShowAll
|
|
TRI_WIDGET_BUTTON SnapSelected
|
|
TRI_WIDGET_INT Selection
|
|
TRI_WIDGET_VECTOR Position
|
|
TRI_WIDGET_FLOAT Radius
|
|
TRI_WIDGET_LISTBOX ChkpntType
|
|
TRI_WIDGET_LISTBOX StuntType
|
|
TRI_WIDGET_LISTBOX RelMode
|
|
TRI_WIDGET_TOGGLE RelAbs
|
|
TRI_WIDGET_VECTOR RelMove
|
|
ENDSTRUCT
|
|
|
|
// SPR Widget Racers.
|
|
STRUCT TRI_WIDGET_RACERS
|
|
WIDGET_GROUP_ID GroupID
|
|
TRI_WIDGET_BUTTON Create
|
|
TRI_WIDGET_BUTTON Delete
|
|
TRI_WIDGET_TOGGLE ShowAll
|
|
TRI_WIDGET_INT Selection
|
|
TRI_WIDGET_TEXTBOX Name
|
|
TRI_WIDGET_VECTOR Position
|
|
TRI_WIDGET_FLOAT Heading
|
|
TRI_WIDGET_LISTBOX DriverType
|
|
TRI_WIDGET_LISTBOX DriverModel
|
|
TRI_WIDGET_LISTBOX VehicleModel
|
|
TRI_WIDGET_LISTBOX RelMode
|
|
TRI_WIDGET_TOGGLE RelAbs
|
|
TRI_WIDGET_VECTOR RelMove
|
|
BOOL bRacerQueue[TRI_RACER_MAX]
|
|
ENDSTRUCT
|
|
|
|
// SPR Widget Race.
|
|
STRUCT TRI_WIDGET_RACE
|
|
WIDGET_GROUP_ID GroupID
|
|
TRI_WIDGET_TEXTBOX Error
|
|
//TRI_WIDGET_FLOAT Time
|
|
TRI_WIDGET_TEXTBOX Name
|
|
TRI_WIDGET_TEXTBOX FileName
|
|
TRI_WIDGET_BUTTON Create
|
|
TRI_WIDGET_LISTBOX Pick
|
|
TRI_WIDGET_BUTTON Load
|
|
TRI_WIDGET_BUTTON Save
|
|
TRI_WIDGET_BUTTON Export
|
|
TRI_WIDGET_GATES Gates
|
|
TRI_WIDGET_RACERS Racers
|
|
TRI_RACE_STRUCT Race
|
|
ENDSTRUCT
|
|
|
|
// SPR Widget Race Mode.
|
|
STRUCT TRI_WIDGET_RACEMODE
|
|
WIDGET_GROUP_ID GroupID
|
|
ENDSTRUCT
|
|
|
|
// SPR Widget Edit Mode.
|
|
STRUCT TRI_WIDGET_EDITMODE
|
|
WIDGET_GROUP_ID GroupID
|
|
TRI_WIDGET_LISTBOX CamMode
|
|
TRI_WIDGET_LISTBOX CamFocus
|
|
TRI_WIDGET_RACE Race
|
|
TRI_INPUT_STRUCT Input
|
|
TRI_CAMERA_STRUCT Camera
|
|
ENDSTRUCT
|
|
|
|
// SPR Widget Main.
|
|
STRUCT TRI_WIDGET_MAIN
|
|
WIDGET_GROUP_ID GroupID
|
|
TRI_WIDGET_LISTBOX TRIMode
|
|
TRI_WIDGET_RACEMODE RaceMode
|
|
TRI_WIDGET_EDITMODE EditMode
|
|
ENDSTRUCT
|
|
|
|
#ENDIF // IS_DEBUG_BUILD
|
|
|
|
STRUCT TRI_NEWS_EVENT_NODE
|
|
TRI_RACE_NEWS_EVENT eNews
|
|
TRI_RACE_EVENT_FLAGS eFlags
|
|
INT iTimeStamp
|
|
INT iPriority
|
|
ENDSTRUCT
|
|
|
|
STRUCT TRI_NEWS_EVENT_DATA
|
|
TRI_RACE_NEWS_EVENT eLastEvent = TRNE_INVALID
|
|
|
|
TRI_NEWS_EVENT_NODE sEvents[TRI_EVENT_QUEUE_COUNT]
|
|
|
|
INT iCurRank
|
|
INT iLastRank
|
|
INT iRallyFallbackRank
|
|
|
|
structTimer sRankTimer
|
|
structTimer sLastCommentaryTimer
|
|
structTimer sLongRankTimer
|
|
structTimer sRallyFallbackTimer
|
|
|
|
|
|
TRI_RACE_EVENT_DATA_FLAGS eFlags
|
|
structPedsForConversation convoStruct
|
|
ENDSTRUCT
|
|
|
|
// SPR Master.
|
|
STRUCT TRI_MASTER_STRUCT
|
|
TRI_RACE_TYPE_ENUM eRaceType
|
|
VEHICLE_INDEX PlayerVeh
|
|
TRI_RACE_CHECKPOINT_TYPE eDefChkPntType
|
|
VECTOR vDefRcrPos
|
|
FLOAT fDefRcrHead
|
|
PED_TYPE eDefDrvType
|
|
MODEL_NAMES eDefDrvModel
|
|
MODEL_NAMES eDefVehModel
|
|
TEXT_LABEL_63 szXMLPath
|
|
TEXT_LABEL_63 szSCHPath
|
|
TEXT_LABEL_15 szTRIPath
|
|
TEXT_LABEL_31 szMainPath
|
|
TEXT_LABEL_15 szRacesPath
|
|
INT iRaceCur, iRaceCnt
|
|
FLOAT fRaceTime[TRI_RACE_MAX]
|
|
TEXT_LABEL_31 szRaceName[TRI_RACE_MAX]
|
|
TEXT_LABEL_31 szRaceFileName[TRI_RACE_MAX]
|
|
FLOAT fTimeGold[TRI_RACE_MAX]
|
|
FLOAT fTimeBronze[TRI_RACE_MAX]
|
|
INT iBS // Added for Conor's offline SCLB warning message
|
|
|
|
OBJECT_INDEX oTable
|
|
OBJECT_INDEX oClipboard
|
|
OBJECT_INDEX oPencil
|
|
PED_INDEX pedTableGuy
|
|
PED_VARIATION_STRUCT sPlayerVariation
|
|
BOOL bVariationRestored = FALSE
|
|
|
|
BOOL bOutfitChanged = FALSE
|
|
BOOL bQuitting = FALSE
|
|
SIMPLE_USE_CONTEXT uiInput
|
|
|
|
// Once done with testing, convert to hardcoded
|
|
INT iNavBlockAreas[5]
|
|
|
|
TRI_NEWS_EVENT_DATA sEventData
|
|
// FLOAT fNavBlockHeadings[5]
|
|
// VECTOR vNavBlockScales[5]
|
|
// VECTOR vNavBlockPositions[5]
|
|
//SCRIPT_SCALEFORM_UI uiInput
|
|
ENDSTRUCT
|
|
|
|
PROC SETUP_NAVMESH_BLOCKING_VALUES_HARDCODED(TRIATHLON_RACE_INDEX eCurrentTriRace, INT iNavIndex, VECTOR& vPos, VECTOR& vScale, FLOAT& fHeading)
|
|
SWITCH eCurrentTriRace
|
|
CASE TRIATHLON_RACE_VESPUCCI
|
|
SWITCH iNavIndex
|
|
CASE 0
|
|
vPos = << -1285.28811, -2039.94321, 1.60045 >>
|
|
vScale = << 4.0, 10.2, 10.0>>
|
|
fHeading = 2.3168
|
|
BREAK
|
|
CASE 1
|
|
vPos = << -1268.66729, -2024.77961, 1.56780 >>
|
|
vScale = << 4.0, 10.2, 10.0>>
|
|
fHeading = 2.4
|
|
BREAK
|
|
CASE 2
|
|
vPos = << -1227.08472, -2053.45801, 12.98837 >>
|
|
vScale = << 5.0, 14.0, 10.0 >>
|
|
fHeading = 2.6
|
|
BREAK
|
|
CASE 3
|
|
vPos = << -1210.86499, -2052.28882, 13.0 >>
|
|
vScale = << 1.96, 3.0, 10.0 >>
|
|
fHeading = 2.865
|
|
BREAK
|
|
CASE 4
|
|
vPos = << -1215.45227, -2065.8811, 13.0 >>
|
|
vScale = << 1.63, 2.9, 10.0 >>
|
|
fHeading = 2.685
|
|
BREAK
|
|
ENDSWITCH
|
|
BREAK
|
|
CASE TRIATHLON_RACE_ALAMO_SEA
|
|
SWITCH iNavIndex
|
|
CASE 0
|
|
vPos = << 2384.31685, 4268.87617, 30.44363 >>
|
|
vScale = << 4.0, 10.0, 10.0>>
|
|
fHeading = 6.047
|
|
BREAK
|
|
CASE 1
|
|
vPos = << 2384.97534, 4289.71924, 30.32816 >>
|
|
vScale = << 4.0, 10.0, 10.0>>
|
|
fHeading = 3.238
|
|
BREAK
|
|
CASE 2
|
|
vPos = << 2436.90698, 4282.84961, 35.58720 >>
|
|
vScale = << 4.5, 13.0, 10.0 >>
|
|
fHeading = 3.019
|
|
BREAK
|
|
CASE 3
|
|
vPos = << 2411.25024, 4298.00635, 34.98311 >>
|
|
vScale = << 2.1, 3.2, 10.0 >>
|
|
fHeading = 1.19
|
|
BREAK
|
|
CASE 4
|
|
vPos = << 0.0, 0.0, 0.0 >>
|
|
vScale = << 1.63, 2.9, 0.0 >>
|
|
fHeading = 2.685
|
|
BREAK
|
|
ENDSWITCH
|
|
BREAK
|
|
CASE TRIATHLON_RACE_IRONMAN
|
|
SWITCH iNavIndex
|
|
CASE 0
|
|
vPos = << 1568.879, 3829.782, 30.95098 >>
|
|
vScale = << 4.0, 9.9, 10.0>>
|
|
fHeading = 2.107
|
|
BREAK
|
|
CASE 1
|
|
vPos = << 1586.192, 3842.765, 30.538 >>
|
|
vScale = << 4.0, 9.9, 10.0>>
|
|
fHeading = 2.295
|
|
BREAK
|
|
CASE 2
|
|
vPos = << 1594.00220, 3810.71753, 33.55904 >>
|
|
vScale = << 4.0, 12.0, 10.0 >>
|
|
fHeading = 2.251
|
|
BREAK
|
|
CASE 3
|
|
vPos = << 1604.67896, 3828.30786, 33.82485 >>
|
|
vScale = << 1.96, 3.0, 10.0 >>
|
|
fHeading = 0.876
|
|
BREAK
|
|
CASE 4
|
|
vPos = << 1607.13513, 3824.38794, 33.06039 >>
|
|
vScale = << 1.63, 2.9, 0.0 >>
|
|
fHeading = 0.0
|
|
BREAK
|
|
ENDSWITCH
|
|
BREAK
|
|
ENDSWITCH
|
|
ENDPROC
|
|
|
|
// Debug only. Only used for adjusting positions if needed. If adjusting, remember to update the hardcoded versions
|
|
//PROC SETUP_NAVMESH_BLOCKING_VALUES(TRI_MASTER_STRUCT& triMaster, TRIATHLON_RACE_INDEX eCurrentTriRace)
|
|
// SWITCH eCurrentTriRace
|
|
// CASE TRIATHLON_RACE_VESPUCCI
|
|
// // 0 - Gate left
|
|
// // 1 - Gate right
|
|
// // 2 - Registration tent
|
|
// // 3 - Food truck 1
|
|
// // 4 - Food truck 2
|
|
// triMaster.vNavBlockPositions[0] = << -1285.28811, -2039.94321, 1.60045 >>
|
|
// triMaster.vNavBlockPositions[1] = << -1268.66729, -2024.77961, 1.56780 >>
|
|
// triMaster.vNavBlockPositions[2] = << -1227.08472, -2053.45801, 12.98837 >>
|
|
// triMaster.vNavBlockPositions[3] = << -1210.86499, -2052.28882, 13.0 >>
|
|
// triMaster.vNavBlockPositions[4] = << -1215.45227, -2065.8811, 13.0 >>
|
|
//
|
|
// triMaster.fNavBlockHeadings[0] = 2.3168
|
|
// triMaster.fNavBlockHeadings[1] = 2.4
|
|
// triMaster.fNavBlockHeadings[2] = 2.6
|
|
// triMaster.fNavBlockHeadings[3] = 2.865
|
|
// triMaster.fNavBlockHeadings[4] = 2.685
|
|
//
|
|
// triMaster.vNavBlockScales[0] = << 4.0, 10.2, 10.0>>
|
|
// triMaster.vNavBlockScales[1] = << 4.0, 10.2, 10.0>>
|
|
// triMaster.vNavBlockScales[2] = << 5.0, 14.0, 10.0 >>
|
|
// triMaster.vNavBlockScales[3] = << 1.96, 3.0, 10.0 >>
|
|
// triMaster.vNavBlockScales[4] = << 1.63, 2.9, 10.0 >>
|
|
//
|
|
// CPRINTLN(DEBUG_TRIATHLON, "BLOCK_NAV_AROUND_TRIATHLON_PROPS: Blocking props at TRIATHLON_RACE_VESPUCCI location")
|
|
// BREAK
|
|
// CASE TRIATHLON_RACE_ALAMO_SEA
|
|
// // 0 - Gate left
|
|
// // 1 - Gate right
|
|
// // 2 - Registration tent
|
|
// // 3 - Food truck 1
|
|
// triMaster.vNavBlockPositions[0] = << 2384.31685, 4268.87617, 30.44363 >>
|
|
// triMaster.vNavBlockPositions[1] = << 2384.97534, 4289.71924, 30.32816 >>
|
|
// triMaster.vNavBlockPositions[2] = << 2436.90698, 4282.84961, 35.58720 >>
|
|
// triMaster.vNavBlockPositions[3] = << 2411.25024, 4298.00635, 34.98311 >>
|
|
// triMaster.vNavBlockPositions[4] = << 0,0,0 >>
|
|
//
|
|
// triMaster.vNavBlockScales[0] = << 4.0, 10.0, 10.0>>
|
|
// triMaster.vNavBlockScales[1] = << 4.0, 10.0, 10.0>>
|
|
// triMaster.vNavBlockScales[2] = << 4.5, 13.0, 10.0 >>
|
|
// triMaster.vNavBlockScales[3] = << 2.1, 3.2, 10.0 >>
|
|
// triMaster.vNavBlockScales[4] = << 1.63, 2.9, 0.0 >>
|
|
//
|
|
// triMaster.fNavBlockHeadings[0] = 6.047
|
|
// triMaster.fNavBlockHeadings[1] = 3.238
|
|
// triMaster.fNavBlockHeadings[2] = 3.019
|
|
// triMaster.fNavBlockHeadings[3] = 1.19
|
|
// triMaster.fNavBlockHeadings[4] = 0.0
|
|
//
|
|
// CPRINTLN(DEBUG_TRIATHLON, "BLOCK_NAV_AROUND_TRIATHLON_PROPS: Blocking props at TRIATHLON_RACE_ALAMO_SEA location")
|
|
// BREAK
|
|
// CASE TRIATHLON_RACE_IRONMAN
|
|
// // 0 - Gate left
|
|
// // 1 - Gate right
|
|
// // 2 - Registration tent
|
|
// // 3 - Food truck 1
|
|
// // 4 - Food truck 2
|
|
// triMaster.vNavBlockPositions[0] = << 1568.879, 3829.782, 30.95098 >>
|
|
// triMaster.vNavBlockPositions[1] = << 1586.192, 3842.765, 30.538 >>
|
|
// triMaster.vNavBlockPositions[2] = << 1594.00220, 3810.71753, 33.55904 >>
|
|
// triMaster.vNavBlockPositions[3] = << 1604.67896, 3828.30786, 33.82485 >>
|
|
// triMaster.vNavBlockPositions[4] = << 1607.13513, 3824.38794, 33.06039 >>
|
|
//
|
|
// triMaster.fNavBlockHeadings[0] = 2.107
|
|
// triMaster.fNavBlockHeadings[1] = 2.295
|
|
// triMaster.fNavBlockHeadings[2] = 2.251
|
|
// triMaster.fNavBlockHeadings[3] = 0.876
|
|
// triMaster.fNavBlockHeadings[4] = 0.0
|
|
//
|
|
// triMaster.vNavBlockScales[0] = << 4.0, 9.9, 10.0>>
|
|
// triMaster.vNavBlockScales[1] = << 4.0, 9.9, 10.0>>
|
|
// triMaster.vNavBlockScales[2] = << 4.0, 12.0, 10.0 >>
|
|
// triMaster.vNavBlockScales[3] = << 1.96, 3.0, 10.0 >>
|
|
// triMaster.vNavBlockScales[4] = << 1.63, 2.9, 0.0 >>
|
|
//
|
|
// CPRINTLN(DEBUG_TRIATHLON, "BLOCK_NAV_AROUND_TRIATHLON_PROPS: Blocking props at TRIATHLON_RACE_IRONMAN location")
|
|
// BREAK
|
|
// ENDSWITCH
|
|
//ENDPROC
|
|
|
|
|
|
// =====================================
|
|
// BEGIN Bitflags for Tri
|
|
// =====================================
|
|
|
|
// Check if the player has been warned about failing the race
|
|
/// PURPOSE: Control flags and functions (below) for controlling tri fail reasons and other stuff
|
|
ENUM TRI_CONTROL_FLAGS
|
|
TCF_TOLD_HOW_TO_QUIT = BIT0,
|
|
TCF_WARNED_AND_LEFT_VEHICLE = BIT1,
|
|
TCF_CAN_FORFEIT_ON_TRIBIKE = BIT2,
|
|
TCF_SHOW_CHECKPOINTS = BIT3,
|
|
TCF_NEWS_CAM_SHOWN = BIT4,
|
|
TCF_NEWS_CAM_ACTIVE = BIT5,
|
|
TCF_FINISHED_RACE = BIT6,
|
|
TCF_SKIP_INTRO_ON_RESTART = BIT7,
|
|
TCF_HAS_BEEN_ON_BIKE = BIT8,
|
|
TCF_RACE_RESTARTING = BIT9,
|
|
TCF_FAIL_CHECKING = BIT10,
|
|
TCF_TRI_MOUNTED = BIT11,
|
|
TCF_TRI_CUTSCENE_PLAYING = BIT12,
|
|
TCF_TRI_SKIPPED_CUTSCENE = BIT13,
|
|
TCF_INTRO_ANIM_SPEEDS_SET = BIT14,
|
|
TCF_BIG_CHEERS_PLAYED = BIT15,
|
|
TCF_END_MENU_CREATED = BIT16,
|
|
TCF_RACER_WAYPOINTED_1 = BIT17, // These may be refactored into the racer struct if more TCFs are needed
|
|
TCF_RACER_WAYPOINTED_2 = BIT18, //
|
|
TCF_RACER_WAYPOINTED_3 = BIT19, //
|
|
TCF_RACER_WAYPOINTED_4 = BIT20, //
|
|
TCF_RACER_WAYPOINTED_5 = BIT21, //
|
|
TCF_RACER_WAYPOINTED_6 = BIT22, //
|
|
TCF_RACER_WAYPOINTED_7 = BIT23, //
|
|
TCF_REMOVED_SWIM_GEAR = BIT24,
|
|
TCF_UNPATCH_CORONA = BIT25,
|
|
TCF_SHOW_SCLB = BIT26,
|
|
TCF_NEWS_CAST_INTERRUPTED = BIT27,
|
|
TCF_OUTRO_ASSETS_REQUESTED = BIT28,
|
|
TCF_QUIT_SCREEN_ON = BIT29,
|
|
TCF_QUITTING_RACE = BIT30
|
|
ENDENUM
|
|
FUNC STRING GET_TRI_CONTROL_FLAG_NAME(TRI_CONTROL_FLAGS eFlag)
|
|
SWITCH eFlag
|
|
CASE TCF_OUTRO_ASSETS_REQUESTED RETURN "TCF_OUTRO_ASSETS_REQUESTED"
|
|
CASE TCF_NEWS_CAST_INTERRUPTED RETURN "TCF_NEWS_CAST_INTERRUPTED"
|
|
CASE TCF_SHOW_SCLB RETURN "TCF_SHOW_SCLB"
|
|
CASE TCF_UNPATCH_CORONA RETURN "TCF_UNPATCH_CORONA"
|
|
CASE TCF_END_MENU_CREATED RETURN "TCF_END_MENU_CREATED"
|
|
CASE TCF_BIG_CHEERS_PLAYED RETURN "TCF_BIG_CHEERS_PLAYED"
|
|
CASE TCF_RACER_WAYPOINTED_7 RETURN "TCF_RACER_WAYPOINTED_7"
|
|
CASE TCF_RACER_WAYPOINTED_6 RETURN "TCF_RACER_WAYPOINTED_6"
|
|
CASE TCF_RACER_WAYPOINTED_5 RETURN "TCF_RACER_WAYPOINTED_5"
|
|
CASE TCF_RACER_WAYPOINTED_4 RETURN "TCF_RACER_WAYPOINTED_4"
|
|
CASE TCF_RACER_WAYPOINTED_3 RETURN "TCF_RACER_WAYPOINTED_3"
|
|
CASE TCF_RACER_WAYPOINTED_2 RETURN "TCF_RACER_WAYPOINTED_2"
|
|
CASE TCF_RACER_WAYPOINTED_1 RETURN "TCF_RACER_WAYPOINTED_1"
|
|
CASE TCF_REMOVED_SWIM_GEAR RETURN "TCF_REMOVED_SWIM_GEAR"
|
|
CASE TCF_INTRO_ANIM_SPEEDS_SET RETURN "TCF_INTRO_ANIM_SPEEDS_SET"
|
|
CASE TCF_TRI_SKIPPED_CUTSCENE RETURN "TCF_TRI_SKIPPED_CUTSCENE"
|
|
CASE TCF_TRI_CUTSCENE_PLAYING RETURN "TCF_TRI_CUTSCENE_PLAYING"
|
|
CASE TCF_TRI_MOUNTED RETURN "TCF_TRI_MOUNTED"
|
|
CASE TCF_FAIL_CHECKING RETURN "TCF_FAIL_CHECKING"
|
|
CASE TCF_RACE_RESTARTING RETURN "TCF_RACE_RESTARTING"
|
|
CASE TCF_HAS_BEEN_ON_BIKE RETURN "TCF_HAS_BEEN_ON_BIKE"
|
|
CASE TCF_SKIP_INTRO_ON_RESTART RETURN "TCF_SKIP_INTRO_ON_RESTART"
|
|
CASE TCF_FINISHED_RACE RETURN "TCF_FINISHED_RACE"
|
|
CASE TCF_NEWS_CAM_ACTIVE RETURN "TCF_NEWS_CAM_ACTIVE"
|
|
CASE TCF_NEWS_CAM_SHOWN RETURN "TCF_NEWS_CAM_SHOWN"
|
|
CASE TCF_SHOW_CHECKPOINTS RETURN "TCF_SHOW_CHECKPOINTS"
|
|
CASE TCF_CAN_FORFEIT_ON_TRIBIKE RETURN "TCF_CAN_FORFEIT_ON_TRIBIKE"
|
|
CASE TCF_WARNED_AND_LEFT_VEHICLE RETURN "TCF_WARNED_AND_LEFT_VEHICLE"
|
|
CASE TCF_TOLD_HOW_TO_QUIT RETURN "TCF_TOLD_HOW_TO_QUIT "
|
|
CASE TCF_QUIT_SCREEN_ON RETURN "TCF_QUIT_SCREEN_ON"
|
|
CASE TCF_QUITTING_RACE RETURN "TCF_QUITTING_RACE"
|
|
ENDSWITCH
|
|
RETURN "Unknown TRI_CONTROL_FLAG"
|
|
ENDFUNC
|
|
FUNC BOOL IS_TRI_CONTROL_FLAG_SET(TRI_CONTROL_FLAGS eFlagToCheck)
|
|
RETURN IS_BITMASK_AS_ENUM_SET(iControlFlags, eFlagToCheck)
|
|
ENDFUNC
|
|
PROC SET_TRI_CONTROL_FLAG(TRI_CONTROL_FLAGS eFlagToSet)
|
|
IF NOT IS_TRI_CONTROL_FLAG_SET(eFlagToSet)
|
|
SET_BITMASK_AS_ENUM(iControlFlags, eFlagToSet)
|
|
CPRINTLN(DEBUG_TRIATHLON, "[Triathlon.sc->SET_TRI_CONTROL_FLAG] :: ", GET_TRI_CONTROL_FLAG_NAME(eFlagToSet))
|
|
ENDIF
|
|
ENDPROC
|
|
PROC CLEAR_TRI_CONTROL_FLAG(TRI_CONTROL_FLAGS eFlagToClear)
|
|
IF IS_TRI_CONTROL_FLAG_SET(eFlagToClear)
|
|
CLEAR_BITMASK_AS_ENUM(iControlFlags, eFlagToClear)
|
|
CPRINTLN(DEBUG_TRIATHLON, "[Triathlon.sc->CLEAR_TRI_CONTROL_FLAG] :: ", GET_TRI_CONTROL_FLAG_NAME(eFlagToClear))
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
// =====================================
|
|
// END Bitflags for Tri
|
|
// =====================================
|
|
|
|
|
|
// -----------------------------------
|
|
// VARIABLES
|
|
// -----------------------------------
|
|
|
|
// SPR Master Data (DO NOT MOVE).
|
|
TRI_MASTER_STRUCT TRI_Master
|
|
|
|
|
|
// -----------------------------------
|
|
// PROCS/FUNCTIONS
|
|
// -----------------------------------
|
|
PROC RESET_TRI_CIN_CAM_TIMER(TRI_RACE_STRUCT &thisRace)
|
|
thisRace.fCinCamTimer = 0
|
|
ENDPROC
|
|
|
|
PROC INCREASE_TRI_CIN_CAM_TIMER(TRI_RACE_STRUCT &thisRace)
|
|
thisRace.fCinCamTimer += GET_FRAME_TIME()
|
|
ENDPROC
|
|
|
|
FUNC FLOAT GET_TRI_CIN_CAM_TIMER(TRI_RACE_STRUCT &thisRace)
|
|
RETURN thisRace.fCinCamTimer
|
|
ENDFUNC
|
|
|
|
PROC RESET_TRI_CHEERING_TIMER(TRI_RACE_STRUCT &thisRace)
|
|
thisRace.fCheeringTimer = 0
|
|
ENDPROC
|
|
|
|
PROC INCREASE_TRI_CHEERING_TIMER(TRI_RACE_STRUCT &thisRace)
|
|
thisRace.fCheeringTimer += GET_FRAME_TIME()
|
|
ENDPROC
|
|
|
|
FUNC FLOAT GET_TRI_CHEERING_TIMER(TRI_RACE_STRUCT &thisRace)
|
|
RETURN thisRace.fCheeringTimer
|
|
ENDFUNC
|
|
|
|
/// PURPOSE:
|
|
/// co-opts the cheering timer, they aren't used at the same times.
|
|
/// PARAMS:
|
|
/// thisRace -
|
|
PROC RESET_TRI_INTRO_CHATTER_TIMER(TRI_RACE_STRUCT &thisRace)
|
|
thisRace.fCheeringTimer = 0
|
|
ENDPROC
|
|
|
|
/// PURPOSE:
|
|
/// co-opts the cheering timer, they aren't used at the same times.
|
|
/// PARAMS:
|
|
/// thisRace -
|
|
PROC INCREASE_TRI_INTRO_CHATTER_TIMER(TRI_RACE_STRUCT &thisRace)
|
|
thisRace.fCheeringTimer += GET_FRAME_TIME()
|
|
ENDPROC
|
|
|
|
/// PURPOSE:
|
|
/// co-opts the cheering timer, they aren't used at the same times.
|
|
/// PARAMS:
|
|
/// thisRace -
|
|
/// RETURNS:
|
|
///
|
|
FUNC FLOAT GET_TRI_INTRO_CHATTER_TIMER(TRI_RACE_STRUCT &thisRace)
|
|
RETURN thisRace.fCheeringTimer
|
|
ENDFUNC
|
|
|
|
FUNC STRING GET_STRING_FROM_PCF_FLAG( PED_CONFIG_FLAGS eFlag )
|
|
SWITCH eFlag
|
|
CASE PCF_DisableDeepSurfaceAnims RETURN "PCF_DisableDeepSurfaceAnims"
|
|
CASE PCF_ForceDeepSurfaceCheck RETURN "PCF_ForceDeepSurfaceCheck"
|
|
ENDSWITCH
|
|
RETURN "Unknown PED_CONFIG_FLAGS enum"
|
|
ENDFUNC
|
|
|
|
/// PURPOSE:
|
|
/// Turns use of PCF_DisableDeepSurfaceAnims on and off.
|
|
PROC TRI_SET_PED_CONFIG_FLAG(PED_INDEX ped, PED_CONFIG_FLAGS pcf_flag, BOOL bUse)
|
|
CPRINTLN( DEBUG_TRIATHLON, "TRI_SET_PED_CONFIG_FLAG flag_", GET_STRING_FROM_PCF_FLAG( pcf_flag ), " set on ped=", NATIVE_TO_INT( ped ), ", bUse=", PICK_STRING( bUse, "TRUE", "FALSE" ) )
|
|
SET_PED_CONFIG_FLAG( ped, pcf_flag, bUse )
|
|
ENDPROC
|