Files
2025-09-29 00:52:08 +02:00

665 lines
24 KiB
Scheme
Executable File

USING "net_celebration_screen.sch"
SCALEFORM_INDEX siGolfSplash[2]
INT iGolfSplashDuration
INT iGolfEndSplashDuration
INT iCurrentGolfScaleformIndex
INT iGolfSplashFlags
HUD_COLOURS eGolfSplashEndColour
INT iGolfEndScreenWaitTime
INT iGolfSkycamTime
BOOL bRepositionedCamForSwoop
CELEB_SERVER_DATA sCelebServer
STRUCT GOLF_XP_TRACKER
INT iStartRP
INT iStartLvl
INT iNextLvl
INT iRPToReachCurrentLvl
INT iRPToReachNextLvl
ENDSTRUCT
ENUM GOLF_SPLASH_TYPE
GOLF_SPLASH_DEFAULT,
GOLF_SPLASH_CENTER,
GOLF_SPLASH_SHARD_CENTER,
GOLF_SPLASH_MIDSIZED,
GOLF_SPLASH_SHARD_MIDSIZED
ENDENUM
ENUM GOLF_SPLASH_FLAGS
GOLF_SPLASH_BIT_PLAY_SHARD_END_ANIM = BIT1
ENDENUM
PROC REQUEST_GOLF_SPLASH_SCALEFORM()
siGolfSplash[0] = REQUEST_SCALEFORM_MOVIE("MP_BIG_MESSAGE_FREEMODE")
siGolfSplash[1] = REQUEST_SCALEFORM_MOVIE("MIDSIZED_MESSAGE")
ENDPROC
PROC CLEAN_UP_GOLF_SPLASH()
INT index
REPEAT COUNT_OF(siGolfSplash) index
IF HAS_SCALEFORM_MOVIE_LOADED(siGolfSplash[index])
SET_SCALEFORM_MOVIE_AS_NO_LONGER_NEEDED(siGolfSplash[index])
ENDIF
ENDREPEAT
ENDPROC
FUNC BOOL IS_GOLF_SPLASH_LOADED()
RETURN HAS_SCALEFORM_MOVIE_LOADED(siGolfSplash[0]) AND HAS_SCALEFORM_MOVIE_LOADED(siGolfSplash[1])
ENDFUNC
PROC GET_GOLF_SPLASH_METHOD_NAME_AND_INDEX(GOLF_SPLASH_TYPE splashType, TEXT_LABEL_31 &sMethodName, INT &iSplashIndex)
//In single player do not use the shard big messages
// #IF NOT GOLF_IS_MP
// IF splashType = GOLF_SPLASH_SHARD_MIDSIZED
// splashType = GOLF_SPLASH_MIDSIZED
// ENDIF
// #ENDIF
iSplashIndex = 0
IF splashType = GOLF_SPLASH_CENTER
sMethodName = "SHOW_CENTERED_MP_MESSAGE"
ELIF splashType = GOLF_SPLASH_SHARD_CENTER
sMethodName = "SHOW_SHARD_CENTERED_MP_MESSAGE"
SET_BITMASK_AS_ENUM(iGolfSplashFlags, GOLF_SPLASH_BIT_PLAY_SHARD_END_ANIM)
ELIF splashType = GOLF_SPLASH_MIDSIZED
sMethodName = "SHOW_MIDSIZED_MESSAGE"
iSplashIndex = 1
ELIF splashType = GOLF_SPLASH_SHARD_MIDSIZED
IF NETWORK_IS_GAME_IN_PROGRESS()
sMethodName = "SHOW_COND_SHARD_MESSAGE"
ELSE
sMethodName = "SHOW_SHARD_MIDSIZED_MESSAGE"
ENDIF
iSplashIndex = 1
SET_BITMASK_AS_ENUM(iGolfSplashFlags, GOLF_SPLASH_BIT_PLAY_SHARD_END_ANIM)
ELSE
sMethodName = "SHOW_MISSION_PASSED_MESSAGE"
ENDIF
ENDPROC
PROC MANAGE_GOLF_MP_SPLASH_END_COLOUR(HUD_COLOURS &eHudColor, BOOL bOverwriteHudColour = TRUE)
IF eHudColor = HUD_COLOUR_YELLOW
eGolfSplashEndColour = HUD_COLOUR_WHITE
ELIF eHudColor = HUD_COLOUR_RED
eGolfSplashEndColour = HUD_COLOUR_RED
ELSE
eGolfSplashEndColour = HUD_COLOUR_BLACK
ENDIF
IF bOverwriteHudColour
eHudColor = HUD_COLOUR_WHITE
ENDIF
ENDPROC
PROC PLAY_GOLF_SPLASH(STRING sSplashLabel, STRING strapLine = NULL, GOLF_SPLASH_TYPE splashType = GOLF_SPLASH_DEFAULT, HUD_COLOURS eHudColor = HUD_COLOUR_YELLOW, INT iDuration = 4000, BOOL bAnimated = FALSE, HUD_COLOURS eEndHudColour = -1)
TEXT_LABEL_31 sMethodName
GET_GOLF_SPLASH_METHOD_NAME_AND_INDEX(splashType, sMethodName, iCurrentGolfScaleformIndex)
MANAGE_GOLF_MP_SPLASH_END_COLOUR(eHudColor, splashType != GOLF_SPLASH_CENTER)
IF eEndHudColour != INT_TO_ENUM(HUD_COLOURS, -1)
eGolfSplashEndColour = eEndHudColour
ENDIF
iGolfSplashDuration = GET_GAME_TIMER() + iDuration
BEGIN_SCALEFORM_MOVIE_METHOD(siGolfSplash[iCurrentGolfScaleformIndex], sMethodName)
BEGIN_TEXT_COMMAND_SCALEFORM_STRING("STRING")
SET_COLOUR_OF_NEXT_TEXT_COMPONENT(eHudColor)
ADD_TEXT_COMPONENT_SUBSTRING_TEXT_LABEL(sSplashLabel)
END_TEXT_COMMAND_SCALEFORM_STRING()
IF NOT IS_STRING_NULL_OR_EMPTY(strapline)
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING(strapline)
ENDIF
IF bAnimated
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(100)
SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(TRUE)
ENDIF
END_SCALEFORM_MOVIE_METHOD()
IF bAnimated
BEGIN_SCALEFORM_MOVIE_METHOD(siGolfSplash[iCurrentGolfScaleformIndex], "TRANSITION_UP")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(0.15)
END_SCALEFORM_MOVIE_METHOD()
ENDIF
ENDPROC
PROC PLAY_GOLF_SPLASH_WITH_INT(STRING sSplashLabel, INT iNum, STRING strapLine = NULL, GOLF_SPLASH_TYPE splashType = GOLF_SPLASH_DEFAULT, HUD_COLOURS eHudColor = HUD_COLOUR_YELLOW, INT iDuration = 4000, BOOL bAnimated = FALSE)
TEXT_LABEL_31 sMethodName
GET_GOLF_SPLASH_METHOD_NAME_AND_INDEX(splashType, sMethodName, iCurrentGolfScaleformIndex)
MANAGE_GOLF_MP_SPLASH_END_COLOUR(eHudColor, splashType != GOLF_SPLASH_CENTER)
iGolfSplashDuration = GET_GAME_TIMER() + iDuration
BEGIN_SCALEFORM_MOVIE_METHOD(siGolfSplash[iCurrentGolfScaleformIndex], sMethodName)
SET_COLOUR_OF_NEXT_TEXT_COMPONENT(eHudColor)
BEGIN_TEXT_COMMAND_SCALEFORM_STRING(sSplashLabel)
SET_COLOUR_OF_NEXT_TEXT_COMPONENT(eHudColor)
ADD_TEXT_COMPONENT_INTEGER(iNum)
END_TEXT_COMMAND_SCALEFORM_STRING()
IF NOT IS_STRING_NULL_OR_EMPTY(strapline)
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING(strapline)
ENDIF
IF bAnimated
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(100)
SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(TRUE)
ENDIF
END_SCALEFORM_MOVIE_METHOD()
ENDPROC
PROC PLAY_GOLF_SPLASH_WITH_INT_IN_STRAP(STRING sSplashLabel, INT iNum, STRING strapLine, GOLF_SPLASH_TYPE splashType = GOLF_SPLASH_DEFAULT, HUD_COLOURS eHudColor = HUD_COLOUR_YELLOW, INT iDuration = 4000)
TEXT_LABEL_31 sMethodName
GET_GOLF_SPLASH_METHOD_NAME_AND_INDEX(splashType, sMethodName, iCurrentGolfScaleformIndex)
MANAGE_GOLF_MP_SPLASH_END_COLOUR(eHudColor, splashType != GOLF_SPLASH_CENTER)
iGolfSplashDuration = GET_GAME_TIMER() + iDuration
BEGIN_SCALEFORM_MOVIE_METHOD(siGolfSplash[iCurrentGolfScaleformIndex], sMethodName)
BEGIN_TEXT_COMMAND_SCALEFORM_STRING("STRING")
SET_COLOUR_OF_NEXT_TEXT_COMPONENT(eHudColor)
ADD_TEXT_COMPONENT_SUBSTRING_TEXT_LABEL(sSplashLabel)
END_TEXT_COMMAND_SCALEFORM_STRING()
BEGIN_TEXT_COMMAND_SCALEFORM_STRING(strapLine)
ADD_TEXT_COMPONENT_INTEGER(iNum)
END_TEXT_COMMAND_SCALEFORM_STRING()
END_SCALEFORM_MOVIE_METHOD()
ENDPROC
PROC PLAY_GOLF_SPLASH_WITH_NAME_IN_STRAPLINE(STRING sSplashLabel, STRING strapLine, STRING sPlayerName, GOLF_SPLASH_TYPE splashType = GOLF_SPLASH_DEFAULT, HUD_COLOURS eHudColor = HUD_COLOUR_YELLOW)
TEXT_LABEL_31 sMethodName
GET_GOLF_SPLASH_METHOD_NAME_AND_INDEX(splashType, sMethodName, iCurrentGolfScaleformIndex)
MANAGE_GOLF_MP_SPLASH_END_COLOUR(eHudColor, splashType != GOLF_SPLASH_CENTER)
iGolfSplashDuration = GET_GAME_TIMER() + 4000
BEGIN_SCALEFORM_MOVIE_METHOD(siGolfSplash[iCurrentGolfScaleformIndex], sMethodName)
BEGIN_TEXT_COMMAND_SCALEFORM_STRING("STRING")
SET_COLOUR_OF_NEXT_TEXT_COMPONENT(eHudColor)
ADD_TEXT_COMPONENT_SUBSTRING_TEXT_LABEL(sSplashLabel)
END_TEXT_COMMAND_SCALEFORM_STRING()
BEGIN_TEXT_COMMAND_SCALEFORM_STRING(strapLine)
ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME(sPlayerName)
END_TEXT_COMMAND_SCALEFORM_STRING()
END_SCALEFORM_MOVIE_METHOD()
ENDPROC
FUNC BOOL IS_GOLF_END_SCREEN_READY(CELEBRATION_SCREEN_DATA &golfCelebrationData)
KILL_UI_FOR_CELEBRATION_SCREEN()
//Make sure we don't load too many scaleform movies at the same time
CLEAN_UP_GOLF_SPLASH()
REQUEST_CELEBRATION_SCREEN(golfCelebrationData)
RETURN HAS_CELEBRATION_SCREEN_LOADED(golfCelebrationData)
ENDFUNC
PROC INIT_GOLF_XP_TRACKER(GOLF_XP_TRACKER &golfXPTracker)
golfXPTracker.iStartRP = GET_PLAYER_FM_XP(NETWORK_GET_PLAYER_INDEX(PARTICIPANT_ID()))
golfXPTracker.iStartLvl = GET_FM_RANK_FROM_XP_VALUE(golfXPTracker.iStartRP)
golfXPTracker.iNextLvl = golfXPTracker.iStartLvl + 1
golfXPTracker.iRPToReachCurrentLvl = GET_XP_NEEDED_FOR_FM_RANK(golfXPTracker.iStartLvl)
golfXPTracker.iRPToReachNextLvl = GET_XP_NEEDED_FOR_FM_RANK(golfXPTracker.iNextLvl)
ENDPROC
FUNC BOOL ADD_GOLF_WINNER_CELEBRATION_SCREEN(CELEBRATION_SCREEN_DATA &golfCelebrationData, STRING golfEndScreenWinnerID, PLAYER_INDEX playerIndexWinner,
JOB_WIN_STATUS eWinStatus, STRING strBackgroundColour, STRING sWinnerName, STRING sCrewName, INT iBetWinings, INT iAnimToPlay)
INT i
PLAYER_INDEX playerWinner[8]
REPEAT COUNT_OF(playerWinner) i
playerWinner[i] = INVALID_PLAYER_INDEX()
ENDREPEAT
playerWinner[0] = playerIndexWinner
IF CREATE_WINNER_SCENE_ENTITIES(sCelebServer, golfCelebrationData, playerWinner, NULL, FALSE, NULL, FALSE, FALSE, FALSE, FALSE, DUMMY_MODEL_FOR_SCRIPT, iAnimToPlay)
PRINTLN("[NETCELEBRATION] - DISPLAY_GOLF_END_SCREEN - ADD_GOLF_WINNER_CELEBRATION_SCREEN - LOAD_WINNER_SCENE_INTERIOR = TRUE.")
CREATE_CELEBRATION_SCREEN(golfCelebrationData, golfEndScreenWinnerID, strBackgroundColour)
golfCelebrationData.iEstimatedScreenDuration = GET_GAME_TIMER() + 3500
ADD_WINNER_TO_CELEBRATION_SCREEN(golfCelebrationData, golfEndScreenWinnerID, eWinStatus, sWinnerName, sCrewName, "", iBetWinings)
golfCelebrationData.iEstimatedScreenDuration += CELEBRATION_SCREEN_STAT_DISPLAY_TIME
//extra time to see betting screen
CDEBUG1LN(DEBUG_GOLF,"PAssed in bet winnings ", iBetWinings)
IF ABSI(iBetWinings) > 0
golfCelebrationData.iEstimatedScreenDuration += CELEBRATION_SCREEN_STAT_DISPLAY_TIME
ENDIF
ADD_BACKGROUND_TO_CELEBRATION_SCREEN(golfCelebrationData, golfEndScreenWinnerID)
SHOW_CELEBRATION_SCREEN(golfCelebrationData, golfEndScreenWinnerID)
START_AUDIO_SCENE("MP_JOB_CHANGE_RADIO_MUTE")
PRINTLN("[WJK] - called START_AUDIO_SCENE(MP_JOB_CHANGE_RADIO_MUTE).")
golfCelebrationData.iWinnerPlayerID = NATIVE_TO_INT(playerIndexWinner)
PRINTLN("[NETCELEBRATION] - DISPLAY_GOLF_END_SCREEN - ADD_GOLF_WINNER_CELEBRATION_SCREEN - returning TRUE.")
RETURN TRUE
ENDIF
RETURN FALSE
ENDFUNC
PROC PLAY_GOLF_ENDSCREEN_POST_EFFECT(INT iPlacement, BOOL bIntro)
TEXT_LABEL_31 txtEffect
IF iPlacement = 1
IF bIntro
txtEffect = "MP_Celeb_Win"
ELSE
txtEffect = "MP_Celeb_Win_Out"
ENDIF
ELSE
IF bIntro
txtEffect = "MP_Celeb_Lose"
ELSE
txtEffect = "MP_Celeb_Lose_Out"
ENDIF
ENDIF
IF NOT IS_STRING_NULL_OR_EMPTY(txtEffect)
IF NOT ANIMPOSTFX_IS_RUNNING(txtEffect)
ANIMPOSTFX_STOP_ALL()
CDEBUG1LN(DEBUG_GOLF, "Play golf end screen effect ", txtEffect)
ANIMPOSTFX_PLAY(txtEffect, 0, TRUE)
ENDIF
ENDIF
ENDPROC
FUNC BOOL DISPLAY_GOLF_END_SCREEN(CELEBRATION_SCREEN_DATA &golfCelebrationData, CAMERA_INDEX &camEndScreen, GOLF_XP_TRACKER &golfXPTracker, INT iPlacement, BOOL bTied, INT iRPGain,
BOOL bCreateWinnerScreen, BOOL bDraw, INT iWinnerNetIndex, INT iBetWinings, BOOL bSpectator, DPAD_VARS &dpadVars)
CDEBUG1LN(DEBUG_GOLF,"Displaying golf end screen")
HIDE_UI_FOR_CELEBRATION_SCREEN_THIS_FRAME()
STRING golfEndScreenID = "GOLF_END_SCREEN"
STRING golfEndScreenWinnerID = "GOLF_END_WINNER_SCREEN"
STRING strBackgroundColour = "HUD_COLOUR_BLACK"
BOOL bSuccefullyPlaceCamera = FALSE
TEXT_LABEL_63 sWinnerName = ""
TEXT_LABEL_63 sCrewName = ""
JOB_WIN_STATUS eWinStatus
PLAYER_INDEX playerIndexWinner = NULL
PED_INDEX pedWinner
TEXT_LABEL_63 tl63_IdleAnimDict, tl63_IdleAnimName
IF IS_MINIGAME_IN_PROGRESS()
SET_MINIGAME_IN_PROGRESS(FALSE)
ENDIF
SET_FRONTEND_ACTIVE(FALSE)
IF iWinnerNetIndex > -1
IF NETWORK_IS_PARTICIPANT_ACTIVE(INT_TO_PARTICIPANTINDEX(iWinnerNetIndex))
playerIndexWinner = NETWORK_GET_PLAYER_INDEX(INT_TO_PARTICIPANTINDEX(iWinnerNetIndex))
pedWinner = GET_PLAYER_PED(playerIndexWinner)
sWinnerName = GET_PLAYER_NAME(NETWORK_GET_PLAYER_INDEX(INT_TO_PARTICIPANTINDEX(iWinnerNetIndex)))
sCrewName = GET_CREW_NAME_FOR_CELEBRATION_SCREEN(NETWORK_GET_PLAYER_INDEX(INT_TO_PARTICIPANTINDEX(iWinnerNetIndex)))
ENDIF
ENDIF
GET_CELEBRATION_IDLE_ANIM_TO_USE(golfCelebrationData, tl63_IdleAnimDict, tl63_IdleAnimName, IS_PED_MALE(pedWinner))
REQUEST_ANIM_DICT(tl63_IdleAnimDict)
SWITCH golfCelebrationData.eCurrentStage
CASE CELEBRATION_STAGE_SETUP
// Setup first celebration screen.
IF bSpectator
IF LOAD_WINNER_SCENE_INTERIOR(golfCelebrationData)
START_AUDIO_SCENE("MP_CELEB_SCREEN_SCENE")
SET_SCRIPTS_SAFE_FOR_CUTSCENE(TRUE)
FLASH_CELEBRATION_SCREEN(golfCelebrationData, 0.25, 0.25, 0.25)
golfCelebrationData.iEstimatedScreenDuration = GET_GAME_TIMER() + 300
golfCelebrationData.eCurrentStage = CELEBRATION_STAGE_DOING_FLASH
ENDIF
ELSE
// Place camera in front of player.
IF PLACE_CAMERA_FOR_CELEBRATION_SCREEN(golfCelebrationData, camEndScreen, bSuccefullyPlaceCamera)
// Set the celebration cam active.
IF bSuccefullyPlaceCamera
SET_CAM_ACTIVE(camEndScreen, TRUE)
ENDIF
// Create the celebration movie.
CREATE_CELEBRATION_SCREEN(golfCelebrationData, golfEndScreenID, strBackgroundColour)
golfCelebrationData.iEstimatedScreenDuration = GET_GAME_TIMER() + 6000
iGolfEndScreenWaitTime = GET_GAME_TIMER() + 1000
PLAY_GOLF_ENDSCREEN_POST_EFFECT(iPlacement, TRUE)
// Add finish position to screen.
IF bTied
ADD_FINISH_POSITION_TO_CELEBRATION_SCREEN(golfCelebrationData, golfEndScreenID, iPlacement, "CELEB_YOU_TIED")
ELSE
ADD_FINISH_POSITION_TO_CELEBRATION_SCREEN(golfCelebrationData, golfEndScreenID, iPlacement)
ENDIF
// IF iScore > 0
// ADD_SCORE_TO_CELEBRATION_SCREEN(golfCelebrationData, golfEndScreenID, iScore)
// golfCelebrationData.iEstimatedScreenDuration += CELEBRATION_SCREEN_STAT_DISPLAY_TIME
// ENDIF
// Add RP to celebration screen.
IF iRPGain > 0
ADD_REP_POINTS_AND_RANK_BAR_TO_CELEBRATION_SCREEN(golfCelebrationData, golfEndScreenID, iRPGain, golfXPTracker.iStartRP,
golfXPTracker.iRPToReachCurrentLvl, golfXPTracker.iRPToReachNextLvl, golfXPTracker.iStartLvl, golfXPTracker.iNextLvl)
golfCelebrationData.iEstimatedScreenDuration += CELEBRATION_SCREEN_STAT_DISPLAY_TIME
IF golfXPTracker.iStartRP + iRPGain > golfXPTracker.iRPToReachNextLvl
golfCelebrationData.iEstimatedScreenDuration += CELEBRATION_SCREEN_STAT_DISPLAY_TIME //time for level up screen
ENDIF
ENDIF
// Add background to celebration movie.
ADD_BACKGROUND_TO_CELEBRATION_SCREEN(golfCelebrationData, golfEndScreenID)
PRINTLN("[NETCELEBRATION] - DISPLAY_GOLF_END_SCREEN - going to stage CELEBRATION_STAGE_TRANSITIONING.")
// Go to next stage.
golfCelebrationData.eCurrentStage = CELEBRATION_STAGE_TRANSITIONING
ENDIF
ENDIF
BREAK
CASE CELEBRATION_STAGE_TRANSITIONING
IF LOAD_WINNER_SCENE_INTERIOR(golfCelebrationData)
AND HAS_ANIM_DICT_LOADED(tl63_IdleAnimDict)
// Wait 1 second and then move on.
IF GET_GAME_TIMER() > iGolfEndScreenWaitTime
SHOW_CELEBRATION_SCREEN(golfCelebrationData, golfEndScreenID)
START_AUDIO_SCENE("MP_JOB_CHANGE_RADIO_MUTE")
PRINTLN("[WJK] - called START_AUDIO_SCENE(MP_JOB_CHANGE_RADIO_MUTE).")
STORE_PLAYER_INTERACTION_ANIM_VALUES_FOR_CELEBRATION_SCREEN()
SET_SCRIPTS_SAFE_FOR_CUTSCENE(TRUE)
START_AUDIO_SCENE("MP_CELEB_SCREEN_SCENE")
PRINTLN("[NETCELEBRATION] - DISPLAY_GOLF_END_SCREEN - GET_GAME_TIMER() > iGolfEndScreenWaitTime.")
PRINTLN("[NETCELEBRATION] - DISPLAY_GOLF_END_SCREEN - going to stage CELEBRATION_STAGE_END_TRANSITION.")
golfCelebrationData.eCurrentStage = CELEBRATION_STAGE_END_TRANSITION
ENDIF
ENDIF
BREAK
CASE CELEBRATION_STAGE_END_TRANSITION
// CDEBUG1LN(DEBUG_GOLF, "End screen time ", golfCelebrationData.iEstimatedScreenDuration - GET_GAME_TIMER())
// Create scene for winner scene and wait for timer to expire.
IF GET_GAME_TIMER() > golfCelebrationData.iEstimatedScreenDuration
PRINTLN("[NETCELEBRATION] - DISPLAY_GOLF_END_SCREEN - GET_GAME_TIMER() > golfCelebrationData.iEstimatedScreenDuration.")
IF bCreateWinnerScreen
DRAW_CELEBRATION_SCREEN_THIS_FRAME(golfCelebrationData)
FLASH_CELEBRATION_SCREEN(golfCelebrationData, 0.25, 0.75, 0.25)
golfCelebrationData.iEstimatedScreenDuration = GET_GAME_TIMER() + 250
PRINTLN("[NETCELEBRATION] - DISPLAY_GOLF_END_SCREEN - going to stage CELEBRATION_STAGE_DOING_FLASH.")
golfCelebrationData.eCurrentStage = CELEBRATION_STAGE_DOING_FLASH
ELSE
SET_SKYSWOOP_UP()
STOP_AUDIO_SCENE("MP_CELEB_SCREEN_SCENE")
IF IS_SWITCH_TO_MULTI_FIRSTPART_FINISHED()
RETURN TRUE
ENDIF
ENDIF
ELSE
DRAW_CELEBRATION_SCREEN_THIS_FRAME(golfCelebrationData)
ENDIF
BREAK
CASE CELEBRATION_STAGE_DOING_FLASH
CDEBUG1LN(DEBUG_GOLF, "CELEBRATION_STAGE_DOING_FLASH ", golfCelebrationData.iEstimatedScreenDuration - GET_GAME_TIMER())
IF GET_GAME_TIMER() > (golfCelebrationData.iEstimatedScreenDuration - 100)
SET_HIDE_PLAYERS_FOR_CELEBRATION_WINNER_SCENE(golfCelebrationData)
IF IS_NET_PLAYER_OK(PLAYER_ID())
REMOVE_PED_HELMET(PLAYER_PED_ID(), TRUE) // url:bugstar:2244903 - remove helmet mid-flash.
ENDIF
ENDIF
IF GET_GAME_TIMER() > golfCelebrationData.iEstimatedScreenDuration
IF ADD_GOLF_WINNER_CELEBRATION_SCREEN(golfCelebrationData, golfEndScreenWinnerID, playerIndexWinner, eWinStatus, strBackgroundColour, sCrewName, sWinnerName, iBetWinings, GlobalplayerBD[NATIVE_TO_INT(playerIndexWinner)].iInteractionAnim)
PRINTLN("[NETCELEBRATION] - DISPLAY_GOLF_END_SCREEN - GET_GAME_TIMER() > golfCelebrationData.iEstimatedScreenDuration.")
// Destory current cam in preperation for new shot.
IF IS_CAM_RENDERING(camEndScreen)
RENDER_SCRIPT_CAMS(FALSE, FALSE)
ENDIF
IF IS_CAM_ACTIVE(camEndScreen)
SET_CAM_ACTIVE(camEndScreen, FALSE)
ENDIF
IF DOES_CAM_EXIST(camEndScreen)
DESTROY_CAM(camEndScreen, TRUE)
ENDIF
// Recreate cam and place until new shot.
PLACE_WINNER_SCENE_CAMERA(sCelebServer, golfCelebrationData, camEndScreen, DEFAULT, NATIVE_TO_INT(playerIndexWinner))
// PLAY_GOLF_ENDSCREEN_POST_EFFECT(iPlacement, TRUE)
IF bDraw
iWinnerNetIndex = -1
eWinStatus = JOB_STATUS_DRAW
strBackgroundColour = "HUD_COLOUR_GREY"
ELIF iWinnerNetIndex = PARTICIPANT_ID_TO_INT()
eWinStatus = JOB_STATUS_WIN
strBackgroundColour = "HUD_COLOUR_BLUEDARK"
ELSE
eWinStatus = JOB_STATUS_WIN //the camea is going to focus on the winner
strBackgroundColour = "HUD_COLOUR_RED"
ENDIF
SET_CELEBRATION_SCREEN_AS_ACTIVE(TRUE)
RESET_CELEBRATION_PRE_LOAD(golfCelebrationData)
ADJUST_ESTIMATED_TIME_BASED_ON_ANIM_LENGTH(golfCelebrationData)
golfCelebrationData.iEstimatedScreenDuration = GET_GAME_TIMER() + 6000
iGolfEndScreenWaitTime = GET_GAME_TIMER() + 1000
MP_TEXT_CHAT_DISABLE(TRUE)
PRINTLN("[NETCELEBRATION] - DISPLAY_GOLF_END_SCREEN - going to stage CELEBRATION_STAGE_PLAYING.")
golfCelebrationData.eCurrentStage = CELEBRATION_STAGE_PLAYING
ENDIF
ENDIF
// Keep drawing flash.
DRAW_CELEBRATION_SCREEN_THIS_FRAME(golfCelebrationData)
BREAK
CASE CELEBRATION_STAGE_PLAYING
IF iWinnerNetIndex > -1
IF NETWORK_IS_PARTICIPANT_ACTIVE(INT_TO_PARTICIPANTINDEX(iWinnerNetIndex))
playerIndexWinner = NETWORK_GET_PLAYER_INDEX(INT_TO_PARTICIPANTINDEX(iWinnerNetIndex))
ENDIF
ENDIF
CDEBUG1LN(DEBUG_GOLF, "CELEBRATION_STAGE_PLAYING ", golfCelebrationData.iEstimatedScreenDuration - GET_GAME_TIMER())
IF golfCelebrationData.bAllowPlayerNameToggles
CELEB_SET_PLAYERS_INVISIBLE_THIS_FRAME()
DRAW_THE_PLAYER_LIST(dpadVars)
MAINTAIN_CELEBRATION_INSTRUCTIONAL_BUTTONS(golfCelebrationData)
IF IS_XBOX360_VERSION()
OR IS_PS3_VERSION()
DISPLAY_CELEBRATION_PLAYER_NAMES(golfCelebrationData.pedWinnerClones, golfCelebrationData.tl31_pedWinnerClonesNames, golfCelebrationData.eCurrentStage, golfCelebrationData.sfCelebration)
ELSE
DRAW_NG_CELEBRATION_PLAYER_NAMES( golfCelebrationData, golfCelebrationData.iDrawNamesStage, golfCelebrationData.iNumNamesToDisplay,
golfCelebrationData.pedWinnerClones, golfCelebrationData.tl31_pedWinnerClonesNames,
golfCelebrationData.eCurrentStage, golfCelebrationData.sfCelebration,
golfCelebrationData.playerNameMovies, golfCelebrationData.bToggleNames)
ENDIF
ENDIF
HIDE_PLAYERS_FOR_CELEBRATION_WINNER_SCENE(golfCelebrationData) // Fix for B* 2278693 - stop player models being seen during winner scene, only want ot see ped clones.
// IF GET_GAME_TIMER() > golfCelebrationData.iEstimatedScreenDuration
// STOP_AUDIO_SCENE("MP_CELEB_SCREEN_SCENE")
// SET_CELEBRATION_SCREEN_AS_ACTIVE(FALSE)
// golfCelebrationData.eCurrentStage = CELEBRATION_STAGE_FINISHED
// ENDIF
IF GET_GAME_TIMER() >= iGolfEndScreenWaitTime
DRAW_CELEBRATION_SCREEN_USING_3D_BACKGROUND(golfCelebrationData, <<0.0, -0.5, 0.0>>, <<0.0, 0.0, 0.0>>, <<10.0, 5.0, 5.0>>)
DRAW_BLACK_RECT_FOR_WINNER_SCREEN_END_TRANSITION(GET_GAME_TIMER(), golfCelebrationData.iEstimatedScreenDuration - 400)
ENDIF
IF GET_GAME_TIMER() > golfCelebrationData.iEstimatedScreenDuration
CDEBUG1LN(DEBUG_GOLF, "[NETCELEBRATION] - DISPLAY_GOLF_END_SCREEN - GET_GAME_TIMER() > golfCelebrationData.iEstimatedScreenDuration.")
IF NOT bRepositionedCamForSwoop
// IF NOT IS_PLAYER_SWITCH_IN_PROGRESS()
// VECTOR vCamCoords
// vCamCoords = GET_CAM_COORD(camEndScreen)
// vCamCoords.z = 1000.0
// SET_CAM_COORD(camEndScreen, vCamCoords)
// SET_ENTITY_COORDS(PLAYER_PED_ID(), vCamCoords, FALSE)
// FREEZE_ENTITY_POSITION(PLAYER_PED_ID(), TRUE)
// PRINTLN("[NETCELEBRATION] - put winner cam and player ped at ", vCamCoords)
// ENDIF
ENDIF
SET_CELEBRATION_SCREEN_AS_ACTIVE(FALSE)
STOP_AUDIO_SCENE("MP_CELEB_SCREEN_SCENE")
IF iGolfSkycamTime = 0
IF NOT bSpectator
SET_SKYSWOOP_UP(TRUE, TRUE, TRUE, SWITCH_TYPE_LONG)
ELSE
SET_SKYSWOOP_UP()
ENDIF
iGolfSkycamTime = GET_GAME_TIMER() + 3000
ENDIF
CDEBUG1LN(DEBUG_GOLF, "[NETCELEBRATION] - Skycam time: ", iGolfSkycamTime - GET_GAME_TIMER())
IF GET_GAME_TIMER() > iGolfSkycamTime
golfCelebrationData.bAllowPlayerNameToggles = FALSE
IF IS_PLAYER_SCTV(PLAYER_ID())
CLEAR_SPECTATOR_OVERRIDE_COORDS()
ENDIF
MP_TEXT_CHAT_DISABLE(FALSE)
RETURN TRUE
ENDIF
ELSE
golfCelebrationData.bAllowPlayerNameToggles = TRUE
ENDIF
BREAK
CASE CELEBRATION_STAGE_FINISHED
IF IS_PLAYER_SCTV(PLAYER_ID())
CLEAR_SPECTATOR_OVERRIDE_COORDS()
ENDIF
MP_TEXT_CHAT_DISABLE(FALSE)
RETURN TRUE
BREAK
ENDSWITCH
IF (golfCelebrationData.eCurrentStage = CELEBRATION_STAGE_PLAYING)
IF DOES_ENTITY_EXIST(golfCelebrationData.pedWinnerClones[0])
IF NOT IS_ENTITY_DEAD(golfCelebrationData.pedWinnerClones[0])
IF DOES_CAM_EXIST(camEndScreen)
IF IS_CAM_RENDERING(camEndScreen)
UPDATE_CELEBRATION_WINNER_ANIMS(golfCelebrationData, golfCelebrationData.pedWinnerClones[0], golfCelebrationData.iWinnerPlayerID, 0, FALSE, FALSE, FALSE, PAIRED_CELEBRATION_GENDER_COMBO_NOT_SET)
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
RETURN FALSE
ENDFUNC
PROC DO_GOLF_SHARD_END()
BEGIN_SCALEFORM_MOVIE_METHOD(siGolfSplash[iCurrentGolfScaleformIndex], "SHARD_ANIM_OUT")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(ENUM_TO_INT(eGolfSplashEndColour))
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(0.33)
END_SCALEFORM_MOVIE_METHOD()
iGolfEndSplashDuration = GET_GAME_TIMER() + 330
ENDPROC
PROC CLEAR_GOLF_SPLASH()
IF IS_BITMASK_AS_ENUM_SET(iGolfSplashFlags, GOLF_SPLASH_BIT_PLAY_SHARD_END_ANIM)
DO_GOLF_SHARD_END()
CLEAR_BITMASK_AS_ENUM(iGolfSplashFlags, GOLF_SPLASH_BIT_PLAY_SHARD_END_ANIM)
ENDIF
iGolfSplashDuration = 0
ENDPROC
FUNC BOOL IS_GOLF_SPLASH_DISPLAYING()
RETURN iGolfSplashDuration > GET_GAME_TIMER()
ENDFUNC
PROC UPDATE_GOLF_SPLASH()
IF iGolfSplashDuration > GET_GAME_TIMER()
DRAW_SCALEFORM_MOVIE_FULLSCREEN(siGolfSplash[iCurrentGolfScaleformIndex], 255, 255, 255, 255)
//DRAW_SCALEFORM_MOVIE(siGolfSplash[iCurrentGolfScaleformIndex], vGolfSplashPosition.x, vGolfSplashPosition.y, 1.0, 1.0, 255, 255, 255, 255)
ELSE
IF IS_BITMASK_AS_ENUM_SET(iGolfSplashFlags, GOLF_SPLASH_BIT_PLAY_SHARD_END_ANIM)
DO_GOLF_SHARD_END()
CLEAR_BITMASK_AS_ENUM(iGolfSplashFlags, GOLF_SPLASH_BIT_PLAY_SHARD_END_ANIM)
ENDIF
ENDIF
IF iGolfEndSplashDuration > GET_GAME_TIMER()
DRAW_SCALEFORM_MOVIE_FULLSCREEN(siGolfSplash[iCurrentGolfScaleformIndex], 255, 255, 255, 255)
ENDIF
ENDPROC