5043 lines
199 KiB
Python
Executable File
5043 lines
199 KiB
Python
Executable File
//////////////////////////////////////////////////////////////////////////////////////////
|
|
// //
|
|
// SCRIPT NAME : selector.sc //
|
|
// AUTHOR : Kenneth Ross //
|
|
// DESCRIPTION : Displays the hotswap HUD and handles the switching between //
|
|
// singleplayer and multiplayer. //
|
|
// //
|
|
//////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
//Modifies script compiled into IS_SELECTOR_PED_AVAILABLE_IN_FLOW. -BenR
|
|
CONST_INT USE_SELECTOR_CHANGES 1
|
|
|
|
USING "rage_builtins.sch"
|
|
USING "globals.sch"
|
|
USING "commands_hud.sch"
|
|
USING "commands_misc.sch"
|
|
USING "commands_pad.sch"
|
|
USING "commands_script.sch"
|
|
USING "commands_player.sch"
|
|
USING "commands_graphics.sch"
|
|
USING "commands_streaming.sch"
|
|
USING "commands_camera.sch"
|
|
USING "script_MATHS.sch"
|
|
USING "script_player.sch"
|
|
USING "cellphone_public.sch"
|
|
USING "selector_public.sch"
|
|
USING "stats_private.sch"
|
|
//USING "Shared_hud_displays.sch"
|
|
USING "net_hud_activating.sch"
|
|
USING "MP_SkyCam.sch"
|
|
USING "Screens_header.sch"
|
|
USING "Transition_Common.sch"
|
|
USING "PM_MissionCreator_Public.sch"
|
|
USING "net_player_headshots.sch"
|
|
USING "flow_public_GAME.sch"
|
|
using "Transition_Joining.sch"
|
|
USING "beast_secret_unlock.sch"
|
|
|
|
ENUM SELECTOR_STAGE_ENUM
|
|
SELECTOR_INITIALISE = 0,
|
|
SELECTOR_CONTROLLER,
|
|
SELECTOR_END
|
|
ENDENUM
|
|
SELECTOR_STAGE_ENUM eSelectorStage = SELECTOR_INITIALISE
|
|
|
|
SELECTOR_PED_STRUCT sSelectorPeds
|
|
CONST_FLOAT F_STAT_X_POSITION 0.056
|
|
FLOAT fPLAYER_STATS_X = F_STAT_X_POSITION //0.032//0.0375//0.225
|
|
FLOAT fPLAYER_STATS_Y = 0.006//0.003//0.035
|
|
FLOAT fPLAYER_STATS_W = 0.140625//0.5
|
|
FLOAT fPLAYER_STATS_H = 0.3875//0.149
|
|
FLOAT fPLAYER_STATS_SCALE_W = 1.0
|
|
FLOAT fPLAYER_STATS_SCALE_H = 1.0
|
|
|
|
//FLOAT fPLAYER_SWITCH_X = 0.053
|
|
FLOAT fPLAYER_SWITCH_Y = 0.087
|
|
FLOAT fPLAYER_SWITCH_W = 0.098
|
|
FLOAT fPLAYER_SWITCH_H = 0.175
|
|
FLOAT fPLAYER_SWITCH_SCALE_W = 1.0
|
|
FLOAT fPLAYER_SWITCH_SCALE_H = 1.0
|
|
|
|
//FLOAT fPLAYER_SWITCH_WIDE_WIDE_POS_X = 0.75
|
|
FLOAT fPLAYER_SWITCH_WIDE_SCALE = 1.3333
|
|
|
|
//FLOAT fPLAYER_SWITCH_WIDE_WIDE_POS_X = 0.75
|
|
FLOAT fMISSION_NAME_X = -0.106
|
|
FLOAT fMISSION_NAME_Y = 0.635
|
|
|
|
//INT CodeExitMPCheck
|
|
|
|
// All the Scaleform related data
|
|
SCALEFORM_INDEX movieID, movieID2
|
|
BOOL bUsingPrologueMovie
|
|
BOOL bRequested
|
|
INT iState[4]
|
|
INT iEnum[4]
|
|
INT iCurrent[4]
|
|
INT iMissions[4]
|
|
BOOL bHinted[4]
|
|
BOOL bDamaged[4]
|
|
BOOL bFlashDamage[4]
|
|
INT iSelectedSlot
|
|
INT iSelectedSlotOnLoad
|
|
BOOL bSelection
|
|
BOOL bDisplay
|
|
SCRIPT_TIMER TransitionFailsafe_Timer
|
|
INT iHeadshotTextureID = -1
|
|
|
|
INT iAutoSwitchEnum[4]
|
|
INT iAutoSwitchSlot
|
|
INT iAutoSwitchDisplayTimer
|
|
BOOL bAutoSwitchDisplayTimerSet
|
|
|
|
//Purposefully "hidden" in amongst this script. We want it to be hard
|
|
//for hackers to spot these scripts in decompiled output. -BenR
|
|
#IF FEATURE_SP_DLC_BEAST_SECRET
|
|
#IF NOT FEATURE_SP_DLC_BEAST_SECRET_DEBUG
|
|
BeastUnlockVars sBeastUnlockVars
|
|
#ENDIF
|
|
#ENDIF
|
|
|
|
BLIP_INDEX selectedPedBlip
|
|
|
|
BOOL bMPAutoBootFromStartup = FALSE
|
|
|
|
#IF USE_REPLAY_RECORDING_TRIGGERS
|
|
|
|
BOOL bAddActionReplayOn
|
|
BOOL bAddActionReplayOff
|
|
REPLAY_START_PARAM eFeedStartType
|
|
INT iRecPost[3]
|
|
INT iRecPostActionReplay = -1
|
|
INT iActionReplayTimer
|
|
TIME_DATATYPE tdActionReplayTimer
|
|
BOOL bReplayFeedDisabledLastFrame
|
|
INT iExcludeInputTimer
|
|
#ENDIF
|
|
|
|
BOOL bSwitchAvailableAudioPlayed
|
|
|
|
BOOL bSetSystemTimer
|
|
|
|
BOOL bDisplayCharacterInfo
|
|
|
|
FLOAT fLastTimeScaleSet
|
|
BOOL bSlowingDownTime, bReduceTimeScaleForSwitch
|
|
FLOAT fTargetScale
|
|
INT iTimeScaleTimer
|
|
|
|
BOOL bSetPedHead
|
|
BOOL bPedHeadSet
|
|
INT iLoadPedHeadStage
|
|
STRING sMPPedHeadshot
|
|
INT iPedHeadSlot
|
|
|
|
BOOL bSuppressUIForShortSwitch
|
|
INT iSuppressRadarTimer
|
|
INT iLastSwitchFrameCount
|
|
|
|
BOOL bUpdateCountdown
|
|
BOOL bForceUpdateCountdown
|
|
INT iCountdownTimer
|
|
TIME_DATATYPE tdCountdownTimer
|
|
|
|
BOOL bMapUpdated
|
|
|
|
INT iIndicatorSFX[2]
|
|
BOOL bHintIndicatorNotTriggered
|
|
|
|
BOOL bDisabledLastFrame
|
|
|
|
INT iSwitchActiveTimer
|
|
BOOL bSwitchActiveBlock
|
|
|
|
BOOL bCleanupMovies
|
|
INT iCleanupMoviesTimer
|
|
//TIME_DATATYPE tdCleanupMoviesTimer
|
|
|
|
INT iLoadMoviesTimer
|
|
TIME_DATATYPE tdLoadMoviesTimer
|
|
|
|
BOOL bMatchmakingCardOnscreen
|
|
|
|
INT iLastTimeSwitchWasOnscreen
|
|
|
|
BOOL bShownPSPlusSignIn = FALSE
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
WIDGET_GROUP_ID widgetID
|
|
//SkySwoop widget
|
|
INT iSkySwoopWidget
|
|
|
|
INT iCurrentState_Debug
|
|
INT iMissionType_Debug
|
|
BOOL bTimescale_Debug
|
|
|
|
BOOL bForceLoad_Debug
|
|
BOOL bHideThisFrame_Debug
|
|
BOOL bAllowHiddenSelection_Debug
|
|
|
|
BOOL bDisplayAutoSwitchHint0, bDisplayAutoSwitchHint1, bDisplayAutoSwitchHint2
|
|
|
|
BOOL bPauseMenuActiveEX_Debug, bPauseMenuActive_Debug
|
|
|
|
PROC PRINT_DEBUG_STAT_TEXT(FLOAT fX, FLOAT fY, STRING sText)
|
|
SET_TEXT_SCALE(0.0000, 0.2900)
|
|
SET_TEXT_COLOUR(255, 255, 255, 255)
|
|
SET_TEXT_CENTRE(FALSE)
|
|
SET_TEXT_DROPSHADOW(0, 0, 0, 0, 0)
|
|
SET_TEXT_EDGE(0, 0, 0, 0, 0)
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING(fX, fY, "STRING", sText)
|
|
ENDPROC
|
|
|
|
PROC MAINTAIN_SELECTOR_MULTIPLAYER_QUICKLAUNCH()
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
IF GET_COMMANDLINE_PARAM_EXISTS("sc_DisableShiftEntryToMP")
|
|
EXIT
|
|
ENDIF
|
|
|
|
|
|
|
|
#ENDIF
|
|
|
|
IF g_bDeleteAllCharsQuick = FALSE
|
|
AND SCRIPT_IS_CLOUD_AVAILABLE()
|
|
|
|
|
|
//Jump Straight into a game as a cop or a mexican
|
|
// IF IS_DEBUG_KEY_JUST_PRESSED(KEY_C, KEYBOARD_MODIFIER_SHIFT, " Debug Start as a Cop ")
|
|
//
|
|
// PRINTSTRING("SELECTOR - Selected a Cop with shift-C")
|
|
//
|
|
// g_qlWhichTeam = QUICKLAUNCH_CNC_COP
|
|
// g_HaveIShiftedIntoTheGame = TRUE
|
|
// // SET_MP_HUD_ON_SCREEN(TRUE)
|
|
// IF NOT (IS_TRANSITION_MENU_TRIGGERED())
|
|
// TRIGGER_TRANSITION_MENU_ACTIVE(TRUE)
|
|
// ENDIF
|
|
// ELIF IS_DEBUG_KEY_JUST_PRESSED(KEY_M, KEYBOARD_MODIFIER_SHIFT, " Debug Start as a Mexican ")
|
|
// PRINTSTRING("/n SELECTOR - Selected a Mexican with shift-M")
|
|
// g_qlWhichTeam = QUICKLAUNCH_CNC_VAGOS
|
|
// g_HaveIShiftedIntoTheGame = TRUE
|
|
// // SET_MP_HUD_ON_SCREEN(TRUE)
|
|
// IF NOT (IS_TRANSITION_MENU_TRIGGERED())
|
|
// TRIGGER_TRANSITION_MENU_ACTIVE(TRUE)
|
|
// ENDIF
|
|
// ELIF IS_DEBUG_KEY_JUST_PRESSED(KEY_L, KEYBOARD_MODIFIER_SHIFT, " Debug Start as a Lost MC ")
|
|
// PRINTSTRING("/n SELECTOR - Selected a Biker with shift-N")
|
|
// g_qlWhichTeam = QUICKLAUNCH_CNC_BIKER
|
|
// g_HaveIShiftedIntoTheGame = TRUE
|
|
// // SET_MP_HUD_ON_SCREEN(TRUE)
|
|
// IF NOT (IS_TRANSITION_MENU_TRIGGERED())
|
|
// TRIGGER_TRANSITION_MENU_ACTIVE(TRUE)
|
|
// ENDIF
|
|
// ELIF IS_DEBUG_KEY_JUST_PRESSED(KEY_R, KEYBOARD_MODIFIER_CTRL, " Debug Start as a Spectator ")
|
|
// PRINTSTRING("/n SELECTOR - Selected a spectator with ctrl-R")
|
|
// g_qlWhichTeam = QUICKLAUNCH_CNC_SPECTATOR
|
|
// g_HaveIShiftedIntoTheGame = TRUE
|
|
// // SET_MP_HUD_ON_SCREEN(TRUE)
|
|
// IF NOT (IS_TRANSITION_MENU_TRIGGERED())
|
|
// TRIGGER_TRANSITION_MENU_ACTIVE(TRUE)
|
|
// ENDIF
|
|
IF IS_DEBUG_KEY_JUST_PRESSED(KEY_O, KEYBOARD_MODIFIER_CTRL, " Debug Start FREEMODE as a Spectator ")
|
|
PRINTSTRING("/n SELECTOR - Selected a spectator with alt-R")
|
|
g_qlWhichTeam = QUICKLAUNCH_FREEMODE_SPECTATOR
|
|
g_HaveIShiftedIntoTheGame = TRUE
|
|
// SET_MP_HUD_ON_SCREEN(TRUE)
|
|
IF NOT (IS_TRANSITION_MENU_TRIGGERED())
|
|
TRIGGER_TRANSITION_MENU_ACTIVE(TRUE)
|
|
ENDIF
|
|
ELIF IS_DEBUG_KEY_JUST_PRESSED(KEY_F, KEYBOARD_MODIFIER_SHIFT, " Debug Start in FREEMODE ")
|
|
PRINTSTRING("/n SELECTOR - Selected a Freemode with shift-F ")
|
|
g_qlWhichTeam = QUICKLAUNCH_FREEMODE
|
|
g_HaveIShiftedIntoTheGame = TRUE
|
|
// SET_MP_HUD_ON_SCREEN(TRUE)
|
|
IF NOT (IS_TRANSITION_MENU_TRIGGERED())
|
|
TRIGGER_TRANSITION_MENU_ACTIVE(TRUE)
|
|
ENDIF
|
|
ELIF IS_DEBUG_KEY_JUST_PRESSED(KEY_Q, KEYBOARD_MODIFIER_SHIFT, " Debug RETURN TO SINGLEPLAYER ")
|
|
PRINTSTRING("/n SELECTOR - Selected a SinglePlayer with shift-Q ")
|
|
g_iLeaveMultiplayerState = LEAVE_MP_STATE_YES
|
|
g_HaveIShiftedIntoTheGame = TRUE
|
|
g_TransitionCameraState = LEAVEMPHUD_MPTOSP
|
|
STOP_PLAYER_SWITCH()
|
|
SET_CURRENT_GAMEMODE(GAMEMODE_EMPTY)
|
|
// SET_MP_HUD_ON_SCREEN(TRUE)
|
|
IF NOT (IS_TRANSITION_MENU_TRIGGERED())
|
|
TRIGGER_TRANSITION_MENU_ACTIVE(TRUE)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
ENDPROC
|
|
|
|
PROC MAINTAIN_SELECTOR_MULTIPLAYER_QUICKLAUNCH_TRANSITION()
|
|
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
IF GET_COMMANDLINE_PARAM_EXISTS("sc_DisableShiftEntryToMP")
|
|
EXIT
|
|
ENDIF
|
|
|
|
#ENDIF
|
|
|
|
IF g_bDeleteAllCharsQuick = FALSE
|
|
AND SCRIPT_IS_CLOUD_AVAILABLE()
|
|
|
|
//Jump Straight into a game as a cop or a mexican
|
|
|
|
// IF IS_DEBUG_KEY_JUST_PRESSED(KEY_C, KEYBOARD_MODIFIER_SHIFT, " Debug Start as a Cop ")
|
|
// IF GET_CURRENT_GAMEMODE() = GAMEMODE_CnC
|
|
// PRINTSTRING("SELECTOR - Selected Swap Team to a Cop with shift-C")
|
|
// SET_QUICKLAUNCH_STATE(QUICKLAUNCH_CNC_SWAPTO_COP)
|
|
// ELSE
|
|
// PRINTSTRING("SELECTOR - Selected a Cop with shift-C")
|
|
// SET_QUICKLAUNCH_STATE(QUICKLAUNCH_CNC_COP)
|
|
// ENDIF
|
|
// ELIF IS_DEBUG_KEY_JUST_PRESSED(KEY_M, KEYBOARD_MODIFIER_SHIFT, " Debug Start as a Mexican ")
|
|
// PRINTSTRING("/n SELECTOR - Selected a Mexican with shift-M")
|
|
// IF GET_CURRENT_GAMEMODE() = GAMEMODE_CnC
|
|
// PRINTSTRING("SELECTOR - Selected Swap Team to a Vagos with shift-M")
|
|
// SET_QUICKLAUNCH_STATE(QUICKLAUNCH_CNC_SWAPTO_VAGOS)
|
|
// ELSE
|
|
// PRINTSTRING("SELECTOR - Selected a Vagos with shift-M")
|
|
// SET_QUICKLAUNCH_STATE(QUICKLAUNCH_CNC_VAGOS)
|
|
// ENDIF
|
|
// ELIF IS_DEBUG_KEY_JUST_PRESSED(KEY_L, KEYBOARD_MODIFIER_SHIFT, " Debug Start as a Lost MC ")
|
|
// IF GET_CURRENT_GAMEMODE() = GAMEMODE_CnC
|
|
// PRINTSTRING("SELECTOR - Selected Swap Team to a Biker with shift-N")
|
|
// SET_QUICKLAUNCH_STATE(QUICKLAUNCH_CNC_SWAPTO_BIKER)
|
|
// ELSE
|
|
// PRINTSTRING("/n SELECTOR - Selected a Biker with shift-N")
|
|
// SET_QUICKLAUNCH_STATE(QUICKLAUNCH_CNC_BIKER)
|
|
// ENDIF
|
|
// IF IS_DEBUG_KEY_JUST_PRESSED(KEY_R, KEYBOARD_MODIFIER_CTRL, " Debug Start as a Spectator")
|
|
// IF GET_CURRENT_GAMEMODE() = GAMEMODE_CnC
|
|
// PRINTSTRING("SELECTOR - Selected Swap Team to a Spectator with shift-R")
|
|
// SET_QUICKLAUNCH_STATE(QUICKLAUNCH_CNC_SWAPTO_SPECTATOR)
|
|
// ELSE
|
|
// PRINTSTRING("/n SELECTOR - Selected a Biker with ctrl-R")
|
|
// SET_QUICKLAUNCH_STATE(QUICKLAUNCH_CNC_SPECTATOR)
|
|
// ENDIF
|
|
// IF IS_DEBUG_KEY_JUST_PRESSED(KEY_O, KEYBOARD_MODIFIER_CTRL, " Debug Start as FREEMODE a Spectator")
|
|
// PRINTSTRING("/n SELECTOR - Selected a Freemode as spectator with alt-R ")
|
|
// SET_QUICKLAUNCH_STATE(QUICKLAUNCH_FREEMODE_SPECTATOR)
|
|
// STOP_PLAYER_SWITCH()
|
|
//
|
|
IF ((IS_DEBUG_KEY_JUST_PRESSED(KEY_F, KEYBOARD_MODIFIER_SHIFT, " Debug Start in FREEMODE ")) OR ((GET_COMMANDLINE_PARAM_EXISTS("sc_botperformancetest") AND (g_bAlreadySkippedIntoFreemode=FALSE))))
|
|
PRINTSTRING("/n SELECTOR - Selected a Freemode with shift-F ")
|
|
g_bAlreadySkippedIntoFreemode = TRUE
|
|
STOP_PLAYER_SWITCH()
|
|
SET_QUICKLAUNCH_STATE(QUICKLAUNCH_FREEMODE)
|
|
ELIF (GET_COMMANDLINE_PARAM_EXISTS("sc_mpUnlockAllFreemode") AND NOT g_bAlreadySkippedIntoFreemode)
|
|
PRINTSTRING("/n SELECTOR - launch Freemode with sc_mpUnlockAllFreemode command line ")
|
|
g_bAlreadySkippedIntoFreemode = TRUE
|
|
STOP_PLAYER_SWITCH()
|
|
SET_QUICKLAUNCH_STATE(QUICKLAUNCH_FREEMODE)
|
|
ELIF IS_DEBUG_KEY_JUST_PRESSED(KEY_Q, KEYBOARD_MODIFIER_SHIFT, " Debug RETURN TO SINGLEPLAYER ")
|
|
PRINTSTRING("/n SELECTOR - Selected a SinglePlayer with shift-Q ")
|
|
SET_QUICKLAUNCH_STATE(QUICKLAUNCH_SP)
|
|
STOP_PLAYER_SWITCH()
|
|
ELIF IS_DEBUG_KEY_JUST_PRESSED(KEY_Q, KEYBOARD_MODIFIER_CTRL, " Debug RETURN TO SINGLEPLAYER - EVERYONE ")
|
|
PRINTSTRING("/n SELECTOR - Selected a SinglePlayer Kicker with Ctrl-Q ")
|
|
SET_QUICKLAUNCH_STATE(QUICKLAUNCH_SP)
|
|
STOP_PLAYER_SWITCH()
|
|
GlobalplayerBD[NATIVE_TO_INT(PLAYER_ID())].bKickEveryoneOutSessionTrigger = TRUE
|
|
g_iKickEveryoneOutSessionPlayerNumber = NATIVE_TO_INT(PLAYER_ID())
|
|
|
|
// ELIF IS_DEBUG_KEY_JUST_PRESSED(KEY_C, KEYBOARD_MODIFIER_ALT, " Debug Start as a Cop with tutorial ")
|
|
// IF GET_CURRENT_GAMEMODE() = GAMEMODE_CnC
|
|
// PRINTSTRING("SELECTOR - Selected Swap Team to a Cop with alt-C")
|
|
// SET_QUICKLAUNCH_STATE(QUICKLAUNCH_CNC_SWAPTO_COP_WTUTORIAL)
|
|
// ELSE
|
|
// PRINTSTRING("SELECTOR - Selected a Cop with alt-C")
|
|
// SET_QUICKLAUNCH_STATE(QUICKLAUNCH_CNC_COP_WTUTORIAL)
|
|
// ENDIF
|
|
// ELIF IS_DEBUG_KEY_JUST_PRESSED(KEY_V, KEYBOARD_MODIFIER_ALT, " Debug Start as a Vagos with tutorial ")
|
|
// PRINTSTRING("/n SELECTOR - Selected a Vagos with alt-V")
|
|
// IF GET_CURRENT_GAMEMODE() = GAMEMODE_CnC
|
|
// PRINTSTRING("SELECTOR - Selected Swap Team to a Vagos with alt-V")
|
|
// SET_QUICKLAUNCH_STATE(QUICKLAUNCH_CNC_SWAPTO_VAGOS_WTUTORIAL)
|
|
// ELSE
|
|
// PRINTSTRING("SELECTOR - Selected a Vagos with alt-V")
|
|
// SET_QUICKLAUNCH_STATE(QUICKLAUNCH_CNC_VAGOS_WTUTORIAL)
|
|
// ENDIF
|
|
// ELIF IS_DEBUG_KEY_JUST_PRESSED(KEY_L, KEYBOARD_MODIFIER_ALT, " Debug Start as a Lost MC with tutorial ")
|
|
// IF GET_CURRENT_GAMEMODE() = GAMEMODE_CnC
|
|
// PRINTSTRING("SELECTOR - Selected Swap Team to a Lost MC with alt-N")
|
|
// SET_QUICKLAUNCH_STATE(QUICKLAUNCH_CNC_SWAPTO_BIKER_WTUTORIAL)
|
|
// ELSE
|
|
// PRINTSTRING("/n SELECTOR - Selected a Lost MC with alt-N")
|
|
// SET_QUICKLAUNCH_STATE(QUICKLAUNCH_CNC_BIKER_WTUTORIAL)
|
|
// ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
/*
|
|
IF g_binitiatejoinleavetest = TRUE
|
|
|
|
IF GET_CURRENT_GAMEMODE() = GAMEMODE_SP
|
|
//AND IS_PLAYER_PLAYING(PLAYER_ID())
|
|
PRINTSTRING("/n Switch to Freemode with automated test ")
|
|
SET_QUICKLAUNCH_STATE(QUICKLAUNCH_FREEMODE)
|
|
ENDIF
|
|
|
|
IF GET_CURRENT_GAMEMODE() = GAMEMODE_FM
|
|
//AND IS_PLAYER_PLAYING(PLAYER_ID())
|
|
PRINTSTRING("/n Switch to CNC Mexican gang automated test")
|
|
SET_QUICKLAUNCH_STATE(QUICKLAUNCH_CNC_SWAPTO_VAGOS)
|
|
ENDIF
|
|
|
|
IF GET_CURRENT_GAMEMODE() = GAMEMODE_CnC
|
|
//AND IS_PLAYER_PLAYING(PLAYER_ID())
|
|
PRINTSTRING("/n Switch to Single Player with automated test")
|
|
SET_QUICKLAUNCH_STATE(QUICKLAUNCH_SP)
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
*/
|
|
ENDPROC
|
|
|
|
PROC INITIALISE_SELECTOR_WIDGETS()
|
|
widgetID = START_WIDGET_GROUP("Selector Debug")
|
|
|
|
|
|
ADD_WIDGET_BOOL("g_sSelectorUI.bMustReleaseSelectorUIButton", g_sSelectorUI.bMustReleaseSelectorUIButton)
|
|
ADD_WIDGET_BOOL("g_sSelectorUI.bMustReleaseCancelButton", g_sSelectorUI.bMustReleaseCancelButton)
|
|
ADD_WIDGET_BOOL("g_sSelectorUI.bMustReleaseAcceptButton", g_sSelectorUI.bMustReleaseAcceptButton)
|
|
ADD_WIDGET_BOOL("g_sSelectorUI.bMustReleaseSquareButton", g_sSelectorUI.bMustReleaseSquareButton)
|
|
|
|
ADD_WIDGET_BOOL("PAUSE MENU ACTIVE EX", bPauseMenuActiveEX_Debug)
|
|
ADD_WIDGET_BOOL("PAUSE MENU ACTIVE", bPauseMenuActive_Debug)
|
|
|
|
ADD_WIDGET_BOOL("g_bGTAOnlineAvailable", g_bGTAOnlineAvailable)
|
|
|
|
ADD_WIDGET_BOOL("bDisplayAutoSwitchHint0", bDisplayAutoSwitchHint0)
|
|
ADD_WIDGET_BOOL("bDisplayAutoSwitchHint1", bDisplayAutoSwitchHint1)
|
|
ADD_WIDGET_BOOL("bDisplayAutoSwitchHint2", bDisplayAutoSwitchHint2)
|
|
|
|
//ADD_WIDGET_FLOAT_SLIDER("PLAYER SWITCH X", fPLAYER_SWITCH_X, -1.0, 1.0, 0.001)
|
|
ADD_WIDGET_FLOAT_SLIDER("PLAYER SWITCH Y", fPLAYER_SWITCH_Y, -1.0, 1.0, 0.001)
|
|
ADD_WIDGET_FLOAT_SLIDER("PLAYER SWITCH W", fPLAYER_SWITCH_W, -1.0, 1.0, 0.001)
|
|
ADD_WIDGET_FLOAT_SLIDER("PLAYER SWITCH H", fPLAYER_SWITCH_H, -1.0, 1.0, 0.001)
|
|
ADD_WIDGET_FLOAT_SLIDER("fPLAYER SWITCH SCALE W", fPLAYER_SWITCH_SCALE_W, 0.0, 2.0, 0.001)
|
|
ADD_WIDGET_FLOAT_SLIDER("fPLAYER SWITCH SCALE H", fPLAYER_SWITCH_SCALE_H, 0.0, 2.0, 0.001)
|
|
//ADD_WIDGET_FLOAT_SLIDER("fPLAYER SWITCH WIDE POS X", fPLAYER_SWITCH_WIDE_WIDE_POS_X, 0.0, 2.0, 0.001)
|
|
ADD_WIDGET_FLOAT_SLIDER("fPLAYER SWITCH WIDE SCALE", fPLAYER_SWITCH_WIDE_SCALE, 0.0, 2.0, 0.001)
|
|
|
|
ADD_WIDGET_FLOAT_SLIDER("PLAYER STATS X", fPLAYER_STATS_X, -1.0, 1.0, 0.001)
|
|
ADD_WIDGET_FLOAT_SLIDER("PLAYER STATS Y", fPLAYER_STATS_Y, -1.0, 1.0, 0.001)
|
|
ADD_WIDGET_FLOAT_SLIDER("PLAYER STATS W", fPLAYER_STATS_W, -1.0, 1.0, 0.001)
|
|
ADD_WIDGET_FLOAT_SLIDER("PLAYER STATS H", fPLAYER_STATS_H, -1.0, 1.0, 0.001)
|
|
ADD_WIDGET_FLOAT_SLIDER("PLAYER STATS SCALE W", fPLAYER_STATS_SCALE_W, 0.0, 2.0, 0.001)
|
|
ADD_WIDGET_FLOAT_SLIDER("PLAYER STATS SCALE H", fPLAYER_STATS_SCALE_H, 0.0, 2.0, 0.001)
|
|
|
|
ADD_WIDGET_FLOAT_SLIDER("fMISSION_NAME_X", fMISSION_NAME_X, -2.0, 2.0, 0.001)
|
|
ADD_WIDGET_FLOAT_SLIDER("fMISSION_NAME_Y", fMISSION_NAME_Y, -2.0, 2.0, 0.001)
|
|
|
|
ADD_WIDGET_BOOL("Activate Debug Display", g_sSelectorUI.debug_bDisplay)
|
|
ADD_WIDGET_BOOL("SWITCH cam active", g_bSelectorCamActive)
|
|
|
|
ADD_WIDGET_STRING("Switch UI states")
|
|
ADD_WIDGET_INT_READ_ONLY("eUIstateCurrent", iCurrentState_Debug)
|
|
ADD_WIDGET_BOOL("bDisabled", g_sSelectorUI.bDisabled)
|
|
ADD_WIDGET_BOOL("bDisabledThisFrame", g_sSelectorUI.bDisabledThisFrame)
|
|
ADD_WIDGET_BOOL("bDisableForEndOfMission", g_sSelectorUI.bDisableForEndOfMission)
|
|
ADD_WIDGET_BOOL("bHiddenThisFrame", g_sSelectorUI.bHiddenThisFrame)
|
|
ADD_WIDGET_BOOL("bDisplay", g_sSelectorUI.bDisplay)
|
|
ADD_WIDGET_BOOL("bRequested", bRequested)
|
|
ADD_WIDGET_BOOL("bLoaded", g_sSelectorUI.bLoaded)
|
|
ADD_WIDGET_BOOL("bSetup", g_sSelectorUI.bSetup)
|
|
ADD_WIDGET_BOOL("bOnScreen", g_sSelectorUI.bOnScreen)
|
|
ADD_WIDGET_BOOL("bMissionUpdate", g_sSelectorUI.bMissionUpdate)
|
|
ADD_WIDGET_BOOL("bCharAvailable", g_sSelectorUI.bCharAvailable)
|
|
ADD_WIDGET_BOOL("bFirstSelectionMade", g_sSelectorUI.bFirstSelectionMade)
|
|
ADD_WIDGET_BOOL("bForceUpdate", g_sSelectorUI.bForceUpdate)
|
|
ADD_WIDGET_BOOL("bSelection", bSelection)
|
|
ADD_WIDGET_BOOL("bForceUpdateCountdown", bForceUpdateCountdown)
|
|
ADD_WIDGET_BOOL("bForceLoad_Debug", bForceLoad_Debug)
|
|
ADD_WIDGET_BOOL("bHideThisFrame_Debug", bHideThisFrame_Debug)
|
|
ADD_WIDGET_BOOL("bAllowHiddenSelection_Debug", bAllowHiddenSelection_Debug)
|
|
ADD_WIDGET_BOOL("bSuppressUIForShortSwitch", bSuppressUIForShortSwitch)
|
|
|
|
ADD_WIDGET_INT_READ_ONLY("iSelectedSlot", g_sSelectorUI.iSelectedSlot)
|
|
ADD_WIDGET_INT_READ_ONLY("iSelectedSlotOnLoad", iSelectedSlotOnLoad)
|
|
|
|
ADD_WIDGET_INT_READ_ONLY("Current mission type", iMissionType_Debug)
|
|
|
|
ADD_WIDGET_BOOL("bTimescale_Debug", bTimescale_Debug)
|
|
|
|
|
|
|
|
ADD_WIDGET_BOOL("bSFX_BlockAudioCalls", g_sSelectorUI.bSFX_BlockAudioCalls)
|
|
ADD_WIDGET_INT_READ_ONLY("SkySwoopStage", iSkySwoopWidget)
|
|
|
|
//ADD_WIDGET_BOOL("g_bKillFMMCmenu", g_bKillFMMCmenu)
|
|
// ADD_WIDGET_BOOL("g_FMMC_STRUCT.bKillFMMC", g_FMMC_STRUCT.bKillFMMC)
|
|
|
|
ADD_WIDGET_STRING("Code switch")
|
|
ADD_WIDGET_BOOL("g_bUseTransitionCamera", g_sSelectorUI.debug_bUseTransitionCamera)
|
|
ADD_WIDGET_FLOAT_SLIDER("g_fSwitchPedAfterPhase", g_sSelectorUI.debug_fSwitchPedAfterPhase, 0.0, 1.0, 0.1)
|
|
STOP_WIDGET_GROUP()
|
|
WidgetID = widgetID //compile fix
|
|
|
|
g_sSelectorUI.debug_fSwitchPedAfterPhase = 0.5
|
|
ENDPROC
|
|
|
|
PROC UPDATE_SELECTOR_WIDGETS()
|
|
|
|
iCurrentState_Debug = ENUM_TO_INT(g_sSelectorUI.eUIStateCurrent)
|
|
iMissionType_Debug = ENUM_TO_INT(g_OnMissionState)
|
|
|
|
bPauseMenuActiveEX_Debug = IS_PAUSE_MENU_ACTIVE_EX()
|
|
bPauseMenuActive_Debug = IS_PAUSE_MENU_ACTIVE()
|
|
|
|
IF bForceLoad_Debug
|
|
FORCE_LOAD_SELECTOR_THIS_FRAME()
|
|
ENDIF
|
|
IF bHideThisFrame_Debug
|
|
HIDE_SELECTOR_THIS_FRAME(TRUE, bAllowHiddenSelection_Debug)
|
|
ENDIF
|
|
|
|
IF bTimescale_Debug
|
|
IF NOT g_bDrawLiteralSceneString
|
|
SET_DEBUG_LINES_AND_SPHERES_DRAWING_ACTIVE(TRUE)
|
|
g_bDrawLiteralSceneString = TRUE
|
|
ENDIF
|
|
|
|
TEXT_LABEL_63 str
|
|
|
|
str = "fTargetScale: "
|
|
str += GET_STRING_FROM_FLOAT(fTargetScale)
|
|
DrawDebugSceneTextWithOffset(str, GET_ENTITY_COORDS(PLAYER_PED_ID()), -5.0, HUD_COLOUR_PURE_WHITE)
|
|
|
|
str = "fLastTimeScaleSet: "
|
|
str += GET_STRING_FROM_FLOAT(fLastTimeScaleSet)
|
|
DrawDebugSceneTextWithOffset(str, GET_ENTITY_COORDS(PLAYER_PED_ID()), -4.0, HUD_COLOUR_PURE_WHITE)
|
|
|
|
ENDIF
|
|
|
|
IF bDisplayAutoSwitchHint0
|
|
DISPLAY_SELECTOR_PED_AUTOSWITCH_UI(SELECTOR_PED_MICHAEL)
|
|
bDisplayAutoSwitchHint0 = FALSE
|
|
ENDIF
|
|
IF bDisplayAutoSwitchHint1
|
|
DISPLAY_SELECTOR_PED_AUTOSWITCH_UI(SELECTOR_PED_FRANKLIN)
|
|
bDisplayAutoSwitchHint1 = FALSE
|
|
ENDIF
|
|
IF bDisplayAutoSwitchHint2
|
|
DISPLAY_SELECTOR_PED_AUTOSWITCH_UI(SELECTOR_PED_TREVOR)
|
|
bDisplayAutoSwitchHint2 = FALSE
|
|
ENDIF
|
|
|
|
IF g_sSelectorUI.debug_bDisplay
|
|
INT i
|
|
TEXT_LABEL_63 sTempLabel
|
|
REPEAT 4 i
|
|
IF DOES_ENTITY_EXIST(g_sSelectorUI.debug_pedID[i])
|
|
IF NOT DOES_BLIP_EXIST(g_sSelectorUI.debug_blipID[i])
|
|
g_sSelectorUI.debug_blipID[i] = ADD_BLIP_FOR_ENTITY(g_sSelectorUI.debug_pedID[i])
|
|
IF i = 0
|
|
SET_BLIP_SPRITE(g_sSelectorUI.debug_blipID[i], RADAR_TRACE_MICHAEL_FAMILY)
|
|
ELIF i = 1
|
|
SET_BLIP_SPRITE(g_sSelectorUI.debug_blipID[i], RADAR_TRACE_TREVOR_FAMILY)
|
|
ELIF i = 2
|
|
SET_BLIP_SPRITE(g_sSelectorUI.debug_blipID[i], RADAR_TRACE_FRANKLIN_FAMILY)
|
|
ENDIF
|
|
SET_BLIP_FLASHES(g_sSelectorUI.debug_blipID[i], FALSE)
|
|
g_sSelectorUI.debug_bBlipFlashing[i] = FALSE
|
|
ENDIF
|
|
IF NOT IS_PED_INJURED(g_sSelectorUI.debug_pedID[i])
|
|
IF g_sSelectorUI.debug_bBlipFlashing[i]
|
|
SET_BLIP_FLASHES(g_sSelectorUI.debug_blipID[i], FALSE)
|
|
g_sSelectorUI.debug_bBlipFlashing[i] = FALSE
|
|
ENDIF
|
|
ELSE
|
|
IF NOT g_sSelectorUI.debug_bBlipFlashing[i]
|
|
SET_BLIP_FLASHES(g_sSelectorUI.debug_blipID[i], TRUE)
|
|
g_sSelectorUI.debug_bBlipFlashing[i] = TRUE
|
|
ENDIF
|
|
ENDIF
|
|
ELSE
|
|
IF DOES_BLIP_EXIST(g_sSelectorUI.debug_blipID[i])
|
|
REMOVE_BLIP(g_sSelectorUI.debug_blipID[i])
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF i = 0 sTempLabel = "pedID[SELECTOR_PED_MICHAEL] = " ENDIF
|
|
IF i = 1 sTempLabel = "pedID[SELECTOR_PED_FRANKLIN] = " ENDIF
|
|
IF i = 2 sTempLabel = "pedID[SELECTOR_PED_TREVOR] = " ENDIF
|
|
IF i = 3 sTempLabel = "pedID[SELECTOR_PED_MULTIPLAYER] = " ENDIF
|
|
|
|
IF NOT DOES_ENTITY_EXIST(g_sSelectorUI.debug_pedID[i])
|
|
OR IS_PED_INJURED(g_sSelectorUI.debug_pedID[i])
|
|
sTempLabel += "DEAD"
|
|
ELSE
|
|
sTempLabel += "ALIVE"
|
|
ENDIF
|
|
IF g_sSelectorUI.debug_bHintState[i]
|
|
sTempLabel += "-HINTED"
|
|
ENDIF
|
|
IF g_sSelectorUI.debug_bBlockState[i]
|
|
sTempLabel += "-BLOCKED"
|
|
ENDIF
|
|
|
|
IF g_sSelectorUI.debug_iState[i] = 0
|
|
sTempLabel += "-NOTSET"
|
|
ELIF g_sSelectorUI.debug_iState[i] = 1 // AVAILABLE = 1
|
|
sTempLabel += "-AVAILABLE"
|
|
ELIF g_sSelectorUI.debug_iState[i] = 2 // UNAVAIL = 2
|
|
sTempLabel += "-UNAVAIL"
|
|
ELIF g_sSelectorUI.debug_iState[i] = 3 // NOTMET= 3
|
|
sTempLabel += "-NOTMET"
|
|
ENDIF
|
|
|
|
SET_TEXT_SCALE(0.0, 0.3)
|
|
SET_TEXT_COLOUR(255, 255, 255, 255)
|
|
SET_TEXT_CENTRE(FALSE)
|
|
SET_TEXT_DROPSHADOW(0, 0, 0, 0, 0)
|
|
SET_TEXT_EDGE(0, 0, 0, 0, 0)
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING(0.0500, 0.375+(i*0.03), "STRING", sTempLabel)
|
|
ENDREPEAT
|
|
ELSE
|
|
INT i
|
|
REPEAT 3 i
|
|
IF DOES_BLIP_EXIST(g_sSelectorUI.debug_blipID[i])
|
|
REMOVE_BLIP(g_sSelectorUI.debug_blipID[i])
|
|
ENDIF
|
|
ENDREPEAT
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
PROC UPDATE_SKYSWOOP_WIDGETS()
|
|
SKYSWOOP Swoop = GET_SKYSWOOP_STAGE()
|
|
SWITCH Swoop
|
|
CASE SKYSWOOP_NONE
|
|
iSkySwoopWidget = 0
|
|
BREAK
|
|
CASE SKYSWOOP_GOINGUP
|
|
iSkySwoopWidget = 1
|
|
BREAK
|
|
CASE SKYSWOOP_INSKYSTATIC
|
|
iSkySwoopWidget = 2
|
|
BREAK
|
|
CASE SKYSWOOP_INSKYMOVING
|
|
iSkySwoopWidget = 3
|
|
BREAK
|
|
CASE SKYSWOOP_GOINGDOWN
|
|
iSkySwoopWidget = 4
|
|
BREAK
|
|
ENDSWITCH
|
|
|
|
ENDPROC
|
|
|
|
#ENDIF
|
|
|
|
PROC GET_STAT_BOX_X_POS( FLOAT &fXPosition)
|
|
|
|
INT fX, fY
|
|
GET_ACTUAL_SCREEN_RESOLUTION( fX, fY )
|
|
FLOAT fPhysAspect = ( TO_FLOAT( fX ) / TO_FLOAT( fY ) )
|
|
FLOAT fFakeAspect = GET_ASPECT_RATIO( FALSE )
|
|
|
|
// Fix for B* 2264324 - Problems with selector position when in aspect over 3:2
|
|
IF fPhysAspect > ( 3.0 / 2.0 )
|
|
AND fPhysAspect < 3.5 // Below triple head physical aspect ratio.
|
|
IF fFakeAspect = ( 16.0 / 9.0 )
|
|
OR fFakeAspect = ( 17.0 / 9.0 )
|
|
OR ( fFakeAspect = ( 21.0 / 9.0 ) AND fPhysAspect >= ( 17.0 / 9.0 ) )
|
|
fXPosition = 0.042
|
|
ELIF fFakeAspect = ( 5.0 / 3.0 )
|
|
fXPosition = 0.045 // Few hard coded values depending on the aspect ratio
|
|
ELIF fFakeAspect = ( 16.0 / 10.0 )
|
|
fXPosition = 0.047
|
|
ELIF fPhysAspect % fFakeAspect = 0.0
|
|
fXPosition = 0.047 // If the aspect ratio is the same as the physical aspect
|
|
ELSE // and hasn't been caught by standard ratio above
|
|
fXPosition = F_STAT_X_POSITION
|
|
ENDIF
|
|
ELSE
|
|
fXPosition = F_STAT_X_POSITION
|
|
ENDIF
|
|
|
|
ENDPROC
|
|
|
|
|
|
/// PURPOSE: Clears all the runtime states to match ambient setup
|
|
PROC MAINTAIN_SELECTOR_RUNTIME_STATES()
|
|
g_sSelectorUI.bForceUpdate = FALSE
|
|
g_sSelectorUI.bFakeStateUpdated = FALSE
|
|
g_sSelectorUI.bCharAvailable = FALSE
|
|
g_sSelectorUI.bSelection = FALSE
|
|
g_sSelectorUI.bMissionUpdate = FALSE
|
|
g_sSelectorUI.bCheckPlayerControl = TRUE
|
|
g_sSelectorUI.bCheckActivationButton = TRUE
|
|
g_sSelectorUI.bAllowWhenDead = FALSE
|
|
g_sSelectorUI.bHiddenThisFrame = FALSE
|
|
g_sSelectorUI.bAllowSelectionWhenHidden = FALSE
|
|
g_sSelectorUI.bForceLoadThisFrame = FALSE
|
|
g_sSelectorUI.bDisableMapOverrideThisFrame = FALSE
|
|
g_sSelectorUI.bHideUiForSwitch = FALSE
|
|
|
|
|
|
IF bDisabledLastFrame
|
|
AND NOT g_sSelectorUI.bDisabledThisFrame
|
|
PRINTLN("DISABLE_SELECTOR_THIS_FRAME() stopped getting called")
|
|
#IF IS_DEBUG_BUILD
|
|
g_sSelectorUI.tlDisableScript = ""
|
|
#ENDIF
|
|
ENDIF
|
|
bDisabledLastFrame = g_sSelectorUI.bDisabledThisFrame
|
|
g_sSelectorUI.bDisabledThisFrame = FALSE
|
|
|
|
#IF USE_REPLAY_RECORDING_TRIGGERS
|
|
IF bReplayFeedDisabledLastFrame
|
|
AND NOT g_sSelectorUI.bReplayFeedDisabledThisFrame
|
|
PRINTLN("DISABLE_REPLAY_RECORDING_UI_THIS_FRAME() stopped getting called")
|
|
#IF IS_DEBUG_BUILD
|
|
g_sSelectorUI.tlDisableReplayFeedScript = ""
|
|
#ENDIF
|
|
ENDIF
|
|
bReplayFeedDisabledLastFrame = g_sSelectorUI.bReplayFeedDisabledThisFrame
|
|
g_sSelectorUI.bReplayFeedDisabledThisFrame = FALSE
|
|
#ENDIF
|
|
|
|
IF g_sSelectorUI.bDisableForEndOfMission
|
|
IF (GET_GAME_TIMER() - g_sSelectorUI.iEndOfMissionTimer) > 5000
|
|
OR NETWORK_IS_GAME_IN_PROGRESS()
|
|
g_sSelectorUI.bDisableForEndOfMission = FALSE
|
|
ENDIF
|
|
ENDIF
|
|
|
|
bMatchmakingCardOnscreen = g_Show_Lap_Dpad // we cache this value so that it's state change can be handled a frame later.
|
|
|
|
#IF USE_REPLAY_RECORDING_TRIGGERS
|
|
IF NOT IS_CONTROL_PRESSED(FRONTEND_CONTROL, INPUT_CHARACTER_WHEEL)
|
|
AND NOT IS_DISABLED_CONTROL_PRESSED(FRONTEND_CONTROL, INPUT_CHARACTER_WHEEL)
|
|
g_sSelectorUI.bMustReleaseSelectorUIButton = FALSE
|
|
ENDIF
|
|
IF NOT IS_CONTROL_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_CANCEL)
|
|
AND NOT IS_DISABLED_CONTROL_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_CANCEL)
|
|
g_sSelectorUI.bMustReleaseCancelButton = FALSE
|
|
ENDIF
|
|
IF NOT IS_CONTROL_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_ACCEPT)
|
|
AND NOT IS_DISABLED_CONTROL_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_ACCEPT)
|
|
AND NOT IS_CONTROL_PRESSED(PLAYER_CONTROL, INPUT_PARACHUTE_DEPLOY)
|
|
AND NOT IS_DISABLED_CONTROL_PRESSED(PLAYER_CONTROL, INPUT_PARACHUTE_DEPLOY)
|
|
g_sSelectorUI.bMustReleaseAcceptButton = FALSE
|
|
ENDIF
|
|
IF NOT IS_CONTROL_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_X)
|
|
AND NOT IS_DISABLED_CONTROL_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_X)
|
|
g_sSelectorUI.bMustReleaseSquareButton = FALSE
|
|
ENDIF
|
|
#ENDIF
|
|
ENDPROC
|
|
|
|
//////////////////////////////////////////////////////////////////////////////////////////
|
|
/// Scaleform related procedures
|
|
///
|
|
|
|
/// PURPOSE: Requests the selector UI Scaleform movie
|
|
PROC LOAD_SELECTOR_UI()
|
|
|
|
IF NOT g_sSelectorUI.bLoaded
|
|
|
|
IF (NOT NETWORK_IS_GAME_IN_PROGRESS() AND (GET_GAME_TIMER() - iLoadMoviesTimer) > 300)
|
|
OR (NETWORK_IS_GAME_IN_PROGRESS() AND (IS_TIME_MORE_THAN(GET_NETWORK_TIME(), GET_TIME_OFFSET(tdLoadMoviesTimer, 300)) OR ABSI(GET_TIME_DIFFERENCE(GET_NETWORK_TIME(), tdLoadMoviesTimer)) > 1000))
|
|
|
|
IF NOT NETWORK_IS_GAME_IN_PROGRESS() OR NOT bMatchmakingCardOnscreen
|
|
|
|
IF NOT bRequested
|
|
IF MISSION_FLOW_GET_RUNNING_MISSION() = SP_MISSION_PROLOGUE
|
|
movieID = REQUEST_SCALEFORM_MOVIE("PLAYER_SWITCH_PROLOGUE")
|
|
bUsingPrologueMovie = TRUE
|
|
ELSE
|
|
movieID = REQUEST_SCALEFORM_MOVIE("PLAYER_SWITCH")
|
|
movieID2 = REQUEST_SCALEFORM_MOVIE("PLAYER_SWITCH_STATS_PANEL")
|
|
bUsingPrologueMovie = FALSE
|
|
ENDIF
|
|
|
|
PRINTSTRING("\n LOAD_SELECTOR_UI - Requesting scaleform movies.")PRINTNL()
|
|
bRequested = TRUE
|
|
//g_sSelectorUI.iSFX_Display = -1
|
|
ENDIF
|
|
|
|
bSwitchAvailableAudioPlayed = FALSE
|
|
g_sSelectorUI.bForceUpdate = TRUE
|
|
|
|
g_sSelectorUI.bLoaded = FALSE
|
|
IF HAS_SCALEFORM_MOVIE_LOADED(movieID)
|
|
AND (bUsingPrologueMovie OR HAS_SCALEFORM_MOVIE_LOADED(movieID2))
|
|
|
|
IF NOT bSetSystemTimer
|
|
PRINTLN("LOAD_SELECTOR_UI - Setting scaleform movie to use system time")
|
|
SET_SCALEFORM_MOVIE_TO_USE_SYSTEM_TIME(movieID, TRUE)
|
|
bSetSystemTimer = TRUE
|
|
ENDIF
|
|
|
|
g_sSelectorUI.bLoaded = TRUE
|
|
ENDIF
|
|
ELSE
|
|
PRINTSTRING("\n LOAD_SELECTOR_UI - Waiting for matchmaking card to be removed before requesting scaleform movies.")PRINTNL()
|
|
ENDIF
|
|
ELSE
|
|
#IF IS_DEBUG_BUILD
|
|
IF NETWORK_IS_GAME_IN_PROGRESS()
|
|
PRINTSTRING("\n LOAD_SELECTOR_UI - Waiting for load timer to pass before requesting scaleform movies. Time diff=")PRINTINT(ABSI(GET_TIME_DIFFERENCE(GET_NETWORK_TIME(), tdLoadMoviesTimer)))PRINTNL()
|
|
ELSE
|
|
PRINTSTRING("\n LOAD_SELECTOR_UI - Waiting for load timer to pass before requesting scaleform movies.")PRINTNL()
|
|
ENDIF
|
|
#ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
iCleanupMoviesTimer = GET_GAME_TIMER()
|
|
// IF NETWORK_IS_GAME_IN_PROGRESS()
|
|
// tdCleanupMoviesTimer = GET_NETWORK_TIME()
|
|
// ENDIF
|
|
ENDPROC
|
|
|
|
#IF USE_REPLAY_RECORDING_TRIGGERS
|
|
|
|
STRUCT REPLAY_DISPLAY_DATA
|
|
INT iGameTime
|
|
TIME_DATATYPE tdNetworkTime
|
|
BOOL bRequestFeed
|
|
ENDSTRUCT
|
|
REPLAY_DISPLAY_DATA sReplayData
|
|
|
|
PROC UPDATE_REPLAY_RECORDING_FEED_REQUEST(BOOL &bDisplayReplayFeedIcons)
|
|
IF bDisplayReplayFeedIcons
|
|
// Set the time we first request the feed so we can add a small delay for displaying.
|
|
// This allows us to ignore the tapping of dpad_down.
|
|
IF NOT sReplayData.bRequestFeed
|
|
sReplayData.iGameTime = GET_GAME_TIMER()
|
|
IF NETWORK_IS_GAME_IN_PROGRESS()
|
|
sReplayData.tdNetworkTime = GET_NETWORK_TIME()
|
|
ENDIF
|
|
sReplayData.bRequestFeed = TRUE
|
|
ENDIF
|
|
|
|
IF NOT g_sSelectorUI.bDisplay
|
|
IF (NOT NETWORK_IS_GAME_IN_PROGRESS() AND (GET_GAME_TIMER() - sReplayData.iGameTime) < SELECTOR_UI_AMBIENT_SP_TIME_msec)
|
|
OR (NETWORK_IS_GAME_IN_PROGRESS() AND ABSI(GET_TIME_DIFFERENCE(GET_NETWORK_TIME(), sReplayData.tdNetworkTime)) < SELECTOR_UI_AMBIENT_MP_TIME_msec)
|
|
bDisplayReplayFeedIcons = FALSE
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
IF NETWORK_IS_GAME_IN_PROGRESS()
|
|
PRINTLN("UPDATE_REPLAY_RECORDING_FEED_REQUEST - FALSE: Initial delay, will start in ", 300-ABSI(GET_TIME_DIFFERENCE(GET_NETWORK_TIME(), sReplayData.tdNetworkTime)))
|
|
ELSE
|
|
PRINTLN("UPDATE_REPLAY_RECORDING_FEED_REQUEST - FALSE: Initial delay, will start in ", 300-(GET_GAME_TIMER() - sReplayData.iGameTime))
|
|
ENDIF
|
|
#ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ELSE
|
|
sReplayData.bRequestFeed = FALSE
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
FUNC BOOL IS_REPLAY_RECORDING_UI_SAFE_TO_USE()
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
BOOL bOutputDebug
|
|
IF IS_CONTROL_JUST_PRESSED(FRONTEND_CONTROL,INPUT_FRONTEND_DOWN)
|
|
OR IS_DISABLED_CONTROL_JUST_PRESSED(FRONTEND_CONTROL,INPUT_FRONTEND_DOWN)
|
|
bOutputDebug = TRUE
|
|
ENDIF
|
|
#ENDIF
|
|
|
|
IF (g_sSelectorUI.bReplayFeedDisabledThisFrame)
|
|
OR (IS_PED_INJURED(PLAYER_PED_ID()))
|
|
OR (NOT IS_PLAYER_CONTROL_ON(PLAYER_ID()))
|
|
OR (IS_PLAYER_SWITCH_IN_PROGRESS())
|
|
OR (IS_PLAYER_PED_SWITCH_IN_PROGRESS())
|
|
OR (IS_SCRIPT_HUD_DISPLAYING(HUDPART_TRANSITIONHUD))
|
|
OR (IS_CUTSCENE_PLAYING())
|
|
OR (IS_PHONE_ACTIVE_OR_OVERLAPPING_HUD_ITEMS())
|
|
OR (NOT IS_PLAYER_READY_FOR_CUTSCENE(PLAYER_ID()) AND GET_NUMBER_OF_THREADS_RUNNING_THE_SCRIPT_WITH_THIS_HASH(HASH("golf")) = 0)
|
|
OR (IS_PLAYER_BEING_ARRESTED(PLAYER_ID()))
|
|
OR (IS_REPLAY_BEING_PROCESSED())
|
|
OR (IS_TRANSITION_ACTIVE())
|
|
OR (IS_TRANSITION_SESSIONS_ACCEPTING_INVITE_WAIT_FOR_CLEAN())
|
|
OR (IS_RESULT_SCREEN_DISPLAYING())
|
|
OR (IS_TRANSITION_ACTIVE())
|
|
OR (IS_PLAYER_BROWSING_ITEMS_IN_ANY_SHOP())
|
|
OR (IS_CUSTOM_MENU_ON_SCREEN())
|
|
OR (NOT IS_SKYSWOOP_AT_GROUND())
|
|
OR (IS_PHONE_ONSCREEN())
|
|
OR (IS_PAUSE_MENU_ACTIVE())
|
|
OR (IS_SYSTEM_UI_BEING_DISPLAYED())
|
|
OR (GET_NUMBER_OF_THREADS_RUNNING_THE_SCRIPT_WITH_THIS_HASH(HASH("appCamera")) > 0)
|
|
OR (GET_NUMBER_OF_THREADS_RUNNING_THE_SCRIPT_WITH_THIS_HASH(HASH("creator")) > 0)
|
|
OR (IS_BROWSER_OPEN())
|
|
OR (g_bHeistEndscreenDisplaying)
|
|
OR (IS_PLAYER_CHANGING_CLOTHES())
|
|
OR (NOT IS_REPLAY_INITIALIZED())
|
|
OR (NOT IS_REPLAY_AVAILABLE())
|
|
OR IS_BITMASK_AS_ENUM_SET(g_StripclubGlobals.iStripclubFlags, GSF_GETTING_LAP_DANCE)
|
|
OR (NETWORK_IS_GAME_IN_PROGRESS() AND IS_PLAYER_DOING_A_YACHT_WARP(PLAYER_ID()))
|
|
#IF FEATURE_GEN9_STANDALONE
|
|
OR NOT HAS_STORY_ENTITLEMENT()
|
|
#ENDIF
|
|
#IF IS_DEBUG_BUILD
|
|
IF bOutputDebug
|
|
IF (g_sSelectorUI.bReplayFeedDisabledThisFrame) PRINTLN("IS_REPLAY_RECORDING_UI_SAFE_TO_USE - FALSE: Disabled this frame")
|
|
ELIF (IS_PED_INJURED(PLAYER_PED_ID())) PRINTLN("IS_REPLAY_RECORDING_UI_SAFE_TO_USE - FALSE: Ped injured")
|
|
ELIF (IS_PLAYER_SWITCH_IN_PROGRESS()) PRINTLN("IS_REPLAY_RECORDING_UI_SAFE_TO_USE - FALSE: Code switch in progress")
|
|
ELIF (IS_PLAYER_PED_SWITCH_IN_PROGRESS()) PRINTLN("IS_REPLAY_RECORDING_UI_SAFE_TO_USE - FALSE: Scripted switch in progress")
|
|
ELIF (IS_SCRIPT_HUD_DISPLAYING(HUDPART_TRANSITIONHUD)) PRINTLN("IS_REPLAY_RECORDING_UI_SAFE_TO_USE - FALSE: HUD transition active")
|
|
ELIF (IS_CUTSCENE_PLAYING()) PRINTLN("IS_REPLAY_RECORDING_UI_SAFE_TO_USE - FALSE: Cutscene playing")
|
|
ELIF (IS_PHONE_ACTIVE_OR_OVERLAPPING_HUD_ITEMS()) PRINTLN("IS_REPLAY_RECORDING_UI_SAFE_TO_USE - FALSE: Phone active")
|
|
ELIF (NOT IS_PLAYER_CONTROL_ON(PLAYER_ID())) PRINTLN("IS_REPLAY_RECORDING_UI_SAFE_TO_USE - FALSE: Player control turned off")
|
|
ELIF (NOT IS_PLAYER_READY_FOR_CUTSCENE(PLAYER_ID())) PRINTLN("IS_REPLAY_RECORDING_UI_SAFE_TO_USE - FALSE: Not ready for cutscene")
|
|
ELIF (IS_REPLAY_BEING_PROCESSED()) PRINTLN("IS_REPLAY_RECORDING_UI_SAFE_TO_USE - FALSE: Processing replay")
|
|
ELIF (IS_RESULT_SCREEN_DISPLAYING()) PRINTLN("IS_REPLAY_RECORDING_UI_SAFE_TO_USE - FALSE: Result screen displaying")
|
|
ELIF (IS_TRANSITION_ACTIVE()) PRINTLN("IS_REPLAY_RECORDING_UI_SAFE_TO_USE - FALSE: Transition active")
|
|
ELIF (IS_PLAYER_BROWSING_ITEMS_IN_ANY_SHOP()) PRINTLN("IS_REPLAY_RECORDING_UI_SAFE_TO_USE - FALSE: Browsing items in shop")
|
|
ELIF (IS_CUSTOM_MENU_ON_SCREEN()) PRINTLN("IS_REPLAY_RECORDING_UI_SAFE_TO_USE - FALSE: Custom menu on screen")
|
|
ELIF (NOT IS_SKYSWOOP_AT_GROUND()) PRINTLN("IS_REPLAY_RECORDING_UI_SAFE_TO_USE - FALSE: Sky swoop not at ground")
|
|
ELIF (IS_PHONE_ONSCREEN()) PRINTLN("IS_REPLAY_RECORDING_UI_SAFE_TO_USE - FALSE: Phone on screen")
|
|
ELIF (IS_PAUSE_MENU_ACTIVE()) PRINTLN("IS_REPLAY_RECORDING_UI_SAFE_TO_USE - FALSE: Pause menu active")
|
|
ELIF (IS_SYSTEM_UI_BEING_DISPLAYED()) PRINTLN("IS_REPLAY_RECORDING_UI_SAFE_TO_USE - FALSE: System UI on sreen")
|
|
ELIF (IS_BROWSER_OPEN()) PRINTLN("IS_REPLAY_RECORDING_UI_SAFE_TO_USE - FALSE: Browser visible")
|
|
ELIF (g_bHeistEndscreenDisplaying) PRINTLN("IS_REPLAY_RECORDING_UI_SAFE_TO_USE - FALSE: Heist end screen")
|
|
ELIF (IS_PLAYER_CHANGING_CLOTHES()) PRINTLN("IS_REPLAY_RECORDING_UI_SAFE_TO_USE - FALSE: Changing clothes")
|
|
ELIF (NOT IS_REPLAY_INITIALIZED()) PRINTLN("IS_REPLAY_RECORDING_UI_SAFE_TO_USE - FALSE: Replay not initialised")
|
|
ELIF (NOT IS_REPLAY_AVAILABLE()) PRINTLN("IS_REPLAY_RECORDING_UI_SAFE_TO_USE - FALSE: Replay not available")
|
|
ELIF IS_BITMASK_AS_ENUM_SET(g_StripclubGlobals.iStripclubFlags, GSF_GETTING_LAP_DANCE) PRINTLN("IS_REPLAY_RECORDING_UI_SAFE_TO_USE - FALSE: Player is getting a lapdance")
|
|
ELIF (NETWORK_IS_GAME_IN_PROGRESS() AND IS_PLAYER_DOING_A_YACHT_WARP(PLAYER_ID())) PRINTLN("IS_REPLAY_RECORDING_UI_SAFE_TO_USE - FALSE: Player is moving yacht")
|
|
#IF FEATURE_GEN9_STANDALONE
|
|
ELIF (NOT HAS_STORY_ENTITLEMENT()) PRINTLN("IS_REPLAY_RECORDING_UI_SAFE_TO_USE - FALSE: No Story Entitlement")
|
|
#ENDIF
|
|
ELSE PRINTLN("IS_REPLAY_RECORDING_UI_SAFE_TO_USE - FALSE: missing")
|
|
ENDIF
|
|
ENDIF
|
|
#ENDIF
|
|
|
|
RETURN FALSE
|
|
ENDIF
|
|
|
|
RETURN TRUE
|
|
ENDFUNC
|
|
|
|
PROC CLEANUP_REPLAY_RECORD_FEED()
|
|
|
|
IF g_sSelectorUI.bFeedAddedForRecording
|
|
PRINTLN("SWITCH UI - [REPLAY-FEED] Cleaning up RECORDING items added for replay feed.")
|
|
INT iPost
|
|
REPEAT COUNT_OF(iRecPost) iPost
|
|
IF iRecPost[iPost] != -1
|
|
THEFEED_REMOVE_ITEM(iRecPost[iPost])
|
|
iRecPost[iPost] = -1
|
|
ENDIF
|
|
ENDREPEAT
|
|
|
|
// Clear the prvious temp feed message for Action Replay On/Off
|
|
IF iRecPostActionReplay != -1
|
|
THEFEED_REMOVE_ITEM(iRecPostActionReplay)
|
|
iRecPostActionReplay = -1
|
|
ENDIF
|
|
|
|
THEFEED_SET_SNAP_FEED_ITEM_POSITIONS(FALSE)
|
|
|
|
THEFEED_RESUME()
|
|
|
|
g_b_ReapplyStickySaveFailedFeed = FALSE
|
|
|
|
g_sSelectorUI.bFeedAddedForRecording = FALSE
|
|
ENDIF
|
|
|
|
// Action Replay On
|
|
IF bAddActionReplayOn
|
|
PRINTLN("SWITCH UI - [REPLAY-FEED] Cleaning up ACTION REPLAY ON items added for replay feed.")
|
|
// Clear the prvious temp feed message for Action Replay On/Off
|
|
IF iRecPostActionReplay != -1
|
|
THEFEED_REMOVE_ITEM(iRecPostActionReplay)
|
|
iRecPostActionReplay = -1
|
|
ENDIF
|
|
|
|
BEGIN_TEXT_COMMAND_THEFEED_POST("REC_FEED_6")
|
|
iRecPostActionReplay = END_TEXT_COMMAND_THEFEED_POST_REPLAY(ACTION_REPLAY, 0, "")
|
|
bAddActionReplayOn = FALSE
|
|
iActionReplayTimer = GET_GAME_TIMER()
|
|
IF NETWORK_IS_GAME_IN_PROGRESS()
|
|
tdActionReplayTimer = GET_NETWORK_TIME()
|
|
ENDIF
|
|
ENDIF
|
|
|
|
// Action Replay Off
|
|
IF bAddActionReplayOff
|
|
PRINTLN("SWITCH UI - [REPLAY-FEED] Cleaning up ACTION REPLAY OFF items added for replay feed.")
|
|
|
|
// Clear the prvious temp feed message for Action Replay On/Off
|
|
IF iRecPostActionReplay != -1
|
|
THEFEED_REMOVE_ITEM(iRecPostActionReplay)
|
|
iRecPostActionReplay = -1
|
|
ENDIF
|
|
|
|
BEGIN_TEXT_COMMAND_THEFEED_POST("REC_FEED_7")
|
|
iRecPostActionReplay = END_TEXT_COMMAND_THEFEED_POST_REPLAY(ACTION_REPLAY, 0, "")
|
|
bAddActionReplayOff = FALSE
|
|
iActionReplayTimer = GET_GAME_TIMER()
|
|
IF NETWORK_IS_GAME_IN_PROGRESS()
|
|
tdActionReplayTimer = GET_NETWORK_TIME()
|
|
ENDIF
|
|
ENDIF
|
|
|
|
ENDPROC
|
|
#ENDIF
|
|
|
|
/// PURPOSE: Marks the selector UI Scaleform movie as no longer needed and resets states
|
|
PROC CLEANUP_SELECTOR_UI()
|
|
|
|
IF g_sSelectorUI.bLoaded
|
|
DEBUG_PRINTCALLSTACK()
|
|
PRINTSTRING("\n CLEANUP_SELECTOR_UI - Flagging scaleform movies to cleanup.")PRINTNL()
|
|
bCleanupMovies = TRUE
|
|
|
|
// SFX - UI on screen
|
|
IF g_sSelectorUI.iSFX_Display != -1
|
|
AND g_sSelectorUI.iSFX_Display_ScriptHash = GET_HASH_KEY(GET_THIS_SCRIPT_NAME())
|
|
STOP_SOUND(g_sSelectorUI.iSFX_Display)
|
|
PRINTLN("SWITCH UI - stopping sound: CHARACTER_CHANGE_DPAD_DOWN_MASTER")
|
|
RELEASE_SOUND_ID(g_sSelectorUI.iSFX_Display)
|
|
g_sSelectorUI.iSFX_Display = -1
|
|
g_sSelectorUI.iSFX_Display_ScriptHash = 0
|
|
SET_AUDIO_FLAG("ActivateSwitchWheelAudio", FALSE)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF bMapUpdated
|
|
IF DOES_BLIP_EXIST(selectedPedBlip)
|
|
REMOVE_BLIP(selectedPedBlip)
|
|
ENDIF
|
|
SET_HEALTH_HUD_DISPLAY_VALUES(-1, -1)
|
|
SET_ABILITY_BAR_VALUE(-1, -1)
|
|
SET_MAX_HEALTH_HUD_DISPLAY(0)
|
|
SET_MAX_ARMOUR_HUD_DISPLAY(0)
|
|
UNLOCK_MINIMAP_POSITION()
|
|
ENDIF
|
|
bMapUpdated = FALSE
|
|
bSelection = FALSE
|
|
bDisplayCharacterInfo = FALSE
|
|
iSelectedSlotOnLoad = -1
|
|
iAutoSwitchSlot = -1
|
|
bHintIndicatorNotTriggered = FALSE
|
|
g_sSelectorUI.bSelection = FALSE
|
|
g_sSelectorUI.iSelectedSlot = -1
|
|
g_sSelectorUI.bSetup = FALSE
|
|
g_sSelectorUI.bOnScreen = FALSE
|
|
g_sSelectorUI.bCheckPlayerControl = TRUE
|
|
g_sSelectorUI.eUIStateCurrent = SELECTOR_UI_HIDDEN
|
|
ENDPROC
|
|
|
|
PROC LOAD_MP_HEADSHOT()
|
|
SWITCH iLoadPedHeadStage
|
|
CASE 0
|
|
|
|
IF IS_CURRENTLY_ON_MISSION_OF_TYPE(MISSION_TYPE_DIRECTOR)
|
|
#IF IS_DEBUG_BUILD
|
|
OR g_debugMenuControl.fTempPos[0] != 0.0
|
|
#ENDIF
|
|
bSetPedHead = TRUE
|
|
EXIT
|
|
ENDIF
|
|
|
|
|
|
IF IS_PLAYER_ONLINE()
|
|
AND NETWORK_IS_SIGNED_ONLINE()
|
|
AND NETWORK_IS_CLOUD_AVAILABLE()
|
|
AND IS_GTA_ONLINE_AVAILABLE()
|
|
|
|
AND NOT g_bGenerateInitialTransparentHeadshot //Don't even attempt to load a texture if we know a generate request
|
|
//is in progress. This will save us from hammering the cloud. -BenR
|
|
IF NOT HAS_NETWORK_TIME_STARTED()
|
|
OR IS_TIME_MORE_THAN(GET_NETWORK_TIME(), g_sExportPlayerHeadshotCountdown) //If time is before this timer we know
|
|
//we have a headshot request in progress.
|
|
|
|
IF HAS_IMPORTANT_STATS_LOADED()
|
|
AND IS_STAT_CHARACTER_ACTIVE(GET_ACTIVE_CHARACTER_SLOT())
|
|
PEDHEADSHOT_SP_SWITCH_REFRESH_CHECK()
|
|
ENDIF
|
|
|
|
GAMER_HANDLE playerHandle
|
|
playerHandle = GET_GAMER_HANDLE_PLAYER(PLAYER_ID())
|
|
TEXT_LABEL_63 tlCloudPath
|
|
iPedHeadSlot = GET_ACTIVE_CHARACTER_SLOT()
|
|
tlCloudPath = Get_Headshot_dds_File(iPedHeadSlot)
|
|
|
|
IF iPedHeadSlot != -1
|
|
iHeadshotTextureID = TEXTURE_DOWNLOAD_REQUEST(playerHandle, tlCloudPath, "selector_ui_headshot", g_bUseCachedTransparentLocalPlayerHeadshot[iPedHeadSlot])
|
|
#IF IS_DEBUG_BUILD
|
|
CPRINTLN(DEBUG_NET_HEADSHOTS, "=== SELECTOR === Cloud path set to ", tlCloudPath)
|
|
CPRINTLN(DEBUG_NET_HEADSHOTS, "=== SELECTOR === Kenneth's selector used g_bUseCachedTransparentLocalPlayerHeadshot = ", g_bUseCachedTransparentLocalPlayerHeadshot[iPedHeadSlot])
|
|
#ENDIF
|
|
ELSE
|
|
iHeadshotTextureID = TEXTURE_DOWNLOAD_REQUEST(playerHandle, tlCloudPath, "selector_ui_headshot")
|
|
#IF IS_DEBUG_BUILD
|
|
CPRINTLN(DEBUG_NET_HEADSHOTS, "=== SELECTOR === Cloud path set to ", tlCloudPath)
|
|
#ENDIF
|
|
ENDIF
|
|
|
|
iLoadPedHeadStage++
|
|
ENDIF
|
|
ENDIF
|
|
BREAK
|
|
CASE 1
|
|
IF TEXTURE_DOWNLOAD_HAS_FAILED(iHeadshotTextureID)
|
|
CPRINTLN(DEBUG_NET_HEADSHOTS, "=== SELECTOR === Texture download failed. Flagging to generate a new headshot next time we're in MP.")
|
|
g_bGenerateInitialTransparentHeadshot = TRUE
|
|
iLoadPedHeadStage = 99
|
|
ELSE
|
|
sMPPedHeadshot = TEXTURE_DOWNLOAD_GET_NAME(iHeadshotTextureID)
|
|
IF NOT IS_STRING_NULL_OR_EMPTY(sMPPedHeadshot)
|
|
IF iPedHeadSlot != -1
|
|
g_bUseCachedTransparentLocalPlayerHeadshot[iPedHeadSlot] = TRUE
|
|
ENDIF
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
CPRINTLN(DEBUG_NET_HEADSHOTS, "=== SELECTOR === Kenneth's selector set sMPPedHeadshot = ", sMPPedHeadshot)
|
|
#ENDIF
|
|
|
|
bSetPedHead = TRUE
|
|
iLoadPedHeadStage++
|
|
ENDIF
|
|
ENDIF
|
|
BREAK
|
|
ENDSWITCH
|
|
ENDPROC
|
|
|
|
PROC CLEANUP_MP_HEADSHOT()
|
|
IF iHeadshotTextureID != -1
|
|
TEXTURE_DOWNLOAD_RELEASE(iHeadshotTextureID)
|
|
ENDIF
|
|
iHeadshotTextureID = -1
|
|
sMPPedHeadshot = ""
|
|
bSetPedHead = FALSE
|
|
bPedHeadSet = FALSE
|
|
iLoadPedHeadStage = 0
|
|
ENDPROC
|
|
|
|
|
|
|
|
PROC REBUILD_STAT_UI()
|
|
|
|
IF bUsingPrologueMovie
|
|
EXIT
|
|
ENDIF
|
|
|
|
enumCharacterList eChar = NO_CHARACTER
|
|
HUD_COLOURS eHudCol
|
|
|
|
// Top
|
|
IF g_sSelectorUI.iSelectedSlot = 0
|
|
eChar = CHAR_FRANKLIN
|
|
eHudCol = HUD_COLOUR_FRANKLIN
|
|
// Right
|
|
ELIF g_sSelectorUI.iSelectedSlot = 1
|
|
eChar = CHAR_TREVOR
|
|
eHudCol = HUD_COLOUR_TREVOR
|
|
// Bottom
|
|
ELIF g_sSelectorUI.iSelectedSlot = 2
|
|
eChar = CHAR_MULTIPLAYER
|
|
eHudCol = HUD_COLOUR_FREEMODE
|
|
// Left
|
|
ELIF g_sSelectorUI.iSelectedSlot = 3
|
|
eChar = CHAR_MICHAEL
|
|
eHudCol = HUD_COLOUR_MICHAEL
|
|
ENDIF
|
|
|
|
BEGIN_SCALEFORM_MOVIE_METHOD(movieID2, "SET_STATS_LABELS")
|
|
|
|
// ADD: Character colour
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(ENUM_TO_INT(eHudCol))
|
|
|
|
// ADD: Split into 10
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL((eChar = CHAR_MULTIPLAYER))
|
|
|
|
INT iStat
|
|
REPEAT NUMBER_OF_PLAYER_STATS iStat
|
|
IF iStat != ENUM_TO_INT(PS_SPECIAL_ABILITY)
|
|
OR g_sSelectorUI.iSelectedSlot != 2
|
|
// ADD: Stat value
|
|
IF (eChar = NO_CHARACTER)
|
|
OR (eChar = CHAR_MULTIPLAYER AND NOT HAS_IMPORTANT_STATS_LOADED())
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(0)
|
|
ELIF (eChar = CHAR_MULTIPLAYER)
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(CALCULATE_PLAYER_STAT_VALUE(eChar, GET_PLAYER_STAT_FOR_DISPLAY_SLOT(iStat), FALSE, GET_ACTIVE_CHARACTER_SLOT()))
|
|
ELSE
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(CALCULATE_PLAYER_STAT_VALUE(eChar, GET_PLAYER_STAT_FOR_DISPLAY_SLOT(iStat), FALSE))
|
|
ENDIF
|
|
|
|
// ADD: Stat name
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING(GET_PLAYER_STAT_DISPLAY_NAME(GET_PLAYER_STAT_FOR_DISPLAY_SLOT(iStat)))
|
|
|
|
ELIF iStat = ENUM_TO_INT(PS_SPECIAL_ABILITY) AND g_sSelectorUI.iSelectedSlot = 2
|
|
|
|
IF HAS_IMPORTANT_STATS_LOADED()
|
|
INT iCharCurrentXP = g_MP_STAT_CHAR_XP_FM[GET_SLOT_NUMBER(-1)]//GET_STAT_CHARACTER_XP()
|
|
INT iRank = GET_FM_RANK_FROM_XP_VALUE(iCharCurrentXP, TRUE)
|
|
INT iPlayersCurrent_Rank_Limit_XP = GET_XP_NEEDED_FOR_RANK(iRank, FALSE)
|
|
INT iPlayersNext_Rank_Limit_XP = GET_XP_NEEDED_FOR_RANK(iRank+1, FALSE)
|
|
INT iRankProgression = FLOOR((TO_FLOAT(iCharCurrentXP-iPlayersCurrent_Rank_Limit_XP)/TO_FLOAT(iPlayersNext_Rank_Limit_XP-iPlayersCurrent_Rank_Limit_XP))*100)
|
|
|
|
IF g_sMPTunableArrays.iTopRankValues[MAX_FM_RANK] = iCharCurrentXP
|
|
AND iRankProgression = 0
|
|
iRankProgression = 100
|
|
NET_NL()NET_PRINT("[BCSELECTOR] Change iRankProgression to 100 ")
|
|
|
|
ENDIF
|
|
|
|
// ADD: Stat value
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(iRankProgression)
|
|
|
|
// ADD: Stat name
|
|
BEGIN_TEXT_COMMAND_SCALEFORM_STRING("TR_RANKNUM")
|
|
ADD_TEXT_COMPONENT_INTEGER(iRank)
|
|
END_TEXT_COMMAND_SCALEFORM_STRING()
|
|
ELSE
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(0)
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("TR_RANK")
|
|
ENDIF
|
|
|
|
|
|
ENDIF
|
|
ENDREPEAT
|
|
|
|
IF (eChar = CHAR_MULTIPLAYER AND HAS_IMPORTANT_STATS_LOADED())
|
|
// ADD: Stat value
|
|
//SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(FLOOR(GET_MP_FLOAT_PLAYER_STAT(MPPLY_PLAYER_FMENTAL_STATE)))
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(FLOOR(GET_MP_FLOAT_CHARACTER_STAT(MP_STAT_PLAYER_MENTAL_STATE)))
|
|
|
|
// ADD: Stat name
|
|
BEGIN_TEXT_COMMAND_SCALEFORM_STRING("PCARD_MENTAL_STATE")
|
|
END_TEXT_COMMAND_SCALEFORM_STRING()
|
|
ENDIF
|
|
|
|
END_SCALEFORM_MOVIE_METHOD()
|
|
|
|
ENDPROC
|
|
|
|
/// PURPOSE: Requests the selector UI Scaleform movie and keeps states up to date
|
|
PROC MAINTAIN_SELECTOR_UI()
|
|
|
|
BOOL bReduceTimeScale = FALSE
|
|
BOOL bDrawStat = FALSE
|
|
BOOL bCleanupMap = TRUE
|
|
|
|
BOOL bUpdateCounter = FALSE
|
|
BOOL bUpdateHints = FALSE
|
|
|
|
BOOL bSwitchAvailableAudio = FALSE
|
|
|
|
// Determine what state the UI should be in
|
|
SELECTOR_UI_STATE_ENUM eUIStateIntended = SELECTOR_UI_HIDDEN
|
|
|
|
IF IS_SELECTOR_UI_BUTTON_PRESSED(g_sSelectorUI.bCheckPlayerControl) OR IS_SELECTOR_UI_BUTTON_JUST_RELEASED(g_sSelectorUI.bCheckPlayerControl)
|
|
g_sSelectorUI.bDisplay = IS_SELECTOR_UI_SAFE_TO_DISPLAY(TRUE)
|
|
IF g_sSelectorUI.bDisplay
|
|
IF g_sSelectorUI.eUIStateCurrent = SELECTOR_UI_FULL
|
|
eUIStateIntended = SELECTOR_UI_FULL
|
|
ELIF g_sSelectorUI.eUIStateCurrent = SELECTOR_UI_HIDDEN
|
|
eUIStateIntended = SELECTOR_UI_HIDDEN_TO_FULL
|
|
ELIF g_sSelectorUI.eUIStateCurrent = SELECTOR_UI_HIDDEN_TO_FULL
|
|
IF (NETWORK_IS_GAME_IN_PROGRESS() AND (IS_TIME_MORE_THAN(GET_NETWORK_TIME(), GET_TIME_OFFSET(g_sSelectorUI.tdDisplayTimer, SELECTOR_UI_AMBIENT_MP_TIME_msec)) OR ABSI(GET_TIME_DIFFERENCE(GET_NETWORK_TIME(), g_sSelectorUI.tdDisplayTimer)) > SELECTOR_UI_AMBIENT_MP_TIME_msec+1000))
|
|
OR (NOT NETWORK_IS_GAME_IN_PROGRESS() AND NOT g_sSelectorUI.bMissionUpdate AND (GET_GAME_TIMER() - g_sSelectorUI.iDisplayTimer) > SELECTOR_UI_AMBIENT_SP_TIME_msec)
|
|
OR (NOT NETWORK_IS_GAME_IN_PROGRESS() AND g_sSelectorUI.bMissionUpdate AND (GET_GAME_TIMER() - g_sSelectorUI.iDisplayTimer) > SELECTOR_UI_QUICK_SWITCH_TIME_msec)
|
|
eUIStateIntended = SELECTOR_UI_FULL
|
|
ELSE
|
|
eUIStateIntended = SELECTOR_UI_HIDDEN_TO_FULL
|
|
ENDIF
|
|
ELIF g_sSelectorUI.eUIStateCurrent = SELECTOR_UI_HINT
|
|
eUIStateIntended = SELECTOR_UI_HINT_TO_FULL
|
|
ELIF g_sSelectorUI.eUIStateCurrent = SELECTOR_UI_HINT_TO_FULL
|
|
IF (NETWORK_IS_GAME_IN_PROGRESS() AND (IS_TIME_MORE_THAN(GET_NETWORK_TIME(), GET_TIME_OFFSET(g_sSelectorUI.tdDisplayTimer, SELECTOR_UI_QUICK_SWITCH_TIME_msec)) OR ABSI(GET_TIME_DIFFERENCE(GET_NETWORK_TIME(), g_sSelectorUI.tdDisplayTimer)) > SELECTOR_UI_QUICK_SWITCH_TIME_msec+1000))
|
|
OR (NOT NETWORK_IS_GAME_IN_PROGRESS() AND (GET_GAME_TIMER() - g_sSelectorUI.iDisplayTimer) > SELECTOR_UI_QUICK_SWITCH_TIME_msec)
|
|
eUIStateIntended = SELECTOR_UI_FULL
|
|
ELSE
|
|
eUIStateIntended = SELECTOR_UI_HINT_TO_FULL
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
ELIF g_sSelectorUI.bMissionUpdate AND g_sSelectorUI.bCharAvailable
|
|
g_sSelectorUI.bDisplay = IS_SELECTOR_UI_SAFE_TO_DISPLAY(FALSE)
|
|
IF g_sSelectorUI.bDisplay
|
|
eUIStateIntended = SELECTOR_UI_HINT
|
|
ENDIF
|
|
|
|
ELIF g_sSelectorUI.bShowAutoSwitch
|
|
g_sSelectorUI.bDisplay = TRUE
|
|
eUIStateIntended = SELECTOR_UI_AUTOSWITCH_HINT
|
|
|
|
iAutoSwitchEnum[GET_SELECTOR_UI_SLOT_FOR_SELECTOR_PED(SELECTOR_PED_MICHAEL)] = 0
|
|
iAutoSwitchEnum[GET_SELECTOR_UI_SLOT_FOR_SELECTOR_PED(SELECTOR_PED_TREVOR)] = 1
|
|
iAutoSwitchEnum[GET_SELECTOR_UI_SLOT_FOR_SELECTOR_PED(SELECTOR_PED_FRANKLIN)] = 2
|
|
iAutoSwitchEnum[GET_SELECTOR_UI_SLOT_FOR_SELECTOR_PED(SELECTOR_PED_MULTIPLAYER)] = 3
|
|
|
|
IF iAutoSwitchSlot != g_sSelectorUI.iAutoSwitchSlot
|
|
g_sSelectorUI.bForceUpdate = TRUE
|
|
g_sSelectorUI.iAutoSwitchTimer = GET_GAME_TIMER()
|
|
bAutoSwitchDisplayTimerSet = FALSE
|
|
ENDIF
|
|
|
|
IF g_sSelectorUI.bOnScreen
|
|
IF NOT bAutoSwitchDisplayTimerSet
|
|
iAutoSwitchDisplayTimer = GET_GAME_TIMER()
|
|
bAutoSwitchDisplayTimerSet = TRUE
|
|
ENDIF
|
|
// Ony display this for half a second
|
|
IF (GET_GAME_TIMER() - iAutoSwitchDisplayTimer) > 500
|
|
g_sSelectorUI.bShowAutoSwitch = FALSE
|
|
ENDIF
|
|
ELSE
|
|
// Bail out if we have not displayed it within 2 seconds.
|
|
IF (GET_GAME_TIMER() - g_sSelectorUI.iAutoSwitchTimer) > 2000
|
|
g_sSelectorUI.bShowAutoSwitch = FALSE
|
|
ENDIF
|
|
bAutoSwitchDisplayTimerSet = FALSE
|
|
ENDIF
|
|
ELSE
|
|
g_sSelectorUI.bDisplay = FALSE
|
|
ENDIF
|
|
|
|
// Make sure we reset the cleanup flag if we now require the movie to be used.
|
|
IF g_sSelectorUI.bDisplay
|
|
bCleanupMovies = FALSE
|
|
ENDIF
|
|
|
|
// Jump to the delay state when we are force loading to prevent cleanup
|
|
IF (eUIStateIntended = SELECTOR_UI_HIDDEN AND g_sSelectorUI.bForceLoadThisFrame)
|
|
OR (g_sSelectorUI.bHiddenThisFrame)
|
|
eUIStateIntended = SELECTOR_UI_HIDDEN_TO_FULL
|
|
ENDIF
|
|
|
|
IF g_sSelectorUI.eUIStateCurrent != eUIStateIntended
|
|
// If we are cleaning up due to a switch, make sure we upadte the switch count
|
|
IF bSelection != g_sSelectorUI.bSelection
|
|
AND g_sSelectorUI.iSelectedSlot != 2
|
|
AND g_sSelectorUI.bMissionUpdate
|
|
AND NOT g_bInMultiplayer
|
|
// Flag that we manually selected character from UI
|
|
// Note: this flag is so we can update the mission switch count, we will rest it
|
|
// in take_control_of_selector_ped or when a forced switch occurs with set_current_selector_ped
|
|
g_sSelectorUI.bManualSelection = TRUE
|
|
ENDIF
|
|
|
|
|
|
PRINTLN("SWITCH UI - changing to UI state ", ENUM_TO_INT(eUIStateIntended))
|
|
|
|
// Set default params for new state.
|
|
g_sSelectorUI.bFirstSelectionMade = FALSE
|
|
IF NETWORK_IS_GAME_IN_PROGRESS()
|
|
g_sSelectorUI.tdDisplayTimer = GET_NETWORK_TIME()
|
|
ELSE
|
|
g_sSelectorUI.iDisplayTimer = GET_GAME_TIMER()
|
|
ENDIF
|
|
|
|
IF eUIStateIntended != SELECTOR_UI_AUTOSWITCH_HINT
|
|
g_sSelectorUI.bShowAutoSwitch = FALSE
|
|
ENDIF
|
|
|
|
g_sSelectorUI.bForceUpdate = TRUE
|
|
ENDIF
|
|
|
|
// Load scaleform if required or if we are already in the process of loading.
|
|
IF g_sSelectorUI.bDisplay OR (bRequested AND NOT bCleanupMovies) OR g_sSelectorUI.bForceLoadThisFrame
|
|
|
|
IF NOT g_sSelectorUI.bHiddenThisFrame
|
|
// Prevent street name from displaying
|
|
IF NOT IS_HUD_COMPONENT_ACTIVE(NEW_HUD_AREA_NAME)
|
|
HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_AREA_NAME)
|
|
ENDIF
|
|
|
|
IF NOT IS_HUD_COMPONENT_ACTIVE(NEW_HUD_VEHICLE_NAME)
|
|
HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_VEHICLE_NAME)
|
|
ENDIF
|
|
IF NOT IS_HUD_COMPONENT_ACTIVE(NEW_HUD_DISTRICT_NAME)
|
|
HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_DISTRICT_NAME)
|
|
ENDIF
|
|
IF NOT IS_HUD_COMPONENT_ACTIVE(NEW_HUD_STREET_NAME)
|
|
HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_STREET_NAME)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
LOAD_SELECTOR_UI()
|
|
LOAD_MP_HEADSHOT()
|
|
TEXT_LABEL_31 tlMPLabel
|
|
GET_MP_COUNTDOWN_STRING(tlMPLabel, FALSE)
|
|
ENDIF
|
|
|
|
// Update the scaleform movie if it has loaded
|
|
IF g_sSelectorUI.bLoaded
|
|
|
|
INT iSlot
|
|
|
|
// Once only set up to the movie
|
|
IF NOT g_sSelectorUI.bSetup
|
|
AND eUIStateIntended != SELECTOR_UI_HIDDEN_TO_FULL
|
|
AND eUIStateIntended != SELECTOR_UI_HIDDEN
|
|
|
|
PRINTLN("MAINTAIN_SELECTOR_UI() - Setting initial states")
|
|
|
|
REBUILD_STAT_UI()
|
|
|
|
FOR iSlot = 0 TO 3
|
|
// BEGIN_SCALEFORM_MOVIE_METHOD(movieID, "SET_SWITCH_SLOT")
|
|
// SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(iSlot)
|
|
// SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(3) // NOTMET= 3
|
|
// SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(0) // CHAR_MICHAEL = 0
|
|
// SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(FALSE) // Current?
|
|
// END_SCALEFORM_MOVIE_METHOD()
|
|
//
|
|
// BEGIN_SCALEFORM_MOVIE_METHOD(movieID, "SET_PLAYER_DAMAGE")
|
|
// SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(iSlot)
|
|
// SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(FALSE)
|
|
// END_SCALEFORM_MOVIE_METHOD()
|
|
|
|
// Update the local states so we can tell if there is an update
|
|
iState[iSlot] = g_sSelectorUI.iState[iSlot]
|
|
iEnum[iSlot] = g_sSelectorUI.iEnum[iSlot]
|
|
iCurrent[iSlot] = g_sSelectorUI.iCurrent[iSlot]
|
|
bDamaged[iSlot] = g_sSelectorUI.bDamaged[iSlot]
|
|
bFlashDamage[iSlot] = g_sSelectorUI.bFlashDamage[iSlot]
|
|
ENDFOR
|
|
|
|
// BEGIN_SCALEFORM_MOVIE_METHOD(movieID, "SET_MP_LABEL")
|
|
// SCALEFORM_MOVIE_METHOD_ADD_PARAM_PLAYER_NAME_STRING("")
|
|
// END_SCALEFORM_MOVIE_METHOD()
|
|
//
|
|
// BEGIN_SCALEFORM_MOVIE_METHOD(movieID, "SET_SWITCH_COUNTER_ALL")
|
|
// SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(0)
|
|
// SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(0)
|
|
// SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(0)
|
|
// SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(0)
|
|
// END_SCALEFORM_MOVIE_METHOD()
|
|
iMissions[0] = g_sSelectorUI.iMissions[0]
|
|
iMissions[1] = g_sSelectorUI.iMissions[1]
|
|
iMissions[2] = g_sSelectorUI.iMissions[2]
|
|
iMissions[3] = g_sSelectorUI.iMissions[3]
|
|
|
|
// BEGIN_SCALEFORM_MOVIE_METHOD(movieID, "SET_SWITCH_HINTED_ALL")
|
|
// SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(FALSE)
|
|
// SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(FALSE)
|
|
// SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(FALSE)
|
|
// SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(FALSE)
|
|
// END_SCALEFORM_MOVIE_METHOD()
|
|
bHinted[0] = g_sSelectorUI.bHinted[0]
|
|
bHinted[1] = g_sSelectorUI.bHinted[1]
|
|
bHinted[2] = g_sSelectorUI.bHinted[2]
|
|
bHinted[3] = g_sSelectorUI.bHinted[3]
|
|
|
|
// BEGIN_SCALEFORM_MOVIE_METHOD(movieID, "SET_SWITCH_VISIBLE")
|
|
// SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(0)
|
|
// END_SCALEFORM_MOVIE_METHOD()
|
|
bDisplay = FALSE
|
|
|
|
// Force selection update
|
|
// BEGIN_SCALEFORM_MOVIE_METHOD(movieID, "SET_PLAYER_SELECTED")
|
|
// SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(-1)
|
|
// END_SCALEFORM_MOVIE_METHOD()
|
|
iSelectedSlot = -1
|
|
|
|
bDisplayCharacterInfo = FALSE
|
|
g_sSelectorUI.bSetup = TRUE
|
|
g_sSelectorUI.bResetSelection = TRUE
|
|
g_sSelectorUI.bForceUpdate = TRUE
|
|
ENDIF
|
|
|
|
IF g_sSelectorUI.bSetup
|
|
OR eUIStateIntended = SELECTOR_UI_HIDDEN
|
|
///////////////////////////////////////////////////////////////////////////////////////////////////
|
|
///
|
|
/// HINT UI: available characters, hints, no selection
|
|
///
|
|
IF eUIStateIntended = SELECTOR_UI_HINT
|
|
OR eUIStateIntended = SELECTOR_UI_HINT_TO_FULL
|
|
|
|
FOR iSlot = 0 TO 3
|
|
|
|
// Update the slot data if the stored data differs
|
|
IF iState[iSlot] != g_sSelectorUI.iState[iSlot]
|
|
OR iEnum[iSlot] != g_sSelectorUI.iEnum[iSlot]
|
|
OR iCurrent[iSlot] != g_sSelectorUI.iCurrent[iSlot]
|
|
OR g_sSelectorUI.bForceUpdate
|
|
|
|
BEGIN_SCALEFORM_MOVIE_METHOD(movieID, "SET_SWITCH_SLOT")
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(iSlot)
|
|
|
|
IF g_sSelectorUI.iState[iSlot] = 1 // AVAILABLE = 1
|
|
AND (g_sSelectorUI.iCurrent[iSlot] != 1) // Dont show current player
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(1) // AVAILABLE = 1
|
|
ELSE
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(3) // NOTMET= 3
|
|
ENDIF
|
|
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(g_sSelectorUI.iEnum[iSlot])
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(FALSE)
|
|
END_SCALEFORM_MOVIE_METHOD()
|
|
|
|
// Update the local states so we can tell if there is an update
|
|
iState[iSlot] = g_sSelectorUI.iState[iSlot]
|
|
iEnum[iSlot] = g_sSelectorUI.iEnum[iSlot]
|
|
iCurrent[iSlot] = g_sSelectorUI.iCurrent[iSlot]
|
|
|
|
bUpdateCounter = TRUE
|
|
ENDIF
|
|
|
|
IF bDamaged[iSlot] != g_sSelectorUI.bDamaged[iSlot]
|
|
OR bFlashDamage[iSlot] != g_sSelectorUI.bFlashDamage[iSlot]
|
|
OR g_sSelectorUI.bForceUpdate
|
|
BEGIN_SCALEFORM_MOVIE_METHOD(movieID, "SET_PLAYER_DAMAGE")
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(GET_SELECTOR_UI_SLOT_FOR_SELECTOR_PED(INT_TO_ENUM(SELECTOR_SLOTS_ENUM, iSlot)))
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(g_sSelectorUI.bDamaged[iSlot])
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(g_sSelectorUI.bFlashDamage[iSlot])
|
|
END_SCALEFORM_MOVIE_METHOD()
|
|
bDamaged[iSlot] = g_sSelectorUI.bDamaged[iSlot]
|
|
bFlashDamage[iSlot] = g_sSelectorUI.bFlashDamage[iSlot]
|
|
ENDIF
|
|
|
|
IF bHinted[iSlot] != g_sSelectorUI.bHinted[iSlot]
|
|
OR g_sSelectorUI.bForceUpdate
|
|
bUpdateHints = TRUE
|
|
ENDIF
|
|
|
|
IF iMissions[iSlot] != g_sSelectorUI.iMissions[iSlot]
|
|
OR g_sSelectorUI.bForceUpdate
|
|
bUpdateCounter = TRUE
|
|
ENDIF
|
|
ENDFOR
|
|
|
|
IF bUpdateHints
|
|
BEGIN_SCALEFORM_MOVIE_METHOD(movieID, "SET_SWITCH_HINTED_ALL")
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(g_sSelectorUI.bHinted[GET_SELECTOR_PED_FROM_UI_SLOT(0)])
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(g_sSelectorUI.bHinted[GET_SELECTOR_PED_FROM_UI_SLOT(1)])
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(g_sSelectorUI.bHinted[GET_SELECTOR_PED_FROM_UI_SLOT(2)])
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(g_sSelectorUI.bHinted[GET_SELECTOR_PED_FROM_UI_SLOT(3)])
|
|
END_SCALEFORM_MOVIE_METHOD()
|
|
bHinted[0] = g_sSelectorUI.bHinted[0]
|
|
bHinted[1] = g_sSelectorUI.bHinted[1]
|
|
bHinted[2] = g_sSelectorUI.bHinted[2]
|
|
bHinted[3] = g_sSelectorUI.bHinted[3]
|
|
bUpdateHints = FALSE
|
|
ENDIF
|
|
|
|
IF bUpdateCounter
|
|
BEGIN_SCALEFORM_MOVIE_METHOD(movieID, "SET_SWITCH_COUNTER_ALL")
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(g_sSelectorUI.iMissions[GET_SELECTOR_PED_FROM_UI_SLOT(0)])
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(g_sSelectorUI.iMissions[GET_SELECTOR_PED_FROM_UI_SLOT(1)])
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(g_sSelectorUI.iMissions[GET_SELECTOR_PED_FROM_UI_SLOT(2)])
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(g_sSelectorUI.iMissions[GET_SELECTOR_PED_FROM_UI_SLOT(3)])
|
|
END_SCALEFORM_MOVIE_METHOD()
|
|
iMissions[0] = g_sSelectorUI.iMissions[0]
|
|
iMissions[1] = g_sSelectorUI.iMissions[1]
|
|
iMissions[2] = g_sSelectorUI.iMissions[2]
|
|
iMissions[3] = g_sSelectorUI.iMissions[3]
|
|
bUpdateCounter = FALSE
|
|
ENDIF
|
|
|
|
IF bDisplay != g_sSelectorUI.bDisplay
|
|
OR g_sSelectorUI.bForceUpdate
|
|
BEGIN_SCALEFORM_MOVIE_METHOD(movieID, "SET_SWITCH_VISIBLE")
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(1)
|
|
END_SCALEFORM_MOVIE_METHOD()
|
|
|
|
BEGIN_SCALEFORM_MOVIE_METHOD(movieID, "SET_PLAYER_SELECTED")
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(-1)
|
|
END_SCALEFORM_MOVIE_METHOD()
|
|
iSelectedSlot = -1
|
|
|
|
bDisplayCharacterInfo = FALSE
|
|
|
|
bDisplay = g_sSelectorUI.bDisplay
|
|
ENDIF
|
|
|
|
|
|
///////////////////////////////////////////////////////////////////////////////////////////////////
|
|
///
|
|
/// FULL UI: available characters, hints, selection
|
|
///
|
|
ELIF eUIStateIntended = SELECTOR_UI_FULL
|
|
|
|
FOR iSlot = 0 TO 3
|
|
// Update the slot data if the stored data differs
|
|
IF iState[iSlot] != g_sSelectorUI.iState[iSlot]
|
|
OR iEnum[iSlot] != g_sSelectorUI.iEnum[iSlot]
|
|
OR iCurrent[iSlot] != g_sSelectorUI.iCurrent[iSlot]
|
|
OR g_sSelectorUI.bForceUpdate
|
|
|
|
PRINTLN("MAINTAIN_SELECTOR_UI() - Updating slot data")
|
|
|
|
BEGIN_SCALEFORM_MOVIE_METHOD(movieID, "SET_SWITCH_SLOT")
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(iSlot)
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(g_sSelectorUI.iState[iSlot])
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(g_sSelectorUI.iEnum[iSlot])
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL((g_sSelectorUI.iCurrent[iSlot] = 1))
|
|
END_SCALEFORM_MOVIE_METHOD()
|
|
|
|
// Update the local states so we can tell if there is an update
|
|
iState[iSlot] = g_sSelectorUI.iState[iSlot]
|
|
iEnum[iSlot] = g_sSelectorUI.iEnum[iSlot]
|
|
iCurrent[iSlot] = g_sSelectorUI.iCurrent[iSlot]
|
|
ENDIF
|
|
|
|
IF bDamaged[iSlot] != g_sSelectorUI.bDamaged[iSlot]
|
|
OR bFlashDamage[iSlot] != g_sSelectorUI.bFlashDamage[iSlot]
|
|
OR g_sSelectorUI.bForceUpdate
|
|
BEGIN_SCALEFORM_MOVIE_METHOD(movieID, "SET_PLAYER_DAMAGE")
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(GET_SELECTOR_UI_SLOT_FOR_SELECTOR_PED(INT_TO_ENUM(SELECTOR_SLOTS_ENUM, iSlot)))
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(g_sSelectorUI.bDamaged[iSlot])
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(g_sSelectorUI.bFlashDamage[iSlot])
|
|
END_SCALEFORM_MOVIE_METHOD()
|
|
bDamaged[iSlot] = g_sSelectorUI.bDamaged[iSlot]
|
|
bFlashDamage[iSlot] = g_sSelectorUI.bFlashDamage[iSlot]
|
|
ENDIF
|
|
|
|
IF bHinted[iSlot] != g_sSelectorUI.bHinted[iSlot]
|
|
OR g_sSelectorUI.bForceUpdate
|
|
bUpdateHints = TRUE
|
|
ENDIF
|
|
|
|
IF iMissions[iSlot] != g_sSelectorUI.iMissions[iSlot]
|
|
OR g_sSelectorUI.bForceUpdate
|
|
bUpdateCounter = TRUE
|
|
ENDIF
|
|
ENDFOR
|
|
|
|
IF bUpdateHints
|
|
BEGIN_SCALEFORM_MOVIE_METHOD(movieID, "SET_SWITCH_HINTED_ALL")
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(g_sSelectorUI.bHinted[GET_SELECTOR_PED_FROM_UI_SLOT(0)])
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(g_sSelectorUI.bHinted[GET_SELECTOR_PED_FROM_UI_SLOT(1)])
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(g_sSelectorUI.bHinted[GET_SELECTOR_PED_FROM_UI_SLOT(2)])
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(g_sSelectorUI.bHinted[GET_SELECTOR_PED_FROM_UI_SLOT(3)])
|
|
END_SCALEFORM_MOVIE_METHOD()
|
|
bHinted[0] = g_sSelectorUI.bHinted[0]
|
|
bHinted[1] = g_sSelectorUI.bHinted[1]
|
|
bHinted[2] = g_sSelectorUI.bHinted[2]
|
|
bHinted[3] = g_sSelectorUI.bHinted[3]
|
|
bUpdateHints = FALSE
|
|
ENDIF
|
|
|
|
IF bUpdateCounter
|
|
BEGIN_SCALEFORM_MOVIE_METHOD(movieID, "SET_SWITCH_COUNTER_ALL")
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(g_sSelectorUI.iMissions[GET_SELECTOR_PED_FROM_UI_SLOT(0)])
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(g_sSelectorUI.iMissions[GET_SELECTOR_PED_FROM_UI_SLOT(1)])
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(g_sSelectorUI.iMissions[GET_SELECTOR_PED_FROM_UI_SLOT(2)])
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(g_sSelectorUI.iMissions[GET_SELECTOR_PED_FROM_UI_SLOT(3)])
|
|
END_SCALEFORM_MOVIE_METHOD()
|
|
iMissions[0] = g_sSelectorUI.iMissions[0]
|
|
iMissions[1] = g_sSelectorUI.iMissions[1]
|
|
iMissions[2] = g_sSelectorUI.iMissions[2]
|
|
iMissions[3] = g_sSelectorUI.iMissions[3]
|
|
bUpdateCounter = FALSE
|
|
ENDIF
|
|
|
|
IF bSetPedHead AND NOT bPedHeadSet
|
|
|
|
IF IS_CURRENTLY_ON_MISSION_OF_TYPE(MISSION_TYPE_DIRECTOR)
|
|
#IF IS_DEBUG_BUILD
|
|
OR g_debugMenuControl.fTempPos[0] != 0.0
|
|
#ENDIF
|
|
|
|
PRINTLN("MAINTAIN_SELECTOR_UI() - Setting player headshot: director")
|
|
|
|
BEGIN_SCALEFORM_MOVIE_METHOD(movieID, "SET_MULTIPLAYER_HEAD")
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_TEXTURE_NAME_STRING("director")
|
|
END_SCALEFORM_MOVIE_METHOD()
|
|
|
|
ELIF NOT IS_CURRENTLY_ON_MISSION_OF_TYPE(MISSION_TYPE_STORY)
|
|
AND NOT IS_CURRENTLY_ON_MISSION_OF_TYPE(MISSION_TYPE_STORY_FRIENDS)
|
|
AND NOT IS_CURRENTLY_ON_MISSION_OF_TYPE(MISSION_TYPE_STORY_PREP)
|
|
AND NOT IS_CURRENTLY_ON_MISSION_OF_TYPE(MISSION_TYPE_RANDOM_CHAR)
|
|
AND NOT IS_CURRENTLY_ON_MISSION_OF_TYPE(MISSION_TYPE_MINIGAME)
|
|
AND NOT IS_CURRENTLY_ON_MISSION_OF_TYPE(MISSION_TYPE_MINIGAME_FRIENDS)
|
|
AND NOT IS_REPEAT_PLAY_ACTIVE()
|
|
|
|
PRINTLN("MAINTAIN_SELECTOR_UI() - Setting player headshot: ", sMPPedHeadshot)
|
|
|
|
BEGIN_SCALEFORM_MOVIE_METHOD(movieID, "SET_MULTIPLAYER_HEAD")
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_TEXTURE_NAME_STRING(sMPPedHeadshot)
|
|
END_SCALEFORM_MOVIE_METHOD()
|
|
ENDIF
|
|
bPedHeadSet = TRUE
|
|
ENDIF
|
|
|
|
IF bDisplay != g_sSelectorUI.bDisplay
|
|
OR g_sSelectorUI.bForceUpdate
|
|
|
|
PRINTLN("MAINTAIN_SELECTOR_UI() - Updating visibility state")
|
|
|
|
IF g_sSelectorUI.bDisplay
|
|
BEGIN_SCALEFORM_MOVIE_METHOD(movieID, "SET_SWITCH_VISIBLE")
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(1)
|
|
END_SCALEFORM_MOVIE_METHOD()
|
|
|
|
IF iSelectedSlot = -1
|
|
bDisplayCharacterInfo = FALSE
|
|
ELSE
|
|
bDisplayCharacterInfo = TRUE
|
|
ENDIF
|
|
ELSE
|
|
BEGIN_SCALEFORM_MOVIE_METHOD(movieID, "SET_SWITCH_VISIBLE")
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(0)
|
|
END_SCALEFORM_MOVIE_METHOD()
|
|
|
|
// Force selection update
|
|
BEGIN_SCALEFORM_MOVIE_METHOD(movieID, "SET_PLAYER_SELECTED")
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(-1)
|
|
END_SCALEFORM_MOVIE_METHOD()
|
|
iSelectedSlot = -1
|
|
|
|
bDisplayCharacterInfo = FALSE
|
|
ENDIF
|
|
bDisplay = g_sSelectorUI.bDisplay
|
|
ENDIF
|
|
|
|
|
|
IF bUpdateCountdown
|
|
OR bForceUpdateCountdown
|
|
OR g_sSelectorUI.bForceUpdate
|
|
|
|
TEXT_LABEL_31 tlMPLabel
|
|
GET_MP_COUNTDOWN_STRING(tlMPLabel, TRUE)
|
|
BEGIN_SCALEFORM_MOVIE_METHOD(movieID, "SET_MP_LABEL")
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_PLAYER_NAME_STRING(tlMPLabel)
|
|
END_SCALEFORM_MOVIE_METHOD()
|
|
|
|
bUpdateCountdown = FALSE
|
|
iCountdownTimer = GET_GAME_TIMER()
|
|
IF NETWORK_IS_GAME_IN_PROGRESS()
|
|
tdCountdownTimer = GET_NETWORK_TIME()
|
|
ENDIF
|
|
ELSE
|
|
IF (NETWORK_IS_GAME_IN_PROGRESS() AND IS_TIME_MORE_THAN(GET_NETWORK_TIME(), GET_TIME_OFFSET(tdCountdownTimer, 1000)))
|
|
OR (NOT NETWORK_IS_GAME_IN_PROGRESS() AND (GET_GAME_TIMER() - iCountdownTimer) > 1000)
|
|
bUpdateCountdown = TRUE
|
|
ENDIF
|
|
ENDIF
|
|
|
|
// Update the selected slot
|
|
|
|
SET_INPUT_EXCLUSIVE(PLAYER_CONTROL, INPUT_WEAPON_WHEEL_UD)
|
|
SET_INPUT_EXCLUSIVE(PLAYER_CONTROL, INPUT_WEAPON_WHEEL_LR)
|
|
|
|
FLOAT fRightStickUD = GET_DISABLED_CONTROL_NORMAL(PLAYER_CONTROL, INPUT_WEAPON_WHEEL_UD)
|
|
FLOAT fRightStickLR = GET_DISABLED_CONTROL_NORMAL(PLAYER_CONTROL, INPUT_WEAPON_WHEEL_LR)
|
|
|
|
|
|
BOOL bCheckSelection = TRUE
|
|
INT iNewSelection = -1
|
|
|
|
// PC Shortcut keys
|
|
// Fake stick direction and slot depending on which shortcut key pressed
|
|
IF IS_PC_VERSION()
|
|
|
|
IF IS_DISABLED_CONTROL_PRESSED(PLAYER_CONTROL, INPUT_SELECT_CHARACTER_MICHAEL )
|
|
fRightStickUD = 0
|
|
fRightStickLR = -1
|
|
g_sSelectorUI.iSelectedSlot = 3
|
|
g_sSelectorUI.bFirstSelectionMade = TRUE
|
|
|
|
PRINTLN("SWITCH UI - INPUT_SELECT_CHARACTER_MICHAEL")
|
|
ELIF IS_DISABLED_CONTROL_PRESSED(PLAYER_CONTROL, INPUT_SELECT_CHARACTER_FRANKLIN )
|
|
fRightStickUD = -1
|
|
fRightStickLR = 0
|
|
g_sSelectorUI.iSelectedSlot = 0
|
|
g_sSelectorUI.bFirstSelectionMade = TRUE
|
|
PRINTLN("SWITCH UI - INPUT_SELECT_CHARACTER_FRANKLIN")
|
|
ELIF IS_DISABLED_CONTROL_PRESSED(PLAYER_CONTROL, INPUT_SELECT_CHARACTER_TREVOR )
|
|
fRightStickUD = 0
|
|
fRightStickLR = 1
|
|
g_sSelectorUI.iSelectedSlot = 1
|
|
g_sSelectorUI.bFirstSelectionMade = TRUE
|
|
PRINTLN("SWITCH UI - INPUT_SELECT_CHARACTER_TREVOR")
|
|
ELIF IS_DISABLED_CONTROL_PRESSED(PLAYER_CONTROL, INPUT_SELECT_CHARACTER_MULTIPLAYER )
|
|
fRightStickUD = 1
|
|
fRightStickLR = 0
|
|
g_sSelectorUI.iSelectedSlot = 2
|
|
g_sSelectorUI.bFirstSelectionMade = TRUE
|
|
PRINTLN("SWITCH UI - INPUT_SELECT_CHARACTER_MULTIPLAYER")
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
// Clear stick reset when we hit dead zone.
|
|
// Dont check for selection when in the dead zone.
|
|
IF GET_DISTANCE_BETWEEN_COORDS(<<0,0,0>>, <<fRightStickLR, fRightStickUD, 0.0>>) <= 0.3
|
|
bCheckSelection = FALSE
|
|
g_sSelectorUI.bResetSelection = FALSE
|
|
ENDIF
|
|
|
|
// Grab the new selection to see if it differs from default
|
|
IF bCheckSelection
|
|
FLOAT fRange = 90
|
|
VECTOR vDir = NORMALISE_VECTOR(<<fRightStickLR, fRightStickUD, 0.0>>)
|
|
FLOAT fAngle = GET_ANGLE_BETWEEN_2D_VECTORS(0.0, -1.0, vDir.x, vDir.y)
|
|
|
|
IF fRightStickLR < 0
|
|
fAngle = 360-fAngle
|
|
ENDIF
|
|
|
|
// Top
|
|
IF (fAngle >= (0.0) AND fAngle <= (0.0+(fRange/2.0)))
|
|
OR (fAngle >= (360-(fRange/2.0)) AND fAngle <= (360))
|
|
iNewSelection = 0
|
|
// Right
|
|
ELIF (fAngle >= (90.0-(fRange/2.0)) AND fAngle <= (90.0+(fRange/2.0)))
|
|
iNewSelection = 1
|
|
// Bottom
|
|
ELIF (fAngle >= (180.0-(fRange/2.0)) AND fAngle <= (180.0+(fRange/2.0)))
|
|
iNewSelection = 2
|
|
// Left
|
|
ELIF (fAngle >= (270.0-(fRange/2.0)) AND fAngle <= (270.0+(fRange/2.0)))
|
|
iNewSelection = 3
|
|
ELSE
|
|
//PRINTLN("MAINTAIN_SELECTOR_UI() - Not accounting for selection angle ", fAngle)
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
IF bCheckSelection
|
|
AND g_sSelectorUI.bResetSelection
|
|
AND iSelectedSlotOnLoad = -1
|
|
AND g_sSelectorUI.iSelectedSlot != -1
|
|
iSelectedSlotOnLoad = iNewSelection
|
|
ENDIF
|
|
|
|
// New selection has been made
|
|
IF iSelectedSlotOnLoad != -1
|
|
AND iNewSelection != iSelectedSlotOnLoad
|
|
g_sSelectorUI.bResetSelection = FALSE
|
|
ENDIF
|
|
|
|
// Update to new selection
|
|
IF bCheckSelection
|
|
AND NOT g_sSelectorUI.bResetSelection
|
|
g_sSelectorUI.iSelectedSlot = iNewSelection
|
|
g_sSelectorUI.bFirstSelectionMade = TRUE
|
|
ENDIF
|
|
|
|
IF iSelectedSlot != g_sSelectorUI.iSelectedSlot
|
|
IF NOT g_sSelectorUI.bSFX_BlockAudioCalls
|
|
// Don't play initial MP selection
|
|
IF NOT NETWORK_IS_GAME_IN_PROGRESS()
|
|
OR iSelectedSlot != -1
|
|
PLAY_SOUND(-1, "CHARACTER_CHANGE_CHARACTER_01_MASTER", DEFAULT, DEFAULT, DEFAULT, FALSE) // Michael
|
|
PRINTLN("SWITCH UI - playing sound: CHARACTER_CHANGE_CHARACTER_01_MASTER")
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF iSelectedSlot != g_sSelectorUI.iSelectedSlot
|
|
OR g_sSelectorUI.bForceUpdate
|
|
PRINTLN("MAINTAIN_SELECTOR_UI() - Updating selected player, ", g_sSelectorUI.iSelectedSlot)
|
|
BEGIN_SCALEFORM_MOVIE_METHOD(movieID, "SET_PLAYER_SELECTED")
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(g_sSelectorUI.iSelectedSlot)
|
|
END_SCALEFORM_MOVIE_METHOD()
|
|
iSelectedSlot = g_sSelectorUI.iSelectedSlot
|
|
|
|
// Stats
|
|
REBUILD_STAT_UI()
|
|
|
|
bDisplayCharacterInfo = FALSE
|
|
|
|
IF iSelectedSlot != -1
|
|
AND (g_sSelectorUI.iState[iSelectedSlot] != 3 OR iSelectedSlot = 2)// NOTMET= 3
|
|
AND g_sSelectorUI.iEnum[iSelectedSlot] != 4 //CHAR_CHOP_RIGHT = 4
|
|
AND g_sSelectorUI.iEnum[iSelectedSlot] != 5 //CHAR_CHOP_UP = 5
|
|
AND g_sSelectorUI.iEnum[iSelectedSlot] != 6 //CHAR_CHOP_LEFT = 6
|
|
IF iSelectedSlot = 0 // Top
|
|
bDisplayCharacterInfo = TRUE
|
|
ELIF iSelectedSlot = 1 // Right
|
|
bDisplayCharacterInfo = TRUE
|
|
ELIF iSelectedSlot = 2 // Bottom
|
|
IF NETWORK_IS_GAME_IN_PROGRESS()
|
|
OR NOT IS_CURRENTLY_ON_MISSION_OF_TYPE(MISSION_TYPE_DIRECTOR)
|
|
bDisplayCharacterInfo = TRUE
|
|
ENDIF
|
|
ELIF iSelectedSlot = 3 // Left
|
|
bDisplayCharacterInfo = TRUE
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF bSelection != g_sSelectorUI.bSelection
|
|
// Only process the selection on SP characters when in SP mode.
|
|
bSelection = g_sSelectorUI.bSelection
|
|
|
|
// SFX - UI on screen
|
|
IF g_sSelectorUI.iSFX_Display != -1
|
|
AND g_sSelectorUI.iSFX_Display_ScriptHash = GET_HASH_KEY(GET_THIS_SCRIPT_NAME())
|
|
STOP_SOUND(g_sSelectorUI.iSFX_Display)
|
|
PRINTLN("SWITCH UI - stopping sound: CHARACTER_CHANGE_DPAD_DOWN_MASTER")
|
|
RELEASE_SOUND_ID(g_sSelectorUI.iSFX_Display)
|
|
g_sSelectorUI.iSFX_Display = -1
|
|
g_sSelectorUI.iSFX_Display_ScriptHash = 0
|
|
ENDIF
|
|
|
|
IF g_sSelectorUI.bFX_Fade
|
|
PRINTLN("SWITCH UI - stopping postfx (selection = f_selection)")
|
|
ANIMPOSTFX_STOP("SwitchHUDMichaelIn")
|
|
ANIMPOSTFX_STOP("SwitchHUDFranklinIn")
|
|
ANIMPOSTFX_STOP("SwitchHUDTrevorIn")
|
|
ANIMPOSTFX_STOP("SwitchHUDIn")
|
|
SWITCH GET_CURRENT_PLAYER_PED_ENUM()
|
|
CASE CHAR_MICHAEL
|
|
IF NOT ANIMPOSTFX_IS_RUNNING("SwitchOpenMichaelIn")
|
|
AND NOT ANIMPOSTFX_IS_RUNNING("SwitchShortMichaelIn")
|
|
ANIMPOSTFX_PLAY("SwitchHUDMichaelOut", 0, FALSE)
|
|
ELSE
|
|
PRINTLN("SWITCH UI - don't trigger SwitchHUDMichaelOut [SwitchOpenMichaelIn:", ANIMPOSTFX_IS_RUNNING("SwitchOpenMichaelIn"), ", SwitchOpenMichaelIn:", ANIMPOSTFX_IS_RUNNING("SwitchShortMichaelIn"), "]")
|
|
ENDIF
|
|
BREAK
|
|
CASE CHAR_FRANKLIN
|
|
IF NOT ANIMPOSTFX_IS_RUNNING("SwitchOpenFranklinIn")
|
|
AND NOT ANIMPOSTFX_IS_RUNNING("SwitchShortFranklinIn")
|
|
ANIMPOSTFX_PLAY("SwitchHUDFranklinOut", 0, FALSE)
|
|
ELSE
|
|
PRINTLN("SWITCH UI - don't trigger SwitchHUDFranklinOut [SwitchOpenFranklinIn:", ANIMPOSTFX_IS_RUNNING("SwitchOpenFranklinIn"), ", SwitchOpenFranklinIn:", ANIMPOSTFX_IS_RUNNING("SwitchShortFranklinIn"), "]")
|
|
ENDIF
|
|
BREAK
|
|
CASE CHAR_TREVOR
|
|
IF NOT ANIMPOSTFX_IS_RUNNING("SwitchOpenTrevorIn")
|
|
AND NOT ANIMPOSTFX_IS_RUNNING("SwitchShortTrevorIn")
|
|
ANIMPOSTFX_PLAY("SwitchHUDTrevorOut", 0, FALSE)
|
|
ELSE
|
|
PRINTLN("SWITCH UI - don't trigger SwitchHUDTrevorOut [SwitchOpenTrevorIn:", ANIMPOSTFX_IS_RUNNING("SwitchOpenTrevorIn"), ", SwitchOpenTrevorIn:", ANIMPOSTFX_IS_RUNNING("SwitchShortTrevorIn"), "]")
|
|
ENDIF
|
|
BREAK
|
|
DEFAULT
|
|
ANIMPOSTFX_PLAY("SwitchHUDOut", 0, FALSE) NET_NL()NET_PRINT("SwitchHUDOut 2 ") BREAK
|
|
ENDSWITCH
|
|
SET_AUDIO_FLAG("ActivateSwitchWheelAudio", FALSE)
|
|
g_sSelectorUI.bFX_Fade = FALSE
|
|
ENDIF
|
|
|
|
PRINTLN("CLEANING UP THE SWITCH UI")
|
|
|
|
ENDIF
|
|
|
|
///////////////////////////////////////////////////////////////////////////////////////////////////
|
|
///
|
|
/// AUTOSWITCH UI: show who we are autoswitching too
|
|
///
|
|
ELIF eUIStateIntended = SELECTOR_UI_AUTOSWITCH_HINT
|
|
|
|
FOR iSlot = 0 TO 3
|
|
|
|
// Update the slot data if the stored data differs
|
|
IF g_sSelectorUI.bForceUpdate
|
|
|
|
BEGIN_SCALEFORM_MOVIE_METHOD(movieID, "SET_SWITCH_SLOT")
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(iSlot)
|
|
|
|
IF g_sSelectorUI.iAutoSwitchSlot = iSlot // AVAILABLE = 1
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(1) // AVAILABLE = 1
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(iAutoSwitchEnum[iSlot])
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(TRUE)
|
|
ELSE
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(3) // NOTMET= 3
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(iAutoSwitchEnum[iSlot])
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(FALSE)
|
|
ENDIF
|
|
END_SCALEFORM_MOVIE_METHOD()
|
|
|
|
BEGIN_SCALEFORM_MOVIE_METHOD(movieID, "SET_PLAYER_DAMAGE")
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(GET_SELECTOR_UI_SLOT_FOR_SELECTOR_PED(INT_TO_ENUM(SELECTOR_SLOTS_ENUM, iSlot)))
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(FALSE)
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(FALSE)
|
|
END_SCALEFORM_MOVIE_METHOD()
|
|
ENDIF
|
|
ENDFOR
|
|
|
|
IF g_sSelectorUI.bForceUpdate
|
|
BEGIN_SCALEFORM_MOVIE_METHOD(movieID, "SET_SWITCH_HINTED_ALL")
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(FALSE)
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(FALSE)
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(FALSE)
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(FALSE)
|
|
END_SCALEFORM_MOVIE_METHOD()
|
|
BEGIN_SCALEFORM_MOVIE_METHOD(movieID, "SET_SWITCH_COUNTER_ALL")
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(0)
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(0)
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(0)
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(0)
|
|
END_SCALEFORM_MOVIE_METHOD()
|
|
BEGIN_SCALEFORM_MOVIE_METHOD(movieID, "SET_SWITCH_VISIBLE")
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(1)
|
|
END_SCALEFORM_MOVIE_METHOD()
|
|
|
|
BEGIN_SCALEFORM_MOVIE_METHOD(movieID, "SET_PLAYER_SELECTED")
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(g_sSelectorUI.iAutoSwitchSlot)
|
|
END_SCALEFORM_MOVIE_METHOD()
|
|
iAutoSwitchSlot = g_sSelectorUI.iAutoSwitchSlot
|
|
iSelectedSlot = -1
|
|
bDisplayCharacterInfo = FALSE
|
|
bDisplay = g_sSelectorUI.bDisplay
|
|
ENDIF
|
|
|
|
|
|
|
|
///////////////////////////////////////////////////////////////////////////////////////////////////
|
|
///
|
|
/// HIDDEN UI: cleanup
|
|
///
|
|
ELIF eUIStateIntended = SELECTOR_UI_HIDDEN
|
|
|
|
BEGIN_SCALEFORM_MOVIE_METHOD(movieID, "SET_SWITCH_VISIBLE")
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(0)
|
|
END_SCALEFORM_MOVIE_METHOD()
|
|
|
|
// Force selection update
|
|
BEGIN_SCALEFORM_MOVIE_METHOD(movieID, "SET_PLAYER_SELECTED")
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(-1)
|
|
END_SCALEFORM_MOVIE_METHOD()
|
|
iSelectedSlot = -1
|
|
|
|
bDisplayCharacterInfo = FALSE
|
|
|
|
// // Get some UI to display again
|
|
IF NOT IS_PC_VERSION()
|
|
AND GET_CURRENT_GAMEMODE() != GAMEMODE_FM
|
|
AND GET_CURRENT_GAMEMODE() != GAMEMODE_CREATOR
|
|
AND NOT IS_PLAYER_SWITCH_IN_PROGRESS()
|
|
AND NOT IS_PLAYER_PED_SWITCH_IN_PROGRESS()
|
|
AND NOT IS_SELECTOR_CAM_ACTIVE()
|
|
AND NOT IS_AIMING_THROUGH_SNIPER_SCOPE(PLAYER_PED_ID())
|
|
AND g_sSelectorUI.eUIStateCurrent != SELECTOR_UI_AUTOSWITCH_HINT
|
|
SHOW_HUD_COMPONENT_THIS_FRAME(NEW_HUD_VEHICLE_NAME)
|
|
SHOW_HUD_COMPONENT_THIS_FRAME(NEW_HUD_AREA_NAME)
|
|
SHOW_HUD_COMPONENT_THIS_FRAME(NEW_HUD_DISTRICT_NAME)
|
|
SHOW_HUD_COMPONENT_THIS_FRAME(NEW_HUD_STREET_NAME)
|
|
ENDIF
|
|
|
|
// Cleanup movie so that it doesnt stay in memory through out the entire game
|
|
CLEANUP_SELECTOR_UI()
|
|
CLEANUP_MP_HEADSHOT()
|
|
|
|
///////////////////////////////////////////////////////////////////////////////////////////////////
|
|
///
|
|
/// HIDDEN TO FULL UI: prep
|
|
///
|
|
ELIF eUIStateIntended = SELECTOR_UI_HIDDEN_TO_FULL
|
|
//PRINTLN("SWITCH UI - initial delay...")
|
|
ENDIF
|
|
ENDIF
|
|
g_sSelectorUI.eUIStateCurrent = eUIStateIntended
|
|
ENDIF
|
|
|
|
// Draw the movie if it is still loaded
|
|
IF g_sSelectorUI.bLoaded
|
|
AND g_sSelectorUI.bSetup
|
|
|
|
// SFX - UI on screen
|
|
IF g_sSelectorUI.eUIStateCurrent = SELECTOR_UI_FULL
|
|
IF g_sSelectorUI.bOnScreen // 1 frame delay
|
|
IF NOT g_sSelectorUI.bSFX_BlockAudioCalls
|
|
IF g_sSelectorUI.iSFX_Display = -1
|
|
g_sSelectorUI.iSFX_Display = GET_SOUND_ID()
|
|
g_sSelectorUI.iSFX_Display_ScriptHash = GET_HASH_KEY(GET_THIS_SCRIPT_NAME())
|
|
IF NETWORK_IS_GAME_IN_PROGRESS()
|
|
PLAY_SOUND(g_sSelectorUI.iSFX_Display, "CHARACTER_CHANGE_DPAD_DOWN_MP_MASTER", DEFAULT, DEFAULT, DEFAULT, FALSE)
|
|
ELSE
|
|
PLAY_SOUND(g_sSelectorUI.iSFX_Display, "CHARACTER_CHANGE_DPAD_DOWN_MASTER", DEFAULT, DEFAULT, DEFAULT, FALSE)
|
|
ENDIF
|
|
PRINTLN("SWITCH UI - playing sound: CHARACTER_CHANGE_DPAD_DOWN_MASTER")
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF NOT g_sSelectorUI.bFX_Fade
|
|
PRINTLN("SWITCH UI - starting postfx")
|
|
|
|
SWITCH GET_CURRENT_PLAYER_PED_ENUM()
|
|
CASE CHAR_MICHAEL ANIMPOSTFX_PLAY("SwitchHUDMichaelIn", 0, FALSE) BREAK
|
|
CASE CHAR_FRANKLIN ANIMPOSTFX_PLAY("SwitchHUDFranklinIn", 0, FALSE) BREAK
|
|
CASE CHAR_TREVOR ANIMPOSTFX_PLAY("SwitchHUDTrevorIn", 0, FALSE) BREAK
|
|
DEFAULT ANIMPOSTFX_PLAY("SwitchHUDIn", 0, FALSE) BREAK
|
|
ENDSWITCH
|
|
|
|
SET_AUDIO_FLAG("ActivateSwitchWheelAudio", TRUE)
|
|
g_sSelectorUI.bFX_Fade = TRUE
|
|
ENDIF
|
|
ENDIF
|
|
ELIF g_sSelectorUI.eUIStateCurrent = SELECTOR_UI_HINT
|
|
// Play initial sound
|
|
bSwitchAvailableAudio = TRUE
|
|
ENDIF
|
|
|
|
IF g_sSelectorUI.bDisplay
|
|
|
|
IF g_sSelectorUI.eUIStateCurrent = SELECTOR_UI_FULL
|
|
// Slow down time when UI is on screen
|
|
bReduceTimeScaleForSwitch = TRUE
|
|
bReduceTimeScale = TRUE
|
|
|
|
// PLAYER STATS
|
|
IF bDisplayCharacterInfo
|
|
AND NOT bUsingPrologueMovie
|
|
//IF g_sSelectorUI.bOnScreen // 1 frame delay
|
|
|
|
IF NETWORK_IS_GAME_IN_PROGRESS()
|
|
bDrawStat = TRUE
|
|
ELIF g_sSelectorUI.iSelectedSlot = 0 // Top
|
|
IF IS_BIT_SET(g_savedGlobals.sFlow.strandSavedVars[STRAND_PROLOGUE].savedBitflags, SAVED_BITS_STRAND_TERMINATED)
|
|
OR NOT IS_BIT_SET(g_savedGlobals.sFlow.strandSavedVars[STRAND_PROLOGUE].savedBitflags, SAVED_BITS_STRAND_ACTIVATED) // allow stats to display when we boot into debug
|
|
bDrawStat = TRUE
|
|
ENDIF
|
|
ELIF g_sSelectorUI.iSelectedSlot = 1 // Right
|
|
IF IS_BIT_SET(g_savedGlobals.sFlow.strandSavedVars[STRAND_PROLOGUE].savedBitflags, SAVED_BITS_STRAND_TERMINATED)
|
|
OR NOT IS_BIT_SET(g_savedGlobals.sFlow.strandSavedVars[STRAND_PROLOGUE].savedBitflags, SAVED_BITS_STRAND_ACTIVATED) // allow stats to display when we boot into debug
|
|
bDrawStat = TRUE
|
|
ENDIF
|
|
ELIF g_sSelectorUI.iSelectedSlot = 2 // Bottom
|
|
IF NOT IS_CURRENTLY_ON_MISSION_OF_TYPE(MISSION_TYPE_STORY)
|
|
AND NOT IS_CURRENTLY_ON_MISSION_OF_TYPE(MISSION_TYPE_STORY_FRIENDS)
|
|
AND NOT IS_CURRENTLY_ON_MISSION_OF_TYPE(MISSION_TYPE_STORY_PREP)
|
|
AND NOT IS_CURRENTLY_ON_MISSION_OF_TYPE(MISSION_TYPE_RANDOM_CHAR)
|
|
AND NOT IS_CURRENTLY_ON_MISSION_OF_TYPE(MISSION_TYPE_MINIGAME)
|
|
AND NOT IS_CURRENTLY_ON_MISSION_OF_TYPE(MISSION_TYPE_MINIGAME_FRIENDS)
|
|
AND NOT IS_REPEAT_PLAY_ACTIVE()
|
|
AND HAS_IMPORTANT_STATS_LOADED()
|
|
AND IS_STAT_CHARACTER_ACTIVE(GET_ACTIVE_CHARACTER_SLOT())
|
|
bDrawStat = TRUE
|
|
ENDIF
|
|
ELIF g_sSelectorUI.iSelectedSlot = 3 // Left
|
|
IF IS_BIT_SET(g_savedGlobals.sFlow.strandSavedVars[STRAND_PROLOGUE].savedBitflags, SAVED_BITS_STRAND_TERMINATED)
|
|
OR NOT IS_BIT_SET(g_savedGlobals.sFlow.strandSavedVars[STRAND_PROLOGUE].savedBitflags, SAVED_BITS_STRAND_ACTIVATED) // allow stats to display when we boot into debug
|
|
bDrawStat = TRUE
|
|
ENDIF
|
|
ENDIF
|
|
|
|
//bug:2415703
|
|
if IS_CURRENTLY_ON_MISSION_OF_TYPE(MISSION_TYPE_DIRECTOR)
|
|
bDrawStat = FALSE
|
|
ENDIF
|
|
|
|
IF bDrawStat
|
|
|
|
IF GET_IS_WIDESCREEN()
|
|
SET_WIDESCREEN_FORMAT(WIDESCREEN_FORMAT_RIGHT)
|
|
ENDIF
|
|
|
|
SET_SCRIPT_GFX_ALIGN(UI_ALIGN_RIGHT, UI_ALIGN_BOTTOM)
|
|
|
|
//SET_SCRIPT_GFX_ALIGN_PARAMS(fPLAYER_STATS_X, fPLAYER_STATS_Y, fPLAYER_STATS_W*fPLAYER_STATS_SCALE_W, fPLAYER_STATS_H*fPLAYER_STATS_SCALE_H)
|
|
|
|
SET_SCRIPT_GFX_ALIGN_PARAMS(0,0,0,0)
|
|
GET_STAT_BOX_X_POS( fPLAYER_STATS_X )
|
|
|
|
IF NOT bSuppressUIForShortSwitch
|
|
//DRAW_SCALEFORM_MOVIE(movieID, (((fPLAYER_SWITCH_W*fPLAYER_SWITCH_SCALE_W)*fPLAYER_SWITCH_WIDE_SCALE)*0.5), fPLAYER_SWITCH_Y, (fPLAYER_SWITCH_W*fPLAYER_SWITCH_SCALE_W)*fPLAYER_SWITCH_WIDE_SCALE, (fPLAYER_SWITCH_H*fPLAYER_SWITCH_SCALE_H), 255, 255, 255, 255)
|
|
DRAW_SCALEFORM_MOVIE(movieID2, fPLAYER_STATS_X + (((fPLAYER_STATS_W*fPLAYER_STATS_SCALE_W)*fPLAYER_SWITCH_WIDE_SCALE)*0.5), fPLAYER_STATS_Y, (fPLAYER_STATS_W*fPLAYER_STATS_SCALE_W)*fPLAYER_SWITCH_WIDE_SCALE, (fPLAYER_STATS_H*fPLAYER_STATS_SCALE_H), 255, 255, 255, 255)
|
|
ENDIF
|
|
RESET_SCRIPT_GFX_ALIGN()
|
|
|
|
INT iPed
|
|
// Top
|
|
IF g_sSelectorUI.iSelectedSlot = 0
|
|
iPed = ENUM_TO_INT(SELECTOR_PED_FRANKLIN)
|
|
// Right
|
|
ELIF g_sSelectorUI.iSelectedSlot = 1
|
|
iPed = ENUM_TO_INT(SELECTOR_PED_TREVOR)
|
|
// Bottom
|
|
ELIF g_sSelectorUI.iSelectedSlot = 2
|
|
iPed = ENUM_TO_INT(SELECTOR_PED_MULTIPLAYER)
|
|
// Left
|
|
ELIF g_sSelectorUI.iSelectedSlot = 3
|
|
iPed = ENUM_TO_INT(SELECTOR_PED_MICHAEL)
|
|
ENDIF
|
|
|
|
IF NOT ARE_VECTORS_EQUAL(g_sSelectorUI.vCoords[iPed], <<0,0,0>>)
|
|
AND NOT g_sSelectorUI.bDisableMapOverrideThisFrame
|
|
IF NOT DOES_BLIP_EXIST(selectedPedBlip)
|
|
selectedPedBlip = ADD_BLIP_FOR_COORD(g_sSelectorUI.vCoords[iPed])
|
|
SET_BLIP_COLOUR(selectedPedBlip, BLIP_COLOUR_BLUE)
|
|
ENDIF
|
|
|
|
SET_BLIP_COORDS(selectedPedBlip, g_sSelectorUI.vCoords[iPed])
|
|
|
|
IF g_sSelectorUI.iHealth[iPed] = -1
|
|
SET_HEALTH_HUD_DISPLAY_VALUES(-1, -1)
|
|
SET_ABILITY_BAR_VALUE(-1, -1)
|
|
SET_MAX_HEALTH_HUD_DISPLAY(0)
|
|
SET_MAX_ARMOUR_HUD_DISPLAY(0)
|
|
//PRINTLN("SET_HEALTH_HUD_DISPLAY_VALUES(-1, -1)")
|
|
ELSE
|
|
// The ui bases health on players max health so we need to scale accordingly.
|
|
SET_MAX_HEALTH_HUD_DISPLAY(GET_PED_MAX_HEALTH(PLAYER_PED_ID()))
|
|
SET_MAX_ARMOUR_HUD_DISPLAY(100)
|
|
SET_HEALTH_HUD_DISPLAY_VALUES(FLOOR(TO_FLOAT(GET_PED_MAX_HEALTH(PLAYER_PED_ID()))*(TO_FLOAT(g_sSelectorUI.iHealth[iPed]) / 100)), g_sSelectorUI.iArmour[iPed])
|
|
SET_ABILITY_BAR_VALUE(TO_FLOAT(g_sSelectorUI.iSpecial[iPed]), TO_FLOAT(g_sSelectorUI.iSpecialMax[iPed]))
|
|
//PRINTLN("SET_HEALTH_HUD_DISPLAY_VALUES(", FLOOR(TO_FLOAT(GET_PED_MAX_HEALTH(PLAYER_PED_ID()))*(TO_FLOAT(g_sSelectorUI.iHealth[iPed]) / 100)), ", ", g_sSelectorUI.iArmour[iPed], ")")
|
|
ENDIF
|
|
|
|
LOCK_MINIMAP_POSITION(g_sSelectorUI.vCoords[iPed].x, g_sSelectorUI.vCoords[iPed].y)
|
|
bMapUpdated = TRUE
|
|
bCleanupMap = FALSE
|
|
ENDIF
|
|
//ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
// INPUT BLOCKS
|
|
PROCESS_SELECTOR_INPUT_BLOCKS()
|
|
|
|
// SPECIAL ABILITY BLOCK
|
|
IF NOT NETWORK_IS_GAME_IN_PROGRESS()
|
|
IF IS_PLAYER_PED_PLAYABLE(GET_CURRENT_PLAYER_PED_ENUM())
|
|
IF IS_SPECIAL_ABILITY_ACTIVE(PLAYER_ID())
|
|
SPECIAL_ABILITY_DEACTIVATE(PLAYER_ID())
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
|
|
// AMMO COUNT AND CASH
|
|
IF g_sSelectorUI.bOnScreen // 1 frame delay
|
|
IF NOT IS_CURRENTLY_ON_MISSION_OF_TYPE(MISSION_TYPE_DIRECTOR)
|
|
IF MISSION_FLOW_GET_RUNNING_MISSION() != SP_MISSION_PROLOGUE
|
|
SHOW_HUD_COMPONENT_THIS_FRAME(NEW_HUD_CASH)
|
|
ENDIF
|
|
SHOW_HUD_COMPONENT_THIS_FRAME(NEW_HUD_WEAPON_ICON)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
// CURRENT MISSION
|
|
IF NOT NETWORK_IS_GAME_IN_PROGRESS()
|
|
AND NOT IS_STRING_NULL_OR_EMPTY(g_sMissionStatsName)
|
|
AND NOT IS_HELP_MESSAGE_BEING_DISPLAYED()
|
|
IF IS_CURRENTLY_ON_MISSION_OF_TYPE(MISSION_TYPE_STORY)
|
|
OR IS_CURRENTLY_ON_MISSION_OF_TYPE(MISSION_TYPE_STORY_PREP)
|
|
OR IS_CURRENTLY_ON_MISSION_OF_TYPE(MISSION_TYPE_STORY_FRIENDS)
|
|
OR IS_CURRENTLY_ON_MISSION_OF_TYPE(MISSION_TYPE_RANDOM_CHAR)
|
|
IF g_sSelectorUI.bOnScreen // 1 frame delay
|
|
|
|
SET_SCRIPT_GFX_ALIGN(UI_ALIGN_RIGHT, UI_ALIGN_BOTTOM)
|
|
SET_SCRIPT_GFX_ALIGN_PARAMS(fMISSION_NAME_X, 0, 0, 0)
|
|
SET_TEXT_SCALE(FLOW_MISSION_NAME_SCALE_X, FLOW_MISSION_NAME_SCALE_Y)
|
|
|
|
SET_TEXT_FONT(FONT_CURSIVE)
|
|
SET_TEXT_JUSTIFICATION(FONT_RIGHT)
|
|
|
|
INT red, green, blue, iAlpha
|
|
|
|
// this is the default color - if we aren't a player character use this
|
|
SWITCH (GET_CURRENT_PLAYER_PED_ENUM())
|
|
CASE CHAR_MICHAEL
|
|
GET_HUD_COLOUR(HUD_COLOUR_MICHAEL, red, green, blue, iAlpha)
|
|
BREAK
|
|
CASE CHAR_FRANKLIN
|
|
GET_HUD_COLOUR(HUD_COLOUR_FRANKLIN, red, green, blue, iAlpha)
|
|
BREAK
|
|
CASE CHAR_TREVOR
|
|
GET_HUD_COLOUR(HUD_COLOUR_TREVOR, red, green, blue, iAlpha)
|
|
BREAK
|
|
DEFAULT
|
|
red = 240
|
|
green = 200
|
|
blue = 80
|
|
BREAK
|
|
ENDSWITCH
|
|
SET_TEXT_COLOUR(red, green, blue, iAlpha) // yellow text
|
|
SET_TEXT_DROP_SHADOW()
|
|
|
|
BEGIN_TEXT_COMMAND_DISPLAY_TEXT(g_sMissionStatsName)
|
|
END_TEXT_COMMAND_DISPLAY_TEXT(fMISSION_NAME_X, fMISSION_NAME_Y)
|
|
|
|
RESET_SCRIPT_GFX_ALIGN()
|
|
|
|
|
|
/*SET_SCRIPT_GFX_ALIGN(UI_ALIGN_LEFT, UI_ALIGN_TOP)
|
|
SET_SCRIPT_GFX_ALIGN_PARAMS(0.0, 0.0, 0.0, 0.0)
|
|
//DRAW_RECT_FROM_CORNER(0.0, 0.0, CUSTOM_MENU_W, CUSTOM_MENU_HEADER_H, 0, 0, 0, 255)
|
|
SETUP_MENU_HEADING_TEXT()
|
|
BEGIN_TEXT_COMMAND_DISPLAY_TEXT(g_sMissionStatsName)
|
|
END_TEXT_COMMAND_DISPLAY_TEXT(CUSTOM_MENU_TITLE_TEXT_INDENT_X, CUSTOM_MENU_TITLE_TEXT_INDENT_Y)
|
|
RESET_SCRIPT_GFX_ALIGN()*/
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
// NAMES
|
|
//IF g_sSelectorUI.bOnScreen // 1 frame delay
|
|
HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_VEHICLE_NAME)
|
|
HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_AREA_NAME)
|
|
HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_DISTRICT_NAME)
|
|
HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_STREET_NAME)
|
|
HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_SUBTITLE_TEXT)
|
|
//ENDIF
|
|
|
|
// SWITCH UI
|
|
SET_WIDESCREEN_FORMAT(WIDESCREEN_FORMAT_RIGHT)
|
|
SET_SCRIPT_GFX_ALIGN(UI_ALIGN_RIGHT, UI_ALIGN_BOTTOM)
|
|
//SET_SCRIPT_GFX_ALIGN_PARAMS((((fPLAYER_SWITCH_W*fPLAYER_SWITCH_SCALE_W)*fPLAYER_SWITCH_WIDE_SCALE)*0.5), fPLAYER_SWITCH_Y, (fPLAYER_SWITCH_W*fPLAYER_SWITCH_SCALE_W)*fPLAYER_SWITCH_WIDE_SCALE, (fPLAYER_SWITCH_H*fPLAYER_SWITCH_SCALE_H))
|
|
SET_SCRIPT_GFX_ALIGN_PARAMS(0,0,0,0)
|
|
IF NOT bSuppressUIForShortSwitch
|
|
DRAW_SCALEFORM_MOVIE(movieID, (((fPLAYER_SWITCH_W*fPLAYER_SWITCH_SCALE_W)*fPLAYER_SWITCH_WIDE_SCALE)*0.5), fPLAYER_SWITCH_Y, (fPLAYER_SWITCH_W*fPLAYER_SWITCH_SCALE_W)*fPLAYER_SWITCH_WIDE_SCALE, (fPLAYER_SWITCH_H*fPLAYER_SWITCH_SCALE_H), 255, 255, 255, 255)
|
|
ENDIF
|
|
RESET_SCRIPT_GFX_ALIGN()
|
|
g_sSelectorUI.bOnScreen = TRUE
|
|
|
|
ELIF g_sSelectorUI.eUIStateCurrent = SELECTOR_UI_HINT
|
|
OR g_sSelectorUI.eUIStateCurrent = SELECTOR_UI_HINT_TO_FULL
|
|
OR g_sSelectorUI.eUIStateCurrent = SELECTOR_UI_AUTOSWITCH_HINT
|
|
// NAMES
|
|
//IF g_sSelectorUI.bOnScreen // 1 frame delay
|
|
HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_VEHICLE_NAME)
|
|
HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_AREA_NAME)
|
|
HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_DISTRICT_NAME)
|
|
HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_STREET_NAME)
|
|
//ENDIF
|
|
|
|
// SWITCH UI
|
|
SET_WIDESCREEN_FORMAT(WIDESCREEN_FORMAT_RIGHT)
|
|
SET_SCRIPT_GFX_ALIGN(UI_ALIGN_RIGHT, UI_ALIGN_BOTTOM)
|
|
//SET_SCRIPT_GFX_ALIGN_PARAMS((((fPLAYER_SWITCH_W*fPLAYER_SWITCH_SCALE_W)*fPLAYER_SWITCH_WIDE_SCALE)*0.5), fPLAYER_SWITCH_Y, (fPLAYER_SWITCH_W*fPLAYER_SWITCH_SCALE_W)*fPLAYER_SWITCH_WIDE_SCALE, (fPLAYER_SWITCH_H*fPLAYER_SWITCH_SCALE_H))
|
|
SET_SCRIPT_GFX_ALIGN_PARAMS(0,0,0,0)
|
|
IF NOT bSuppressUIForShortSwitch
|
|
DRAW_SCALEFORM_MOVIE(movieID, (((fPLAYER_SWITCH_W*fPLAYER_SWITCH_SCALE_W)*fPLAYER_SWITCH_WIDE_SCALE)*0.5), fPLAYER_SWITCH_Y, (fPLAYER_SWITCH_W*fPLAYER_SWITCH_SCALE_W)*fPLAYER_SWITCH_WIDE_SCALE, (fPLAYER_SWITCH_H*fPLAYER_SWITCH_SCALE_H), 255, 255, 255, 255)
|
|
ENDIF
|
|
RESET_SCRIPT_GFX_ALIGN()
|
|
g_sSelectorUI.bOnScreen = TRUE
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
// SFX - UI no longer screen
|
|
IF g_sSelectorUI.eUIStateCurrent != SELECTOR_UI_FULL
|
|
IF g_sSelectorUI.iSFX_Display != -1
|
|
AND g_sSelectorUI.iSFX_Display_ScriptHash = GET_HASH_KEY(GET_THIS_SCRIPT_NAME())
|
|
|
|
STOP_SOUND(g_sSelectorUI.iSFX_Display)
|
|
PRINTLN("SWITCH UI - stopping sound: CHARACTER_CHANGE_DPAD_DOWN_MASTER")
|
|
RELEASE_SOUND_ID(g_sSelectorUI.iSFX_Display)
|
|
g_sSelectorUI.iSFX_Display = -1
|
|
g_sSelectorUI.iSFX_Display_ScriptHash = 0
|
|
|
|
ENDIF
|
|
ENDIF
|
|
|
|
// Let code know if we are displaying the switch UI
|
|
IF (g_sSelectorUI.bOnScreen AND g_sSelectorUI.eUIStateCurrent = SELECTOR_UI_FULL)
|
|
HUD_SHOWING_CHARACTER_SWITCH_SELECTION(TRUE)
|
|
ELSE
|
|
HUD_SHOWING_CHARACTER_SWITCH_SELECTION(FALSE)
|
|
ENDIF
|
|
|
|
// Keep the timescale reduced while a switch is processing #1332134
|
|
IF NOT bReduceTimeScale
|
|
IF IS_PLAYER_SWITCH_IN_PROGRESS()
|
|
|
|
bReduceTimeScale = TRUE
|
|
bReduceTimeScaleForSwitch = FALSE
|
|
|
|
IF GET_PLAYER_SWITCH_TYPE() = SWITCH_TYPE_SHORT
|
|
//short range switch, no timescale
|
|
bReduceTimeScale = FALSE
|
|
ELSE
|
|
|
|
IF GET_PLAYER_SWITCH_STATE() > SWITCH_STATE_JUMPCUT_ASCENT
|
|
bReduceTimeScale = FALSE
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF NOT bReduceTimeScale
|
|
IF g_sSelectorUI.bFX_Fade
|
|
ANIMPOSTFX_STOP("SwitchHUDMichaelIn")
|
|
ANIMPOSTFX_STOP("SwitchHUDFranklinIn")
|
|
ANIMPOSTFX_STOP("SwitchHUDTrevorIn")
|
|
ANIMPOSTFX_STOP("SwitchHUDIn")
|
|
SET_AUDIO_FLAG("ActivateSwitchWheelAudio", FALSE)
|
|
IF g_sSelectorUI.bFX_SkipFadeOut
|
|
PRINTLN("SWITCH UI - stopping postfx skipped playing fadeout")
|
|
ELSE
|
|
IF bReduceTimeScaleForSwitch
|
|
PRINTLN("SWITCH UI - stopping postfx (not bReduceTimeScale - NOT before switch)")
|
|
SWITCH GET_CURRENT_PLAYER_PED_ENUM()
|
|
CASE CHAR_MICHAEL
|
|
IF NOT ANIMPOSTFX_IS_RUNNING("SwitchOpenMichaelIn")
|
|
AND NOT ANIMPOSTFX_IS_RUNNING("SwitchShortMichaelIn")
|
|
ANIMPOSTFX_PLAY("SwitchHUDMichaelOut", 0, FALSE)
|
|
ELSE
|
|
PRINTLN("SWITCH UI - don't trigger SwitchHUDMichaelOut [SwitchOpenMichaelIn:", ANIMPOSTFX_IS_RUNNING("SwitchOpenMichaelIn"), ", SwitchOpenMichaelIn:", ANIMPOSTFX_IS_RUNNING("SwitchShortMichaelIn"), "]")
|
|
ENDIF
|
|
BREAK
|
|
CASE CHAR_FRANKLIN
|
|
IF NOT ANIMPOSTFX_IS_RUNNING("SwitchOpenFranklinIn")
|
|
AND NOT ANIMPOSTFX_IS_RUNNING("SwitchShortFranklinIn")
|
|
ANIMPOSTFX_PLAY("SwitchHUDFranklinOut", 0, FALSE)
|
|
ELSE
|
|
PRINTLN("SWITCH UI - don't trigger SwitchHUDFranklinOut [SwitchOpenFranklinIn:", ANIMPOSTFX_IS_RUNNING("SwitchOpenFranklinIn"), ", SwitchOpenFranklinIn:", ANIMPOSTFX_IS_RUNNING("SwitchShortFranklinIn"), "]")
|
|
ENDIF
|
|
BREAK
|
|
CASE CHAR_TREVOR
|
|
IF NOT ANIMPOSTFX_IS_RUNNING("SwitchOpenTrevorIn")
|
|
AND NOT ANIMPOSTFX_IS_RUNNING("SwitchShortTrevorIn")
|
|
ANIMPOSTFX_PLAY("SwitchHUDTrevorOut", 0, FALSE)
|
|
ELSE
|
|
PRINTLN("SWITCH UI - don't trigger SwitchHUDTrevorOut [SwitchOpenTrevorIn:", ANIMPOSTFX_IS_RUNNING("SwitchOpenTrevorIn"), ", SwitchOpenTrevorIn:", ANIMPOSTFX_IS_RUNNING("SwitchShortTrevorIn"), "]")
|
|
ENDIF
|
|
BREAK
|
|
DEFAULT
|
|
IF GET_CURRENT_GAMEMODE() = GAMEMODE_FM
|
|
//removed for todo 1629006 - Brenda Double FX when entering GTAO, but play it if we're in MP and the player selects the MP character
|
|
ANIMPOSTFX_PLAY("SwitchHUDOut", 0, FALSE)
|
|
NET_NL()NET_PRINT("SwitchHUDOut 1 ")
|
|
ENDIF
|
|
|
|
BREAK
|
|
ENDSWITCH
|
|
ELSE
|
|
PRINTLN("SWITCH UI - stopping postfx (not bReduceTimeScale - before switch)")
|
|
ENDIF
|
|
ENDIF
|
|
|
|
g_sSelectorUI.bFX_Fade = FALSE
|
|
ENDIF
|
|
ENDIF
|
|
|
|
// Process the timescale
|
|
IF bReduceTimeScale != bSlowingDownTime
|
|
// Reset the timer
|
|
IF fTargetScale = fLastTimeScaleSet
|
|
iTimeScaleTimer = GET_GAME_TIMER()
|
|
ELSE
|
|
iTimeScaleTimer = GET_GAME_TIMER()-250+(GET_GAME_TIMER()-iTimeScaleTimer)
|
|
ENDIF
|
|
// Set the intended states
|
|
IF bReduceTimeScale
|
|
fTargetScale = 0.10
|
|
bSlowingDownTime = TRUE
|
|
ELSE
|
|
fTargetScale = 1.0
|
|
bSlowingDownTime = FALSE
|
|
ENDIF
|
|
ENDIF
|
|
|
|
// Update to intended state
|
|
IF fTargetScale != fLastTimeScaleSet
|
|
FLOAT fUpdateScale, fCurrentPhase
|
|
// Duration is 250ms but we are changing time scale so need to multiple by last scale set
|
|
fCurrentPhase = (((TO_FLOAT(GET_GAME_TIMER()-iTimeScaleTimer))) / (250.0*fLastTimeScaleSet))
|
|
|
|
IF bSlowingDownTime
|
|
fUpdateScale = 1.0-(fCurrentPhase*0.9)
|
|
|
|
IF fUpdateScale <= 0.111111
|
|
fUpdateScale = 0.1
|
|
ENDIF
|
|
ELSE
|
|
fUpdateScale = 0.1+(fCurrentPhase*0.9)
|
|
|
|
IF fUpdateScale >= 0.999999
|
|
fUpdateScale = 1.0
|
|
ENDIF
|
|
ENDIF
|
|
|
|
BOOL bUpdate = FALSE
|
|
IF IS_CURRENTLY_ON_MISSION_OF_TYPE(MISSION_TYPE_DIRECTOR)
|
|
bUpdate = TRUE
|
|
ELIF NETWORK_IS_GAME_IN_PROGRESS()
|
|
// skip time scale
|
|
fUpdateScale = 1.0
|
|
ELIF IS_TRANSITION_ACTIVE()
|
|
// skip time scale
|
|
fUpdateScale = 1.0
|
|
ELIF NOT IS_PLAYER_PED_PLAYABLE(GET_CURRENT_PLAYER_PED_ENUM())
|
|
// skip time scale
|
|
ELIF IS_SPECIAL_ABILITY_ACTIVE(PLAYER_ID())
|
|
// skip time scale
|
|
ELSE
|
|
bUpdate = TRUE
|
|
ENDIF
|
|
|
|
IF bUpdate
|
|
OR fUpdateScale > fLastTimeScaleSet
|
|
SET_TIME_SCALE(fUpdateScale)
|
|
PRINTLN("SWITCH UI - set timescale to ", fUpdateScale)
|
|
ENDIF
|
|
|
|
fLastTimeScaleSet = fUpdateScale
|
|
ENDIF
|
|
|
|
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
////////////////// ROCKSTAR EDITOR RECORDING SET UP //////////////////////////////////////////////////////////////////
|
|
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
///
|
|
|
|
#IF USE_REPLAY_RECORDING_TRIGGERS
|
|
|
|
BOOL bAllowReplayRecording = FALSE
|
|
BOOL bDisplayReplayFeedIcons = FALSE
|
|
|
|
// Only allow replay recording when running PC version or when we are signed into a SC account on consoles
|
|
IF (NETWORK_IS_SIGNED_IN() OR IS_PC_VERSION())
|
|
|
|
IF HAS_ONE_TIME_HELP_DISPLAYED(FHM_ROCKSTAR_EDITOR_INTRO1)
|
|
and HAS_ONE_TIME_HELP_DISPLAYED(FHM_ROCKSTAR_EDITOR_INTRO2)
|
|
IF NOT HAS_ONE_TIME_HELP_DISPLAYED(FHM_ROCKSTAR_EDITOR_REC)
|
|
SWITCH GET_FLOW_HELP_MESSAGE_STATUS("AM_H_EDIT_3")
|
|
CASE FHS_EXPIRED
|
|
IF IS_REPLAY_RECORDING()
|
|
and eFeedStartType = REPLAY_START_PARAM_DIRECTOR
|
|
ADD_HELP_TO_FLOW_QUEUE("AM_H_EDIT_3", FHP_MEDIUM)
|
|
ENDIF
|
|
BREAK
|
|
CASE FHS_DISPLAYED
|
|
SET_ONE_TIME_HELP_MESSAGE_DISPLAYED(FHM_ROCKSTAR_EDITOR_REC)
|
|
BREAK
|
|
ENDSWITCH
|
|
ENDIF
|
|
IF NOT HAS_ONE_TIME_HELP_DISPLAYED(FHM_ROCKSTAR_EDITOR_ACTION_MODE)
|
|
SWITCH GET_FLOW_HELP_MESSAGE_STATUS("AM_H_EDIT_4")
|
|
CASE FHS_EXPIRED
|
|
IF IS_REPLAY_RECORDING()
|
|
and eFeedStartType = REPLAY_START_PARAM_HIGHLIGHT
|
|
ADD_HELP_TO_FLOW_QUEUE("AM_H_EDIT_4", FHP_MEDIUM)
|
|
ENDIF
|
|
BREAK
|
|
CASE FHS_DISPLAYED
|
|
SET_ONE_TIME_HELP_MESSAGE_DISPLAYED(FHM_ROCKSTAR_EDITOR_ACTION_MODE)
|
|
BREAK
|
|
ENDSWITCH
|
|
ENDIF
|
|
ENDIF
|
|
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
/// DISPLAY ICONS ON THE FEED
|
|
///
|
|
|
|
IF IS_SELECTOR_UI_BUTTON_PRESSED(FALSE)
|
|
OR (IS_PC_VERSION() AND IS_USING_KEYBOARD_AND_MOUSE(FRONTEND_CONTROL)) //Allow PC shortcuts - bug 2228146
|
|
|
|
bAllowReplayRecording = IS_REPLAY_RECORDING_UI_SAFE_TO_USE()
|
|
|
|
iExcludeInputTimer = GET_GAME_TIMER() + 250 //250 milliseconds delay for exclusive inputs
|
|
PRINTLN("iExcludeInputTimer = ", GET_GAME_TIMER() + 250)
|
|
IF bAllowReplayRecording
|
|
IF g_sSelectorUI.bDisplay
|
|
// Wait for switch UI to load.
|
|
IF g_sSelectorUI.bOnScreen
|
|
AND g_sSelectorUI.bLoaded
|
|
AND g_sSelectorUI.bSetup
|
|
AND g_sSelectorUI.eUIStateCurrent = SELECTOR_UI_FULL
|
|
bDisplayReplayFeedIcons = TRUE
|
|
ELSE
|
|
PRINTLN("SWITCH UI - [REPLAY-FEED] Trying to display replay recording icons but the selector hasn't loaded yet...")
|
|
ENDIF
|
|
ELIF IS_SELECTOR_UI_BUTTON_PRESSED(FALSE)
|
|
// Switch is not safe to display so we do not need to wait for it.
|
|
bDisplayReplayFeedIcons = TRUE
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF IS_SELECTOR_UI_BUTTON_PRESSED(FALSE)
|
|
IF bAllowReplayRecording //Fix for bug 2207278
|
|
iDisplayingReplayRecordUI = GET_GAME_TIMER() + 500
|
|
ENDIF
|
|
ENDIF
|
|
|
|
// Need to call this after we have checked the inputs so we can start/reset timer.
|
|
// If the initial delay has not passed then we set bDisplayReplayFeedIcons to FALSE.
|
|
UPDATE_REPLAY_RECORDING_FEED_REQUEST(bDisplayReplayFeedIcons)
|
|
|
|
IF bDisplayReplayFeedIcons
|
|
IF NOT g_sSelectorUI.bFeedAddedForRecording
|
|
PRINTLN("SWITCH UI - [REPLAY-FEED] Adding feed icons for recording...")
|
|
|
|
INT iPost
|
|
REPEAT COUNT_OF(iRecPost) iPost
|
|
iRecPost[iPost] = -1
|
|
ENDREPEAT
|
|
|
|
THEFEED_FLUSH_QUEUE()
|
|
|
|
THEFEED_SET_SNAP_FEED_ITEM_POSITIONS(TRUE)
|
|
|
|
IF (GET_CAM_VIEW_MODE_FOR_CONTEXT(GET_CAM_ACTIVE_VIEW_MODE_CONTEXT()) = CAM_VIEW_MODE_FIRST_PERSON)
|
|
AND NOT GET_IS_USING_HOOD_CAMERA()
|
|
THEFEED_FREEZE_NEXT_POST()
|
|
BEGIN_TEXT_COMMAND_THEFEED_POST("REC_FEED_WAR")
|
|
iRecPost[0] = END_TEXT_COMMAND_THEFEED_POST_TICKER(FALSE)
|
|
ENDIF
|
|
|
|
IF IS_REPLAY_RECORDING()
|
|
IF eFeedStartType = REPLAY_START_PARAM_DIRECTOR
|
|
// Save Recording
|
|
PRINTLN("SWITCH UI - [REPLAY-FEED] Adding SAVE RECORDING feed item.")
|
|
THEFEED_FREEZE_NEXT_POST()
|
|
BEGIN_TEXT_COMMAND_THEFEED_POST("REC_FEED_5")
|
|
iRecPost[1] = END_TEXT_COMMAND_THEFEED_POST_REPLAY_INPUT(REPLAY_BUTTON,"~INPUT_REPLAY_START_STOP_RECORDING~","")// F1 for PC
|
|
// GET_CONTROL_INSTRUCTIONAL_BUTTONS_STRING(PLAYER_CONTROL, INPUT_REPLAY_START_STOP_RECORDING) ,"")
|
|
|
|
|
|
// Cancel Recording
|
|
PRINTLN("SWITCH UI - [REPLAY-FEED] Adding CANCEL RECORDING feed item.")
|
|
THEFEED_FREEZE_NEXT_POST()
|
|
BEGIN_TEXT_COMMAND_THEFEED_POST("REC_FEED_4")
|
|
|
|
iRecPost[2] = END_TEXT_COMMAND_THEFEED_POST_REPLAY_INPUT(REPLAY_BUTTON,"~INPUT_SAVE_REPLAY_CLIP~","") // F3 for PC
|
|
|
|
|
|
ELIF eFeedStartType = REPLAY_START_PARAM_HIGHLIGHT
|
|
// Save Action Replay
|
|
PRINTLN("SWITCH UI - [REPLAY-FEED] Adding SAVE ACTION REPLAY feed item.")
|
|
THEFEED_FREEZE_NEXT_POST()
|
|
BEGIN_TEXT_COMMAND_THEFEED_POST("REC_FEED_3")
|
|
iRecPost[1] = END_TEXT_COMMAND_THEFEED_POST_REPLAY_INPUT(REPLAY_BUTTON, "~INPUT_REPLAY_START_STOP_RECORDING~","") // F1 for PC
|
|
|
|
// Turn Off Action Replay
|
|
PRINTLN("SWITCH UI - [REPLAY-FEED] Adding TURN OFF ACTION REPLAY feed item.")
|
|
THEFEED_FREEZE_NEXT_POST()
|
|
BEGIN_TEXT_COMMAND_THEFEED_POST("REC_FEED_2")
|
|
iRecPost[2] = END_TEXT_COMMAND_THEFEED_POST_REPLAY_INPUT(REPLAY_BUTTON, "~INPUT_SAVE_REPLAY_CLIP~","") // F3 for PC
|
|
|
|
ENDIF
|
|
ELSE
|
|
// Start Recording
|
|
PRINTLN("SWITCH UI - [REPLAY-FEED] Adding START RECORDING feed item.")
|
|
THEFEED_FREEZE_NEXT_POST()
|
|
BEGIN_TEXT_COMMAND_THEFEED_POST("REC_FEED_1")
|
|
iRecPost[1] = END_TEXT_COMMAND_THEFEED_POST_REPLAY_INPUT(REPLAY_BUTTON, "~INPUT_REPLAY_START_STOP_RECORDING~","") // F1 for PC
|
|
|
|
// Turn On Action Replay
|
|
PRINTLN("SWITCH UI - [REPLAY-FEED] Adding TURN ON ACTION REPLAY feed item.")
|
|
THEFEED_FREEZE_NEXT_POST()
|
|
BEGIN_TEXT_COMMAND_THEFEED_POST("REC_FEED_0")
|
|
iRecPost[2] = END_TEXT_COMMAND_THEFEED_POST_REPLAY_INPUT(REPLAY_BUTTON, "~INPUT_REPLAY_START_STOP_RECORDING_SECONDARY~","") // F2 for PC
|
|
|
|
ENDIF
|
|
|
|
PRINTLN("SWITCH UI - [REPLAY-FEED] Pausing feed after adding recording items.")
|
|
THEFEED_PAUSE()
|
|
|
|
g_sSelectorUI.bFeedAddedForRecording = TRUE
|
|
ENDIF
|
|
ELSE
|
|
CLEANUP_REPLAY_RECORD_FEED()
|
|
ENDIF
|
|
|
|
// Clear temp Action Replay On/Off feed message
|
|
IF iRecPostActionReplay != -1
|
|
IF (NOT NETWORK_IS_GAME_IN_PROGRESS() AND (GET_GAME_TIMER() - iActionReplayTimer) > 4000)
|
|
OR (NETWORK_IS_GAME_IN_PROGRESS() AND ABSI(GET_TIME_DIFFERENCE(GET_NETWORK_TIME(), tdActionReplayTimer)) > 4000)
|
|
PRINTLN("SWITCH UI - [REPLAY-FEED] Cleaning up action replay on/off feed messages.")
|
|
THEFEED_REMOVE_ITEM(iRecPostActionReplay)
|
|
iRecPostActionReplay = -1
|
|
ENDIF
|
|
ENDIF
|
|
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
/// MANAGE START/STOP RECORDING
|
|
///
|
|
IF bAllowReplayRecording
|
|
BOOL bAcceptPressed = FALSE
|
|
BOOL bCancelPressed = FALSE
|
|
BOOL bStartBufferPressed = FALSE
|
|
BOOL bCloseSelectorUI = FALSE
|
|
|
|
IF IS_USING_KEYBOARD_AND_MOUSE(FRONTEND_CONTROL)
|
|
// PC: Function keys
|
|
bAcceptPressed = IS_CONTROL_JUST_PRESSED(PLAYER_CONTROL, INPUT_REPLAY_START_STOP_RECORDING) // F1
|
|
bCancelPressed = IS_CONTROL_JUST_PRESSED(PLAYER_CONTROL, INPUT_SAVE_REPLAY_CLIP) // F3
|
|
bStartBufferPressed = IS_CONTROL_JUST_PRESSED(PLAYER_CONTROL, INPUT_REPLAY_START_STOP_RECORDING_SECONDARY) // F2
|
|
ELSE
|
|
// Consoles: DPAD_DOWN + ((A/B/X) OR (X/O/SQ))
|
|
IF IS_SELECTOR_UI_BUTTON_PRESSED(FALSE)
|
|
// bAcceptPressed = (IS_CONTROL_JUST_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_ACCEPT) OR IS_DISABLED_CONTROL_JUST_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_ACCEPT))
|
|
// bCancelPressed = (IS_CONTROL_JUST_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_CANCEL) OR IS_DISABLED_CONTROL_JUST_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_CANCEL))
|
|
// bStartBufferPressed = (IS_CONTROL_JUST_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_X) OR IS_DISABLED_CONTROL_JUST_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_X))
|
|
bAcceptPressed = (IS_CONTROL_JUST_PRESSED(PLAYER_CONTROL, INPUT_REPLAY_START_STOP_RECORDING) OR IS_DISABLED_CONTROL_JUST_PRESSED(PLAYER_CONTROL, INPUT_REPLAY_START_STOP_RECORDING))
|
|
bCancelPressed = (IS_CONTROL_JUST_PRESSED(PLAYER_CONTROL, INPUT_SAVE_REPLAY_CLIP) OR IS_DISABLED_CONTROL_JUST_PRESSED(PLAYER_CONTROL, INPUT_SAVE_REPLAY_CLIP))
|
|
bStartBufferPressed = (IS_CONTROL_JUST_PRESSED(PLAYER_CONTROL, INPUT_REPLAY_START_STOP_RECORDING_SECONDARY) OR IS_DISABLED_CONTROL_JUST_PRESSED(PLAYER_CONTROL, INPUT_REPLAY_START_STOP_RECORDING_SECONDARY))
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF IS_REPLAY_RECORDING()
|
|
IF bAcceptPressed
|
|
// Save Buffer/Recording
|
|
IF eFeedStartType = REPLAY_START_PARAM_HIGHLIGHT
|
|
SAVE_REPLAY_RECORDING()
|
|
ELSE
|
|
STOP_REPLAY_RECORDING()
|
|
ENDIF
|
|
bCloseSelectorUI = TRUE
|
|
ELIF bCancelPressed
|
|
// Cancel Buffer/Recording
|
|
CANCEL_REPLAY_RECORDING()
|
|
IF eFeedStartType = REPLAY_START_PARAM_HIGHLIGHT
|
|
bAddActionReplayOff = TRUE
|
|
ENDIF
|
|
bCloseSelectorUI = TRUE
|
|
ENDIF
|
|
ELSE
|
|
IF bAcceptPressed // Recording
|
|
START_REPLAY_RECORDING(REPLAY_START_PARAM_DIRECTOR)
|
|
IF IS_REPLAY_RECORD_SPACE_AVAILABLE()
|
|
eFeedStartType = REPLAY_START_PARAM_DIRECTOR
|
|
ENDIF
|
|
bCloseSelectorUI = TRUE
|
|
ELIF bStartBufferPressed // Buffer
|
|
START_REPLAY_RECORDING(REPLAY_START_PARAM_HIGHLIGHT)
|
|
IF IS_REPLAY_RECORD_SPACE_AVAILABLE()
|
|
eFeedStartType = REPLAY_START_PARAM_HIGHLIGHT
|
|
bAddActionReplayOn = TRUE
|
|
ENDIF
|
|
bCloseSelectorUI = TRUE
|
|
ENDIF
|
|
ENDIF
|
|
|
|
// Force player to release gamepad controls before processing again.
|
|
IF bCloseSelectorUI
|
|
g_sSelectorUI.bMustReleaseSelectorUIButton = TRUE
|
|
g_sSelectorUI.bMustReleaseCancelButton = bCancelPressed
|
|
g_sSelectorUI.bMustReleaseAcceptButton = bAcceptPressed
|
|
g_sSelectorUI.bMustReleaseSquareButton = bStartBufferPressed
|
|
ENDIF
|
|
ENDIF
|
|
|
|
// Replay Recording not availables so cleanup.
|
|
ELSE
|
|
CLEANUP_REPLAY_RECORD_FEED()
|
|
ENDIF
|
|
|
|
// Input exclusive until player releases buttons
|
|
// Only do this if the creators aren't running or this will block creator input
|
|
IF NOT IS_USING_KEYBOARD_AND_MOUSE(FRONTEND_CONTROL)
|
|
IF (GET_NUMBER_OF_THREADS_RUNNING_THE_SCRIPT_WITH_THIS_HASH(HASH("creator")) = 0)
|
|
IF g_sSelectorUI.bMustReleaseCancelButton
|
|
OR bAllowReplayRecording
|
|
OR iExcludeInputTimer > GET_GAME_TIMER()
|
|
SET_INPUT_EXCLUSIVE(FRONTEND_CONTROL, INPUT_FRONTEND_CANCEL)
|
|
PRINTLN("SET_INPUT_EXCLUSIVE(FRONTEND_CONTROL, INPUT_FRONTEND_CANCEL)")
|
|
IF GET_PAUSE_MENU_STATE() = PM_INACTIVE
|
|
DISABLE_CONTROL_ACTION(FRONTEND_CONTROL, INPUT_FRONTEND_CANCEL)
|
|
ENDIF
|
|
DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_VEH_CIN_CAM)
|
|
ENDIF
|
|
IF g_sSelectorUI.bMustReleaseAcceptButton
|
|
OR bAllowReplayRecording
|
|
OR iExcludeInputTimer > GET_GAME_TIMER()
|
|
SET_INPUT_EXCLUSIVE(FRONTEND_CONTROL, INPUT_FRONTEND_ACCEPT)
|
|
PRINTLN("SET_INPUT_EXCLUSIVE(FRONTEND_CONTROL, INPUT_FRONTEND_ACCEPT)")
|
|
IF GET_PAUSE_MENU_STATE() = PM_INACTIVE
|
|
DISABLE_CONTROL_ACTION(FRONTEND_CONTROL, INPUT_FRONTEND_ACCEPT)
|
|
ENDIF
|
|
DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_VEH_DUCK)
|
|
DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_PARACHUTE_DEPLOY)
|
|
ENDIF
|
|
IF g_sSelectorUI.bMustReleaseSquareButton
|
|
OR bAllowReplayRecording
|
|
OR iExcludeInputTimer > GET_GAME_TIMER()
|
|
SET_INPUT_EXCLUSIVE(FRONTEND_CONTROL, INPUT_FRONTEND_X)
|
|
PRINTLN("SET_INPUT_EXCLUSIVE(FRONTEND_CONTROL, INPUT_FRONTEND_X)")
|
|
IF GET_PAUSE_MENU_STATE() = PM_INACTIVE
|
|
DISABLE_CONTROL_ACTION(FRONTEND_CONTROL, INPUT_FRONTEND_X)
|
|
ENDIF
|
|
DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_JUMP)
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
#ENDIF
|
|
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
// Check for the flow requesting a ped hint on one of the three player characters.
|
|
INT index
|
|
REPEAT 3 index
|
|
IF IS_BIT_SET(g_iPlayerFlowHintActive, index)
|
|
IF NOT sSelectorPeds.bDisplayHint[index]
|
|
PRINTLN("SWITCH UI - Setting flow requested selector hint on ", GET_CHARSHEET_DISPLAY_STRING_FROM_CHARSHEET(INT_TO_ENUM(enumCharacterList, index)))
|
|
SET_SELECTOR_PED_HINT(sSelectorPeds, INT_TO_ENUM(SELECTOR_SLOTS_ENUM, index), TRUE)
|
|
ENDIF
|
|
ELSE
|
|
IF sSelectorPeds.bDisplayHint[index]
|
|
PRINTLN("SWITCH UI - Clearing flow requested selector hint on ", GET_CHARSHEET_DISPLAY_STRING_FROM_CHARSHEET(INT_TO_ENUM(enumCharacterList, index)))
|
|
SET_SELECTOR_PED_HINT(sSelectorPeds, INT_TO_ENUM(SELECTOR_SLOTS_ENUM, index), FALSE)
|
|
ENDIF
|
|
ENDIF
|
|
ENDREPEAT
|
|
|
|
IF bCleanupMap
|
|
IF bMapUpdated
|
|
IF DOES_BLIP_EXIST(selectedPedBlip)
|
|
REMOVE_BLIP(selectedPedBlip)
|
|
ENDIF
|
|
SET_HEALTH_HUD_DISPLAY_VALUES(-1, -1)
|
|
SET_ABILITY_BAR_VALUE(-1, -1)
|
|
SET_MAX_HEALTH_HUD_DISPLAY(0)
|
|
SET_MAX_ARMOUR_HUD_DISPLAY(0)
|
|
UNLOCK_MINIMAP_POSITION()
|
|
bMapUpdated = FALSE
|
|
ENDIF
|
|
ENDIF
|
|
|
|
// Damaged/hint indicator audio.
|
|
BOOL bDamagedIndicatorAudioRequired = FALSE
|
|
BOOL bHintIndicatorAudioRequired = FALSE
|
|
IF (g_sSelectorUI.eUIStateCurrent = SELECTOR_UI_HINT OR g_sSelectorUI.eUIStateCurrent = SELECTOR_UI_HINT_TO_FULL)
|
|
IF ((g_sSelectorUI.bDamaged[0] AND g_sSelectorUI.bFlashDamage[0]) OR (g_sSelectorUI.bDamaged[1] AND g_sSelectorUI.bFlashDamage[1]) OR (g_sSelectorUI.bDamaged[2] AND g_sSelectorUI.bFlashDamage[2]) OR (g_sSelectorUI.bDamaged[3] AND g_sSelectorUI.bFlashDamage[3]))
|
|
bDamagedIndicatorAudioRequired = TRUE
|
|
ELIF (g_sSelectorUI.bHinted[0] OR g_sSelectorUI.bHinted[1] OR g_sSelectorUI.bHinted[2] OR g_sSelectorUI.bHinted[3])
|
|
bHintIndicatorAudioRequired = TRUE
|
|
ENDIF
|
|
ENDIF
|
|
IF (NOT g_sSelectorUI.bHinted[0] AND NOT g_sSelectorUI.bHinted[1] AND NOT g_sSelectorUI.bHinted[2] AND NOT g_sSelectorUI.bHinted[3])
|
|
bHintIndicatorNotTriggered = FALSE
|
|
ENDIF
|
|
IF bDamagedIndicatorAudioRequired
|
|
IF iIndicatorSFX[0] = -1
|
|
iIndicatorSFX[0] = GET_SOUND_ID()
|
|
START_AUDIO_SCENE("PLAYER_SWITCH_RED_ALERT_SCENE")
|
|
PLAY_SOUND_FRONTEND(iIndicatorSFX[0], "SwitchRedWarning", "SPECIAL_ABILITY_SOUNDSET", FALSE)
|
|
PRINTLN("SWITCH UI - playing sound: SwitchRedWarning, SPECIAL_ABILITY_SOUNDSET")
|
|
ENDIF
|
|
ELSE
|
|
IF iIndicatorSFX[0] != -1
|
|
STOP_SOUND(iIndicatorSFX[0])
|
|
PRINTLN("SWITCH UI - stopping sound: SwitchRedWarning, SPECIAL_ABILITY_SOUNDSET")
|
|
RELEASE_SOUND_ID(iIndicatorSFX[0])
|
|
IF NOT bHintIndicatorAudioRequired
|
|
STOP_AUDIO_SCENE("PLAYER_SWITCH_RED_ALERT_SCENE")
|
|
ENDIF
|
|
iIndicatorSFX[0] = -1
|
|
ENDIF
|
|
ENDIF
|
|
IF bHintIndicatorAudioRequired
|
|
IF iIndicatorSFX[1] = -1
|
|
AND NOT bHintIndicatorNotTriggered
|
|
iIndicatorSFX[1] = GET_SOUND_ID()
|
|
bHintIndicatorNotTriggered = TRUE
|
|
START_AUDIO_SCENE("PLAYER_SWITCH_WHITE_ALERT_SCENE")
|
|
PLAY_SOUND_FRONTEND(iIndicatorSFX[1], "SwitchWhiteWarning", "SPECIAL_ABILITY_SOUNDSET", FALSE)
|
|
PRINTLN("SWITCH UI - playing sound: SwitchWhiteWarning, SPECIAL_ABILITY_SOUNDSET")
|
|
ENDIF
|
|
ELSE
|
|
IF iIndicatorSFX[1] != -1
|
|
STOP_SOUND(iIndicatorSFX[1])
|
|
PRINTLN("SWITCH UI - stopping sound: SwitchWhiteWarning, SPECIAL_ABILITY_SOUNDSET")
|
|
RELEASE_SOUND_ID(iIndicatorSFX[1])
|
|
IF NOT bDamagedIndicatorAudioRequired
|
|
STOP_AUDIO_SCENE("PLAYER_SWITCH_WHITE_ALERT_SCENE")
|
|
ENDIF
|
|
iIndicatorSFX[1] = -1
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF bSwitchAvailableAudio
|
|
AND NOT bDamagedIndicatorAudioRequired
|
|
AND NOT bHintIndicatorAudioRequired
|
|
IF NOT bSwitchAvailableAudioPlayed
|
|
// Fix for bugs 1583038 and 1583031 - dontr trigger the available audio if it has just played.
|
|
IF GET_GAME_TIMER() - iLastTimeSwitchWasOnscreen > 12500
|
|
PLAY_SOUND_FRONTEND(-1, "CHARACTER_SELECT", "HUD_FRONTEND_DEFAULT_SOUNDSET", FALSE)
|
|
PRINTLN("SWITCH UI - playing sound: HUD_DEFAULT_INFO_MASTER")
|
|
ENDIF
|
|
ENDIF
|
|
bSwitchAvailableAudioPlayed = TRUE
|
|
ENDIF
|
|
|
|
// Fix for bug 1500026 - Need to suppress vehicle info just after a switch.
|
|
IF IS_PLAYER_SWITCH_IN_PROGRESS()
|
|
OR IS_PLAYER_PED_SWITCH_IN_PROGRESS()
|
|
OR IS_SELECTOR_CAM_ACTIVE()
|
|
OR g_sSelectorUI.bHideUiForSwitch
|
|
iSwitchActiveTimer = GET_GAME_TIMER()
|
|
ENDIF
|
|
IF (GET_GAME_TIMER() - iSwitchActiveTimer < 1000)
|
|
HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_VEHICLE_NAME)
|
|
HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_AREA_NAME)
|
|
HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_DISTRICT_NAME)
|
|
HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_STREET_NAME)
|
|
bSwitchActiveBlock = TRUE
|
|
ELIF bSwitchActiveBlock
|
|
IF NOT IS_PED_INJURED(PLAYER_PED_ID())
|
|
AND IS_PLAYER_CONTROL_ON(PLAYER_ID())
|
|
IF IS_PED_IN_ANY_VEHICLE(PLAYER_PED_ID())
|
|
//SHOW_HUD_COMPONENT_THIS_FRAME(NEW_HUD_VEHICLE_NAME)
|
|
ENDIF
|
|
//SHOW_HUD_COMPONENT_THIS_FRAME(NEW_HUD_AREA_NAME)
|
|
//SHOW_HUD_COMPONENT_THIS_FRAME(NEW_HUD_DISTRICT_NAME)
|
|
//SHOW_HUD_COMPONENT_THIS_FRAME(NEW_HUD_STREET_NAME)
|
|
ENDIF
|
|
bSwitchActiveBlock = FALSE
|
|
ENDIF
|
|
|
|
// Fix for bug 1437330 - During short range switches, all HUD elements should disappear and reappear on the same frame.
|
|
IF IS_PLAYER_SWITCH_IN_PROGRESS()
|
|
AND GET_PLAYER_SWITCH_TYPE() = SWITCH_TYPE_SHORT
|
|
bSuppressUIForShortSwitch = TRUE
|
|
iSuppressRadarTimer = GET_GAME_TIMER()
|
|
PRINTLN(">>> SUPPRESS MAP")
|
|
ENDIF
|
|
IF bSuppressUIForShortSwitch
|
|
|
|
IF IS_PLAYER_SWITCH_IN_PROGRESS()
|
|
iLastSwitchFrameCount = 0
|
|
ELSE
|
|
iLastSwitchFrameCount++
|
|
ENDIF
|
|
|
|
IF (GET_GAME_TIMER() - iSuppressRadarTimer > 5000)
|
|
OR g_sSelectorUI.bOnScreen
|
|
OR (NOT IS_PLAYER_SWITCH_IN_PROGRESS() AND NOT g_sSelectorUI.bMissionUpdate AND iLastSwitchFrameCount > 5)
|
|
bSuppressUIForShortSwitch = FALSE
|
|
ENDIF
|
|
|
|
// HIDE_HUD_AND_RADAR_THIS_FRAME()
|
|
HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_HELP_TEXT)
|
|
HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_SUBTITLE_TEXT)
|
|
ENDIF
|
|
|
|
IF bCleanupMovies
|
|
IF (NOT NETWORK_IS_GAME_IN_PROGRESS() AND (GET_GAME_TIMER() - iCleanupMoviesTimer) > 2000 AND NOT bSuppressUIForShortSwitch)
|
|
OR (NETWORK_IS_GAME_IN_PROGRESS())// AND IS_TIME_MORE_THAN(GET_NETWORK_TIME(), GET_TIME_OFFSET(tdCleanupMoviesTimer, 2000)))
|
|
|
|
PRINTSTRING("\n CLEANUP_SELECTOR_UI - Cleaning up scaleform movie.")PRINTNL()
|
|
|
|
IF bRequested
|
|
SET_SCALEFORM_MOVIE_AS_NO_LONGER_NEEDED(movieID)
|
|
IF NOT bUsingPrologueMovie
|
|
SET_SCALEFORM_MOVIE_AS_NO_LONGER_NEEDED(movieID2)
|
|
ENDIF
|
|
ENDIF
|
|
iLoadMoviesTimer = GET_GAME_TIMER()
|
|
IF NETWORK_IS_GAME_IN_PROGRESS()
|
|
tdLoadMoviesTimer = GET_NETWORK_TIME()
|
|
ENDIF
|
|
|
|
NET_NL()NET_PRINT("SELECTOR: bCleanupMovies = TRUE so put up the save failed again ")
|
|
g_b_ReapplyStickySaveFailedFeed = FALSE
|
|
|
|
bSetSystemTimer = FALSE
|
|
bRequested = FALSE
|
|
movieID = NULL
|
|
movieID2 = NULL
|
|
bCleanupMovies = FALSE
|
|
g_sSelectorUI.bLoaded = FALSE
|
|
ELSE
|
|
PRINTSTRING("\n CLEANUP_SELECTOR_UI - Waiting for cleanup timer to pass before unloadig scaleform movies.")PRINTNL()
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF g_sSelectorUI.bOnScreen
|
|
iLastTimeSwitchWasOnscreen = GET_GAME_TIMER()
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
PROC FAILSAFE_PLAYER_RESPAWN()
|
|
NET_NL()NET_PRINT("SELECTOR: FAILSAFE_PLAYER_RESPAWN - AUTOMATIC RESPAWN")
|
|
IF IS_NET_PLAYER_OK(PLAYER_ID()) = FALSE
|
|
TRANSITION_BEGIN_RESPAWN()
|
|
ENDIF
|
|
|
|
TRIGGER_TRANSITION_MENU_ACTIVE(FALSE)
|
|
SET_SOMETHING_QUITTING_MP(FALSE)
|
|
DISPLAYING_SCRIPT_HUD(HUDPART_TRANSITIONHUD, FALSE)
|
|
DISABLE_CELLPHONE(FALSE)
|
|
SET_SCRIPT_AS_NO_LONGER_NEEDED("MainTransition")
|
|
IF NETWORK_IS_GAME_IN_PROGRESS()
|
|
CANCEL_PLAYER_PED_SWITCH_REQUEST()
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
|
|
PROC DRAW_FAKE_SWITCH()
|
|
//
|
|
// //STATS
|
|
//SET_SCRIPT_GFX_ALIGN(UI_ALIGN_RIGHT, UI_ALIGN_BOTTOM)
|
|
//SET_SCRIPT_GFX_ALIGN_PARAMS(fPLAYER_STATS_X, fPLAYER_STATS_Y, fPLAYER_STATS_W*fPLAYER_STATS_SCALE_W, fPLAYER_STATS_H*fPLAYER_STATS_SCALE_H)
|
|
//IF NOT bSuppressUIForShortSwitch
|
|
// DRAW_SCALEFORM_MOVIE(movieID2, fPLAYER_STATS_X, fPLAYER_STATS_Y, fPLAYER_STATS_W*fPLAYER_STATS_SCALE_W, fPLAYER_STATS_H*fPLAYER_STATS_SCALE_H, 255, 255, 255, 255)
|
|
//ENDIF
|
|
//RESET_SCRIPT_GFX_ALIGN()
|
|
|
|
|
|
//SWITCH
|
|
|
|
// SWITCH UI
|
|
//IF HAS_SCALEFORM_MOVIE_LOADED(movieID)
|
|
// PRINTSTRING("\n DRAW_FAKE_SWITCH - CALLING scaleform.")PRINTNL()
|
|
// IF g_b_Private_IsSelectorActuallyDrawing = FALSE
|
|
// SET_WIDESCREEN_FORMAT(WIDESCREEN_FORMAT_RIGHT)
|
|
// SET_SCRIPT_GFX_ALIGN(UI_ALIGN_RIGHT, UI_ALIGN_BOTTOM)
|
|
// //SET_SCRIPT_GFX_ALIGN_PARAMS((((fPLAYER_SWITCH_W*fPLAYER_SWITCH_SCALE_W)*fPLAYER_SWITCH_WIDE_SCALE)*0.5), fPLAYER_SWITCH_Y, (fPLAYER_SWITCH_W*fPLAYER_SWITCH_SCALE_W)*fPLAYER_SWITCH_WIDE_SCALE, (fPLAYER_SWITCH_H*fPLAYER_SWITCH_SCALE_H))
|
|
// SET_SCRIPT_GFX_ALIGN_PARAMS(0,0,0,0)
|
|
//
|
|
//
|
|
// PRINTSTRING("\n DRAW_FAKE_SWITCH - DRAWING scaleform.")PRINTNL()
|
|
//
|
|
// DRAW_SCALEFORM_MOVIE(movieID, (((fPLAYER_SWITCH_W*fPLAYER_SWITCH_SCALE_W)*fPLAYER_SWITCH_WIDE_SCALE)*0.5), fPLAYER_SWITCH_Y, (fPLAYER_SWITCH_W*fPLAYER_SWITCH_SCALE_W)*fPLAYER_SWITCH_WIDE_SCALE, (fPLAYER_SWITCH_H*fPLAYER_SWITCH_SCALE_H), 255, 255, 255, 255)
|
|
// RESET_SCRIPT_GFX_ALIGN()
|
|
// ENDIF
|
|
//
|
|
// g_b_Private_IsSelectorActuallyDrawing = FALSE
|
|
//
|
|
// HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_VEHICLE_NAME)
|
|
// HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_AREA_NAME)
|
|
// HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_DISTRICT_NAME)
|
|
// HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_STREET_NAME)
|
|
//
|
|
//ENDIF
|
|
|
|
|
|
ENDPROC
|
|
|
|
|
|
|
|
/// PURPOSE: Checks for the player bringing up the switch UI and making an ambient selection
|
|
PROC MAINTAIN_AMBIENT_SELECTOR()
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
IF NOT IS_PLAYER_PED_SWITCH_IN_PROGRESS()
|
|
AND NOT g_bMagDemoActive
|
|
MAINTAIN_SELECTOR_MULTIPLAYER_QUICKLAUNCH_TRANSITION()
|
|
ENDIF
|
|
#ENDIF
|
|
|
|
|
|
BOOL bLaunchFromEventReceived = FALSE
|
|
BOOL bInMpIntroTaxi = FALSE
|
|
BOOL bCheckPlayerControl = g_sSelectorUI.bCheckPlayerControl
|
|
// Check for ambient character selection
|
|
BOOL bUISelection = FALSE
|
|
IF NOT g_sSelectorUI.bMissionUpdate
|
|
AND NOT g_bMagdemoDoTakeOverSwitch
|
|
IF (NOT IS_PLAYER_SWITCH_IN_PROGRESS() OR g_TransitionData.bCouldNotJoinNetworkGame)
|
|
IF NETWORK_IS_GAME_IN_PROGRESS()
|
|
IF IS_LOCAL_PLAYER_IN_TAXI_FOR_INTRO()
|
|
bInMpIntroTaxi = TRUE
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF bInMpIntroTaxi
|
|
bCheckPlayerControl = FALSE
|
|
ENDIF
|
|
|
|
IF ((IS_SELECTOR_UI_BUTTON_PRESSED(bCheckPlayerControl ) OR IS_SELECTOR_UI_BUTTON_JUST_RELEASED(bCheckPlayerControl)) AND UPDATE_SELECTOR_HUD(sSelectorPeds, bCheckPlayerControl)) // Returns TRUE when the player has made a valid selection
|
|
PRINTLN("BC: - SELECTOR REQUESTING A TRANSITION")
|
|
SET_BIT(g_b_EnteredMaintransitionSelectorBitset, ENUM_TO_INT(JT_SELECTOR_WHEEL))
|
|
|
|
IF (HAS_MULTIPLAYER_BEEN_SELECTED(sSelectorPeds))
|
|
OR GET_CURRENT_GAMEMODE() = GAMEMODE_FM
|
|
INT iPlayerNum = NATIVE_TO_INT(PLAYER_ID())
|
|
IF iPlayerNum > -1
|
|
SET_BIT(GlobalplayerBD_FM[iPlayerNum].boolReplacementBS,GlobalPlayerBroadcastDataFM_BS_bIsOnWarningScreen)
|
|
NET_NL()NET_PRINT("BC: GlobalPlayerBroadcastDataFM_BS_bIsOnWarningScreen = TRUE ")
|
|
|
|
ENDIF
|
|
IF IS_SCREEN_FADED_IN()
|
|
AND NOT IS_SCREEN_FADING_OUT()
|
|
SET_AUDIO_FLAG("AllowRadioOverScreenFade", TRUE)
|
|
SET_NO_LOADING_SCREEN(TRUE)
|
|
DO_SCREEN_FADE_OUT(0)
|
|
ENDIF
|
|
DRAW_FAKE_SWITCH()
|
|
|
|
ENDIF
|
|
|
|
|
|
g_Private_SwitchedSP_DuringActivity = TRUE //Always show screen. TODO 1334154
|
|
|
|
IF NETWORK_IS_ACTIVITY_SESSION()
|
|
OR (FM_EVENT_IS_PLAYER_LEAVING_EVENT_SEVERE() OR FM_EVENT_IS_PLAYER_LEAVING_EVENT_SUPER_SEVERE())
|
|
NET_NL()NET_PRINT("BC: NETWORK_IS_ACTIVITY_SESSION or FM EVENT and quit through the Selector - g_b_QuitActivityThroughSelector = TRUE ")
|
|
g_b_QuitActivityThroughSelector = TRUE
|
|
ENDIF
|
|
|
|
SWITCH GET_CURRENT_GAMEMODE()
|
|
CASE GAMEMODE_FM
|
|
IF IS_ON_BASEJUMP_GLOBAL_SET()
|
|
OR IS_ON_DEATHMATCH_GLOBAL_SET()
|
|
OR IS_ON_RACE_GLOBAL_SET()
|
|
OR IS_ON_RALLY_RACE_GLOBAL_SET()
|
|
OR g_bFM_ON_TEAM_MISSION
|
|
OR IS_PLAYER_ON_MP_AMBIENT_SCRIPT(PLAYER_ID(), MPAM_TYPE_GANGHIDEOUT)
|
|
PRINTLN("BC: - SELECTOR g_Private_SwitchedSP_DuringActivity = TRUE")
|
|
g_Private_SwitchedSP_DuringActivity = TRUE
|
|
ELSE
|
|
ENDIF
|
|
BREAK
|
|
|
|
|
|
|
|
ENDSWITCH
|
|
|
|
|
|
bUISelection = TRUE
|
|
ENDIF
|
|
ENDIF
|
|
|
|
|
|
|
|
ELSE
|
|
NET_NL()NET_PRINT("g_sSelectorUI.bMissionUpdate = ")NET_PRINT_BOOL(g_sSelectorUI.bMissionUpdate)
|
|
ENDIF
|
|
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
IF GET_QUICKLAUNCH_STATE() != QUICKLAUNCH_EMPTY
|
|
PRINTLN("BC: - SELECTOR GET_QUICKLAUNCH_STATE() != QUICKLAUNCH_EMPTY REQUESTING A TRANSITION")
|
|
bUISelection = TRUE
|
|
ENDIF
|
|
#ENDIF
|
|
|
|
IF IS_TRANSITION_MENU_TRIGGERED()
|
|
PRINTLN("BC: - SELECTOR IS_TRANSITION_MENU_TRIGGERED REQUESTING A TRANSITION")
|
|
bUISelection = TRUE
|
|
ENDIF
|
|
|
|
IF HAVE_I_BEEN_KICKED()
|
|
PRINTLN("BC: - SELECTOR HAVE_I_BEEN_KICKED REQUESTING A TRANSITION")
|
|
bUISelection = TRUE
|
|
ENDIF
|
|
|
|
#IF FEATURE_FREEMODE_ARCADE
|
|
IF (IS_FREEMODE_ARCADE() AND IS_RETURN_TO_LANDING_PAGE())
|
|
PRINTLN("BC: - SELECTOR IS_FREEMODE_ARCADE IS_RETURN_TO_LANDING_PAGE REQUESTING A TRANSITION")
|
|
bUISelection = TRUE
|
|
|
|
SET_TRANSITION_LAUNCH_BLOCKING_MUSIC_STOP(TRUE)
|
|
|
|
IF NOT IS_GAMEMODE_AN_ARCADEMODE(GET_CURRENT_GAMEMODE())
|
|
SET_CURRENT_GAMEMODE(GAMEMODE_EMPTY)
|
|
ENDIF
|
|
ELIF (IS_FREEMODE_ARCADE() AND IS_RETURN_TO_GTA_ONLINE())
|
|
PRINTLN("BC: - SELECTOR IS_FREEMODE_ARCADE IS_RETURN_TO_GTA_ONLINE REQUESTING A TRANSITION")
|
|
bUISelection = TRUE
|
|
|
|
IF NOT IS_GAMEMODE_AN_ARCADEMODE(GET_CURRENT_GAMEMODE())
|
|
SET_CURRENT_GAMEMODE(GAMEMODE_EMPTY)
|
|
ENDIF
|
|
ENDIF
|
|
#ENDIF
|
|
|
|
IF IS_TRANSITION_ACTIVE() = FALSE
|
|
IF IS_PAUSE_MENU_REQUESTING_TRANSITION()
|
|
PRINTLN("BC: JAMES A - SELECTOR PAUSE MENU IS REQUESTING A TRANSITION")
|
|
SET_BIT(g_b_EnteredMaintransitionSelectorBitset, ENUM_TO_INT(JT_PAUSE_MENU))
|
|
bUISelection = TRUE
|
|
ENDIF
|
|
#IF IS_DEBUG_BUILD
|
|
ELSE
|
|
IF IS_PAUSE_MENU_REQUESTING_TRANSITION()
|
|
PRINTLN("BC: JAMES A - SELECTOR Trying to start maintransition IS_PAUSE_MENU_REQUESTING_TRANSITION but IS_TRANSITION_ACTIVE = TRUE ")
|
|
ENDIF
|
|
#ENDIF
|
|
ENDIF
|
|
|
|
|
|
IF LOBBY_AUTO_MULTIPLAYER_RANDOM_JOB()
|
|
PRINTLN("BC: JAMES A - SELECTOR LOBBY_AUTO_MULTIPLAYER_RANDOM_JOB() ")
|
|
SET_BIT(g_b_EnteredMaintransitionSelectorBitset, ENUM_TO_INT(JT_RANDOM_JOB))
|
|
ENDIF
|
|
|
|
IF LOBBY_AUTO_MULTIPLAYER_EVENT()
|
|
IF IS_FEATURED_PLAYLIST_ACTIVE()
|
|
PRINTLN("BC: JAMES A - SELECTOR LOBBY_AUTO_MULTIPLAYER_EVENT() JT_FEATURE_PLAYLIST ")
|
|
SET_BIT(g_b_EnteredMaintransitionSelectorBitset, ENUM_TO_INT(JT_FEATURE_PLAYLIST))
|
|
ELSE
|
|
PRINTLN("BC: JAMES A - SELECTOR LOBBY_AUTO_MULTIPLAYER_EVENT() JT_EVENT_PLAYLIST ")
|
|
SET_BIT(g_b_EnteredMaintransitionSelectorBitset, ENUM_TO_INT(JT_EVENT_PLAYLIST))
|
|
ENDIF
|
|
ENDIF
|
|
|
|
|
|
//IF (LOBBY_ENTER_MULTIPLAYER()) // Command has been removed from game, see bug #507451.
|
|
IF GET_CONFIRM_INVITE_INTO_GAME_STATE()
|
|
FORCE_RESPAWN()
|
|
sSelectorPeds.bInitialised = TRUE
|
|
PRINTLN("BC: JAMES A - SELECTOR GET_CONFIRM_INVITE_INTO_GAME_STATE = TRUE")
|
|
sSelectorPeds.eNewSelectorPed = SELECTOR_PED_MULTIPLAYER
|
|
bUISelection = TRUE
|
|
bLaunchFromEventReceived = TRUE
|
|
SET_BIT(g_b_EnteredMaintransitionSelectorBitset, ENUM_TO_INT(JT_INVITED))
|
|
ENDIF
|
|
|
|
IF IS_PAUSE_MENU_MIGRATE_SAVES()
|
|
AND ((HAS_IMPORTANT_STATS_LOADED() AND IS_MIGRATE_CHECK_START_RUNNING() = FALSE)
|
|
OR HAS_IMPORTANT_STATS_LOADED() = FALSE)
|
|
AND IS_NOT_MIGRATION_RUNNING()
|
|
|
|
BOOL continueToMigrateCheck = TRUE
|
|
|
|
//IMPORTANT: We cant do any migration bulshyte if stats are loaded!!!
|
|
IF HAS_IMPORTANT_STATS_LOADED()
|
|
PRINTLN("[SAVETRANS] HAS_IMPORTANT_STATS_LOADED - calling RELOAD_EVERYTHING_NOW_LIGHT_VERSION")
|
|
//Clear all stats ligth version, we dont really need to reset local values now.
|
|
continueToMigrateCheck = RELOAD_EVERYTHING_NOW_LIGHT_VERSION()
|
|
ENDIF
|
|
|
|
IF continueToMigrateCheck
|
|
//If we good to go, or we're in FM
|
|
OR GET_CURRENT_GAMEMODE() = GAMEMODE_FM
|
|
//If in FM set that we need to clean up the stats when we get to the loader
|
|
IF GET_CURRENT_GAMEMODE() = GAMEMODE_FM
|
|
SET_CLEAR_STATS_IN_TRANSFER_AFTER_BEING_IN_FM(TRUE)
|
|
ENDIF
|
|
STAT_MIGRATE_CLEAR_FOR_RESTART()
|
|
PRINTLN("BC: JAMES A - SELECTOR IS_PAUSE_MENU_MIGRATE_SAVES = TRUE ")
|
|
PRINTLN("[SAVETRANS] Selector: STAT_MIGRATE_CLEAR_FOR_RESTART() called STAT_MIGRATE_CLEAR_FOR_RESTART")
|
|
FORCE_RESPAWN()
|
|
IF GET_CURRENT_GAMEMODE() = GAMEMODE_SP
|
|
OR GET_CURRENT_GAMEMODE() = GAMEMODE_EMPTY
|
|
SET_EMERGENCY_SKYCAM_UP_RUNNING(TRUE)
|
|
ENDIF
|
|
sSelectorPeds.bInitialised = TRUE
|
|
sSelectorPeds.eNewSelectorPed = SELECTOR_PED_MULTIPLAYER
|
|
bUISelection = TRUE
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF DID_LAUNCHED_LIVETILE_WHILE_TRANSITIONING()
|
|
AND NOT IS_TRANSITION_ACTIVE()
|
|
AND NOT IS_PLAYER_SWITCH_IN_PROGRESS()
|
|
AND g_sPlayerPedRequest.eState != PR_STATE_PROCESSING
|
|
|
|
NET_NL()NET_PRINT("BC: DID_LAUNCHED_LIVETILE_WHILE_TRANSITIONING() = TRUE ")
|
|
|
|
//g_AppLaunchStructDetails.nFlags = LAUNCH_FROM_LIVE_AREA
|
|
INT bitset = ENUM_TO_INT(g_AppLaunchStructDetails.nFlags)
|
|
bitset = bitset|ENUM_TO_INT(LAUNCH_FROM_LIVE_AREA)
|
|
g_AppLaunchStructDetails.nFlags = INT_TO_ENUM(APP_LAUNCH_FLAGS, bitset)
|
|
NET_NL()NET_PRINT("BC: bitset = ")NET_PRINT_INT(bitset)
|
|
//SET_BIT(ENUM_TO_INT(g_AppLaunchStructDetails.nFlags), ENUM_TO_INT(LAUNCH_FROM_LIVE_AREA))
|
|
|
|
ENDIF
|
|
|
|
IF HAS_EVENT_APP_LAUNCH_LIVE_AREA_RECIEVED()
|
|
AND NOT IS_PLAYER_SWITCH_IN_PROGRESS()
|
|
AND g_sPlayerPedRequest.eState != PR_STATE_PROCESSING
|
|
|
|
FORCE_RESPAWN()
|
|
sSelectorPeds.bInitialised = TRUE
|
|
PRINTLN("BC: JAMES A - SELECTOR HAS_EVENT_APP_LAUNCH_LIVE_AREA_RECIEVED = TRUE")
|
|
IF NOT GET_IS_LOADING_SCREEN_ACTIVE()
|
|
// IF g_bScriptsSetSafeForCutscene = TRUE
|
|
// AND IS_GAMEPLAY_CAM_RENDERING() = FALSE
|
|
// SET_EMERGENCY_SKYCAM_UP_RUNNING(TRUE)
|
|
// ELSE
|
|
// SET_SP_SELECTOR_SKYCAM_UP(TRUE)
|
|
// ENDIF
|
|
ENDIF
|
|
sSelectorPeds.eNewSelectorPed = SELECTOR_PED_MULTIPLAYER
|
|
bUISelection = TRUE
|
|
bLaunchFromEventReceived = TRUE
|
|
ENDIF
|
|
|
|
IF HAS_EVENT_APP_LAUNCH_DIRECT_TO_CONTENT()
|
|
AND NOT IS_PLAYER_SWITCH_IN_PROGRESS()
|
|
AND g_sPlayerPedRequest.eState != PR_STATE_PROCESSING
|
|
|
|
FORCE_RESPAWN()
|
|
sSelectorPeds.bInitialised = TRUE
|
|
PRINTLN("BC: JAMES A - SELECTOR HAS_EVENT_APP_LAUNCH_DIRECT_TO_CONTENT = TRUE")
|
|
IF NOT GET_IS_LOADING_SCREEN_ACTIVE()
|
|
// IF g_bScriptsSetSafeForCutscene = TRUE
|
|
// AND IS_GAMEPLAY_CAM_RENDERING() = FALSE
|
|
// SET_EMERGENCY_SKYCAM_UP_RUNNING(TRUE)
|
|
// ELSE
|
|
// SET_SP_SELECTOR_SKYCAM_UP(TRUE)
|
|
// ENDIF
|
|
ENDIF
|
|
sSelectorPeds.eNewSelectorPed = SELECTOR_PED_MULTIPLAYER
|
|
bUISelection = TRUE
|
|
bLaunchFromEventReceived = TRUE
|
|
ENDIF
|
|
|
|
IF HAS_EVENT_APP_LAUNCH_STRAIGHT_INTO_FREEMODE_RECIEVED()
|
|
AND NOT IS_PLAYER_SWITCH_IN_PROGRESS()
|
|
AND g_sPlayerPedRequest.eState != PR_STATE_PROCESSING
|
|
|
|
FORCE_RESPAWN()
|
|
sSelectorPeds.bInitialised = TRUE
|
|
PRINTLN("BC: JAMES A - SELECTOR HAS_EVENT_APP_LAUNCH_STRAIGHT_INTO_FREEMODE_RECIEVED = TRUE")
|
|
IF NOT GET_IS_LOADING_SCREEN_ACTIVE()
|
|
// IF g_bScriptsSetSafeForCutscene = TRUE
|
|
// AND IS_GAMEPLAY_CAM_RENDERING() = FALSE
|
|
// SET_EMERGENCY_SKYCAM_UP_RUNNING(TRUE)
|
|
// ELSE
|
|
// SET_SP_SELECTOR_SKYCAM_UP(TRUE)
|
|
// ENDIF
|
|
ENDIF
|
|
sSelectorPeds.eNewSelectorPed = SELECTOR_PED_MULTIPLAYER
|
|
bUISelection = TRUE
|
|
bLaunchFromEventReceived = TRUE
|
|
ENDIF
|
|
|
|
IF NOT bMPAutoBootFromStartup
|
|
//This check has been moved to a cached version at the beginning of startup.sc.
|
|
//Search project for LOAD_SCREEN_CHOICE_IS_MULTIPLAYER() and g_bRunMultiplayerOnStartup - BenR
|
|
IF g_bRunMultiplayerOnStartup
|
|
|
|
// OR LOBBY_AUTO_MULTIPLAYER_FREEMODE() // -StraightIntoFreemode
|
|
// IF LOBBY_AUTO_MULTIPLAYER_MENU() // -netAutoMultiplayerMenu
|
|
// OR LOBBY_AUTO_MULTIPLAYER_CNC() // -StraightIntoCNC
|
|
// OR NETWORK_AUTO_MULTIPLAYER_LAUNCH() // -netAutoMultiplayerLaunch - Not used but keeping the text link here.
|
|
// OR LOBBY_AUTO_MULTIPLAYER_CREATOR() // -StraightIntoCreator - Not used but keeping the text link here.
|
|
|
|
CPRINTLN(DEBUG_INIT, "<LOAD-CHOICE> Selector is simulating a switch into MP through the selector HUD.")
|
|
#IF USE_FINAL_PRINTS
|
|
PRINTLN_FINAL("<2140379> <LOAD-CHOICE> Selector is simulating a switch into MP through the selector HUD.")
|
|
#ENDIF
|
|
|
|
SET_BIT(g_b_EnteredMaintransitionSelectorBitset, ENUM_TO_INT(JT_ONLINE_BUTTON))
|
|
g_b_isSelectorAbouttoBootMaintransition = TRUE
|
|
sSelectorPeds.bInitialised = TRUE
|
|
sSelectorPeds.eNewSelectorPed = SELECTOR_PED_MULTIPLAYER
|
|
bUISelection = TRUE
|
|
bMPAutoBootFromStartup = TRUE
|
|
ENDIF
|
|
ENDIF
|
|
|
|
|
|
// Process any selections
|
|
IF bUISelection
|
|
|
|
DRAW_FAKE_SWITCH()
|
|
|
|
|
|
BOOL Run_warning_Screen = TRUE
|
|
|
|
IF g_Private_SwitchedSP_DuringActivity = FALSE
|
|
NET_NL()NET_PRINT("g_Private_SwitchedSP_DuringActivity = FALSE: Run_warning_Screen = FALSE ")
|
|
Run_warning_Screen = FALSE
|
|
ENDIF
|
|
|
|
IF IS_PAUSE_MENU_REQUESTING_TRANSITION()
|
|
NET_NL()NET_PRINT("IS_PAUSE_MENU_REQUESTING_TRANSITION() = FALSE: Run_warning_Screen = FALSE ")
|
|
Run_warning_Screen = FALSE
|
|
|
|
ENDIF
|
|
|
|
//Global for BG script control for bug
|
|
//url:bugstar:3770047 - [PUBLIC][EXPLOIT] Off freemode script / "off the radar" exploit using recent GTAO activity, sp transition and friend in different aiming mode
|
|
IF g_b_SwitchSelectorLiveTileInviteShowScreenProcess = TRUE
|
|
IF GET_CONFIRM_INVITE_INTO_GAME_STATE()
|
|
NET_NL()NET_PRINT("GET_CONFIRM_INVITE_INTO_GAME_STATE() = TRUE: Run_warning_Screen = FALSE g_b_SwitchSelectorLiveTileInviteShowScreenProcess = TRUE")
|
|
Run_warning_Screen = FALSE
|
|
ENDIF
|
|
ENDIF
|
|
|
|
|
|
|
|
IF HAS_EVENT_APP_LAUNCH_LIVE_AREA_RECIEVED()
|
|
NET_NL()NET_PRINT("BC: HAS_EVENT_APP_LAUNCH_LIVE_AREA_RECIEVED() = TRUE: ")
|
|
IF GET_IS_LOADING_SCREEN_ACTIVE()
|
|
Run_warning_Screen = FALSE
|
|
ELSE
|
|
Run_warning_Screen = TRUE
|
|
ENDIF
|
|
SET_LAUNCHED_LIVETILE_WHILE_TRANSITIONING(FALSE)
|
|
|
|
ENDIF
|
|
|
|
IF HAS_EVENT_APP_LAUNCH_DIRECT_TO_CONTENT()
|
|
NET_NL()NET_PRINT("BC: HAS_EVENT_APP_LAUNCH_DIRECT_TO_CONTENT() = TRUE: ")
|
|
IF GET_IS_LOADING_SCREEN_ACTIVE()
|
|
Run_warning_Screen = FALSE
|
|
ELSE
|
|
Run_warning_Screen = TRUE
|
|
ENDIF
|
|
SET_LAUNCHED_LIVETILE_WHILE_TRANSITIONING(FALSE)
|
|
//Clear that the last one was set up
|
|
CLEAR_HAVE_DONE_INITIAL_PS4_LIVE_STREAM_SETUP()
|
|
CLEAR_PS4_LIVE_STREAM_LAUNCH_ACTIVE()
|
|
IF NETWORK_IS_GAME_IN_PROGRESS()
|
|
SET_TRANSITION_SESSION_LAUNCHED_LIVE_TILE_WHEN_GAME_RUNNING_MP()
|
|
ENDIF
|
|
|
|
SET_TRANSITION_SESSION_LAUNCHED_LIVE_TILE_WHEN_GAME_RUNNING()
|
|
ENDIF
|
|
|
|
IF HAS_EVENT_APP_LAUNCH_STRAIGHT_INTO_FREEMODE_RECIEVED()
|
|
NET_NL()NET_PRINT("BC: HAS_EVENT_APP_LAUNCH_STRAIGHT_INTO_FREEMODE_RECIEVED() = TRUE: ")
|
|
IF GET_IS_LOADING_SCREEN_ACTIVE()
|
|
Run_warning_Screen = FALSE
|
|
ELSE
|
|
Run_warning_Screen = TRUE
|
|
ENDIF
|
|
SET_LAUNCHED_LIVETILE_WHILE_TRANSITIONING(FALSE)
|
|
ENDIF
|
|
|
|
|
|
//Global for BG script control for bug
|
|
//url:bugstar:3770047 - [PUBLIC][EXPLOIT] Off freemode script / "off the radar" exploit using recent GTAO activity, sp transition and friend in different aiming mode
|
|
IF g_b_SwitchSelectorLiveTileInviteShowScreenProcess = FALSE
|
|
IF GET_CONFIRM_INVITE_INTO_GAME_STATE()
|
|
NET_NL()NET_PRINT("GET_CONFIRM_INVITE_INTO_GAME_STATE() = TRUE: Run_warning_Screen = FALSE g_b_SwitchSelectorLiveTileInviteShowScreenProcess = FALSE")
|
|
Run_warning_Screen = FALSE
|
|
ENDIF
|
|
ENDIF
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
IF GET_QUICKLAUNCH_STATE() != QUICKLAUNCH_EMPTY
|
|
RESET_EVERYTHING_TRANSITION_SESSION_FOR_SP_BAIL(DEFAULT, FALSE)
|
|
Run_warning_Screen = FALSE
|
|
ENDIF
|
|
#ENDIF
|
|
|
|
// [DIRECTOR_TODO]
|
|
#IF FEATURE_SP_DLC_DIRECTOR_MODE
|
|
IF IS_CURRENTLY_ON_MISSION_OF_TYPE(MISSION_TYPE_DIRECTOR)
|
|
AND NOT bLaunchFromEventReceived //B* 3765314: Don't trigger the Trailer switch if moving into MP
|
|
SET_AUDIO_FLAG("AllowRadioOverScreenFade", FALSE)
|
|
IF HAS_SELECTOR_PED_BEEN_SELECTED(sSelectorPeds, SELECTOR_PED_MULTIPLAYER)
|
|
CPRINTLN(debug_director,"Detected switch to Casting Trailer from the Selector script")
|
|
CDEBUG1LN(DEBUG_DIRECTOR,"MAINTAIN_AMBIENT_SELECTOR: setting g_bDirectorSwitchToCastingTrailer to TRUE")
|
|
g_bDirectorSwitchToCastingTrailer = TRUE
|
|
ELIF HAS_SELECTOR_PED_BEEN_SELECTED(sSelectorPeds, GET_SELECTOR_SLOT_FROM_PLAYER_PED_ENUM(g_savedGlobals.sPlayerData.sInfo.eLastKnownPed))
|
|
g_bDirectorSwitchToLastPlayer = TRUE
|
|
ENDIF
|
|
|
|
// Clear the selection so multiplayer doesn't kick in.
|
|
sSelectorPeds.eNewSelectorPed = NUMBER_OF_SELECTOR_PEDS
|
|
ELIF IS_CURRENTLY_ON_MISSION_OF_TYPE(MISSION_TYPE_DIRECTOR)
|
|
CPRINTLN(DEBUG_DIRECTOR,"Attemtped switch to Casting Trailer from a received online event. Skipping switch.")
|
|
ENDIF
|
|
#ENDIF
|
|
|
|
IF (HAS_ANY_SELECTOR_PED_BEEN_SELECTED(sSelectorPeds))
|
|
IF g_bMagdemoTakingOverSwitch
|
|
g_bMagdemoDoTakeOverSwitch = TRUE
|
|
ELSE
|
|
#IF FEATURE_GEN9_STANDALONE
|
|
// Check player has an active character before performing switch request to MP, otherwise take them to Career Builder if applicable
|
|
IF HAS_MULTIPLAYER_BEEN_SELECTED(sSelectorPeds)
|
|
AND IS_STAT_CHARACTER_ACTIVE(0) = FALSE
|
|
AND IS_STAT_CHARACTER_ACTIVE(1) = FALSE
|
|
AND NETWORK_GET_MP_WINDFALL_AVAILABLE()
|
|
PRINTLN("MAINTAIN_AMBIENT_SELECTOR - Multiplayer requested but no existing characters and Windfall is available. Redirecting to Windfall.")
|
|
SET_LAUNCH_LANDING_PAGE_TO_WINDFALL()
|
|
// Check player entitlement for switching to Story mode (i.e. not a Multiplayer selection)
|
|
ELIF HAS_MULTIPLAYER_BEEN_SELECTED(sSelectorPeds) = FALSE AND GET_PLAYER_HAS_STORY_MODE_ENTITLEMENT() = FALSE
|
|
PRINTLN("MAINTAIN_AMBIENT_SELECTOR - Singleplayer requested but player has no Story mode entitlement.")
|
|
// Do nothing here, player cannot switch to SP characters without Story mode entitlement.
|
|
// They will see the SP upsell prompt when this selection is processed below
|
|
ELSE
|
|
#ENDIF // FEATURE_GEN9_STANDALONE
|
|
MAKE_PLAYER_PED_SWITCH_REQUEST(GET_PLAYER_PED_ENUM_FROM_SELECTOR_SLOT(sSelectorPeds.eNewSelectorPed), (NOT Run_warning_Screen)) //, PR_TYPE_AMBIENT)
|
|
#IF FEATURE_GEN9_STANDALONE
|
|
ENDIF
|
|
#ENDIF // FEATURE_GEN9_STANDALONE
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF HAS_MULTIPLAYER_BEEN_SELECTED(sSelectorPeds)
|
|
OR IS_TRANSITION_MENU_TRIGGERED()
|
|
OR IS_PAUSE_MENU_REQUESTING_TRANSITION()
|
|
OR NETWORK_IS_GAME_IN_PROGRESS()
|
|
OR GET_CONFIRM_INVITE_INTO_GAME_STATE()
|
|
OR HAS_EVENT_APP_LAUNCH_LIVE_AREA_RECIEVED()
|
|
OR HAS_EVENT_APP_LAUNCH_DIRECT_TO_CONTENT()
|
|
OR HAS_EVENT_APP_LAUNCH_STRAIGHT_INTO_FREEMODE_RECIEVED()
|
|
OR HAVE_I_BEEN_KICKED()
|
|
#IF FEATURE_FREEMODE_ARCADE OR IS_RETURN_TO_GTA_ONLINE() #ENDIF
|
|
#IF IS_DEBUG_BUILD OR GET_QUICKLAUNCH_STATE() != QUICKLAUNCH_EMPTY #ENDIF
|
|
|
|
#IF USE_REPLAY_RECORDING_TRIGGERS
|
|
CLEANUP_REPLAY_RECORD_FEED()
|
|
#ENDIF
|
|
|
|
|
|
|
|
// HIDE_HUD_FOR_TRANSITION_THIS_FRAME()
|
|
|
|
|
|
IF Run_warning_Screen
|
|
|
|
|
|
BOOL bBringUpSignInUI
|
|
|
|
MULTIPLAYER_ACCESS_CODE nAccessCode
|
|
IF GET_CURRENT_GAMEMODE() = GAMEMODE_FM
|
|
SET_PLAYER_INVINCIBLE(PLAYER_ID(), FALSE)
|
|
ENDIF
|
|
|
|
SET_AUDIO_FLAG("ActivateSwitchWheelAudio", FALSE)
|
|
|
|
RUN_TRANSITION_SFX(TRUE)
|
|
|
|
#IF FEATURE_GEN9_STANDALONE
|
|
SCRIPT_ROUTER_CONTEXT_DATA srcData // Used for switching to SP character
|
|
#ENDIF // FEATURE_GEN9_STANDALONE
|
|
|
|
WARNING_SCREEN_RETURN aResult = WARNING_SCREEN_RETURN_NONE
|
|
WHILE Run_warning_Screen = TRUE
|
|
DRAW_FAKE_SWITCH()
|
|
|
|
HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_AREA_NAME)
|
|
HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_VEHICLE_NAME)
|
|
HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_DISTRICT_NAME)
|
|
HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_STREET_NAME)
|
|
|
|
// HIDE_HUD_FOR_TRANSITION_THIS_FRAME()
|
|
|
|
SET_ALL_PLAYER_OVERHEADS_VISIBILITY(FALSE)
|
|
|
|
SCRIPT_NETWORK_CAN_ACCESS_MULTIPLAYER(nAccessCode)
|
|
#IF IS_DEBUG_BUILD
|
|
|
|
PRINTLN("\n***")
|
|
PRINTLN("Multiplayer has been selected for SWITCH! BUT IS_PLAYER_ONLINE() = ", IS_PLAYER_ONLINE())
|
|
PRINTLN("Multiplayer has been selected for SWITCH! BUT NETWORK_IS_SIGNED_ONLINE() = ", NETWORK_IS_SIGNED_ONLINE())
|
|
PRINTLN("Multiplayer has been selected for SWITCH! BUT NETWORK_IS_SIGNED_IN() = ", NETWORK_IS_SIGNED_IN())
|
|
PRINTLN("Multiplayer has been selected for SWITCH! BUT NETWORK_HAS_VALID_ROS_CREDENTIALS() = ", NETWORK_HAS_VALID_ROS_CREDENTIALS())
|
|
PRINTLN("Multiplayer has been selected for SWITCH! BUT NETWORK_CAN_ENTER_MULTIPLAYER() = ", NETWORK_CAN_ENTER_MULTIPLAYER())
|
|
PRINTLN("Multiplayer has been selected for SWITCH! BUT SCRIPT_NETWORK_CAN_ACCESS_MULTIPLAYER(nAccessCode) = ", SCRIPT_NETWORK_CAN_ACCESS_MULTIPLAYER(nAccessCode), " nAccessCode = ", nAccessCode)
|
|
PRINTLN("Multiplayer has been selected for SWITCH! BUT g_savedGlobals.sFlow.missionSavedData[SP_MISSION_PROLOGUE].completed = ", g_savedGlobals.sFlow.missionSavedData[SP_MISSION_PROLOGUE].completed)
|
|
PRINTLN("Multiplayer has been selected for SWITCH! BUT nAccessCode = ", nAccessCode)
|
|
PRINTLN("Multiplayer has been selected for SWITCH! BUT IS_SP_PROLOGUE_FINISHED = ", IS_SP_PROLOGUE_FINISHED())
|
|
PRINTLN("Multiplayer has been selected for SWITCH! BUT IS_PLAYER_LOGGING_IN_NP = ", IS_PLAYER_LOGGING_IN_NP())
|
|
IF IS_PLAYSTATION_PLATFORM() AND NETWORK_IS_NP_AVAILABLE() = FALSE
|
|
PRINTLN("Multiplayer has been selected for SWITCH! BUT NETWORK_GET_NP_UNAVAILABLE_REASON() = ", GET_UNAVAILABILITY_REASON_STRING(NETWORK_GET_NP_UNAVAILABLE_REASON()))
|
|
ENDIF
|
|
PRINTLN("Multiplayer has been selected for SWITCH! BUT NETWORK_IS_CLOUD_AVAILABLE = ", NETWORK_IS_CLOUD_AVAILABLE())
|
|
IF NETWORK_IS_SIGNED_IN()
|
|
PRINTLN("Multiplayer has been selected for SWITCH! BUT NETWORK_HAVE_PLATFORM_SUBSCRIPTION = ", NETWORK_HAVE_PLATFORM_SUBSCRIPTION())
|
|
ENDIF
|
|
IF IS_PLAYSTATION_PLATFORM()
|
|
PRINTLN("Multiplayer has been selected for SWITCH! BUT NETWORK_IS_NP_AVAILABLE = ", NETWORK_IS_NP_AVAILABLE())
|
|
ENDIF
|
|
PRINTLN("Multiplayer has been selected for SWITCH! BUT g_SignInStructDetails.bIsSignedIn = ", g_SignInStructDetails.bIsSignedIn)
|
|
PRINTLN("Multiplayer has been selected for SWITCH! BUT g_SignInStructDetails.bIsDuplicateSignIn = ", g_SignInStructDetails.bIsDuplicateSignIn)
|
|
PRINTLN("Multiplayer has been selected for SWITCH! BUT g_SignInStructDetails.bWasOnline = ", g_SignInStructDetails.bWasOnline)
|
|
PRINTLN("Multiplayer has been selected for SWITCH! BUT g_SignInStructDetails.bWasSignedIn = ", g_SignInStructDetails.bWasSignedIn)
|
|
PRINTLN("Multiplayer has been selected for SWITCH! BUT g_SignInStructDetails.bIsOnline = ", g_SignInStructDetails.bIsOnline)
|
|
PRINTLN("Multiplayer has been selected for SWITCH! BUT NETWORK_IS_REFRESHING_ROS_CREDENTIALS() = ", NETWORK_IS_REFRESHING_ROS_CREDENTIALS())
|
|
PRINTLN("Multiplayer has been selected for SWITCH! BUT NETWORK_IS_CABLE_CONNECTED() = ", NETWORK_IS_CABLE_CONNECTED())
|
|
PRINTLN("***\n")
|
|
#ENDIF
|
|
|
|
|
|
#IF USE_FINAL_PRINTS
|
|
PRINTLN_FINAL("\n***")
|
|
PRINTLN_FINAL("Multiplayer has been selected for SWITCH! BUT IS_PLAYER_ONLINE() = ", IS_PLAYER_ONLINE())
|
|
PRINTLN_FINAL("Multiplayer has been selected for SWITCH! BUT NETWORK_IS_SIGNED_ONLINE() = ", NETWORK_IS_SIGNED_ONLINE())
|
|
PRINTLN_FINAL("Multiplayer has been selected for SWITCH! BUT NETWORK_IS_SIGNED_IN() = ", NETWORK_IS_SIGNED_IN())
|
|
PRINTLN_FINAL("Multiplayer has been selected for SWITCH! BUT NETWORK_HAS_VALID_ROS_CREDENTIALS() = ", NETWORK_HAS_VALID_ROS_CREDENTIALS())
|
|
PRINTLN_FINAL("Multiplayer has been selected for SWITCH! BUT NETWORK_CAN_ENTER_MULTIPLAYER() = ", NETWORK_CAN_ENTER_MULTIPLAYER())
|
|
PRINTLN_FINAL("Multiplayer has been selected for SWITCH! BUT SCRIPT_NETWORK_CAN_ACCESS_MULTIPLAYER(nAccessCode) = ", SCRIPT_NETWORK_CAN_ACCESS_MULTIPLAYER(nAccessCode), " nAccessCode = ", nAccessCode)
|
|
PRINTLN_FINAL("Multiplayer has been selected for SWITCH! BUT g_savedGlobals.sFlow.missionSavedData[SP_MISSION_PROLOGUE].completed = ", g_savedGlobals.sFlow.missionSavedData[SP_MISSION_PROLOGUE].completed)
|
|
PRINTLN_FINAL("Multiplayer has been selected for SWITCH! BUT nAccessCode = ", nAccessCode)
|
|
PRINTLN_FINAL("Multiplayer has been selected for SWITCH! BUT IS_SP_PROLOGUE_FINISHED = ", IS_SP_PROLOGUE_FINISHED())
|
|
PRINTLN_FINAL("Multiplayer has been selected for SWITCH! BUT IS_PLAYER_LOGGING_IN_NP = ", IS_PLAYER_LOGGING_IN_NP())
|
|
IF IS_PLAYSTATION_PLATFORM() AND NETWORK_IS_NP_AVAILABLE() = FALSE
|
|
PRINTLN_FINAL("Multiplayer has been selected for SWITCH! BUT NETWORK_GET_NP_UNAVAILABLE_REASON() = ", GET_UNAVAILABILITY_REASON_STRING(NETWORK_GET_NP_UNAVAILABLE_REASON()))
|
|
ENDIF
|
|
|
|
PRINTLN_FINAL("Multiplayer has been selected for SWITCH! BUT NETWORK_IS_CLOUD_AVAILABLE = ", NETWORK_IS_CLOUD_AVAILABLE())
|
|
IF NETWORK_IS_SIGNED_IN()
|
|
PRINTLN_FINAL("Multiplayer has been selected for SWITCH! BUT NETWORK_HAVE_PLATFORM_SUBSCRIPTION = ", NETWORK_HAVE_PLATFORM_SUBSCRIPTION())
|
|
ENDIF
|
|
IF IS_PLAYSTATION_PLATFORM()
|
|
PRINTLN_FINAL("Multiplayer has been selected for SWITCH! BUT NETWORK_IS_NP_AVAILABLE = ", NETWORK_IS_NP_AVAILABLE())
|
|
ENDIF
|
|
PRINTLN_FINAL("Multiplayer has been selected for SWITCH! BUT g_SignInStructDetails.bIsSignedIn = ", g_SignInStructDetails.bIsSignedIn)
|
|
PRINTLN_FINAL("Multiplayer has been selected for SWITCH! BUT g_SignInStructDetails.bIsDuplicateSignIn = ", g_SignInStructDetails.bIsDuplicateSignIn)
|
|
PRINTLN_FINAL("Multiplayer has been selected for SWITCH! BUT g_SignInStructDetails.bWasOnline = ", g_SignInStructDetails.bWasOnline)
|
|
PRINTLN_FINAL("Multiplayer has been selected for SWITCH! BUT g_SignInStructDetails.bWasSignedIn = ", g_SignInStructDetails.bWasSignedIn)
|
|
PRINTLN_FINAL("Multiplayer has been selected for SWITCH! BUT g_SignInStructDetails.bIsOnline = ", g_SignInStructDetails.bIsOnline)
|
|
PRINTLN_FINAL("Multiplayer has been selected for SWITCH! BUT NETWORK_IS_REFRESHING_ROS_CREDENTIALS() = ", NETWORK_IS_REFRESHING_ROS_CREDENTIALS())
|
|
PRINTLN_FINAL("Multiplayer has been selected for SWITCH! BUT NETWORK_IS_CABLE_CONNECTED() = ", NETWORK_IS_CABLE_CONNECTED())
|
|
|
|
#ENDIF
|
|
|
|
|
|
|
|
|
|
IF NOT IS_GTA_ONLINE_AVAILABLE()
|
|
IF NOT SCRIPT_NETWORK_CAN_ACCESS_MULTIPLAYER(nAccessCode)
|
|
OR SYSTEM_IS_MP_AVAILABLE() = FALSE
|
|
|
|
|
|
IF nAccessCode = ACCESS_DENIED_NETWORK_LOCKED
|
|
|
|
aResult = RUN_WARNINGSCREEN_TRANSITION_SELECTOR_GTAO_NOT_AVAIL()
|
|
IF aResult = WARNING_SCREEN_RETURN_ACCEPT
|
|
aResult = WARNING_SCREEN_RETURN_CANCEL
|
|
ENDIF
|
|
PRINTLN("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT ACCESS_DENIED_NETWORK_LOCKED ")
|
|
PRINTLN("***\n")
|
|
#IF USE_FINAL_PRINTS
|
|
PRINTLN_FINAL("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT ACCESS_DENIED_NETWORK_LOCKED ")
|
|
#ENDIF
|
|
|
|
ELIF nAccessCode = ACCESS_DENIED_NOT_SIGNED_IN
|
|
// display alert, show sign in ui
|
|
|
|
IF bBringUpSignInUI = FALSE AND IS_SCARLETT_VERSION() = FALSE
|
|
SET_TIME_SCALE(1.0)
|
|
DISPLAY_SYSTEM_SIGNIN_UI(TRUE)
|
|
RESET_NET_TIMER(g_st_SigningOutSelectorTimer)
|
|
bBringUpSignInUI = TRUE
|
|
ENDIF
|
|
|
|
//Sign in
|
|
PRINTLN("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run RUN_WARNINGSCREEN_TRANSITION_BAILINVITE_SIGNIN ACCESS_DENIED_NOT_SIGNED_IN ")
|
|
PRINTLN("***\n")
|
|
#IF USE_FINAL_PRINTS
|
|
PRINTLN_FINAL("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run RUN_WARNINGSCREEN_TRANSITION_BAILINVITE_SIGNIN ACCESS_DENIED_NOT_SIGNED_IN ")
|
|
#ENDIF
|
|
aResult = RUN_WARNINGSCREEN_TRANSITION_BAILINVITE_SIGNIN(TRUE)
|
|
IF aResult = WARNING_SCREEN_RETURN_ACCEPT
|
|
aResult = WARNING_SCREEN_RETURN_CANCEL
|
|
ENDIF
|
|
|
|
ELIF nAccessCode = ACCESS_DENIED_NOT_SIGNED_ONLINE
|
|
// display alert, show sign in ui
|
|
IF bBringUpSignInUI = FALSE
|
|
SET_TIME_SCALE(1.0)
|
|
DISPLAY_SYSTEM_SIGNIN_UI(TRUE)
|
|
RESET_NET_TIMER(g_st_SigningOutSelectorTimer)
|
|
|
|
PRINTLN("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run RUN_WARNINGSCREEN_TRANSITION_BAILINVITE_SIGNIN DISPLAY_SYSTEM_SIGNIN_UI(TRUE) - called ")
|
|
PRINTLN("***\n")
|
|
#IF USE_FINAL_PRINTS
|
|
PRINTLN_FINAL("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run RUN_WARNINGSCREEN_TRANSITION_BAILINVITE_SIGNIN DISPLAY_SYSTEM_SIGNIN_UI(TRUE) - called ")
|
|
#ENDIF
|
|
bBringUpSignInUI = TRUE
|
|
ENDIF
|
|
|
|
//Sign in
|
|
PRINTLN("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run RUN_WARNINGSCREEN_TRANSITION_BAILINVITE_SIGNIN ACCESS_DENIED_NOT_SIGNED_ONLINE ")
|
|
PRINTLN("***\n")
|
|
#IF USE_FINAL_PRINTS
|
|
PRINTLN_FINAL("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run RUN_WARNINGSCREEN_TRANSITION_BAILINVITE_SIGNIN ACCESS_DENIED_NOT_SIGNED_ONLINE ")
|
|
#ENDIF
|
|
aResult = RUN_WARNINGSCREEN_TRANSITION_BAILINVITE_SIGNIN(TRUE)
|
|
IF aResult = WARNING_SCREEN_RETURN_ACCEPT
|
|
aResult = WARNING_SCREEN_RETURN_CANCEL
|
|
ENDIF
|
|
|
|
|
|
|
|
ELIF NETWORK_IS_CABLE_CONNECTED() = FALSE
|
|
|
|
PRINTLN("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run NETWORK_IS_CABLE_CONNECTED = FALSE 1 ")
|
|
PRINTLN("***\n")
|
|
#IF USE_FINAL_PRINTS
|
|
PRINTLN_FINAL("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run NETWORK_IS_CABLE_CONNECTED = FALSE 1 ")
|
|
#ENDIF
|
|
|
|
aResult = RUN_WARNINGSCREEN_TRANSITION_SELECTOR_NO_CABLE()
|
|
|
|
IF aResult = WARNING_SCREEN_RETURN_ACCEPT
|
|
aResult = WARNING_SCREEN_RETURN_CANCEL
|
|
ENDIF
|
|
|
|
ELIF NETWORK_IS_REFRESHING_ROS_CREDENTIALS()
|
|
PRINTLN("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run NETWORK_IS_REFRESHING_ROS_CREDENTIALS = TRUE, show nothing and just wait a bit ")
|
|
PRINTLN("***\n")
|
|
#IF USE_FINAL_PRINTS
|
|
PRINTLN_FINAL("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run NETWORK_IS_REFRESHING_ROS_CREDENTIALS = TRUE, show nothing and just wait a bit ")
|
|
#ENDIF
|
|
|
|
ELIF IS_PLAYSTATION_PLATFORM() AND NETWORK_IS_NP_PENDING()
|
|
PRINTLN("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run NETWORK_IS_NP_PENDING = TRUE, show nothing and just wait a bit ")
|
|
PRINTLN("***\n")
|
|
#IF USE_FINAL_PRINTS
|
|
PRINTLN_FINAL("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run NETWORK_IS_NP_PENDING = TRUE, show nothing and just wait a bit ")
|
|
#ENDIF
|
|
|
|
|
|
ELIF IS_XBOX_PLATFORM() AND nAccessCode = ACCESS_DENIED_NO_ONLINE_PRIVILEGE //Show new system UI
|
|
//Sign in
|
|
PRINTLN("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT IS_XBOX_PLATFORM and ACCESS_DENIED_NO_ONLINE_PRIVILEGE ")
|
|
PRINTLN("***\n")
|
|
#IF USE_FINAL_PRINTS
|
|
PRINTLN_FINAL("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT IS_XBOX_PLATFORM and ACCESS_DENIED_NO_ONLINE_PRIVILEGE ")
|
|
#ENDIF
|
|
|
|
IF bShownPSPlusSignIn = FALSE
|
|
DOES_PLAYER_HAVE_XBOX_PERMISSIONS(TRUE)
|
|
bShownPSPlusSignIn = TRUE
|
|
ENDIF
|
|
aResult = RUN_WARNINGSCREEN_TRANSITION_NO_XBOX_PERMISSION()
|
|
IF aResult = WARNING_SCREEN_RETURN_ACCEPT
|
|
aResult = WARNING_SCREEN_RETURN_CANCEL
|
|
ENDIF
|
|
|
|
|
|
ELIF IS_PLAYSTATION_PLATFORM() AND NETWORK_IS_NP_AVAILABLE() = FALSE
|
|
AND NETWORK_GET_NP_UNAVAILABLE_REASON() = REASON_AGE
|
|
|
|
// display alert
|
|
PRINTLN("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run RUN_WARNINGSCREEN_TRANSITION_UNDERAGE_NEXTGEN ")
|
|
PRINTLN("***\n")
|
|
#IF USE_FINAL_PRINTS
|
|
PRINTLN_FINAL("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run RUN_WARNINGSCREEN_TRANSITION_UNDERAGE_NEXTGEN ")
|
|
#ENDIF
|
|
|
|
aResult = RUN_WARNINGSCREEN_TRANSITION_UNDERAGE_NEXTGEN()
|
|
|
|
IF aResult = WARNING_SCREEN_RETURN_ACCEPT
|
|
aResult = WARNING_SCREEN_RETURN_CANCEL
|
|
ENDIF
|
|
|
|
ELIF IS_PLAYSTATION_PLATFORM() AND NETWORK_IS_NP_AVAILABLE() = FALSE
|
|
AND NETWORK_GET_NP_UNAVAILABLE_REASON() = REASON_GAME_UPDATE
|
|
|
|
// display alert
|
|
PRINTLN("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run RUN_WARNINGSCREEN_TRANSITION_GAME_UPDATE ")
|
|
PRINTLN("***\n")
|
|
#IF USE_FINAL_PRINTS
|
|
PRINTLN_FINAL("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run RUN_WARNINGSCREEN_TRANSITION_GAME_UPDATE ")
|
|
#ENDIF
|
|
aResult = RUN_WARNINGSCREEN_TRANSITION_GAME_UPDATE()
|
|
|
|
IF aResult = WARNING_SCREEN_RETURN_ACCEPT
|
|
aResult = WARNING_SCREEN_RETURN_CANCEL
|
|
ENDIF
|
|
|
|
ELIF IS_PLAYSTATION_PLATFORM() AND NETWORK_IS_NP_AVAILABLE() = FALSE
|
|
AND NETWORK_GET_NP_UNAVAILABLE_REASON() = REASON_SYSTEM_UPDATE
|
|
|
|
// display alert
|
|
PRINTLN("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run RUN_WARNINGSCREEN_TRANSITION_SYSTEM_UPDATE ")
|
|
PRINTLN("***\n")
|
|
#IF USE_FINAL_PRINTS
|
|
PRINTLN_FINAL("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run RUN_WARNINGSCREEN_TRANSITION_SYSTEM_UPDATE ")
|
|
#ENDIF
|
|
|
|
aResult = RUN_WARNINGSCREEN_TRANSITION_SYSTEM_UPDATE()
|
|
|
|
IF aResult = WARNING_SCREEN_RETURN_ACCEPT
|
|
aResult = WARNING_SCREEN_RETURN_CANCEL
|
|
ENDIF
|
|
|
|
ELIF IS_PLAYSTATION_PLATFORM() AND NETWORK_IS_NP_AVAILABLE() = FALSE
|
|
AND NETWORK_GET_NP_UNAVAILABLE_REASON() = REASON_CONNECTION
|
|
|
|
// display alert
|
|
PRINTLN("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run RUN_WARNINGSCREEN_TRANSITION_NP_CONNECTION with reason REASON_CONNECTION ")
|
|
PRINTLN("***\n")
|
|
#IF USE_FINAL_PRINTS
|
|
PRINTLN_FINAL("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run RUN_WARNINGSCREEN_TRANSITION_NP_CONNECTION with reason REASON_CONNECTION ")
|
|
#ENDIF
|
|
|
|
aResult = RUN_WARNINGSCREEN_TRANSITION_NP_CONNECTION()
|
|
|
|
IF aResult = WARNING_SCREEN_RETURN_ACCEPT
|
|
aResult = WARNING_SCREEN_RETURN_CANCEL
|
|
ENDIF
|
|
|
|
// ELIF IS_PC_VERSION()
|
|
ELIF nAccessCode = ACCESS_DENIED_NO_SCS_PRIVILEGE
|
|
// display alert
|
|
|
|
PRINTLN("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run IS_PC_VERSION RUN_WARNINGSCREEN_TRANSITION_SOCIAL_CLUB_BANNED ")
|
|
PRINTLN("***\n")
|
|
#IF USE_FINAL_PRINTS
|
|
PRINTLN_FINAL("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run IS_PC_VERSION RUN_WARNINGSCREEN_TRANSITION_SOCIAL_CLUB_BANNED ")
|
|
#ENDIF
|
|
aResult = RUN_WARNINGSCREEN_TRANSITION_SOCIAL_CLUB_BANNED()
|
|
IF aResult = WARNING_SCREEN_RETURN_ACCEPT
|
|
aResult = WARNING_SCREEN_RETURN_CANCEL
|
|
ENDIF
|
|
|
|
|
|
ELIF NETWORK_IS_CLOUD_AVAILABLE() = FALSE
|
|
|
|
IF HAS_NET_TIMER_EXPIRED(g_st_SigningOutSelectorTimer, 3000)
|
|
PRINTLN("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT NETWORK_IS_CLOUD_AVAILABLE() = FALSE, - DO SCREEN ")
|
|
PRINTLN("***\n")
|
|
#IF USE_FINAL_PRINTS
|
|
PRINTLN_FINAL("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT NETWORK_IS_CLOUD_AVAILABLE() = FALSE, - DO SCREEN ")
|
|
#ENDIF
|
|
|
|
aResult = RUN_WARNINGSCREEN_TRANSITION_CLOUD_DOWN()
|
|
IF aResult = WARNING_SCREEN_RETURN_ACCEPT
|
|
aResult = WARNING_SCREEN_RETURN_CANCEL
|
|
ENDIF
|
|
ELSE
|
|
PRINTLN("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT NETWORK_IS_CLOUD_AVAILABLE() = FALSE, - NO SCREEN ")
|
|
PRINTLN("***\n")
|
|
#IF USE_FINAL_PRINTS
|
|
PRINTLN_FINAL("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT NETWORK_IS_CLOUD_AVAILABLE() = FALSE, - NO SCREEN ")
|
|
#ENDIF
|
|
ENDIF
|
|
|
|
ELIF NETWORK_IS_PLATFORM_SUBSCRIPTION_CHECK_PENDING() = TRUE
|
|
PRINTLN("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run NETWORK_IS_PLATFORM_SUBSCRIPTION_CHECK_PENDING = TRUE, show nothing and just wait a bit ")
|
|
PRINTLN("***\n")
|
|
#IF USE_FINAL_PRINTS
|
|
PRINTLN_FINAL("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run NETWORK_IS_PLATFORM_SUBSCRIPTION_CHECK_PENDING = TRUE, show nothing and just wait a bit ")
|
|
#ENDIF
|
|
|
|
ELIF IS_PLAYSTATION_PLATFORM() AND NETWORK_HAVE_PLATFORM_SUBSCRIPTION() = FALSE
|
|
// display alert
|
|
PRINTLN("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run RUN_WARNINGSCREEN_TRANSITION_NO_PS_PLUS NETWORK_HAVE_PLATFORM_SUBSCRIPTION() = FALSE ")
|
|
PRINTLN("***\n")
|
|
#IF USE_FINAL_PRINTS
|
|
PRINTLN_FINAL("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run RUN_WARNINGSCREEN_TRANSITION_NO_PS_PLUS NETWORK_HAVE_PLATFORM_SUBSCRIPTION() = FALSE ")
|
|
#ENDIF
|
|
|
|
IF bShownPSPlusSignIn = FALSE
|
|
NETWORK_SHOW_ACCOUNT_UPGRADE_UI()
|
|
bShownPSPlusSignIn = TRUE
|
|
ENDIF
|
|
aResult = RUN_WARNINGSCREEN_TRANSITION_NO_PS_PLUS()
|
|
IF aResult = WARNING_SCREEN_RETURN_ACCEPT
|
|
aResult = WARNING_SCREEN_RETURN_CANCEL
|
|
ENDIF
|
|
|
|
ELIF IS_XBOX_PLATFORM() AND NETWORK_HAVE_PLATFORM_SUBSCRIPTION() = FALSE
|
|
// display alert
|
|
PRINTLN("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run RUN_WARNINGSCREEN_TRANSITION_NO_XBOX_GOLD NETWORK_HAVE_PLATFORM_SUBSCRIPTION() = FALSE ")
|
|
PRINTLN("***\n")
|
|
#IF USE_FINAL_PRINTS
|
|
PRINTLN_FINAL("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run RUN_WARNINGSCREEN_TRANSITION_NO_XBOX_GOLD NETWORK_HAVE_PLATFORM_SUBSCRIPTION() = FALSE ")
|
|
#ENDIF
|
|
|
|
IF bShownPSPlusSignIn = FALSE
|
|
DOES_PLAYER_HAVE_XBOX_GOLD_MEMBERSHIP(TRUE)
|
|
bShownPSPlusSignIn = TRUE
|
|
ENDIF
|
|
aResult = RUN_WARNINGSCREEN_TRANSITION_NO_XBOX_GOLD()
|
|
IF aResult = WARNING_SCREEN_RETURN_ACCEPT
|
|
aResult = WARNING_SCREEN_RETURN_CANCEL
|
|
ENDIF
|
|
|
|
ELIF IS_MOD_INSTALLED()
|
|
// display alert
|
|
PRINTLN("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run RUN_WARNINGSCREEN_TRANSITION_MODS_INSTALLED IS_MOD_INSTALLED() ")
|
|
PRINTLN("***\n")
|
|
#IF USE_FINAL_PRINTS
|
|
PRINTLN_FINAL("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run RUN_WARNINGSCREEN_TRANSITION_MODS_INSTALLED IS_MOD_INSTALLED() ")
|
|
#ENDIF
|
|
|
|
aResult = RUN_WARNINGSCREEN_TRANSITION_MODS_INSTALLED()
|
|
IF aResult = WARNING_SCREEN_RETURN_ACCEPT
|
|
aResult = WARNING_SCREEN_RETURN_CANCEL
|
|
ENDIF
|
|
|
|
ELIF nAccessCode = ACCESS_DENIED_NO_ONLINE_PRIVILEGE
|
|
|
|
|
|
// display alert
|
|
//PRINTLN("Multiplayer has been selected for SWITCH! BUT Run RUN_WARNINGSCREEN_TRANSITION_NO_PS_PLUS ")
|
|
//PRINTLN("***\n")
|
|
//aResult = RUN_WARNINGSCREEN_TRANSITION_NO_PS_PLUS()
|
|
|
|
|
|
PRINTLN("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run nAccessCode = ACCESS_DENIED_NO_ONLINE_PRIVILEGE ")
|
|
PRINTLN("***\n")
|
|
#IF USE_FINAL_PRINTS
|
|
PRINTLN_FINAL("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run nAccessCode = ACCESS_DENIED_NO_ONLINE_PRIVILEGE ")
|
|
#ENDIF
|
|
|
|
IF IS_PLAYSTATION_PLATFORM()
|
|
aResult = RUN_WARNINGSCREEN_TRANSITION_UNDERAGE_NEXTGEN()
|
|
ELSE
|
|
aResult = RUN_WARNINGSCREEN_TRANSITION_UNDERAGE()
|
|
ENDIF
|
|
|
|
IF aResult = WARNING_SCREEN_RETURN_ACCEPT
|
|
aResult = WARNING_SCREEN_RETURN_CANCEL
|
|
ENDIF
|
|
|
|
IF aResult = WARNING_SCREEN_RETURN_ACCEPT
|
|
aResult = WARNING_SCREEN_RETURN_CANCEL
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
ELIF nAccessCode = ACCESS_DENIED_NO_SCS_PRIVILEGE
|
|
// display alert
|
|
|
|
PRINTLN("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run RUN_WARNINGSCREEN_TRANSITION_SOCIAL_CLUB_BANNED ")
|
|
PRINTLN("***\n")
|
|
#IF USE_FINAL_PRINTS
|
|
PRINTLN_FINAL("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run RUN_WARNINGSCREEN_TRANSITION_SOCIAL_CLUB_BANNED ")
|
|
#ENDIF
|
|
aResult = RUN_WARNINGSCREEN_TRANSITION_SOCIAL_CLUB_BANNED()
|
|
IF aResult = WARNING_SCREEN_RETURN_ACCEPT
|
|
aResult = WARNING_SCREEN_RETURN_CANCEL
|
|
ENDIF
|
|
|
|
|
|
ELIF nAccessCode = ACCESS_DENIED_MULTIPLAYER_DISABLED
|
|
OR NETWORK_IS_MULTIPLAYER_DISABLED()
|
|
|
|
aResult = RUN_WARNINGSCREEN_TRANSITION_SELECTOR_GTAO_MAINTENANCE()
|
|
IF aResult = WARNING_SCREEN_RETURN_ACCEPT
|
|
aResult = WARNING_SCREEN_RETURN_CANCEL
|
|
ENDIF
|
|
|
|
PRINTLN("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT ACCESS_DENIED_MULTIPLAYER_DISABLED ")
|
|
PRINTLN("***\n")
|
|
#IF USE_FINAL_PRINTS
|
|
PRINTLN_FINAL("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT ACCESS_DENIED_MULTIPLAYER_DISABLED ")
|
|
#ENDIF
|
|
|
|
ELIF NETWORK_HAS_VALID_ROS_CREDENTIALS() = FALSE
|
|
PRINTLN("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT NETWORK_HAS_VALID_ROS_CREDENTIALS() = FALSE, - NO SCREEN ")
|
|
PRINTLN("***\n")
|
|
#IF USE_FINAL_PRINTS
|
|
PRINTLN_FINAL("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT NETWORK_HAS_VALID_ROS_CREDENTIALS() = FALSE, - NO SCREEN ")
|
|
#ENDIF
|
|
|
|
RESET_NET_TIMER(g_st_ROSInvalidSelectorTimer)
|
|
|
|
ELIF NETWORK_IS_TUNABLE_CLOUD_REQUEST_PENDING()
|
|
PRINTLN("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT NETWORK_IS_TUNABLE_CLOUD_REQUEST_PENDING() = TRUE, - NO SCREEN ")
|
|
PRINTLN("***\n")
|
|
#IF USE_FINAL_PRINTS
|
|
PRINTLN_FINAL("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT NETWORK_IS_TUNABLE_CLOUD_REQUEST_PENDING() = TRUE, - NO SCREEN ")
|
|
#ENDIF
|
|
|
|
ELIF nAccessCode = ACCESS_DENIED_NO_TUNABLES
|
|
|
|
PRINTLN("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run ACCESS_DENIED_NO_TUNABLES in NOT IS_GTA_ONLINE_AVAILABLE ")
|
|
PRINTLN("***\n")
|
|
#IF USE_FINAL_PRINTS
|
|
PRINTLN_FINAL("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run ACCESS_DENIED_NO_TUNABLES in NOT IS_GTA_ONLINE_AVAILABLE ")
|
|
#ENDIF
|
|
aResult = RUN_WARNINGSCREEN_TRANSITION_SELECTOR_GTAO_NO_TUNABLES()
|
|
IF aResult = WARNING_SCREEN_RETURN_ACCEPT
|
|
aResult = WARNING_SCREEN_RETURN_CANCEL
|
|
ENDIF
|
|
|
|
ELIF NETWORK_IS_CLOUD_BACKGROUND_SCRIPT_REQUEST_PENDING()
|
|
PRINTLN("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT NETWORK_IS_CLOUD_BACKGROUND_SCRIPT_REQUEST_PENDING() = TRUE, - NO SCREEN ")
|
|
PRINTLN("***\n")
|
|
#IF USE_FINAL_PRINTS
|
|
PRINTLN_FINAL("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT NETWORK_IS_CLOUD_BACKGROUND_SCRIPT_REQUEST_PENDING() = TRUE, - NO SCREEN ")
|
|
#ENDIF
|
|
|
|
ELIF nAccessCode = ACCESS_DENIED_NO_BACKGROUND_SCRIPT //
|
|
|
|
|
|
IF HAS_NET_TIMER_EXPIRED(g_st_ROSInvalidSelectorTimer, 3000)
|
|
PRINTLN("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run ACCESS_DENIED_NO_BACKGROUND_SCRIPT ")
|
|
PRINTLN("***\n")
|
|
#IF USE_FINAL_PRINTS
|
|
PRINTLN_FINAL("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run ACCESS_DENIED_NO_BACKGROUND_SCRIPT ")
|
|
#ENDIF
|
|
|
|
aResult = RUN_WARNINGSCREEN_TRANSITION_SELECTOR_GTAO_NO_BACKGROUND()
|
|
IF aResult = WARNING_SCREEN_RETURN_ACCEPT
|
|
aResult = WARNING_SCREEN_RETURN_CANCEL
|
|
ENDIF
|
|
ELSE
|
|
PRINTLN("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run ACCESS_DENIED_NO_BACKGROUND_SCRIPT - NO SCREEN - Wait a bit ")
|
|
PRINTLN("***\n")
|
|
#IF USE_FINAL_PRINTS
|
|
PRINTLN_FINAL("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run ACCESS_DENIED_NO_BACKGROUND_SCRIPT - NO SCREEN - Wait a bit ")
|
|
#ENDIF
|
|
|
|
IF BUSYSPINNER_IS_ON() = FALSE
|
|
BEGIN_TEXT_COMMAND_BUSYSPINNER_ON("MP_SPINLOADING")
|
|
END_TEXT_COMMAND_BUSYSPINNER_ON(ENUM_TO_INT(LOADING_ICON_LOADING))
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
ELIF nAccessCode = ACCESS_DENIED_INVALID_PROFILE_SETTINGS
|
|
PRINTLN("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run ACCESS_DENIED_INVALID_PROFILE_SETTINGS in NOT IS_GTA_ONLINE_AVAILABLE - NO SCREEN ")
|
|
PRINTLN("***\n")
|
|
#IF USE_FINAL_PRINTS
|
|
PRINTLN_FINAL("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run ACCESS_DENIED_INVALID_PROFILE_SETTINGS in NOT IS_GTA_ONLINE_AVAILABLE - NO SCREEN ")
|
|
#ENDIF
|
|
ELSE
|
|
|
|
|
|
PRINTLN("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Prologue check 1 Run ")
|
|
PRINTLN("***\n")
|
|
#IF USE_FINAL_PRINTS
|
|
PRINTLN_FINAL("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Prologue check 1 Run ")
|
|
#ENDIF
|
|
aResult = RUN_WARNINGSCREEN_TRANSITION_SELECTOR_SP_PROLOGUE_NOT_DONE()
|
|
IF aResult = WARNING_SCREEN_RETURN_ACCEPT
|
|
aResult = WARNING_SCREEN_RETURN_CANCEL
|
|
ENDIF
|
|
|
|
|
|
ENDIF
|
|
|
|
ELSE
|
|
|
|
|
|
PRINTLN("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Prologue check 2 Run ")
|
|
PRINTLN("***\n")
|
|
#IF USE_FINAL_PRINTS
|
|
PRINTLN_FINAL("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Prologue check 2 Run ")
|
|
#ENDIF
|
|
aResult = RUN_WARNINGSCREEN_TRANSITION_SELECTOR_SP_PROLOGUE_NOT_DONE()
|
|
IF aResult = WARNING_SCREEN_RETURN_ACCEPT
|
|
aResult = WARNING_SCREEN_RETURN_CANCEL
|
|
ENDIF
|
|
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
ELIF IS_MOD_INSTALLED()
|
|
// display alert
|
|
PRINTLN("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run RUN_WARNINGSCREEN_TRANSITION_MODS_INSTALLED IS_MOD_INSTALLED() 2 ")
|
|
PRINTLN("***\n")
|
|
#IF USE_FINAL_PRINTS
|
|
PRINTLN_FINAL("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run RUN_WARNINGSCREEN_TRANSITION_MODS_INSTALLED IS_MOD_INSTALLED() 2 ")
|
|
#ENDIF
|
|
|
|
|
|
aResult = RUN_WARNINGSCREEN_TRANSITION_MODS_INSTALLED()
|
|
IF aResult = WARNING_SCREEN_RETURN_ACCEPT
|
|
aResult = WARNING_SCREEN_RETURN_CANCEL
|
|
ENDIF
|
|
|
|
ELIF nAccessCode = ACCESS_DENIED_TUNABLE_NOT_FOUND
|
|
|
|
PRINTLN("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run ACCESS_DENIED_TUNABLE_NOT_FOUND ")
|
|
PRINTLN("***\n")
|
|
#IF USE_FINAL_PRINTS
|
|
PRINTLN_FINAL("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run ACCESS_DENIED_TUNABLE_NOT_FOUND ")
|
|
#ENDIF
|
|
aResult = RUN_WARNINGSCREEN_TRANSITION_SELECTOR_GTAO_NOT_AVAIL()
|
|
IF aResult = WARNING_SCREEN_RETURN_ACCEPT
|
|
aResult = WARNING_SCREEN_RETURN_CANCEL
|
|
ENDIF
|
|
|
|
ELIF nAccessCode = ACCESS_DENIED_NETWORK_LOCKED
|
|
|
|
aResult = RUN_WARNINGSCREEN_TRANSITION_SELECTOR_GTAO_NOT_AVAIL()
|
|
IF aResult = WARNING_SCREEN_RETURN_ACCEPT
|
|
aResult = WARNING_SCREEN_RETURN_CANCEL
|
|
ENDIF
|
|
PRINTLN("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT ACCESS_DENIED_NETWORK_LOCKED - NO SCREEN ")
|
|
PRINTLN("***\n")
|
|
#IF USE_FINAL_PRINTS
|
|
PRINTLN_FINAL("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT ACCESS_DENIED_NETWORK_LOCKED - NO SCREEN ")
|
|
#ENDIF
|
|
|
|
|
|
ELIF nAccessCode = ACCESS_DENIED_NOT_SIGNED_IN
|
|
// display alert, show sign in ui
|
|
|
|
IF bBringUpSignInUI = FALSE AND IS_SCARLETT_VERSION() = FALSE
|
|
SET_TIME_SCALE(1.0)
|
|
DISPLAY_SYSTEM_SIGNIN_UI(TRUE)
|
|
RESET_NET_TIMER(g_st_SigningOutSelectorTimer)
|
|
bBringUpSignInUI = TRUE
|
|
ENDIF
|
|
|
|
//Sign in
|
|
PRINTLN("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run RUN_WARNINGSCREEN_TRANSITION_BAILINVITE_SIGNIN ACCESS_DENIED_NOT_SIGNED_IN 2 ")
|
|
PRINTLN("***\n")
|
|
#IF USE_FINAL_PRINTS
|
|
PRINTLN_FINAL("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run RUN_WARNINGSCREEN_TRANSITION_BAILINVITE_SIGNIN ACCESS_DENIED_NOT_SIGNED_IN 2 ")
|
|
#ENDIF
|
|
aResult = RUN_WARNINGSCREEN_TRANSITION_BAILINVITE_SIGNIN(TRUE)
|
|
IF aResult = WARNING_SCREEN_RETURN_ACCEPT
|
|
aResult = WARNING_SCREEN_RETURN_CANCEL
|
|
ENDIF
|
|
|
|
ELIF nAccessCode = ACCESS_DENIED_NOT_SIGNED_ONLINE
|
|
// display alert, show sign in ui
|
|
IF bBringUpSignInUI = FALSE
|
|
SET_TIME_SCALE(1.0)
|
|
DISPLAY_SYSTEM_SIGNIN_UI(TRUE)
|
|
RESET_NET_TIMER(g_st_SigningOutSelectorTimer)
|
|
|
|
PRINTLN("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run RUN_WARNINGSCREEN_TRANSITION_BAILINVITE_SIGNIN DISPLAY_SYSTEM_SIGNIN_UI(TRUE) - called 2 ")
|
|
PRINTLN("***\n")
|
|
#IF USE_FINAL_PRINTS
|
|
PRINTLN_FINAL("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run RUN_WARNINGSCREEN_TRANSITION_BAILINVITE_SIGNIN DISPLAY_SYSTEM_SIGNIN_UI(TRUE) - called 2 ")
|
|
#ENDIF
|
|
bBringUpSignInUI = TRUE
|
|
ENDIF
|
|
|
|
//Sign in
|
|
PRINTLN("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run RUN_WARNINGSCREEN_TRANSITION_BAILINVITE_SIGNIN ACCESS_DENIED_NOT_SIGNED_ONLINE 2 ")
|
|
PRINTLN("***\n")
|
|
#IF USE_FINAL_PRINTS
|
|
PRINTLN_FINAL("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run RUN_WARNINGSCREEN_TRANSITION_BAILINVITE_SIGNIN ACCESS_DENIED_NOT_SIGNED_ONLINE 2 ")
|
|
#ENDIF
|
|
aResult = RUN_WARNINGSCREEN_TRANSITION_BAILINVITE_SIGNIN(TRUE)
|
|
IF aResult = WARNING_SCREEN_RETURN_ACCEPT
|
|
aResult = WARNING_SCREEN_RETURN_CANCEL
|
|
ENDIF
|
|
|
|
ELIF IS_XBOX_PLATFORM() AND nAccessCode = ACCESS_DENIED_NO_ONLINE_PRIVILEGE //Show new system UI
|
|
//Sign in
|
|
PRINTLN("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT IS_XBOX_PLATFORM and ACCESS_DENIED_NO_ONLINE_PRIVILEGE 2 ")
|
|
PRINTLN("***\n")
|
|
#IF USE_FINAL_PRINTS
|
|
PRINTLN_FINAL("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT IS_XBOX_PLATFORM and ACCESS_DENIED_NO_ONLINE_PRIVILEGE 2 ")
|
|
#ENDIF
|
|
|
|
IF bShownPSPlusSignIn = FALSE
|
|
DOES_PLAYER_HAVE_XBOX_PERMISSIONS(TRUE)
|
|
bShownPSPlusSignIn = TRUE
|
|
ENDIF
|
|
aResult = RUN_WARNINGSCREEN_TRANSITION_NO_XBOX_PERMISSION()
|
|
IF aResult = WARNING_SCREEN_RETURN_ACCEPT
|
|
aResult = WARNING_SCREEN_RETURN_CANCEL
|
|
ENDIF
|
|
|
|
|
|
ELIF NETWORK_IS_CABLE_CONNECTED() = FALSE
|
|
|
|
PRINTLN("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run NETWORK_IS_CABLE_CONNECTED = FALSE ")
|
|
PRINTLN("***\n")
|
|
#IF USE_FINAL_PRINTS
|
|
PRINTLN_FINAL("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run NETWORK_IS_CABLE_CONNECTED = FALSE ")
|
|
#ENDIF
|
|
aResult = RUN_WARNINGSCREEN_TRANSITION_SELECTOR_NO_CABLE()
|
|
|
|
IF aResult = WARNING_SCREEN_RETURN_ACCEPT
|
|
aResult = WARNING_SCREEN_RETURN_CANCEL
|
|
ENDIF
|
|
|
|
ELIF NETWORK_IS_REFRESHING_ROS_CREDENTIALS()
|
|
PRINTLN("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run NETWORK_IS_REFRESHING_ROS_CREDENTIALS = TRUE, show nothing and just wait a bit 2 ")
|
|
PRINTLN("***\n")
|
|
#IF USE_FINAL_PRINTS
|
|
PRINTLN_FINAL("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run NETWORK_IS_REFRESHING_ROS_CREDENTIALS = TRUE, show nothing and just wait a bit 2 ")
|
|
#ENDIF
|
|
|
|
ELIF IS_PLAYSTATION_PLATFORM() AND NETWORK_IS_NP_PENDING()
|
|
PRINTLN("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run NETWORK_IS_NP_PENDING = TRUE, show nothing and just wait a bit 2 ")
|
|
PRINTLN("***\n")
|
|
#IF USE_FINAL_PRINTS
|
|
PRINTLN_FINAL("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run NETWORK_IS_NP_PENDING = TRUE, show nothing and just wait a bit 2 ")
|
|
#ENDIF
|
|
|
|
//For bug 2008393
|
|
ELIF IS_PLAYSTATION_PLATFORM() AND NETWORK_IS_NP_AVAILABLE() = FALSE
|
|
AND NETWORK_GET_NP_UNAVAILABLE_REASON() = REASON_OTHER
|
|
|
|
// display alert
|
|
PRINTLN("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run RUN_WARNINGSCREEN_TRANSITION_NP_CONNECTION with REASON_OTHER ")
|
|
PRINTLN("***\n")
|
|
#IF USE_FINAL_PRINTS
|
|
PRINTLN_FINAL("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run RUN_WARNINGSCREEN_TRANSITION_NP_CONNECTION with REASON_OTHER ")
|
|
#ENDIF
|
|
|
|
aResult = RUN_WARNINGSCREEN_TRANSITION_NP_CONNECTION()
|
|
|
|
IF aResult = WARNING_SCREEN_RETURN_ACCEPT
|
|
aResult = WARNING_SCREEN_RETURN_CANCEL
|
|
ENDIF
|
|
|
|
ELIF IS_PLAYSTATION_PLATFORM() AND NETWORK_IS_NP_AVAILABLE() = FALSE
|
|
AND NETWORK_GET_NP_UNAVAILABLE_REASON() = REASON_CONNECTION
|
|
|
|
// display alert
|
|
PRINTLN("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run RUN_WARNINGSCREEN_TRANSITION_NP_CONNECTION with reason REASON_CONNECTION ")
|
|
PRINTLN("***\n")
|
|
#IF USE_FINAL_PRINTS
|
|
PRINTLN_FINAL("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run RUN_WARNINGSCREEN_TRANSITION_NP_CONNECTION with reason REASON_CONNECTION ")
|
|
#ENDIF
|
|
|
|
aResult = RUN_WARNINGSCREEN_TRANSITION_NP_CONNECTION()
|
|
|
|
IF aResult = WARNING_SCREEN_RETURN_ACCEPT
|
|
aResult = WARNING_SCREEN_RETURN_CANCEL
|
|
ENDIF
|
|
|
|
ELIF NETWORK_IS_SIGNED_ONLINE() = FALSE
|
|
|
|
IF bBringUpSignInUI = FALSE
|
|
SET_TIME_SCALE(1.0)
|
|
DISPLAY_SYSTEM_SIGNIN_UI(TRUE)
|
|
RESET_NET_TIMER(g_st_SigningOutSelectorTimer)
|
|
bBringUpSignInUI = TRUE
|
|
ENDIF
|
|
|
|
//Sign in
|
|
PRINTLN("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run RUN_WARNINGSCREEN_TRANSITION_BAILINVITE_SIGNIN NETWORK_IS_SIGNED_ONLINE = FALSE ")
|
|
PRINTLN("***\n")
|
|
#IF USE_FINAL_PRINTS
|
|
PRINTLN_FINAL("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run RUN_WARNINGSCREEN_TRANSITION_BAILINVITE_SIGNIN NETWORK_IS_SIGNED_ONLINE = FALSE ")
|
|
#ENDIF
|
|
|
|
aResult = RUN_WARNINGSCREEN_TRANSITION_BAILINVITE_SIGNIN(TRUE, FALSE)
|
|
IF aResult = WARNING_SCREEN_RETURN_ACCEPT
|
|
aResult = WARNING_SCREEN_RETURN_CANCEL
|
|
ENDIF
|
|
// ELIF NETWORK_HAS_VALID_ROS_CREDENTIALS() = FALSE
|
|
// aResult = RUN_WARNINGSCREEN_SELECTOR_TRANSITION_CLOUD_DOWN()
|
|
|
|
|
|
// ELIF NETWORK_IS_MULTIPLAYER_DISABLED()
|
|
// PRINTLN("Multiplayer has been selected for SWITCH! BUT Run NETWORK_IS_MULTIPLAYER_DISABLED() = TRUE ")
|
|
// PRINTLN("***\n")
|
|
//
|
|
// aResult = RUN_WARNINGSCREEN_TRANSITION_SELECTOR_GTAO_HEAVY_LOAD()
|
|
// IF aResult = WARNING_SCREEN_RETURN_ACCEPT
|
|
// aResult = WARNING_SCREEN_RETURN_CANCEL
|
|
// ENDIF
|
|
|
|
ELIF IS_PLAYSTATION_PLATFORM() AND NETWORK_HAVE_PLATFORM_SUBSCRIPTION() = FALSE
|
|
AND HAS_SYSTEM_SERVICE_TRIGGERED() = FALSE
|
|
PRINTLN("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run NETWORK_HAVE_PLATFORM_SUBSCRIPTION() = FALSE 2 ")
|
|
PRINTLN("***\n")
|
|
#IF USE_FINAL_PRINTS
|
|
PRINTLN_FINAL("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run NETWORK_HAVE_PLATFORM_SUBSCRIPTION() = FALSE 2 ")
|
|
#ENDIF
|
|
|
|
IF IS_PLAYSTATION_PLATFORM()
|
|
|
|
IF IS_SYSTEM_UI_BEING_DISPLAYED() = FALSE
|
|
AND bShownPSPlusSignIn = TRUE
|
|
aResult = RUN_WARNINGSCREEN_TRANSITION_NO_PS_PLUS()
|
|
ENDIF
|
|
IF bShownPSPlusSignIn = FALSE
|
|
NETWORK_SHOW_ACCOUNT_UPGRADE_UI()
|
|
bShownPSPlusSignIn = TRUE
|
|
ENDIF
|
|
|
|
ELSE
|
|
aResult = RUN_WARNINGSCREEN_TRANSITION_UNDERAGE()
|
|
ENDIF
|
|
|
|
IF aResult = WARNING_SCREEN_RETURN_ACCEPT
|
|
aResult = WARNING_SCREEN_RETURN_CANCEL
|
|
ENDIF
|
|
|
|
ELIF IS_XBOX_PLATFORM() AND NETWORK_HAVE_PLATFORM_SUBSCRIPTION() = FALSE
|
|
AND HAS_SYSTEM_SERVICE_TRIGGERED() = FALSE
|
|
// display alert
|
|
PRINTLN("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run RUN_WARNINGSCREEN_TRANSITION_NO_XBOX_GOLD NETWORK_HAVE_PLATFORM_SUBSCRIPTION() = FALSE 2 ")
|
|
PRINTLN("***\n")
|
|
#IF USE_FINAL_PRINTS
|
|
PRINTLN_FINAL("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run RUN_WARNINGSCREEN_TRANSITION_NO_XBOX_GOLD NETWORK_HAVE_PLATFORM_SUBSCRIPTION() = FALSE 2 ")
|
|
#ENDIF
|
|
|
|
IF bShownPSPlusSignIn = FALSE
|
|
DOES_PLAYER_HAVE_XBOX_GOLD_MEMBERSHIP(TRUE)
|
|
bShownPSPlusSignIn = TRUE
|
|
ENDIF
|
|
aResult = RUN_WARNINGSCREEN_TRANSITION_NO_XBOX_GOLD()
|
|
IF aResult = WARNING_SCREEN_RETURN_ACCEPT
|
|
aResult = WARNING_SCREEN_RETURN_CANCEL
|
|
ENDIF
|
|
//
|
|
ELIF GET_ACCOUNT_PERMISSION_SETUP() = ACCOUNT_PERMS_BLOCKED
|
|
|
|
PRINTLN("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run GET_ACCOUNT_PERMISSION_SETUP() = ACCOUNT_PERMS_BLOCKED ")
|
|
PRINTLN("***\n")
|
|
#IF USE_FINAL_PRINTS
|
|
PRINTLN_FINAL("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run GET_ACCOUNT_PERMISSION_SETUP() = ACCOUNT_PERMS_BLOCKED ")
|
|
#ENDIF
|
|
aResult = RUN_WARNINGSCREEN_TRANSITION_UNDERAGE()
|
|
|
|
IF aResult = WARNING_SCREEN_RETURN_ACCEPT
|
|
aResult = WARNING_SCREEN_RETURN_CANCEL
|
|
ENDIF
|
|
|
|
|
|
// ELIF NETWORK_CAN_ENTER_MULTIPLAYER() = FALSE
|
|
// AND GET_CURRENT_GAMEMODE() != GAMEMODE_FM
|
|
|
|
ELIF IS_PLAYER_LOGGING_IN_NP() = TRUE
|
|
|
|
PRINTLN("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run IS_PLAYER_LOGGING_IN_NP() = TRUE ")
|
|
PRINTLN("***\n")
|
|
#IF USE_FINAL_PRINTS
|
|
PRINTLN_FINAL("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run IS_PLAYER_LOGGING_IN_NP() = TRUE ")
|
|
#ENDIF
|
|
|
|
// ELIF IS_PC_VERSION()
|
|
ELIF nAccessCode = ACCESS_DENIED_NO_SCS_PRIVILEGE
|
|
// display alert
|
|
|
|
PRINTLN("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run IS_PC_VERSION RUN_WARNINGSCREEN_TRANSITION_SOCIAL_CLUB_BANNED 2 ")
|
|
PRINTLN("***\n")
|
|
#IF USE_FINAL_PRINTS
|
|
PRINTLN_FINAL("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run IS_PC_VERSION RUN_WARNINGSCREEN_TRANSITION_SOCIAL_CLUB_BANNED 2 ")
|
|
#ENDIF
|
|
aResult = RUN_WARNINGSCREEN_TRANSITION_SOCIAL_CLUB_BANNED()
|
|
IF aResult = WARNING_SCREEN_RETURN_ACCEPT
|
|
aResult = WARNING_SCREEN_RETURN_CANCEL
|
|
ENDIF
|
|
|
|
|
|
|
|
ELIF NETWORK_IS_CLOUD_AVAILABLE() = FALSE
|
|
PRINTLN("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT NETWORK_IS_CLOUD_AVAILABLE() = FALSE ")
|
|
PRINTLN("***\n")
|
|
#IF USE_FINAL_PRINTS
|
|
PRINTLN_FINAL("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT NETWORK_IS_CLOUD_AVAILABLE() = FALSE ")
|
|
#ENDIF
|
|
aResult = RUN_WARNINGSCREEN_TRANSITION_CLOUD_DOWN()
|
|
IF aResult = WARNING_SCREEN_RETURN_ACCEPT
|
|
aResult = WARNING_SCREEN_RETURN_CANCEL
|
|
ENDIF
|
|
|
|
ELIF NETWORK_HAS_VALID_ROS_CREDENTIALS() = FALSE
|
|
PRINTLN("Multiplayer has been selected for SWITCH! BUT NETWORK_HAS_VALID_ROS_CREDENTIALS() = FALSE, - NO SCREEN ")
|
|
PRINTLN("***\n")
|
|
#IF USE_FINAL_PRINTS
|
|
PRINTLN_FINAL("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT NETWORK_HAS_VALID_ROS_CREDENTIALS() = FALSE, - NO SCREEN ")
|
|
#ENDIF
|
|
|
|
RESET_NET_TIMER(g_st_ROSInvalidSelectorTimer)
|
|
|
|
ELIF NETWORK_IS_TUNABLE_CLOUD_REQUEST_PENDING()
|
|
PRINTLN("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT NETWORK_IS_TUNABLE_CLOUD_REQUEST_PENDING() = TRUE, - NO SCREEN 2 ")
|
|
PRINTLN("***\n")
|
|
#IF USE_FINAL_PRINTS
|
|
PRINTLN_FINAL("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT NETWORK_IS_TUNABLE_CLOUD_REQUEST_PENDING() = TRUE, - NO SCREEN 2 ")
|
|
#ENDIF
|
|
|
|
ELIF nAccessCode = ACCESS_DENIED_NO_TUNABLES AND GET_CURRENT_GAMEMODE() != GAMEMODE_FM
|
|
|
|
PRINTLN("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run ACCESS_DENIED_NO_TUNABLES 2 ")
|
|
PRINTLN("***\n")
|
|
#IF USE_FINAL_PRINTS
|
|
PRINTLN_FINAL("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run ACCESS_DENIED_NO_TUNABLES 2 ")
|
|
#ENDIF
|
|
aResult = RUN_WARNINGSCREEN_TRANSITION_SELECTOR_GTAO_NO_TUNABLES()
|
|
IF aResult = WARNING_SCREEN_RETURN_ACCEPT
|
|
aResult = WARNING_SCREEN_RETURN_CANCEL
|
|
ENDIF
|
|
|
|
ELIF NETWORK_IS_CLOUD_BACKGROUND_SCRIPT_REQUEST_PENDING()
|
|
PRINTLN("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT NETWORK_IS_CLOUD_BACKGROUND_SCRIPT_REQUEST_PENDING() = TRUE, - NO SCREEN 2 ")
|
|
PRINTLN("***\n")
|
|
#IF USE_FINAL_PRINTS
|
|
PRINTLN_FINAL("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT NETWORK_IS_CLOUD_BACKGROUND_SCRIPT_REQUEST_PENDING() = TRUE, - NO SCREEN 2 ")
|
|
#ENDIF
|
|
|
|
IF BUSYSPINNER_IS_ON() = FALSE
|
|
BEGIN_TEXT_COMMAND_BUSYSPINNER_ON("MP_SPINLOADING")
|
|
END_TEXT_COMMAND_BUSYSPINNER_ON(ENUM_TO_INT(LOADING_ICON_LOADING))
|
|
ENDIF
|
|
|
|
ELIF nAccessCode = ACCESS_DENIED_NO_BACKGROUND_SCRIPT //
|
|
|
|
|
|
|
|
IF HAS_NET_TIMER_EXPIRED(g_st_ROSInvalidSelectorTimer, 3000)
|
|
PRINTLN("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run ACCESS_DENIED_NO_BACKGROUND_SCRIPT ")
|
|
PRINTLN("***\n")
|
|
#IF USE_FINAL_PRINTS
|
|
PRINTLN_FINAL("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run ACCESS_DENIED_NO_BACKGROUND_SCRIPT ")
|
|
#ENDIF
|
|
aResult = RUN_WARNINGSCREEN_TRANSITION_SELECTOR_GTAO_NO_BACKGROUND()
|
|
IF aResult = WARNING_SCREEN_RETURN_ACCEPT
|
|
aResult = WARNING_SCREEN_RETURN_CANCEL
|
|
ENDIF
|
|
ELSE
|
|
PRINTLN("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run ACCESS_DENIED_NO_BACKGROUND_SCRIPT - NO SCREEN - Wait a bit ")
|
|
PRINTLN("***\n")
|
|
#IF USE_FINAL_PRINTS
|
|
PRINTLN_FINAL("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run ACCESS_DENIED_NO_BACKGROUND_SCRIPT - NO SCREEN - Wait a bit ")
|
|
#ENDIF
|
|
|
|
ENDIF
|
|
|
|
|
|
ELIF nAccessCode = ACCESS_DENIED_MULTIPLAYER_DISABLED
|
|
OR NETWORK_IS_MULTIPLAYER_DISABLED()
|
|
|
|
aResult = RUN_WARNINGSCREEN_TRANSITION_SELECTOR_GTAO_MAINTENANCE()
|
|
IF aResult = WARNING_SCREEN_RETURN_ACCEPT
|
|
aResult = WARNING_SCREEN_RETURN_CANCEL
|
|
ENDIF
|
|
|
|
PRINTLN("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT ACCESS_DENIED_MULTIPLAYER_DISABLED - NO SCREEN ")
|
|
PRINTLN("***\n")
|
|
#IF USE_FINAL_PRINTS
|
|
PRINTLN_FINAL("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT ACCESS_DENIED_MULTIPLAYER_DISABLED - NO SCREEN ")
|
|
#ENDIF
|
|
#IF NOT FEATURE_GEN9_STANDALONE
|
|
ELIF IS_SP_PROLOGUE_FINISHED() = FALSE
|
|
|
|
PRINTLN("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run IS_SP_PROLOGUE_FINISHED() = FALSE ")
|
|
PRINTLN("***\n")
|
|
#IF USE_FINAL_PRINTS
|
|
PRINTLN_FINAL("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run IS_SP_PROLOGUE_FINISHED() = FALSE ")
|
|
#ENDIF
|
|
aResult = RUN_WARNINGSCREEN_TRANSITION_SELECTOR_SP_PROLOGUE_NOT_DONE()
|
|
IF aResult = WARNING_SCREEN_RETURN_ACCEPT
|
|
aResult = WARNING_SCREEN_RETURN_CANCEL
|
|
ENDIF
|
|
#ENDIF // NOT FEATURE_GEN9_STANDALONE
|
|
|
|
ELIF GET_CURRENT_GAMEMODE() = GAMEMODE_FM
|
|
|
|
PRINTLN("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run QUIT MP? ")
|
|
PRINTLN("***\n")
|
|
#IF USE_FINAL_PRINTS
|
|
PRINTLN_FINAL("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run QUIT MP? ")
|
|
#ENDIF
|
|
|
|
// Show the SP upsell prompt if applicable
|
|
#IF FEATURE_GEN9_STANDALONE
|
|
IF NOT HAS_MULTIPLAYER_BEEN_SELECTED(sSelectorPeds)
|
|
AND NOT HAS_STORY_ENTITLEMENT()
|
|
aResult = RUN_WARNINGSCREEN_ENTER_SP_UPSELL()
|
|
|
|
IF aResult = WARNING_SCREEN_RETURN_ACCEPT
|
|
SET_LAUNCH_LANDING_PAGE_TO_SP_UPSELL(SPL_CHARACTER_SELECTION_WHEEL)
|
|
ENDIF
|
|
ELSE
|
|
#ENDIF // FEATURE_GEN9_STANDALONE
|
|
aResult = RUN_WARNINGSCREEN_QUIT_GTAONLINE()
|
|
|
|
IF aResult = WARNING_SCREEN_RETURN_ACCEPT
|
|
RESET_EVERYTHING_TRANSITION_SESSION_FOR_SP_BAIL(DEFAULT, FALSE)
|
|
|
|
#IF FEATURE_GEN9_STANDALONE
|
|
// Set script router link for return to story mode
|
|
srcData.eSource = SRCS_SCRIPT
|
|
srcData.eMode = SRCM_STORY
|
|
srcData.eArgType = SRCA_NONE
|
|
SET_SCRIPT_ROUTER_LINK(srcData)
|
|
#ENDIF // FEATURE_GEN9_STANDALONE
|
|
ENDIF
|
|
#IF FEATURE_GEN9_STANDALONE
|
|
ENDIF
|
|
#ENDIF // FEATURE_GEN9_STANDALONE
|
|
|
|
ELSE
|
|
|
|
PRINTLN("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run QUIT SP? ")
|
|
PRINTLN("***\n")
|
|
#IF USE_FINAL_PRINTS
|
|
PRINTLN_FINAL("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT Run QUIT SP? ")
|
|
#ENDIF
|
|
aResult = RUN_WARNINGSCREEN_QUIT_SINGLEPLAYER()
|
|
|
|
IF aResult = WARNING_SCREEN_RETURN_ACCEPT
|
|
RESET_EVERYTHING_TRANSITION_SESSION_FOR_SP_BAIL(DEFAULT, FALSE)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
|
|
IF IS_PLAYER_IN_CORONA()
|
|
AND IS_PLAYER_ON_A_PLAYLIST(PLAYER_ID())
|
|
AND NOT(HAS_EVENT_APP_LAUNCH_STRAIGHT_INTO_FREEMODE_RECIEVED()
|
|
OR HAS_EVENT_APP_LAUNCH_DIRECT_TO_CONTENT()
|
|
OR HAS_EVENT_APP_LAUNCH_LIVE_AREA_RECIEVED())
|
|
PRINTLN("[TS] [BCWHEEL] Multiplayer has been selected for SWITCH! BUT Player is in a corona! - QUIT ")
|
|
PRINTLN("***\n")
|
|
#IF USE_FINAL_PRINTS
|
|
PRINTLN_FINAL("[TS] [BCWHEEL] Multiplayer has been selected for SWITCH! BUT Player is in a corona! - QUIT ")
|
|
#ENDIF
|
|
|
|
aResult = WARNING_SCREEN_RETURN_CANCEL
|
|
ENDIF
|
|
|
|
|
|
|
|
IF aResult = WARNING_SCREEN_RETURN_ACCEPT
|
|
Run_warning_Screen = FALSE
|
|
bShownPSPlusSignIn = FALSE
|
|
|
|
IF ( HAS_EVENT_APP_LAUNCH_STRAIGHT_INTO_FREEMODE_RECIEVED()
|
|
OR HAS_EVENT_APP_LAUNCH_DIRECT_TO_CONTENT()
|
|
OR HAS_EVENT_APP_LAUNCH_LIVE_AREA_RECIEVED())
|
|
AND NOT IS_PLAYER_SWITCH_IN_PROGRESS()
|
|
AND g_sPlayerPedRequest.eState != PR_STATE_PROCESSING
|
|
|
|
IF g_bScriptsSetSafeForCutscene = TRUE
|
|
AND IS_GAMEPLAY_CAM_RENDERING() = FALSE
|
|
SET_EMERGENCY_SKYCAM_UP_RUNNING(TRUE)
|
|
ELSE
|
|
SET_SP_SELECTOR_SKYCAM_UP(TRUE)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
ELIF aResult = WARNING_SCREEN_RETURN_CANCEL
|
|
Run_warning_Screen = FALSE
|
|
bShownPSPlusSignIn = FALSE
|
|
g_iExternalWarningScreenStages = 0
|
|
REFRESH_ALL_OVERHEAD_DISPLAY()
|
|
SET_ALL_PLAYER_OVERHEADS_VISIBILITY(TRUE)
|
|
EXTERNAL_TRANSITION_CLEANUP(FALSE)
|
|
CLEAR_TRANSITION_SESSION_LAUNCHED_LIVE_TILE_WHEN_GAME_RUNNING()
|
|
CLEAR_TRANSITION_SESSION_LAUNCHED_LIVE_TILE_WHEN_GAME_RUNNING_MP()
|
|
g_b_ReapplyStickySaveFailedFeed = FALSE
|
|
RESET_EVENT_APP_LAUNCH_FLAG_RECIEVED()
|
|
bUISelection = FALSE
|
|
ENDIF
|
|
|
|
IF HAS_QUIT_CURRENT_GAME()
|
|
bShownPSPlusSignIn = FALSE
|
|
Run_warning_Screen = FALSE
|
|
g_iExternalWarningScreenStages = 0
|
|
REFRESH_ALL_OVERHEAD_DISPLAY()
|
|
SET_ALL_PLAYER_OVERHEADS_VISIBILITY(TRUE)
|
|
ENDIF
|
|
|
|
|
|
WAIT (0)
|
|
IF (NETWORK_IS_SIGNED_ONLINE() = FALSE )
|
|
SET_TIME_SCALE(1.0)
|
|
ENDIF
|
|
IF (GET_CURRENT_GAMEMODE() != GAMEMODE_FM
|
|
OR (NETWORK_IS_SIGNED_ONLINE() = FALSE AND (IS_SYSTEM_UI_BEING_DISPLAYED() OR IS_WARNING_MESSAGE_ACTIVE())))
|
|
IF IS_SCREEN_FADED_IN()
|
|
IF IS_WARNING_MESSAGE_ACTIVE() OR IS_SYSTEM_UI_BEING_DISPLAYED()
|
|
IF SHOULD_FADE_IN_SCREEN_WITH_MESSAGE()
|
|
IF IS_SCREEN_FADED_IN()
|
|
AND NOT IS_SCREEN_FADING_OUT()
|
|
DO_SCREEN_FADE_IN(0)
|
|
PRINTLN("[BCWHEEL] DO_SCREEN_FADE_IN(0) 1")
|
|
ENDIF
|
|
ENDIF
|
|
PRINTLN("[BCWHEEL] Multiplayer has been selected for SWITCH! BUT SET_GAME_PAUSED(TRUE) ")
|
|
SET_GAME_PAUSED(TRUE)
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
|
|
|
|
ENDWHILE
|
|
|
|
// CLEANUP_SELECTOR_UI()
|
|
SET_GAME_PAUSED(FALSE)
|
|
bBringUpSignInUI = FALSE
|
|
bShownPSPlusSignIn = FALSE
|
|
RUN_TRANSITION_SFX(FALSE)
|
|
ENDIF
|
|
|
|
|
|
|
|
IF bUISelection = FALSE
|
|
|
|
IF IS_SCREEN_FADED_OUT()
|
|
SET_NO_LOADING_SCREEN(FALSE)
|
|
IF NOT NETWORK_IS_GAME_IN_PROGRESS()
|
|
DO_SCREEN_FADE_IN(0)
|
|
PRINTLN("[BCWHEEL] DO_SCREEN_FADE_IN(0) 2")
|
|
ELSE
|
|
IF SHOULD_FADE_IN_SCREEN_WITH_MESSAGE()
|
|
DO_SCREEN_FADE_IN_FOR_TRANSITION(0)
|
|
PRINTLN("[BCWHEEL] DO_SCREEN_FADE_IN(0) 2")
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
INT iPlayerNum = NATIVE_TO_INT(PLAYER_ID())
|
|
IF iPlayerNum > -1
|
|
//GlobalplayerBD_FM[iPlayerNum].bIsOnWarningScreen = FALSE
|
|
CLEAR_BIT(GlobalplayerBD_FM[iPlayerNum].boolReplacementBS,GlobalPlayerBroadcastDataFM_BS_bIsOnWarningScreen)
|
|
NET_NL()NET_PRINT("BC: GlobalPlayerBroadcastDataFM_BS_bIsOnWarningScreen) = FALSE ")
|
|
ENDIF
|
|
|
|
CLEANUP_SELECTOR_UI()
|
|
CLEANUP_MP_HEADSHOT()
|
|
|
|
SET_AUDIO_FLAG("AllowRadioOverScreenFade", FALSE)
|
|
bShownPSPlusSignIn = FALSE
|
|
g_Private_SwitchedSP_DuringActivity = FALSE
|
|
SET_SKYFREEZE_CLEAR(TRUE)
|
|
NET_NL()NET_PRINT("BC: bUISelection = FALSE: Run_warning_Screen = FALSE ")
|
|
EXIT
|
|
ENDIF
|
|
|
|
IF IS_REPEAT_PLAY_ACTIVE()
|
|
bShownPSPlusSignIn = FALSE
|
|
NET_NL()NET_PRINT("BR: Repeat play is active. Session about to restart. Exiting MP transition.")
|
|
FORCE_CLEANUP(FORCE_CLEANUP_FLAG_SP_TO_MP)
|
|
SET_AUDIO_FLAG("AllowRadioOverScreenFade", FALSE)
|
|
EXIT
|
|
ENDIF
|
|
|
|
NET_NL()NET_PRINT("BC: bUISelection = TRUE: Past Confirm Screen ")
|
|
|
|
SET_AUDIO_FLAG("AllowRadioOverScreenFade", FALSE)
|
|
|
|
// DRAW_FAKE_SWITCH()
|
|
|
|
// PLAY_MP_ENTRY_POSTFX()
|
|
HIDE_HUD_FOR_TRANSITION_THIS_FRAME()
|
|
|
|
IF NOT IS_PED_INJURED(PLAYER_PED_ID())
|
|
SET_PLAYER_INVINCIBLE(PLAYER_ID(), TRUE)
|
|
ENDIF
|
|
|
|
|
|
IF HAS_MULTIPLAYER_BEEN_SELECTED(sSelectorPeds)
|
|
AND IS_PAUSE_MENU_REQUESTING_TRANSITION() = FALSE
|
|
g_Private_MP_Picked_from_selector = TRUE
|
|
ELSE
|
|
g_Private_MP_Picked_from_selector = FALSE
|
|
ENDIF
|
|
|
|
|
|
NET_NL()NET_PRINT("[SELECTOR_CAM] g_Private_MP_Picked_from_selector = ")NET_PRINT_BOOL(g_Private_MP_Picked_from_selector)
|
|
NET_NL()NET_PRINT("[SELECTOR_CAM] g_Private_SwitchedSP_DuringActivity = ")NET_PRINT_BOOL(g_Private_SwitchedSP_DuringActivity)
|
|
NET_NL()NET_PRINT("[SELECTOR_CAM] g_bRunMultiplayerOnStartup = ")NET_PRINT_BOOL(g_bRunMultiplayerOnStartup)
|
|
NET_NL()NET_PRINT("[SELECTOR_CAM] LOBBY_AUTO_MULTIPLAYER_FREEMODE() = ")NET_PRINT_BOOL(LOBBY_AUTO_MULTIPLAYER_FREEMODE())
|
|
NET_NL()NET_PRINT("[SELECTOR_CAM] bMPAutoBootFromStartup = ")NET_PRINT_BOOL(bMPAutoBootFromStartup)
|
|
|
|
|
|
IF (g_Private_MP_Picked_from_selector
|
|
OR g_Private_SwitchedSP_DuringActivity)
|
|
AND NOT g_bRunMultiplayerOnStartup
|
|
AND NOT LOBBY_AUTO_MULTIPLAYER_FREEMODE()
|
|
AND NOT bMPAutoBootFromStartup
|
|
|
|
|
|
SET_SP_SELECTOR_SKYCAM_UP(TRUE)
|
|
ENDIF
|
|
|
|
|
|
IF bMPAutoBootFromStartup
|
|
IF IS_SCREEN_FADED_IN()
|
|
CPRINTLN(DEBUG_INIT, "<LOAD-CHOICE> Unflagging MPAutoBoot flag after screen has faded back in.")
|
|
#IF USE_FINAL_PRINTS
|
|
PRINTLN_FINAL("<2140379> <LOAD-CHOICE> Unflagging MPAutoBoot flag after screen has faded back in.")
|
|
#ENDIF
|
|
|
|
bMPAutoBootFromStartup = FALSE
|
|
ENDIF
|
|
ENDIF
|
|
|
|
|
|
IF IS_PAUSE_MENU_REQUESTING_TRANSITION()
|
|
AND g_eRunningMission = SP_MISSION_NONE
|
|
AND IS_SP_SELECTOR_SKYCAM_UP() = FALSE
|
|
AND IS_MP_PAUSE_MENU_SKYCAM_UP() = FALSE
|
|
AND IS_MP_SWAP_CHARACTERS_SKYCAM_UP() = FALSE
|
|
|
|
|
|
|
|
//Don't do the quick skycam as the property splits the gamecamera and player position often, causing crashes Bug 1689967
|
|
IF GET_NUMBER_OF_THREADS_RUNNING_THE_SCRIPT_WITH_THIS_HASH(HASH("AM_MP_PROPERTY_INT")) = 0
|
|
AND GET_CURRENT_GAMEMODE() != GAMEMODE_CREATOR
|
|
AND IS_SP_PAUSE_MENU_DURING_MISSIONS_SKYCAM_UP() = FALSE
|
|
#IF FEATURE_FREEMODE_ARCADE
|
|
#IF FEATURE_COPS_N_CROOKS
|
|
AND (GET_CURRENT_TRANSITION_FM_MENU_CHOICE() != FM_MENU_CHOICE_GOTO_CNC
|
|
OR GET_ARCADE_MODE_ENTRY_POINT() != ARCADE_ENTRY_POINT_PHONE)
|
|
#ENDIF
|
|
#ENDIF
|
|
SET_SP_PAUSE_MENU_SKYCAM_UP(TRUE)
|
|
ENDIF
|
|
|
|
IF GET_CURRENT_GAMEMODE() != GAMEMODE_FM
|
|
SET_SINGLEPLAYER_END_NOW()
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
IF IS_PAUSE_MENU_REQUESTING_TRANSITION()
|
|
AND g_eRunningMission != SP_MISSION_NONE
|
|
AND IS_SP_SELECTOR_SKYCAM_UP() = FALSE
|
|
AND IS_SP_PAUSE_MENU_DURING_MISSIONS_SKYCAM_UP() = FALSE
|
|
|
|
NET_NL()NET_PRINT("SELECTOR: ENTERING MP FROM A MISSION - SET_SKYFREEZE_FROZEN")
|
|
SET_SKYFREEZE_FROZEN()
|
|
SET_SP_PAUSE_MENU_DURING_MISSIONS_SKYCAM_UP(TRUE)
|
|
|
|
SET_SINGLEPLAYER_END_NOW()
|
|
ENDIF
|
|
|
|
|
|
|
|
g_Private_SwitchedSP_DuringActivity = FALSE
|
|
|
|
|
|
IF NOT NETWORK_IS_GAME_IN_PROGRESS()
|
|
// REMOVE ANY WEAPONS THAT MISSION SCRIPTS HAVE GIVEN THE PLAYER #1619373
|
|
INT iWeaponSlot
|
|
WEAPON_SLOT eWeaponSlot
|
|
WEAPON_TYPE eWeaponInSlot
|
|
enumCharacterList eCurrentPed = GET_CURRENT_PLAYER_PED_ENUM()
|
|
IF IS_PLAYER_PED_PLAYABLE(eCurrentPed)
|
|
FOR iWeaponSlot = 0 TO NUM_PLAYER_PED_WEAPON_SLOTS -1
|
|
eWeaponSlot = GET_PLAYER_PED_WEAPON_SLOT_FROM_INT(iWeaponSlot)
|
|
IF eWeaponSlot != WEAPONSLOT_INVALID
|
|
AND eWeaponSlot != WEAPONSLOT_UNARMED
|
|
eWeaponInSlot = GET_PED_WEAPONTYPE_IN_SLOT(PLAYER_PED_ID(), eWeaponSlot)
|
|
IF eWeaponInSlot != WEAPONTYPE_INVALID
|
|
AND eWeaponInSlot != WEAPONTYPE_UNARMED
|
|
IF NOT IS_PLAYER_PED_WEAPON_UNLOCKED(eCurrentPed, eWeaponInSlot)
|
|
// player has this weapon, remove it
|
|
SET_PED_AMMO(PLAYER_PED_ID(), eWeaponInSlot, 0)
|
|
REMOVE_WEAPON_FROM_PED(PLAYER_PED_ID(), eWeaponInSlot)
|
|
PRINTLN("Removing weapon from SP player that is locked -- ", GET_WEAPON_NAME(eWeaponInSlot))
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDFOR
|
|
ENDIF
|
|
|
|
STORE_PLAYER_PED_INFO(PLAYER_PED_ID())
|
|
STORE_Clock_For_Multiplayer_Switch() //#796096
|
|
|
|
// Cleanup random events
|
|
FORCE_CLEANUP(FORCE_CLEANUP_FLAG_RANDOM_EVENTS)
|
|
ENDIF
|
|
|
|
IF HAS_ANY_SELECTOR_PED_BEEN_SELECTED(sSelectorPeds)
|
|
SET_SOMETHING_QUITTING_MP(TRUE)
|
|
ENDIF
|
|
|
|
// Prepare states
|
|
DISABLE_CONTROL_ACTION(FRONTEND_CONTROL, INPUT_FRONTEND_PAUSE)
|
|
// HIDE_HUD_FOR_TRANSITION_THIS_FRAME()
|
|
|
|
DISABLE_CELLPHONE(TRUE)
|
|
SPECIAL_ABILITY_DEACTIVATE(PLAYER_ID())
|
|
// CLEANUP_SELECTOR_UI()
|
|
// CLEANUP_MP_HEADSHOT()
|
|
|
|
//SCRIPT_ASSERT("KILLING FACE TO FACE CONVERSATION")
|
|
KILL_FACE_TO_FACE_CONVERSATION_DO_NOT_FINISH_LAST_LINE()
|
|
KILL_ANY_CONVERSATION()
|
|
// SET_MP_HUD_ON_SCREEN(TRUE)
|
|
DISPLAYING_SCRIPT_HUD(HUDPART_TRANSITIONHUD, TRUE)
|
|
RESET_NET_TIMER(TransitionFailsafe_Timer)
|
|
|
|
IF BUSYSPINNER_IS_ON()
|
|
BUSYSPINNER_OFF()
|
|
ENDIF
|
|
|
|
// PRINTLN("About to request and launch MP_PROP_GLOBAL_BLOCK.sc ")
|
|
// REQUEST_SCRIPT("MP_PROP_GLOBAL_BLOCK")
|
|
// WHILE NOT HAS_SCRIPT_LOADED("MP_PROP_GLOBAL_BLOCK")
|
|
// WAIT(0)
|
|
// REQUEST_SCRIPT("MP_PROP_GLOBAL_BLOCK")
|
|
// ENDWHILE
|
|
// START_NEW_SCRIPT("MP_PROP_GLOBAL_BLOCK",DEFAULT_STACK_SIZE)
|
|
//
|
|
// PRINTLN("Give tunables_registration one frame to run before requesting and launching main_persistent.")
|
|
//
|
|
// WAIT(0)
|
|
|
|
// HIDE_HUD_FOR_TRANSITION_THIS_FRAME()
|
|
|
|
// Launch the multiplayer hud
|
|
REQUEST_SCRIPT("MainTransition")
|
|
WHILE NOT HAS_SCRIPT_LOADED("MainTransition")
|
|
AND bUISelection
|
|
PRINTSTRING("loading script MainTransition")
|
|
DISABLE_CONTROL_ACTION(FRONTEND_CONTROL, INPUT_FRONTEND_PAUSE)
|
|
// HIDE_HUD_FOR_TRANSITION_THIS_FRAME()
|
|
// DRAW_FAKE_SWITCH()
|
|
PRINTNL()
|
|
|
|
// IS_QUICK_CAMERA_QUIT_FINISHED()
|
|
|
|
// IF (GET_THE_NETWORK_TIMER() - TransitionFailsafe_Timer) > 20000
|
|
IF HAS_NET_TIMER_EXPIRED(TransitionFailsafe_Timer, 20000)
|
|
FAILSAFE_PLAYER_RESPAWN()
|
|
bUISelection = FALSE
|
|
EXIT
|
|
ENDIF
|
|
|
|
#IF USE_REPLAY_RECORDING_TRIGGERS
|
|
CLEANUP_REPLAY_RECORD_FEED()
|
|
#ENDIF
|
|
|
|
WAIT(0)
|
|
ENDWHILE
|
|
|
|
#IF USE_REPLAY_RECORDING_TRIGGERS
|
|
CLEANUP_REPLAY_RECORD_FEED()
|
|
#ENDIF
|
|
CLEANUP_SELECTOR_UI()
|
|
CLEANUP_MP_HEADSHOT()
|
|
|
|
IF NOT IS_EMERGENCY_SKYCAM_UP_RUNNING()
|
|
IF IS_SCREEN_FADED_OUT()
|
|
SET_NO_LOADING_SCREEN(FALSE)
|
|
SET_AUDIO_FLAG("AllowRadioOverScreenFade", FALSE)
|
|
IF NOT NETWORK_IS_GAME_IN_PROGRESS()
|
|
DO_SCREEN_FADE_IN(0)
|
|
PRINTLN("[BCWHEEL] DO_SCREEN_FADE_IN(0) 3")
|
|
ELSE
|
|
IF SHOULD_FADE_IN_SCREEN_WITH_MESSAGE()
|
|
DO_SCREEN_FADE_IN_FOR_TRANSITION(0)
|
|
PRINTLN("[BCWHEEL] DO_SCREEN_FADE_IN(0) 3")
|
|
ENDIF
|
|
ENDIF
|
|
|
|
ENDIF
|
|
ENDIF
|
|
//
|
|
IF g_sMPTunables.bDisablePVDuplicateFix = FALSE
|
|
AND HAS_DEFAULT_INFO_BEEN_SET() // Only process if we have initialised SP data.
|
|
WHILE NOT IS_CHARACTER_MODEL_CHECK_DONE()
|
|
|
|
PRINTLN("BC: Selector is waiting for g_bCharacterModelCheckDone to be TRUE. ")
|
|
#IF USE_FINAL_PRINTS
|
|
PRINTLN_FINAL("<2140379> Selector is waiting for g_bCharacterModelCheckDone to be TRUE.")
|
|
#ENDIF
|
|
|
|
MAINTAIN_SP_CHARACTER_MODEL_CHECK()
|
|
WAIT(0)
|
|
ENDWHILE
|
|
ELSE
|
|
PRINTLN("MAINTAIN_SP_CHARACTER_MODEL_CHECK - Skipping char model checks. bDisablePVDuplicateFix = ", g_sMPTunables.bDisablePVDuplicateFix, ", HAS_DEFAULT_INFO_BEEN_SET = ", HAS_DEFAULT_INFO_BEEN_SET())
|
|
#IF USE_FINAL_PRINTS
|
|
PRINTLN_FINAL("<2140379> Skipping char model checks. bDisablePVDuplicateFix = ", g_sMPTunables.bDisablePVDuplicateFix, ", HAS_DEFAULT_INFO_BEEN_SET = ", HAS_DEFAULT_INFO_BEEN_SET())
|
|
#ENDIF
|
|
|
|
SET_CHARACTER_MODEL_CHECK_DONE(TRUE)
|
|
ENDIF
|
|
|
|
PRINTLN("About to start the MainTransition script when a TRANSITION_STACK_SIZE stack is free")
|
|
WHILE GET_NUMBER_OF_FREE_STACKS_OF_THIS_SIZE(TRANSITION_STACK_SIZE) = 0
|
|
WAIT(0)
|
|
ENDWHILE
|
|
PRINTLN("MainTransition script ready to start")
|
|
|
|
g_tiTransitionThread = START_NEW_SCRIPT("MainTransition", TRANSITION_STACK_SIZE)
|
|
SET_SCRIPT_AS_NO_LONGER_NEEDED("MainTransition")
|
|
|
|
// disable prospero activity script routing
|
|
#IF FEATURE_GEN9_STANDALONE
|
|
SET_ACTIVITY_SCRIPT_ROUTING_ENABLED(FALSE)
|
|
#ENDIF
|
|
|
|
g_b_isSelectorAbouttoBootMaintransition = FALSE
|
|
bMPAutoBootFromStartup = FALSE
|
|
|
|
// Wait for the player to make their decision on the multiplayer hud
|
|
|
|
|
|
|
|
WHILE IS_THREAD_ACTIVE(g_tiTransitionThread) AND (GET_CURRENT_TRANSITION_STATE() != TRANSITION_STATE_WAIT_FOR_SINGLEPLAYER_TO_START)
|
|
DISABLE_CONTROL_ACTION(FRONTEND_CONTROL, INPUT_FRONTEND_PAUSE)
|
|
HIDE_HUD_FOR_TRANSITION_THIS_FRAME()
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
UPDATE_SKYSWOOP_WIDGETS()
|
|
#ENDIF
|
|
|
|
WAIT(0)
|
|
ENDWHILE
|
|
|
|
|
|
// Wait for the transition to complete
|
|
WHILE IS_SKYSWOOP_MOVING()
|
|
DISABLE_CONTROL_ACTION(FRONTEND_CONTROL, INPUT_FRONTEND_PAUSE)
|
|
// HIDE_HUD_FOR_TRANSITION_THIS_FRAME()
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
UPDATE_SKYSWOOP_WIDGETS()
|
|
#ENDIF
|
|
|
|
WAIT(0)
|
|
ENDWHILE
|
|
|
|
|
|
// Done
|
|
g_IsSomethingElseExittingMP = FALSE
|
|
SET_SOMETHING_QUITTING_MP(FALSE)
|
|
DISPLAYING_SCRIPT_HUD(HUDPART_TRANSITIONHUD, FALSE)
|
|
// SET_MP_HUD_ON_SCREEN(FALSE)
|
|
DISABLE_CELLPHONE(FALSE)
|
|
IF NETWORK_IS_GAME_IN_PROGRESS()
|
|
PRINTLN("[SWITCH MP/SP] Still in MP so clearing ambient switch request...")
|
|
CANCEL_PLAYER_PED_SWITCH_REQUEST()
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
//////////////////////////////////////////////////////////////////////////////////////////
|
|
/// Main procedures and functions
|
|
///
|
|
|
|
// PURPOSE: Creates any assets required for the script
|
|
PROC DO_INITIALISE()
|
|
|
|
g_sSelectorUI.iSFX_Display = -1
|
|
g_sSelectorUI.iSFX_HeadDown = -1
|
|
g_sSelectorUI.iSFX_Sky = -1
|
|
|
|
iIndicatorSFX[0] = -1
|
|
iIndicatorSFX[1] = -1
|
|
|
|
fLastTimeScaleSet = 1.0
|
|
fTargetScale = 1.0
|
|
bSlowingDownTime = FALSE
|
|
|
|
sSelectorPeds.bAmbient = TRUE
|
|
|
|
MAINTAIN_SELECTOR_RUNTIME_STATES()
|
|
|
|
// Progress to the next stage of the selector
|
|
eSelectorStage = SELECTOR_CONTROLLER
|
|
ENDPROC
|
|
|
|
// PURPOSE: Handles player input and updates system accordingly
|
|
PROC DO_CONTROLLER()
|
|
|
|
// Update UI and selection states
|
|
MAINTAIN_AMBIENT_SELECTOR()
|
|
|
|
// Update Scaleform movie details
|
|
MAINTAIN_SELECTOR_UI()
|
|
|
|
// Reset all the flags back to ambient setup
|
|
MAINTAIN_SELECTOR_RUNTIME_STATES()
|
|
ENDPROC
|
|
|
|
// PURPOSE: Cleans up any resources the script has created and then terminates the script
|
|
PROC SCRIPT_CLEANUP()
|
|
CLEANUP_SELECTOR_UI()
|
|
CLEANUP_MP_HEADSHOT()
|
|
|
|
//Purposefully "hidden" in amongst this script. We want it to be hard
|
|
//for hackers to spot these scripts in decompiled output. -BenR
|
|
#IF FEATURE_SP_DLC_BEAST_SECRET
|
|
#IF NOT FEATURE_SP_DLC_BEAST_SECRET_DEBUG
|
|
Cleanup_Beast_Unlock(sBeastUnlockVars)
|
|
#ENDIF
|
|
#ENDIF
|
|
|
|
TERMINATE_THIS_THREAD()
|
|
ENDPROC
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
PROC Maintain_transition_test()
|
|
IF g_binitiatejoinleavetest = TRUE
|
|
PRINTSTRING("/n automated test 1 ")
|
|
// Transition to Freemode from Single Player
|
|
//IF IS_CNC_RUNNING()
|
|
// IF NOT IS_PLAYER_PED_SWITCH_IN_PROGRESS()
|
|
//IF NOT IS_TRANSITION_MENU_TRIGGERED()
|
|
//IF NOT IS_PLAYER_PED_SWITCH_IN_PROGRESS()
|
|
IF NOT IS_SCRIPT_HUD_DISPLAYING(HUDPART_TRANSITIONHUD)
|
|
AND NOT IS_PLAYER_DEAD(PLAYER_ID())
|
|
AND NOT IS_TRANSITION_RUNNING()
|
|
|
|
IF IS_PLAYER_PLAYING(PLAYER_ID())
|
|
AND IS_PLAYER_CONTROL_ON(PLAYER_ID())
|
|
AND CAN_PLAYER_START_MISSION(PLAYER_ID())
|
|
PRINTSTRING("/n automated test 2 ")
|
|
MP_GAMEMODE gamemode = GET_CURRENT_GAMEMODE()
|
|
//DO_INITIALISE()
|
|
SWITCH gamemode
|
|
|
|
CASE GAMEMODE_SP
|
|
//AND IS_PLAYER_PLAYING(PLAYER_ID())
|
|
PRINTSTRING("/n Switch to Freemode with automated test ")
|
|
/*g_qlWhichTeam = QUICKLAUNCH_FREEMODE
|
|
g_HaveIShiftedIntoTheGame = TRUE
|
|
IF NOT (IS_TRANSITION_MENU_TRIGGERED())
|
|
TRIGGER_TRANSITION_MENU_ACTIVE(TRUE)
|
|
ENDIF*/
|
|
SET_QUICKLAUNCH_STATE(QUICKLAUNCH_FREEMODE)
|
|
BREAK
|
|
|
|
CASE GAMEMODE_FM
|
|
//AND IS_PLAYER_PLAYING(PLAYER_ID())
|
|
PRINTSTRING("/n Switch to CNC Mexican gang automated test")
|
|
/*g_qlWhichTeam = QUICKLAUNCH_CNC_VAGOS
|
|
g_HaveIShiftedIntoTheGame = TRUE
|
|
// SET_MP_HUD_ON_SCREEN(TRUE)
|
|
IF NOT (IS_TRANSITION_MENU_TRIGGERED())
|
|
TRIGGER_TRANSITION_MENU_ACTIVE(TRUE)
|
|
ENDIF*/
|
|
SET_QUICKLAUNCH_STATE(QUICKLAUNCH_SP)
|
|
BREAK
|
|
|
|
// CASE GAMEMODE_CnC
|
|
// //AND IS_PLAYER_PLAYING(PLAYER_ID())
|
|
// PRINTSTRING("/n Switch to Single Player with automated test")
|
|
// /*g_iLeaveMultiplayerState = LEAVE_MP_STATE_YES
|
|
// g_HaveIShiftedIntoTheGame = TRUE
|
|
// g_TransitionCameraState = LEAVEMPHUD_MPTOSP
|
|
// GET_CURRENT_GAMEMODE() = GAMEMODE_EMPTY
|
|
// // SET_MP_HUD_ON_SCREEN(TRUE)
|
|
// IF NOT (IS_TRANSITION_MENU_TRIGGERED())
|
|
// TRIGGER_TRANSITION_MENU_ACTIVE(TRUE)
|
|
// ENDIF*/
|
|
// SET_QUICKLAUNCH_STATE(QUICKLAUNCH_SP)
|
|
// BREAK
|
|
ENDSWITCH
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDPROC
|
|
#ENDIF
|
|
|
|
|
|
SCRIPT
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
INITIALISE_SELECTOR_WIDGETS()
|
|
#ENDIF
|
|
|
|
NETWORK_SET_SCRIPT_IS_SAFE_FOR_NETWORK_GAME()
|
|
|
|
#IF FEATURE_SP_DLC_BEAST_SECRET
|
|
#IF NOT FEATURE_SP_DLC_BEAST_SECRET_DEBUG
|
|
Reset_Beast_Unlock_Variables(sBeastUnlockVars)
|
|
#IF IS_DEBUG_BUILD
|
|
Create_Beast_Unlock_Widgets(sBeastUnlockVars, widgetID)
|
|
#ENDIF
|
|
#ENDIF
|
|
#ENDIF
|
|
|
|
//0 is valid value, so default to -1 before the Selector listeners process. BC: 31/07/2014
|
|
RESET_EVENT_APP_LAUNCH_FLAG_RECIEVED()
|
|
|
|
// The main mission loop
|
|
WHILE TRUE
|
|
|
|
#IF FEATURE_SP_DLC_BEAST_SECRET
|
|
#IF NOT FEATURE_SP_DLC_BEAST_SECRET_DEBUG
|
|
Maintain_Beast_Unlock(sBeastUnlockVars)
|
|
#ENDIF
|
|
#ENDIF
|
|
|
|
SWITCH eSelectorStage
|
|
CASE SELECTOR_INITIALISE
|
|
DO_INITIALISE()
|
|
BREAK
|
|
|
|
CASE SELECTOR_CONTROLLER
|
|
DO_CONTROLLER()
|
|
BREAK
|
|
|
|
CASE SELECTOR_END
|
|
SCRIPT_CLEANUP()
|
|
BREAK
|
|
ENDSWITCH
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
UPDATE_SELECTOR_WIDGETS()
|
|
UPDATE_SKYSWOOP_WIDGETS()
|
|
|
|
#IF FEATURE_SP_DLC_BEAST_SECRET
|
|
#IF NOT FEATURE_SP_DLC_BEAST_SECRET_DEBUG
|
|
Update_Beast_Unlock_Widgets(sBeastUnlockVars)
|
|
#ENDIF
|
|
#ENDIF
|
|
|
|
#ENDIF
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
IF NOT IS_PLAYER_PED_SWITCH_IN_PROGRESS()
|
|
Maintain_transition_test()
|
|
ENDIF
|
|
#ENDIF
|
|
|
|
|
|
WAIT(0)
|
|
|
|
ENDWHILE
|
|
|
|
ENDSCRIPT
|