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

2718 lines
111 KiB
Python
Executable File

// *****************************************************************************************
// *****************************************************************************************
// *****************************************************************************************
//
// MISSION NAME : appJIPMP.sc
// AUTHOR : RowanC based on Keiths's MP template
// DESCRIPTION : Alows players to Join a quick Job from their phone (DM, RACE, MISSION ETC).
//
//
//
// *****************************************************************************************
// *****************************************************************************************
// *****************************************************************************************
USING "rage_builtins.sch"
USING "globals.sch"
USING "commands_script.sch"
USING "net_app_public.sch"
USING "cellphone_public.sch"
USING "transition_common.sch"
USING "net_transition_sessions.sch"
USING "FM_Quickmatch_Header.sch"
USING "drunk_public.sch"
USING "net_cash_transactions.sch"
USING "net_corona_V2.sch"
// ===========================================================================================================
// Variables and Constants
// ===========================================================================================================
// JIP_MP Screen Stages
ENUM enumJIPMPStages
QUICKMATCH_MODE_LIST, // The List of joinable modes
QUICKMATCH_FRIENDS_OR_SELF_OR_ON_CALL, // A comfirm with friends
QUICKMATCH_SUBLIST, // Sublist screen
QUICKMATCH_OFFER_JOIN // A comfirm join mode screen
ENDENUM
enumJIPMPStages m_currentStage = QUICKMATCH_MODE_LIST
ENUM enumQuickMatchModes
QUICKMATCH_MODE_SERIES = 0,
QUICKMATCH_MODE_HEISTS,
QUICKMATCH_MODE_CONTACT_MISSIONS,
QUICKMATCH_MODE_JOBS,
QUICKMATCH_MODE_ACTIVITIES,
QUICKMATCH_MODE_PLAYLIST,
QUICKMATCH_MODE_RANDOM,
QUICKMATCH_MODE_MAX
ENDENUM
enumQuickMatchModes m_currentMode = QUICKMATCH_MODE_SERIES
ENUM enumQuickMatchSeries
QUICKMATCH_SERIES_FEATURED = 0,
QUICKMATCH_SERIES_COMMUNITY,
QUICKMATCH_SERIES_CAYO_PERICO,
#IF FEATURE_GEN9_EXCLUSIVE
QUICKMATCH_SERIES_HSW_RACE,
#ENDIF
QUICKMATCH_SERIES_STREET_RACE,
QUICKMATCH_SERIES_PURSUIT,
QUICKMATCH_SERIES_OPEN_WHEEL,
QUICKMATCH_SERIES_RACE,
QUICKMATCH_SERIES_SURVIVAL,
QUICKMATCH_SERIES_ARENA_WAR,
QUICKMATCH_SERIES_SPECIAL_RACE,
QUICKMATCH_SERIES_SUPER_SPORT,
QUICKMATCH_SERIES_TRANSFORM,
QUICKMATCH_SERIES_BUNKER,
QUICKMATCH_SERIES_STUNT,
QUICKMATCH_SERIES_ADVERSARY,
QUICKMATCH_SERIES_ACTIVE_PREMIUM_RACE,
QUICKMATCH_SERIES_MAX
ENDENUM
ENUM enumQuickMatchHeists
QUICKMATCH_HEISTS_HEIST = 0,
QUICKMATCH_HEISTS_DOOMSDAY,
QUICKMATCH_HEISTS_DIAMOND_CASINO,
#IF FEATURE_HEIST_ISLAND
QUICKMATCH_HEISTS_CAYO_PERICO,
#ENDIF
QUICKMATCH_HEISTS_MAX
ENDENUM
ENUM enumQuickMatchContactMissions
QUICKMATCH_CONTACT_MISSIONS_CONTACT = 0,
QUICKMATCH_CONTACT_MISSIONS_SHORT_TRIP,
QUICKMATCH_CONTACT_MISSIONS_AUTO_SHOP,
QUICKMATCH_CONTACT_MISSIONS_MOBILE_OPERATION,
QUICKMATCH_CONTACT_MISSIONS_SPECIAL_VEHICLE,
QUICKMATCH_CONTACT_MISSIONS_LAMAR,
QUICKMATCH_CONTACT_MISSIONS_MAX
ENDENUM
ENUM enumQuickMatchJobs
QUICKMATCH_JOBS_RACE = 0,
QUICKMATCH_JOBS_DEATHMATCH,
QUICKMATCH_JOBS_VERSUS,
QUICKMATCH_JOBS_LTS,
QUICKMATCH_JOBS_CAPTURE,
QUICKMATCH_JOBS_SURVIVAL,
QUICKMATCH_JOBS_PARACHUTING,
QUICKMATCH_JOBS_MAX
ENDENUM
ENUM enumQuickMatchActivities
QUICKMATCH_ACTIVITIES_ARM = 0 ,
QUICKMATCH_ACTIVITIES_DARTS,
QUICKMATCH_ACTIVITIES_GOLF,
QUICKMATCH_ACTIVITIES_RANGE ,
QUICKMATCH_ACTIVITIES_TENNIS,
QUICKMATCH_ACTIVITIES_MAX
ENDENUM
TEXT_LABEL_15 m_QuickMatchTextFM = "CELL_37"
TEXT_LABEL_15 m_areYouSureText = "CELL_249"
TEXT_LABEL_15 m_QuickMatchIconTextBack = "CELL_206"
TEXT_LABEL_15 m_QuickMatchIconTextYes = "CELL_212"
TEXT_LABEL_15 m_QuickMatchIconTextNo = "CELL_213"
// -----------------------------------------------------------------------------------------------------------
// NOTE: A List screen, which is view state 18
CONST_INT QUICKMATCH_LIST_VIEW_STATE 18
CONST_INT CONFIRM_VIEW_STATE 13
// -----------------------------------------------------------------------------------------------------------
TEXT_LABEL_23 m_currentWarningHelpText = ""
// The JIPMP List array position for the mode selected by the player
INT m_selectedQuickMatchSlot = 0
INT g_numQuickMatchListEntries = 6
INT iCanDoQuickmatch
BOOL bBlockAccept
CONST_INT ciFRIENDS_OPTION_WITH 0
CONST_INT ciFRIENDS_OPTION_ON_CALL 1
CONST_INT ciFRIENDS_OPTION_DIRECT 2
BOOL dpad_scroll_pause_cued = FALSE
BOOL bDisplayWithFriends
BOOl bPlayerIsDrunk
//[RANKED_RACES]
STRUCT GET_ELO_DATA
BOOL bGotElo
INT iReadStage
INT iLoadStage
INT iFailCount
BOOL bSuccessful
ENDSTRUCT
GET_ELO_DATA sGetEloData
INT iselectedModeSlot = 0
INT iSelectedContent = 0
INT iselectedFriendsOnCallSlot = -1
INT m_ModeList[QUICKMATCH_MODE_MAX]
INT m_SeriesList[QUICKMATCH_SERIES_MAX]
INT m_HeistsList[QUICKMATCH_HEISTS_MAX]
INT m_ContactMissionsList[QUICKMATCH_CONTACT_MISSIONS_MAX]
INT m_JobsList[QUICKMATCH_JOBS_MAX]
INT m_ActivitiesList[QUICKMATCH_ACTIVITIES_MAX]
INT m_iStageState
SCRIPT_TIMER stQuickMatchTimer
BOOL bDebounceOfferJobAccept = FALSE
SCALEFORM_RETURN_INDEX Choice_ReturnedSFIndex
INT slotsUsed = 0 //Slot counter, now also interrogated to decide which soft keys should be displayed.
INT slotsUsedContent = 0 //Slot counter, now also interrogated to decide which soft keys should be displayed.
// -----------------------------------------------------------------------------------------------------------
// An instance of the Mp App data struct (just include this - it allows some general functionality from net_app_public.sch to work - ie: screen navigation, etc
structMPAppData m_sAppData
PROC Display_Accept_Invite_Warning_Help_Text_If_Required()
// NOTE: Stores the help so that it can be check if still on display and removed when no longer needed (ie: screen change or app termination)
BOOL displayHelp = FALSE
IF GB_IS_PLAYER_CRITICAL_TO_JOB(PLAYER_ID())
IF GB_IS_LOCAL_PLAYER_MEMBER_OF_A_BIKER_GANG()
m_currentWarningHelpText = "PHINVQUITBBB"
ELSE
m_currentWarningHelpText = "PHINVQUITBB"
ENDIF
displayHelp = TRUE
ELIF IS_PLAYER_CRITICAL_TO_ANY_EVENT(PLAYER_ID())
m_currentWarningHelpText = "PHINVQUITB"
displayHelp = TRUE
ENDIF
IF (FM_EVENT_SHOULD_GIVE_PHONE_INVITE_WARNING())
m_currentWarningHelpText = "PHINVQUIT"
displayHelp = TRUE
ENDIF
IF (displayHelp)
PRINTLN("[TS] Display_Accept_Invite_Warning_Help_Text_If_Required(). Display: ", m_currentWarningHelpText)
ENDIF
PRINT_HELP(m_currentWarningHelpText)
ENDPROC
// -----------------------------------------------------------------------------------------------------------
PROC Clear_Accept_Invite_Warning_Help_Text_If_On_Display()
IF (IS_STRING_NULL_OR_EMPTY(m_currentWarningHelpText))
EXIT
ENDIF
// Is the message being displayed?
IF NOT (IS_THIS_HELP_MESSAGE_BEING_DISPLAYED(m_currentWarningHelpText))
// ...no, so clear the variable
m_currentWarningHelpText = ""
EXIT
ENDIF
// Message is being displayed, so clear it and the variable
CLEAR_HELP()
PRINTLN("[TS] : Clear_Accept_Invite_Warning_Help_Text_If_On_Display(). Clear: ", m_currentWarningHelpText)
m_currentWarningHelpText = ""
ENDPROC
//[RANKED_RACES]
FUNC BOOL GET_LOCAL_PLAYER_ELO()
IF GET_PLAYER_ELO_FOR_MODE(LEADERBOARD_FREEMODE_ELO_RACES_OVERALL, sGetEloData.iReadStage, sGetEloData.iLoadStage, sGetEloData.bSuccessful, g_TransitionSessionNonResetVars.sTransVars.iMyElo)
PRINTLN("[TS] GET_PLAYER_ELO_FOR_MODE - g_TransitionSessionNonResetVars.sTransVars.iMyElo = ", g_TransitionSessionNonResetVars.sTransVars.iMyElo)
//If we got it then move on
IF sGetEloData.bSuccessful
RETURN TRUE
ELSE
//If we failed 3 times then set it to default and give up!S
IF sGetEloData.iFailCount > 2
PRINTLN("[TS] GET_PLAYER_ELO_FOR_MODE - g_TransitionSessionNonResetVars.sTransVars.iMyElo = ", g_TransitionSessionNonResetVars.sTransVars.iMyElo)
SET_MY_TRANSITION_SESSION_ELO(1200)
RETURN TRUE
ENDIF
sGetEloData.iFailCount++
sGetEloData.iReadStage = 0
sGetEloData.iLoadStage = 0
ENDIF
ENDIF
RETURN FALSE
ENDFUNC
// ===========================================================================================================
// Cleanup Routines
// ===========================================================================================================
// PURPOSE: Cleanly terminates the script
PROC Cleanup_and_Terminate()
//[RANKED_RACES]
//If we've not got that ELO then wait to get it
// IF AM_I_TRANSITION_SESSIONS_STARTING_RANKED_QUICK_MATCH()
// IF sGetEloData.bGotElo = FALSE
// WHILE NOT GET_LOCAL_PLAYER_ELO()
// WAIT(0)
// ENDWHILE
// ENDIF
// ENDIF
Clear_Accept_Invite_Warning_Help_Text_If_On_Display()
TERMINATE_THIS_THREAD()
ENDPROC
FUNC BOOL SHOULD_SHOW_QUICKMATCH_MODE_MISSION_NEW_VS(INT iPlayList)
IF iPlayList != -1
AND g_sMPTunables.iProfesionalCoronaType[iPlayList] = FMMC_TYPE_MISSION_NEW_VS
AND g_sV2CoronaVars.iCurrentArrayPosProfessional[iPlayList] != -1
INT iStatBitSetTemp = GET_MP_INT_CHARACTER_STAT(MP_STAT_CHAR_FM_PIM_HIDE_MISC)
IF NOT IS_BIT_SET(iStatBitSetTemp, ciPI_HIDE_MENU_ITEM_JOBS_SERIES_FEATURED) AND SHOULD_HIDE_ALL_SERIES_MODE_BLIPS()
RETURN TRUE
ENDIF
ENDIF
RETURN FALSE
ENDFUNC
FUNC STRING GET_MODE_TEXT(enumQuickMatchModes eMode)
SWITCH eMode
CASE QUICKMATCH_MODE_SERIES RETURN "TUN_CELL_SERIES"
CASE QUICKMATCH_MODE_HEISTS RETURN "TUN_CELL_HEISTS"
CASE QUICKMATCH_MODE_CONTACT_MISSIONS RETURN "TUN_CELL_CONTACT_M"
CASE QUICKMATCH_MODE_JOBS RETURN "TUN_CELL_JOBS"
CASE QUICKMATCH_MODE_ACTIVITIES RETURN "TUN_CELL_ACTIVITIES"
CASE QUICKMATCH_MODE_PLAYLIST RETURN "JIPMP_PL"
CASE QUICKMATCH_MODE_RANDOM RETURN "JIPMP_ANY"
ENDSWITCH
RETURN ""
ENDFUNC
FUNC STRING GET_CONTENT_TEXT(enumQuickMatchModes eMode,INT index)
SWITCH eMode
CASE QUICKMATCH_MODE_SERIES
SWITCH INT_TO_ENUM(enumQuickMatchSeries,index)
CASE QUICKMATCH_SERIES_FEATURED
IF SHOULD_SHOW_QUICKMATCH_MODE_MISSION_NEW_VS(CV2_GET_NEW_VS_ARRAY_POS())
RETURN "JIPMP_STNTAM"
ELSE
RETURN "JIPMP_MISS_NV"
ENDIF
BREAK
CASE QUICKMATCH_SERIES_COMMUNITY RETURN "COM_SERIES"
CASE QUICKMATCH_SERIES_CAYO_PERICO RETURN "CAY_SERIES"
#IF FEATURE_GEN9_EXCLUSIVE
CASE QUICKMATCH_SERIES_HSW_RACE RETURN "HSW_SERIES"
#ENDIF
CASE QUICKMATCH_SERIES_STREET_RACE RETURN "SR_SERIES"
CASE QUICKMATCH_SERIES_PURSUIT RETURN "PU_SERIES"
CASE QUICKMATCH_SERIES_OPEN_WHEEL RETURN "OW_SERIES"
CASE QUICKMATCH_SERIES_RACE RETURN "RACE_SERIES"
CASE QUICKMATCH_SERIES_SURVIVAL RETURN "SURV_SERIES"
CASE QUICKMATCH_SERIES_ARENA_WAR RETURN "ARENA_SERIES"
CASE QUICKMATCH_SERIES_SPECIAL_RACE RETURN "JIPMP_SVR"
CASE QUICKMATCH_SERIES_SUPER_SPORT RETURN "HOT_SERIES"
CASE QUICKMATCH_SERIES_TRANSFORM RETURN "TRAN_SERIES"
CASE QUICKMATCH_SERIES_BUNKER RETURN "BNKR_SERIES"
CASE QUICKMATCH_SERIES_STUNT
IF g_sMPTunables.bDisableStuntSeriesBucket
RETURN "JIPMP_STNTRD"
ELSE
RETURN "JIPMP_STNTR"
ENDIF
BREAK
CASE QUICKMATCH_SERIES_ADVERSARY
IF g_sMPTunables.bDisableStuntSeriesBucket
RETURN "JIPMP_ADVSD"
ELSE
RETURN "JIPMP_ADVSR"
ENDIF
BREAK
CASE QUICKMATCH_SERIES_ACTIVE_PREMIUM_RACE RETURN "JIPMP_STNTPR"
ENDSWITCH
BREAK
CASE QUICKMATCH_MODE_HEISTS
SWITCH INT_TO_ENUM(enumQuickMatchHeists,index)
CASE QUICKMATCH_HEISTS_HEIST RETURN "JIPMP_HEIST"
CASE QUICKMATCH_HEISTS_DOOMSDAY RETURN "HUD_AWD_GANGOP"
CASE QUICKMATCH_HEISTS_DIAMOND_CASINO RETURN "CH_QM_PHONE"
#IF FEATURE_HEIST_ISLAND
CASE QUICKMATCH_HEISTS_CAYO_PERICO RETURN "IH_END_NAME"
#ENDIF
ENDSWITCH
BREAK
CASE QUICKMATCH_MODE_CONTACT_MISSIONS
SWITCH INT_TO_ENUM(enumQuickMatchContactMissions,index)
CASE QUICKMATCH_CONTACT_MISSIONS_CONTACT RETURN "JIPMP_MISS"
CASE QUICKMATCH_CONTACT_MISSIONS_SHORT_TRIP RETURN "JIPMP_STRIP"
CASE QUICKMATCH_CONTACT_MISSIONS_AUTO_SHOP RETURN "TUN_ROB_CONTR"
CASE QUICKMATCH_CONTACT_MISSIONS_MOBILE_OPERATION RETURN "JIPMP_WVM"
CASE QUICKMATCH_CONTACT_MISSIONS_SPECIAL_VEHICLE RETURN "JIPMP_SVM"
CASE QUICKMATCH_CONTACT_MISSIONS_LAMAR RETURN "JIPMP_MISS_FL"
ENDSWITCH
BREAK
CASE QUICKMATCH_MODE_JOBS
SWITCH INT_TO_ENUM(enumQuickMatchJobs,index)
CASE QUICKMATCH_JOBS_RACE RETURN "JIPMP_RACE"
CASE QUICKMATCH_JOBS_DEATHMATCH RETURN "JIPMP_DM"
CASE QUICKMATCH_JOBS_VERSUS RETURN "JIPMP_MISS_V"
CASE QUICKMATCH_JOBS_LTS RETURN "JIPMP_MISS_L"
CASE QUICKMATCH_JOBS_CAPTURE RETURN "JIPMP_MISS_C"
CASE QUICKMATCH_JOBS_SURVIVAL RETURN "JIPMP_SURV"
CASE QUICKMATCH_JOBS_PARACHUTING RETURN "JIPMP_PARA"
ENDSWITCH
BREAK
CASE QUICKMATCH_MODE_ACTIVITIES
SWITCH INT_TO_ENUM(enumQuickMatchActivities,index)
CASE QUICKMATCH_ACTIVITIES_ARM RETURN "JIPMP_ARM" //Join Arm Wrestling
CASE QUICKMATCH_ACTIVITIES_DARTS RETURN "JIPMP_DARTS" //Join Darts
CASE QUICKMATCH_ACTIVITIES_GOLF RETURN "JIPMP_GOLF" //Join Golf
CASE QUICKMATCH_ACTIVITIES_RANGE RETURN "JIPMP_RANG" //Join Range
CASE QUICKMATCH_ACTIVITIES_TENNIS RETURN "JIPMP_TEN" //Join Tennis
ENDSWITCH
BREAK
ENDSWITCH
RETURN ""
ENDFUNC
FUNC BOOL IS_ANY_MODE_AVAILABLE()
IF IS_FM_TYPE_UNLOCKED(FMMC_TYPE_RACE)
OR IS_FM_TYPE_UNLOCKED(FMMC_TYPE_DEATHMATCH)
OR IS_FM_TYPE_UNLOCKED(FMMC_TYPE_MISSION)
OR IS_FM_TYPE_UNLOCKED(FMMC_TYPE_SURVIVAL)
OR IS_FM_TYPE_UNLOCKED(FMMC_TYPE_BASE_JUMP)
RETURN TRUE
ENDIF
RETURN FALSE
ENDFUNC
//Find out if any of my pals are in the session
FUNC BOOL ARE_ANY_FRIENDS_INT_THIS_SESSION()
//If it's a solo session or we are off line then no!
IF IS_THIS_A_SOLO_SESSION()
OR HAS_ENTERED_OFFLINE_SAVE_FM()
OR g_sMPTunables.bDisableQuickJobWithFriends
OR g_sMPTunables.bOnCallFriendsDisabled
OR (m_currentMode = QUICKMATCH_MODE_SERIES AND m_SeriesList[iSelectedContent] = ENUM_TO_INT(QUICKMATCH_SERIES_ACTIVE_PREMIUM_RACE))
OR (m_currentMode = QUICKMATCH_MODE_CONTACT_MISSIONS AND m_ContactMissionsList[iSelectedContent] = ENUM_TO_INT(QUICKMATCH_CONTACT_MISSIONS_SPECIAL_VEHICLE))
OR (m_currentMode = QUICKMATCH_MODE_CONTACT_MISSIONS AND m_ContactMissionsList[iSelectedContent] = ENUM_TO_INT(QUICKMATCH_CONTACT_MISSIONS_MOBILE_OPERATION))
OR (m_currentMode = QUICKMATCH_MODE_CONTACT_MISSIONS AND m_ContactMissionsList[iSelectedContent] = ENUM_TO_INT(QUICKMATCH_CONTACT_MISSIONS_AUTO_SHOP))
OR (m_currentMode = QUICKMATCH_MODE_CONTACT_MISSIONS AND m_ContactMissionsList[iSelectedContent] = ENUM_TO_INT(QUICKMATCH_CONTACT_MISSIONS_SHORT_TRIP))
OR (m_currentMode = QUICKMATCH_MODE_HEISTS AND m_HeistsList[iSelectedContent] = ENUM_TO_INT(QUICKMATCH_HEISTS_DIAMOND_CASINO))
#IF FEATURE_HEIST_ISLAND
OR (m_currentMode = QUICKMATCH_MODE_HEISTS AND m_HeistsList[iSelectedContent] = ENUM_TO_INT(QUICKMATCH_HEISTS_CAYO_PERICO))
#ENDIF
#IF IS_DEBUG_BUILD
IF IS_THIS_A_SOLO_SESSION()
PRINTLN("appJIPMP - ARE_ANY_FRIENDS_INT_THIS_SESSION - IS_THIS_A_SOLO_SESSION!" )
ELIF g_sMPTunables.bDisableQuickJobWithFriends
PRINTLN("appJIPMP - ARE_ANY_FRIENDS_INT_THIS_SESSION - g_sMPTunables.bDisableQuickJobWithFriends = TRUE" )
ELIF g_sMPTunables.bOnCallFriendsDisabled
PRINTLN("appJIPMP - ARE_ANY_FRIENDS_INT_THIS_SESSION - g_sMPTunables.bOnCallFriendsDisabled = TRUE" )
ENDIF
#ENDIF
RETURN FALSE
ENDIF
INT iLoop
GAMER_HANDLE gamerHandle
PLAYER_INDEX tempPlayer
//Loop all and check if there is at leats one pal that is free!
REPEAT NUM_NETWORK_PLAYERS iLoop
tempPlayer = INT_TO_PLAYERINDEX(iLoop)
IF NETWORK_IS_PLAYER_ACTIVE(tempPlayer)
AND tempPlayer != PLAYER_ID()
gamerHandle = GET_GAMER_HANDLE_PLAYER(tempPlayer)
//Are the a friend
IF NETWORK_IS_FRIEND(gamerHandle)
//Are they free!
IF IS_THIS_PLAYER_FREE_TO_PLAY(tempPlayer)
PRINTLN("appJIPMP - ARE_ANY_FRIENDS_INT_THIS_SESSION - ", GET_PLAYER_NAME(tempPlayer), " is a friend" )
RETURN TRUE
ENDIF
ENDIF
ENDIF
ENDREPEAT
//No friends!
PRINTLN("appJIPMP - ARE_ANY_FRIENDS_INT_THIS_SESSION - NO!" )
RETURN FALSE
ENDFUNC
//Returns TRUE if all the heists have been compleated
FUNC BOOL HAVE_COMPLEATED_ALL_HEIST_MISSIONS_ON_CALL()
//If this feature is disabled then no
IF g_sMPTunables.bOnCallHeistAllUnlockedDisabled
RETURN FALSE
ENDIF
IF HAVE_COMPLEATED_ALL_HEIST_MISSIONS()
RETURN TRUE
ENDIF
//ir check the debug widgets
#IF IS_DEBUG_BUILD
IF g_sOnCallHesitDebug.bPassedFleeca
AND g_sOnCallHesitDebug.bPassedPrison
AND g_sOnCallHesitDebug.bPassedHumane
AND g_sOnCallHesitDebug.bPassedSeriesA
AND g_sOnCallHesitDebug.bPassedPacific
RETURN TRUE
ENDIF
#ENDIF
//No
RETURN FALSE
ENDFUNC
FUNC BOOL IS_MODE_AVAILABLE(enumQuickMatchModes eMode)
SWITCH eMode
CASE QUICKMATCH_MODE_SERIES
RETURN TRUE
BREAK
CASE QUICKMATCH_MODE_HEISTS
RETURN TRUE
BREAK
CASE QUICKMATCH_MODE_CONTACT_MISSIONS
RETURN TRUE
BREAK
CASE QUICKMATCH_MODE_JOBS
RETURN TRUE
BREAK
CASE QUICKMATCH_MODE_ACTIVITIES
IF g_sMPTunables.bOnCallMiniGamesDisabled
RETURN FALSE
ELSE
RETURN IS_FM_TYPE_UNLOCKED(FMMC_TYPE_MG_ARM_WRESTLING)
ENDIF
BREAK
CASE QUICKMATCH_MODE_PLAYLIST
IF IS_FM_TYPE_UNLOCKED(FMMC_TYPE_RACE)
AND IS_FM_TYPE_UNLOCKED(FMMC_TYPE_DEATHMATCH)
AND IS_FM_TYPE_UNLOCKED(FMMC_TYPE_MISSION)
AND IS_FM_TYPE_UNLOCKED(FMMC_TYPE_SURVIVAL)
AND IS_FM_TYPE_UNLOCKED(FMMC_TYPE_BASE_JUMP)
AND NOT IS_THIS_A_SOLO_SESSION()
AND NOT HAS_ENTERED_OFFLINE_SAVE_FM()
RETURN TRUE
ENDIF
BREAK
CASE QUICKMATCH_MODE_RANDOM
IF IS_ANY_MODE_AVAILABLE()
IF IS_THIS_A_SOLO_SESSION()
OR HAS_ENTERED_OFFLINE_SAVE_FM()
RETURN FALSE //Block this option by passing it back as unavailable.
ELSE
RETURN TRUE
ENDIF
ENDIF
BREAK
ENDSWITCH
RETURN FALSE
ENDFUNC
FUNC BOOL IS_CONTENT_AVAILABLE(enumQuickMatchModes eMode,INT index)
INT iPlayList
SWITCH eMode
CASE QUICKMATCH_MODE_SERIES
SWITCH INT_TO_ENUM(enumQuickMatchSeries,index)
CASE QUICKMATCH_SERIES_FEATURED
IF IS_THIS_A_SOLO_SESSION()
OR g_FMMC_ROCKSTAR_CREATED.iTypeCount[FMMC_TYPE_MISSION_VS_NEW_TYPE_COUNT] = 0
OR HAS_ENTERED_OFFLINE_SAVE_FM()
PRINTLN(" [NEWVS] - QUICKMATCH_MODE_MISSION_NEW_VS - RETURN FALSE")
RETURN FALSE
ELSE
RETURN IS_FM_TYPE_UNLOCKED(FMMC_TYPE_MISSION_VS) OR IS_FM_TYPE_UNLOCKED(FMMC_TYPE_MISSION)
ENDIF
BREAK
CASE QUICKMATCH_SERIES_COMMUNITY
iPlayList = CV2_GET_SERIES_ARRAY_POS_BY_TYPE(FMMC_TYPE_COMMUNITY_SERIES)
PRINTLN("[TS][CV2] iPlayList = ", iPlayList)
#IF IS_DEBUG_BUILD
IF iPlayList != -1
PRINTLN("[TS][CV2] g_sV2CoronaVars.iCurrentArrayPosProfessional[", iPlayList, "] = ", g_sV2CoronaVars.iCurrentArrayPosProfessional[iPlayList])
ENDIF
#ENDIF
IF IS_THIS_A_SOLO_SESSION() //#1618182 - block this option is solo session returns true
OR HAS_ENTERED_OFFLINE_SAVE_FM()
OR iPlayList = -1
OR g_sV2CoronaVars.iCurrentArrayPosProfessional[iPlayList] = -1
RETURN FALSE //Block this option by passing it back as unavailable.
ELSE
RETURN IS_FM_TYPE_UNLOCKED(FMMC_TYPE_RACE) OR IS_FM_TYPE_UNLOCKED(FMMC_TYPE_MISSION)
ENDIF
BREAK
CASE QUICKMATCH_SERIES_CAYO_PERICO
iPlayList = CV2_GET_SERIES_ARRAY_POS_BY_TYPE(FMMC_TYPE_CAYO_PERICO_SERIES)
PRINTLN("[TS][CV2] iPlayList = ", iPlayList)
#IF IS_DEBUG_BUILD
IF iPlayList != -1
PRINTLN("[TS][CV2] g_sV2CoronaVars.iCurrentArrayPosProfessional[", iPlayList, "] = ", g_sV2CoronaVars.iCurrentArrayPosProfessional[iPlayList])
ENDIF
#ENDIF
IF IS_THIS_A_SOLO_SESSION() //#1618182 - block this option is solo session returns true
OR HAS_ENTERED_OFFLINE_SAVE_FM()
OR iPlayList = -1
OR g_sV2CoronaVars.iCurrentArrayPosProfessional[iPlayList] = -1
RETURN FALSE //Block this option by passing it back as unavailable.
ELSE
RETURN IS_FM_TYPE_UNLOCKED(FMMC_TYPE_RACE) OR IS_FM_TYPE_UNLOCKED(FMMC_TYPE_MISSION)
ENDIF
BREAK
#IF FEATURE_GEN9_EXCLUSIVE
CASE QUICKMATCH_SERIES_HSW_RACE
iPlayList = CV2_GET_SERIES_ARRAY_POS_BY_TYPE(FMMC_TYPE_HSW_RACE_SERIES)
PRINTLN("[TS][CV2] iPlayList = ", iPlayList)
#IF IS_DEBUG_BUILD
IF iPlayList != -1
PRINTLN("[TS][CV2] g_sV2CoronaVars.iCurrentArrayPosProfessional[", iPlayList, "] = ", g_sV2CoronaVars.iCurrentArrayPosProfessional[iPlayList])
ENDIF
#ENDIF
IF IS_THIS_A_SOLO_SESSION() //#1618182 - block this option is solo session returns true
OR HAS_ENTERED_OFFLINE_SAVE_FM()
OR iPlayList = -1
OR g_sV2CoronaVars.iCurrentArrayPosProfessional[iPlayList] = -1
OR NOT GET_PACKED_STAT_BOOL(PACKED_MP_BOOL_HSW_RACE_DONE)
RETURN FALSE //Block this option by passing it back as unavailable.
ELSE
RETURN IS_FM_TYPE_UNLOCKED(FMMC_TYPE_RACE)
ENDIF
BREAK
#ENDIF
CASE QUICKMATCH_SERIES_STREET_RACE
iPlayList = CV2_GET_SERIES_ARRAY_POS_BY_TYPE(FMMC_TYPE_STREET_RACE_SERIES)
PRINTLN("[TS][CV2] iPlayList = ", iPlayList)
#IF IS_DEBUG_BUILD
IF iPlayList != -1
PRINTLN("[TS][CV2] g_sV2CoronaVars.iCurrentArrayPosProfessional[", iPlayList, "] = ", g_sV2CoronaVars.iCurrentArrayPosProfessional[iPlayList])
ENDIF
#ENDIF
IF IS_THIS_A_SOLO_SESSION() //#1618182 - block this option is solo session returns true
OR HAS_ENTERED_OFFLINE_SAVE_FM()
OR iPlayList = -1
OR g_sV2CoronaVars.iCurrentArrayPosProfessional[iPlayList] = -1
OR NOT HAS_PLAYER_PURCHASED_CAR_CLUB_MEMBERSHIP(PLAYER_ID())
RETURN FALSE //Block this option by passing it back as unavailable.
ELSE
RETURN IS_FM_TYPE_UNLOCKED(FMMC_TYPE_RACE)
ENDIF
BREAK
CASE QUICKMATCH_SERIES_PURSUIT
iPlayList = CV2_GET_SERIES_ARRAY_POS_BY_TYPE(FMMC_TYPE_PURSUIT_SERIES)
PRINTLN("[TS][CV2] iPlayList = ", iPlayList)
#IF IS_DEBUG_BUILD
IF iPlayList != -1
PRINTLN("[TS][CV2] g_sV2CoronaVars.iCurrentArrayPosProfessional[", iPlayList, "] = ", g_sV2CoronaVars.iCurrentArrayPosProfessional[iPlayList])
ENDIF
#ENDIF
IF IS_THIS_A_SOLO_SESSION() //#1618182 - block this option is solo session returns true
OR HAS_ENTERED_OFFLINE_SAVE_FM()
OR iPlayList = -1
OR g_sV2CoronaVars.iCurrentArrayPosProfessional[iPlayList] = -1
OR NOT HAS_PLAYER_PURCHASED_CAR_CLUB_MEMBERSHIP(PLAYER_ID())
OR NOT HAS_LOCAL_PLAYER_UNLOCKED_PURSUIT_SERIES()
RETURN FALSE //Block this option by passing it back as unavailable.
ELSE
RETURN IS_FM_TYPE_UNLOCKED(FMMC_TYPE_RACE)
ENDIF
BREAK
CASE QUICKMATCH_SERIES_OPEN_WHEEL
iPlayList = CV2_GET_SERIES_ARRAY_POS_BY_TYPE(FMMC_TYPE_OPEN_WHEEL_SERIES)
PRINTLN("[TS][CV2] iPlayList = ", iPlayList)
#IF IS_DEBUG_BUILD
IF iPlayList != -1
PRINTLN("[TS][CV2] g_sV2CoronaVars.iCurrentArrayPosProfessional[", iPlayList, "] = ", g_sV2CoronaVars.iCurrentArrayPosProfessional[iPlayList])
ENDIF
#ENDIF
IF IS_THIS_A_SOLO_SESSION() //#1618182 - block this option is solo session returns true
OR HAS_ENTERED_OFFLINE_SAVE_FM()
OR iPlayList = -1
OR g_sV2CoronaVars.iCurrentArrayPosProfessional[iPlayList] = -1
RETURN FALSE //Block this option by passing it back as unavailable.
ELSE
RETURN IS_FM_TYPE_UNLOCKED(FMMC_TYPE_RACE)
ENDIF
BREAK
CASE QUICKMATCH_SERIES_RACE
iPlayList = CV2_GET_SERIES_ARRAY_POS_BY_TYPE(FMMC_TYPE_RACE_SERIES)
PRINTLN("[TS][CV2] iPlayList = ", iPlayList)
#IF IS_DEBUG_BUILD
IF iPlayList != -1
PRINTLN("[TS][CV2] g_sV2CoronaVars.iCurrentArrayPosProfessional[", iPlayList, "] = ", g_sV2CoronaVars.iCurrentArrayPosProfessional[iPlayList])
ENDIF
#ENDIF
IF IS_THIS_A_SOLO_SESSION() //#1618182 - block this option is solo session returns true
OR HAS_ENTERED_OFFLINE_SAVE_FM()
OR iPlayList = -1
OR g_sV2CoronaVars.iCurrentArrayPosProfessional[iPlayList] = -1
RETURN FALSE //Block this option by passing it back as unavailable.
ELSE
RETURN IS_FM_TYPE_UNLOCKED(FMMC_TYPE_RACE)
ENDIF
BREAK
CASE QUICKMATCH_SERIES_SURVIVAL
iPlayList = CV2_GET_SERIES_ARRAY_POS_BY_TYPE(FMMC_TYPE_SURVIVAL_SERIES)
PRINTLN("[TS][CV2] iPlayList = ", iPlayList)
#IF IS_DEBUG_BUILD
IF iPlayList != -1
PRINTLN("[TS][CV2] g_sV2CoronaVars.iCurrentArrayPosProfessional[", iPlayList, "] = ", g_sV2CoronaVars.iCurrentArrayPosProfessional[iPlayList])
ENDIF
#ENDIF
IF IS_THIS_A_SOLO_SESSION() //#1618182 - block this option is solo session returns true
OR HAS_ENTERED_OFFLINE_SAVE_FM()
OR iPlayList = -1
OR g_sV2CoronaVars.iCurrentArrayPosProfessional[iPlayList] = -1
RETURN FALSE //Block this option by passing it back as unavailable.
ELSE
RETURN IS_FM_TYPE_UNLOCKED(FMMC_TYPE_RACE)
ENDIF
BREAK
CASE QUICKMATCH_SERIES_ARENA_WAR
iPlayList = CV2_GET_SERIES_ARRAY_POS_BY_TYPE(FMMC_TYPE_ARENA_SERIES)
PRINTLN("[TS][CV2] iPlayList = ", iPlayList)
#IF IS_DEBUG_BUILD
IF iPlayList != -1
PRINTLN("[TS][CV2] g_sV2CoronaVars.iCurrentArrayPosProfessional[", iPlayList, "] = ", g_sV2CoronaVars.iCurrentArrayPosProfessional[iPlayList])
ENDIF
#ENDIF
IF IS_THIS_A_SOLO_SESSION() //#1618182 - block this option is solo session returns true
OR HAS_ENTERED_OFFLINE_SAVE_FM()
OR iPlayList = -1
OR g_sV2CoronaVars.iCurrentArrayPosProfessional[iPlayList] = -1
RETURN FALSE //Block this option by passing it back as unavailable.
ELSE
RETURN IS_FM_TYPE_UNLOCKED(FMMC_TYPE_RACE)
ENDIF
BREAK
CASE QUICKMATCH_SERIES_SPECIAL_RACE
iPlayList = CV2_GET_SERIES_ARRAY_POS_BY_TYPE(FMMC_TYPE_SPECIAL_VEHICLE_RACE_SERIES)
PRINTLN("[TS][CV2] iPlayList = ", iPlayList)
#IF IS_DEBUG_BUILD
IF iPlayList != -1
PRINTLN("[TS][CV2] g_sV2CoronaVars.iCurrentArrayPosProfessional[", iPlayList, "] = ", g_sV2CoronaVars.iCurrentArrayPosProfessional[iPlayList])
ENDIF
#ENDIF
IF IS_THIS_A_SOLO_SESSION() //#1618182 - block this option is solo session returns true
OR HAS_ENTERED_OFFLINE_SAVE_FM()
OR iPlayList = -1
OR g_sV2CoronaVars.iCurrentArrayPosProfessional[iPlayList] = -1
RETURN FALSE //Block this option by passing it back as unavailable.
ELSE
RETURN IS_FM_TYPE_UNLOCKED(FMMC_TYPE_RACE)
ENDIF
BREAK
CASE QUICKMATCH_SERIES_SUPER_SPORT
iPlayList = CV2_GET_SERIES_ARRAY_POS_BY_TYPE(FMMC_TYPE_HOTRING_SERIES)
PRINTLN("[TS][CV2] iPlayList = ", iPlayList)
#IF IS_DEBUG_BUILD
IF iPlayList != -1
PRINTLN("[TS][CV2] g_sV2CoronaVars.iCurrentArrayPosProfessional[", iPlayList, "] = ", g_sV2CoronaVars.iCurrentArrayPosProfessional[iPlayList])
ENDIF
#ENDIF
IF IS_THIS_A_SOLO_SESSION() //#1618182 - block this option is solo session returns true
OR HAS_ENTERED_OFFLINE_SAVE_FM()
OR iPlayList = -1
OR g_sV2CoronaVars.iCurrentArrayPosProfessional[iPlayList] = -1
RETURN FALSE //Block this option by passing it back as unavailable.
ELSE
RETURN IS_FM_TYPE_UNLOCKED(FMMC_TYPE_RACE)
ENDIF
BREAK
CASE QUICKMATCH_SERIES_TRANSFORM
iPlayList = CV2_GET_SERIES_ARRAY_POS_BY_TYPE(FMMC_TYPE_TRANSFORM_SERIES)
PRINTLN("[TS][CV2] iPlayList = ", iPlayList)
#IF IS_DEBUG_BUILD
IF iPlayList != -1
PRINTLN("[TS][CV2] g_sV2CoronaVars.iCurrentArrayPosProfessional[", iPlayList, "] = ", g_sV2CoronaVars.iCurrentArrayPosProfessional[iPlayList])
ENDIF
#ENDIF
IF IS_THIS_A_SOLO_SESSION() //#1618182 - block this option is solo session returns true
OR HAS_ENTERED_OFFLINE_SAVE_FM()
OR iPlayList = -1
OR g_sV2CoronaVars.iCurrentArrayPosProfessional[iPlayList] = -1
RETURN FALSE //Block this option by passing it back as unavailable.
ELSE
RETURN IS_FM_TYPE_UNLOCKED(FMMC_TYPE_RACE)
ENDIF
BREAK
CASE QUICKMATCH_SERIES_BUNKER
iPlayList = CV2_GET_SERIES_ARRAY_POS_BY_TYPE(FMMC_TYPE_BUNKER_SERIES)
PRINTLN("[TS][CV2] iPlayList = ", iPlayList)
#IF IS_DEBUG_BUILD
IF iPlayList != -1
PRINTLN("[TS][CV2] g_sV2CoronaVars.iCurrentArrayPosProfessional[", iPlayList, "] = ", g_sV2CoronaVars.iCurrentArrayPosProfessional[iPlayList])
ENDIF
#ENDIF
IF IS_THIS_A_SOLO_SESSION() //#1618182 - block this option is solo session returns true
OR HAS_ENTERED_OFFLINE_SAVE_FM()
OR iPlayList = -1
OR g_sV2CoronaVars.iCurrentArrayPosProfessional[iPlayList] = -1
RETURN FALSE //Block this option by passing it back as unavailable.
ELSE
RETURN IS_FM_TYPE_UNLOCKED(FMMC_TYPE_RACE)
ENDIF
BREAK
CASE QUICKMATCH_SERIES_STUNT
IF IS_THIS_A_SOLO_SESSION() //#1618182 - block this option is solo session returns true
OR HAS_ENTERED_OFFLINE_SAVE_FM()
OR NOT g_sMPTunables.bFmCoronaPlaylistActive
RETURN FALSE //Block this option by passing it back as unavailable.
ELSE
RETURN IS_FM_TYPE_UNLOCKED(FMMC_TYPE_RACE)
ENDIF
BREAK
CASE QUICKMATCH_SERIES_ADVERSARY
IF IS_THIS_A_SOLO_SESSION() //#1618182 - block this option is solo session returns true
OR HAS_ENTERED_OFFLINE_SAVE_FM()
OR CV2_GET_ADVERSARY_SERIES_ARRAY_POS() = -1
OR g_sV2CoronaVars.iCurrentArrayPosProfessional[iPlayList] = -1
RETURN FALSE //Block this option by passing it back as unavailable.
ELSE
RETURN IS_FM_TYPE_UNLOCKED(FMMC_TYPE_RACE)
ENDIF
BREAK
CASE QUICKMATCH_SERIES_ACTIVE_PREMIUM_RACE
IF IS_THIS_A_SOLO_SESSION() //#1618182 - block this option is solo session returns true
OR HAS_ENTERED_OFFLINE_SAVE_FM()
OR NOT g_sMPTunables.bFmCoronaProfessionalPlaylistActive
OR g_sMPTunables.iProfesionalCoronaType[CV2_GET_RACE_ARRAY_POS()] != FMMC_TYPE_RACE
//Not set up at all
OR g_sV2CoronaVars.iVehicleClassCount = ciCV2_NOT_SET_UP_PROFESSIONAL_RACE
RETURN FALSE //Block this option by passing it back as unavailable.
ELSE
RETURN IS_FM_TYPE_UNLOCKED(FMMC_TYPE_RACE)
ENDIF
BREAK
ENDSWITCH
BREAK
CASE QUICKMATCH_MODE_HEISTS
SWITCH INT_TO_ENUM(enumQuickMatchHeists,index)
#IF FEATURE_HEIST_ISLAND
CASE QUICKMATCH_HEISTS_CAYO_PERICO
IF IS_THIS_A_SOLO_SESSION() //#1618182 - block this option is solo session returns true
OR HAS_ENTERED_OFFLINE_SAVE_FM()
OR g_sMPTunables.bDisableCasinoHeistPhone
RETURN FALSE
ELSE
RETURN IS_FM_TYPE_UNLOCKED(FMMC_TYPE_MISSION)
ENDIF
BREAK
#ENDIF
CASE QUICKMATCH_HEISTS_DIAMOND_CASINO
IF IS_THIS_A_SOLO_SESSION() //#1618182 - block this option is solo session returns true
OR HAS_ENTERED_OFFLINE_SAVE_FM()
OR g_sMPTunables.bDisableCasinoHeistPhone
RETURN FALSE
ELSE
RETURN IS_FM_TYPE_UNLOCKED(FMMC_TYPE_MISSION)
ENDIF
BREAK
CASE QUICKMATCH_HEISTS_DOOMSDAY
IF IS_THIS_A_SOLO_SESSION() //#1618182 - block this option is solo session returns true
OR HAS_ENTERED_OFFLINE_SAVE_FM()
//Or it's disabled
OR g_sMPTunables.bOnCallHeistDisabled = TRUE
RETURN FALSE //Block this option by passing it back as unavailable.
ELSE
RETURN IS_FM_TYPE_UNLOCKED(FMMC_TYPE_MISSION)
ENDIF
BREAK
CASE QUICKMATCH_HEISTS_HEIST
IF IS_THIS_A_SOLO_SESSION() //#1618182 - block this option is solo session returns true
OR HAS_ENTERED_OFFLINE_SAVE_FM()
//Or it's disabled
OR g_sMPTunables.bOnCallHeistDisabled = TRUE
RETURN FALSE //Block this option by passing it back as unavailable.
ELSE
RETURN IS_FM_TYPE_UNLOCKED(FMMC_TYPE_MISSION)
// RETURN IS_MP_HEIST_STRAND_ACTIVE() OR HAVE_COMPLEATED_ALL_HEIST_MISSIONS_ON_CALL() OR HAS_LESTER_INTRO_TO_HEISTS_CUTSCENE_BEEN_DONE()
ENDIF
BREAK
ENDSWITCH
BREAK
CASE QUICKMATCH_MODE_CONTACT_MISSIONS
SWITCH INT_TO_ENUM(enumQuickMatchContactMissions,index)
CASE QUICKMATCH_CONTACT_MISSIONS_SHORT_TRIP
IF IS_THIS_A_SOLO_SESSION()
OR HAS_ENTERED_OFFLINE_SAVE_FM()
RETURN FALSE
ELSE
RETURN IS_FM_TYPE_UNLOCKED(FMMC_TYPE_MISSION)
ENDIF
BREAK
CASE QUICKMATCH_CONTACT_MISSIONS_AUTO_SHOP
IF IS_THIS_A_SOLO_SESSION()
OR HAS_ENTERED_OFFLINE_SAVE_FM()
RETURN FALSE
ELSE
RETURN IS_FM_TYPE_UNLOCKED(FMMC_TYPE_MISSION)
ENDIF
BREAK
CASE QUICKMATCH_CONTACT_MISSIONS_CONTACT
IF IS_THIS_A_SOLO_SESSION()
OR SHOULD_USE_OFFLINE_UGC_CONTENT()
OR g_FMMC_ROCKSTAR_CREATED.iTypeCount[FMMC_TYPE_MISSION_CONTACT] = 0
OR HAS_ENTERED_OFFLINE_SAVE_FM()
RETURN FALSE
ELSE
RETURN IS_FM_TYPE_UNLOCKED(FMMC_TYPE_MISSION)
ENDIF
BREAK
CASE QUICKMATCH_CONTACT_MISSIONS_LAMAR
IF IS_THIS_A_SOLO_SESSION()
OR NOT HAVE_LOW_RIDER_FLOW_MISSIONS_DOWNLOADED()
OR HAS_ENTERED_OFFLINE_SAVE_FM()
OR g_sMPTunables.bLOWRIDER_DISABLE_ON_CALL_LAMAR_STRAND
PRINTLN(" [NEWVS] - QUICKMATCH_MODE_MISSION_FLOW - RETURN FALSE")
RETURN FALSE
ELSE
RETURN (GET_FM_STRAND_PROGRESS(ciFLOW_STRAND_LOW_RIDER) > 0) OR FM_LOW_FLOW_HAS_BEEN_COMPLETED()
ENDIF
BREAK
CASE QUICKMATCH_CONTACT_MISSIONS_MOBILE_OPERATION
IF IS_THIS_A_SOLO_SESSION() //#1618182 - block this option is solo session returns true
OR HAS_ENTERED_OFFLINE_SAVE_FM()
OR g_sMPTunables.bDisableSvmPhone
RETURN FALSE
ELSE
RETURN TRUE //SVM_FLOW_GET_NEXT_AVAILABLE_MISSION() = ciSVM_FLOW_MISSION_MAX
ENDIF
BREAK
CASE QUICKMATCH_CONTACT_MISSIONS_SPECIAL_VEHICLE
IF IS_THIS_A_SOLO_SESSION() //#1618182 - block this option is solo session returns true
OR HAS_ENTERED_OFFLINE_SAVE_FM()
OR g_sMPTunables.bDisableSvmPhone
RETURN FALSE
ELSE
RETURN TRUE //SVM_FLOW_GET_NEXT_AVAILABLE_MISSION() = ciSVM_FLOW_MISSION_MAX
ENDIF
BREAK
ENDSWITCH
BREAK
CASE QUICKMATCH_MODE_ACTIVITIES
SWITCH INT_TO_ENUM(enumQuickMatchActivities,index)
CASE QUICKMATCH_ACTIVITIES_ARM
IF IS_THIS_A_SOLO_SESSION()
OR HAS_ENTERED_OFFLINE_SAVE_FM()
#IF IS_DEBUG_BUILD
OR GET_COMMANDLINE_PARAM_EXISTS("sc_ForceSoloMG")
#ENDIF
RETURN FALSE
ELSE
RETURN TRUE
ENDIF
BREAK
CASE QUICKMATCH_ACTIVITIES_TENNIS
IF IS_THIS_A_SOLO_SESSION()
OR HAS_ENTERED_OFFLINE_SAVE_FM()
#IF IS_DEBUG_BUILD
OR GET_COMMANDLINE_PARAM_EXISTS("sc_ForceSoloMG")
#ENDIF
RETURN FALSE
ELSE
RETURN TRUE
ENDIF
BREAK
CASE QUICKMATCH_ACTIVITIES_DARTS
RETURN TRUE
BREAK
CASE QUICKMATCH_ACTIVITIES_GOLF
RETURN TRUE
BREAK
CASE QUICKMATCH_ACTIVITIES_RANGE
RETURN TRUE
BREAK
ENDSWITCH
BREAK
CASE QUICKMATCH_MODE_JOBS
SWITCH INT_TO_ENUM(enumQuickMatchJobs,index)
CASE QUICKMATCH_JOBS_CAPTURE
IF IS_THIS_A_SOLO_SESSION()
OR g_FMMC_ROCKSTAR_CREATED.iTypeCount[FMMC_TYPE_MISSION_CTF] = 0
OR HAS_ENTERED_OFFLINE_SAVE_FM()
RETURN FALSE
ELSE
RETURN IS_FM_TYPE_UNLOCKED(FMMC_TYPE_MISSION_CTF)
ENDIF
BREAK
CASE QUICKMATCH_JOBS_DEATHMATCH
IF IS_THIS_A_SOLO_SESSION() //#1618182 - block this option is solo session returns true
OR HAS_ENTERED_OFFLINE_SAVE_FM()
RETURN FALSE //Block this option by passing it back as unavailable.
ELSE
RETURN IS_FM_TYPE_UNLOCKED(FMMC_TYPE_DEATHMATCH)
ENDIF
BREAK
CASE QUICKMATCH_JOBS_LTS
IF IS_THIS_A_SOLO_SESSION()
OR g_FMMC_ROCKSTAR_CREATED.iTypeCount[FMMC_TYPE_MISSION_LTS] = 0
OR HAS_ENTERED_OFFLINE_SAVE_FM()
RETURN FALSE
ELSE
RETURN IS_FM_TYPE_UNLOCKED(FMMC_TYPE_MISSION)
ENDIF
BREAK
CASE QUICKMATCH_JOBS_PARACHUTING
IF g_FMMC_ROCKSTAR_CREATED.iTypeCount[FMMC_TYPE_BASE_JUMP] = 0
RETURN FALSE
ELSE
RETURN IS_FM_TYPE_UNLOCKED(FMMC_TYPE_BASE_JUMP)
ENDIF
BREAK
CASE QUICKMATCH_JOBS_RACE
RETURN IS_FM_TYPE_UNLOCKED(FMMC_TYPE_RACE)
BREAK
CASE QUICKMATCH_JOBS_SURVIVAL
RETURN IS_FM_TYPE_UNLOCKED(FMMC_TYPE_SURVIVAL)
BREAK
CASE QUICKMATCH_JOBS_VERSUS
IF IS_THIS_A_SOLO_SESSION()
OR g_FMMC_ROCKSTAR_CREATED.iTypeCount[FMMC_TYPE_MISSION_VS] = 0
OR HAS_ENTERED_OFFLINE_SAVE_FM()
RETURN FALSE
ELSE
RETURN IS_FM_TYPE_UNLOCKED(FMMC_TYPE_MISSION)
ENDIF
BREAK
ENDSWITCH
BREAK
ENDSWITCH
RETURN FALSE
ENDFUNC
PROC Fill_QuickMatch_Screen_Slots()
INT imode
slotsUsed = 0
//iCanDoQuickMatch = 99 //comment in to quickly test no modes available.
IF iCanDoQuickmatch = 0
AND IS_ANY_MODE_AVAILABLE()
REPEAT ENUM_TO_INT(QUICKMATCH_MODE_MAX) imode
IF IS_MODE_AVAILABLE(INT_TO_ENUM( enumQuickMatchModes,imode))
// Store the details in the Scaleform slot
BEGIN_SCALEFORM_MOVIE_METHOD(SF_MovieIndex, "SET_DATA_SLOT")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(18)
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(slotsUsed)
IF imode = ENUM_TO_INT(QUICKMATCH_MODE_SERIES)
PRINTLN("appJIPMP - imode = QUICKMATCH_MODE_SERIES - slotsUsed = ", slotsUsed)
ENDIF
IF imode = ENUM_TO_INT(QUICKMATCH_MODE_ACTIVITIES)
PRINTLN("appJIPMP - imode = QUICKMATCH_MODE_ACTIVITIES - slotsUsed = ", slotsUsed)
ENDIF
IF imode = ENUM_TO_INT(QUICKMATCH_MODE_HEISTS)
PRINTLN("appJIPMP - imode = QUICKMATCH_MODE_HEISTS - slotsUsed = ", slotsUsed)
ENDIF
IF imode = ENUM_TO_INT(QUICKMATCH_MODE_CONTACT_MISSIONS)
PRINTLN("appJIPMP - imode = QUICKMATCH_MODE_CONTACT_MISSIONS - slotsUsed = ", slotsUsed)
ENDIF
IF imode = ENUM_TO_INT(QUICKMATCH_MODE_JOBS)
PRINTLN("appJIPMP - imode = QUICKMATCH_MODE_JOBS - slotsUsed = ", slotsUsed)
ENDIF
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(0)
BEGIN_TEXT_COMMAND_SCALEFORM_STRING(GET_MODE_TEXT(INT_TO_ENUM(enumQuickMatchModes,imode)))
END_TEXT_COMMAND_SCALEFORM_STRING()
END_SCALEFORM_MOVIE_METHOD()
m_ModeList[slotsUsed] = imode
// Increment slots used
slotsUsed++
PRINTLN("appJIPMP - slots used to fill QuickJoin ", slotsUsed, " name = ", GET_FILENAME_FOR_AUDIO_CONVERSATION(GET_MODE_TEXT(INT_TO_ENUM(enumQuickMatchModes,imode))))
ELSE
PRINTLN("appJIPMP - ", GET_FILENAME_FOR_AUDIO_CONVERSATION(GET_MODE_TEXT(INT_TO_ENUM(enumQuickMatchModes,imode)))," NOT AVAILABLE")
ENDIF
ENDREPEAT
ELSE
BEGIN_SCALEFORM_MOVIE_METHOD(SF_MovieIndex, "SET_DATA_SLOT")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(18)
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(slotsUsed)
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(0)
BEGIN_TEXT_COMMAND_SCALEFORM_STRING("JIPMP_NA")
END_TEXT_COMMAND_SCALEFORM_STRING()
END_SCALEFORM_MOVIE_METHOD()
PRINTLN("appJIPMP - No quick jobs available, so slots used to fill QuickJoin app is at ", slotsUsed)
ENDIF
ENDPROC
PROC STORE_SUB_LIST_DETAILS_IN_SCALEFORM_SLOT(enumQuickMatchModes eMode,INT &iList[],INT index)
// Store the details in the Scaleform slot
BEGIN_SCALEFORM_MOVIE_METHOD(SF_MovieIndex, "SET_DATA_SLOT")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(18)
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(slotsUsedContent)
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(0)
BEGIN_TEXT_COMMAND_SCALEFORM_STRING(GET_CONTENT_TEXT(eMode,index))
END_TEXT_COMMAND_SCALEFORM_STRING()
END_SCALEFORM_MOVIE_METHOD()
iList[slotsUsedContent] = index
// Increment slots used
slotsUsedContent++
PRINTLN("appJIPMP - slotsUsedContent = ", slotsUsedContent, " Name = ", GET_FILENAME_FOR_AUDIO_CONVERSATION(GET_CONTENT_TEXT(eMode,index)))
PRINTLN("appJIPMP - iList[slotsUsedContent] = ", iList[index], " Name = ", GET_FILENAME_FOR_AUDIO_CONVERSATION(GET_CONTENT_TEXT(eMode,index)))
ENDPROC
PROC Fill_QuickMatch_Sub_List_Screen_Slots(enumQuickMatchModes eMode)
INT index
slotsUsedContent = 0
IF iCanDoQuickmatch = 0
AND IS_ANY_MODE_AVAILABLE()
SWITCH eMode
CASE QUICKMATCH_MODE_SERIES
REPEAT ENUM_TO_INT(QUICKMATCH_SERIES_MAX) index
IF IS_CONTENT_AVAILABLE(QUICKMATCH_MODE_SERIES,index)
STORE_SUB_LIST_DETAILS_IN_SCALEFORM_SLOT(eMode,m_SeriesList,index)
ENDIF
ENDREPEAT
BREAK
CASE QUICKMATCH_MODE_ACTIVITIES
REPEAT ENUM_TO_INT(QUICKMATCH_ACTIVITIES_MAX) index
IF IS_CONTENT_AVAILABLE(QUICKMATCH_MODE_ACTIVITIES,index)
STORE_SUB_LIST_DETAILS_IN_SCALEFORM_SLOT(eMode,m_ActivitiesList,index)
ENDIF
ENDREPEAT
BREAK
CASE QUICKMATCH_MODE_HEISTS
REPEAT ENUM_TO_INT(QUICKMATCH_HEISTS_MAX) index
IF IS_CONTENT_AVAILABLE(QUICKMATCH_MODE_HEISTS,index)
STORE_SUB_LIST_DETAILS_IN_SCALEFORM_SLOT(eMode,m_HeistsList,index)
ENDIF
ENDREPEAT
BREAK
CASE QUICKMATCH_MODE_CONTACT_MISSIONS
REPEAT ENUM_TO_INT(QUICKMATCH_CONTACT_MISSIONS_MAX) index
IF IS_CONTENT_AVAILABLE(QUICKMATCH_MODE_CONTACT_MISSIONS,index)
STORE_SUB_LIST_DETAILS_IN_SCALEFORM_SLOT(eMode,m_ContactMissionsList,index)
ENDIF
ENDREPEAT
BREAK
CASE QUICKMATCH_MODE_JOBS
REPEAT ENUM_TO_INT(QUICKMATCH_JOBS_MAX) index
IF IS_CONTENT_AVAILABLE(QUICKMATCH_MODE_JOBS,index)
STORE_SUB_LIST_DETAILS_IN_SCALEFORM_SLOT(eMode,m_JobsList,index)
ENDIF
ENDREPEAT
BREAK
ENDSWITCH
ELSE
BEGIN_SCALEFORM_MOVIE_METHOD(SF_MovieIndex, "SET_DATA_SLOT")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(18)
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(0)
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(0)
BEGIN_TEXT_COMMAND_SCALEFORM_STRING("JIPMP_NA")
END_TEXT_COMMAND_SCALEFORM_STRING()
END_SCALEFORM_MOVIE_METHOD()
PRINTLN("appJIPMP - No quick jobs available, so slots used to fill QuickJoin app is at ", 0)
ENDIF
ENDPROC
// PURPOSE: Display the JobList screen
//
// INPUT PARAMS: paramDoUpdate [DEFAULT = TRUE] TRUE means update the data, FALSE means only display the already generated data
// paramKeepHighlight [DEFAULT = TRUE] TRUE means keep the highlighter position if the data hasn't changed, FALSE means always reset it to first position
PROC Display_First_QuickMatch_Screen()
// The JobList page is the Apps first screen, so the phone should be in RunningApp mode so that it knows to return to the HomeScreen on 'BACK'.
IF NOT (g_Cellphone.PhoneDS = PDS_RUNNINGAPP)
IF g_CellPhone.PhoneDS > PDS_AWAY //Added as a precaution...
g_Cellphone.PhoneDS = PDS_RUNNINGAPP
PRINTLN("STATE ASSIGNMENT 203. appJIPMP::Display_JobList_Screen() assigns PDS_RUNNINGAPP")
ENDIF
ENDIF
// Setup the highlighter initial position
// Store the details from the JobList array in the JobList Screen slots
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER(SF_MovieIndex,"SET_DATA_SLOT_EMPTY", QUICKMATCH_LIST_VIEW_STATE)
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_DATA_SLOT", QUICKMATCH_LIST_VIEW_STATE,0,0,INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM, "CELL_208") //Call...
Fill_QuickMatch_Screen_Slots()
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER (SF_MovieIndex, "DISPLAY_VIEW", QUICKMATCH_LIST_VIEW_STATE)
// Display the screen
// NOTE: Must be after the slots have been filled
PRINTLN("appJIPMP - Display_First_QuickMatch_Screen() - displaying MPJIPlist [view state: ", QUICKMATCH_LIST_VIEW_STATE, "]")
// Display the Header
Display_MP_App_Header(m_QuickMatchTextFM)
IF slotsUsed = 0 //#1508749
Display_MP_App_Buttons(MP_APP_ICON_BLANK, "", MP_APP_ICON_BLANK, "", MP_APP_ICON_BACK, m_QuickMatchIconTextBack, m_sAppData)
ELSE
Display_MP_App_Buttons(MP_APP_ICON_YES, m_QuickMatchIconTextYes, MP_APP_ICON_BLANK, "", MP_APP_ICON_BACK, m_QuickMatchIconTextBack, m_sAppData)
ENDIF
// Now on the JobList screen
m_currentStage = QUICKMATCH_MODE_LIST
ENDPROC
// -----------------------------------------------------------------------------------------------------------
// Confirm screen
// -----------------------------------------------------------------------------------------------------------
// PURPOSE: Display the common details of the Confirm screen
PROC Display_Confirm_Screen()
// Use the Side Task 'tick' icon
CONST_INT CONFIRM_SLOT_ICON 12
//do the menu title
IF m_currentMode = QUICKMATCH_MODE_HEISTS
AND m_HeistsList[iSelectedContent] = ENUM_TO_INT(QUICKMATCH_HEISTS_HEIST)
Display_MP_App_Header("JIPMP_HEISTT")
PRINTLN("Display_MP_App_Header(\"JIPMP_HEISTT\")")
ELSE
Display_MP_App_Header(m_QuickMatchTextFM)
PRINTLN("Display_MP_App_Header(m_QuickMatchTextFM)")
ENDIF
// Delete all data from the Confirm View before filling it with new data
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER(SF_MovieIndex, "SET_DATA_SLOT_EMPTY", (TO_FLOAT(CONFIRM_VIEW_STATE)))
PRINTLN("appJIPMP - Display_Confirm_Screen() - clearing JIP [view state: ",CONFIRM_VIEW_STATE,"]")
// Display 'Are you sure?" - there is only one slot
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_DATA_SLOT", (TO_FLOAT(CONFIRM_VIEW_STATE)),(TO_FLOAT(0)), (TO_FLOAT(CONFIRM_SLOT_ICON)), INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM, m_areYouSureText)
// Display the screen
// NOTE: Must be after the slots have been filled
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER (SF_MovieIndex, "DISPLAY_VIEW", (TO_FLOAT(CONFIRM_VIEW_STATE)))
// For the confirmation screen, display 'Yes' and 'No' buttons
Display_MP_App_Buttons(MP_APP_ICON_YES, m_QuickMatchIconTextYes, MP_APP_ICON_BLANK, "", MP_APP_ICON_NO, m_QuickMatchIconTextNO, m_sAppData)
ENDPROC
// PURPOSE: Display the common details of the Confirm screen
PROC Display_Friends_Or_On_Call_Screen()
PRINTLN("appJIPMP - Display_Friends_Or_On_Call_Screen")
bBlockAccept = FALSE
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER(SF_MovieIndex,"SET_DATA_SLOT_EMPTY", QUICKMATCH_LIST_VIEW_STATE)
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_DATA_SLOT", QUICKMATCH_LIST_VIEW_STATE,0,0,INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM, "CELL_208") //Call...
INT iSlot
BOOL bTick = TRUE
//do the menu title
IF m_currentMode = QUICKMATCH_MODE_HEISTS
AND m_HeistsList[iSelectedContent] = ENUM_TO_INT(QUICKMATCH_HEISTS_HEIST)
AND NOT g_sMPTunables.bAutoJoinHeistsDisabled
IF bDisplayWithFriends
// Store the details in the Scaleform slot
BEGIN_SCALEFORM_MOVIE_METHOD(SF_MovieIndex, "SET_DATA_SLOT")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(18)
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(iSlot)
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(0)
BEGIN_TEXT_COMMAND_SCALEFORM_STRING("CELL_JIP_F")//On Call with Friends in session
END_TEXT_COMMAND_SCALEFORM_STRING()
END_SCALEFORM_MOVIE_METHOD()
iSlot++
ENDIF
BEGIN_SCALEFORM_MOVIE_METHOD(SF_MovieIndex, "SET_DATA_SLOT")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(18)
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(iSlot)
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(0)
BEGIN_TEXT_COMMAND_SCALEFORM_STRING("JIPMP_HEISTQ")//Join On Call
END_TEXT_COMMAND_SCALEFORM_STRING()
END_SCALEFORM_MOVIE_METHOD()
iSlot++
// Store the details in the Scaleform slot
BEGIN_SCALEFORM_MOVIE_METHOD(SF_MovieIndex, "SET_DATA_SLOT")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(18)
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(iSlot)
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(0)
BEGIN_TEXT_COMMAND_SCALEFORM_STRING("JIPMP_HEISTD")//Join lobby direct
END_TEXT_COMMAND_SCALEFORM_STRING()
END_SCALEFORM_MOVIE_METHOD()
iSlot++
ELSE
// Display 'Are you sure?" - there is only one slot
//Only if we are to show with friends
IF bDisplayWithFriends
// Store the details in the Scaleform slot
BEGIN_SCALEFORM_MOVIE_METHOD(SF_MovieIndex, "SET_DATA_SLOT")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(18)
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(iSlot)
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(0)
BEGIN_TEXT_COMMAND_SCALEFORM_STRING("CELL_JIP_F")
END_TEXT_COMMAND_SCALEFORM_STRING()
END_SCALEFORM_MOVIE_METHOD()
iSlot++
ENDIF
// Store the details in the Scaleform slot
IF g_sMPTunables.bOnCallDisabled = FALSE
BEGIN_SCALEFORM_MOVIE_METHOD(SF_MovieIndex, "SET_DATA_SLOT")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(18)
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(iSlot)
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(0)
IF m_currentMode = QUICKMATCH_MODE_SERIES
AND m_SeriesList[iSelectedContent] = ENUM_TO_INT(QUICKMATCH_SERIES_ACTIVE_PREMIUM_RACE)
IF g_sV2CoronaVars.iVehicleClassCount = ciCV2_OWN_NO_PERSONAL_VEHCICLE
BEGIN_TEXT_COMMAND_SCALEFORM_STRING("CELL_JIPPRP")
bTick = FALSE
ELIF g_sV2CoronaVars.iVehicleClassCount = ciCV2_DONT_OWN_THIS_VEHCICLE
BEGIN_TEXT_COMMAND_SCALEFORM_STRING("CELL_JIPPRV")
ADD_TEXT_COMPONENT_SUBSTRING_TEXT_LABEL(GET_DISPLAY_NAME_FROM_VEHICLE_MODEL(g_sV2CoronaVars.mnVehicleModel))
bTick = FALSE
ELIF g_sV2CoronaVars.iVehicleClassCount = ciCV2_DONT_OWN_VEHCICLE_IN_THIS_CLASS
BEGIN_TEXT_COMMAND_SCALEFORM_STRING("CELL_JIPPRC")
ADD_TEXT_COMPONENT_SUBSTRING_TEXT_LABEL(CV2_GET_ACTIVE_RACE_CLASS_STRING(CV2_GET_CURRENT_PLAYLIST_CLASS()))
bTick = FALSE
ELIF g_sV2CoronaVars.iVehicleClassCount = ciCV2_PERSONAL_VEHCICLE_DESTROYED
BEGIN_TEXT_COMMAND_SCALEFORM_STRING("FMSPR_HLP9P")
bTick = FALSE
ELIF NOT CV2_CAN_AFFORD_PROFESSIONAL_RACE_FEE()
BEGIN_TEXT_COMMAND_SCALEFORM_STRING("CELL_JIPPRN")
ADD_TEXT_COMPONENT_INTEGER(CV2_PROFESSIONAL_RACE_FEE())
bTick = FALSE
ELIF CV2_IS_PROCSSSIONAL_RACE_IN_COOL_DOWN()
BEGIN_TEXT_COMMAND_SCALEFORM_STRING("PIM_DMAGUT")
PRINTLN("[TS][CV2] (g_sV2CoronaVars.iRaceCoolDownPosix - GET_CLOUD_TIME_AS_INT()) * 1000")
PRINTLN("[TS][CV2] (", g_sV2CoronaVars.iRaceCoolDownPosix, " - ", GET_CLOUD_TIME_AS_INT(), ") * 1000")
ADD_TEXT_COMPONENT_SUBSTRING_TIME((g_sV2CoronaVars.iRaceCoolDownPosix - GET_CLOUD_TIME_AS_INT()) * 1000, TIME_FORMAT_HOURS|TIME_FORMAT_MINUTES|TIME_FORMAT_SECONDS)
bTick = FALSE
ELSE
BEGIN_TEXT_COMMAND_SCALEFORM_STRING("CELL_JIP_PR")
ADD_TEXT_COMPONENT_INTEGER(CV2_PROFESSIONAL_RACE_FEE())
bTick = TRUE
ENDIF
ELSE
bTick = TRUE
IF m_currentMode = QUICKMATCH_MODE_HEISTS
AND m_HeistsList[iSelectedContent] = ENUM_TO_INT(QUICKMATCH_HEISTS_DIAMOND_CASINO)
AND NOT HAS_H3_QUICKMATCH_COOLDOWN_EXPIRED()
BEGIN_TEXT_COMMAND_SCALEFORM_STRING("PIM_DMAGUT")
PRINTLN("[TS][CASINO_HEIST] (GET_MP_INT_PLAYER_STAT(MPPLY_H3_COOLDOWN) - GET_CLOUD_TIME_AS_INT()) * 1000")
PRINTLN("[TS][CASINO_HEIST] (", GET_MP_INT_PLAYER_STAT(MPPLY_H3_COOLDOWN), " - ", GET_CLOUD_TIME_AS_INT(), ") * 1000")
ADD_TEXT_COMPONENT_SUBSTRING_TIME((GET_MP_INT_PLAYER_STAT(MPPLY_H3_COOLDOWN) - GET_CLOUD_TIME_AS_INT()) * 1000, TIME_FORMAT_HOURS|TIME_FORMAT_MINUTES|TIME_FORMAT_SECONDS)
bTick = FALSE
#IF FEATURE_HEIST_ISLAND
ELIF m_currentMode = QUICKMATCH_MODE_HEISTS
AND m_HeistsList[iSelectedContent] = ENUM_TO_INT(QUICKMATCH_HEISTS_CAYO_PERICO)
AND NOT HAS_H4_QUICKMATCH_COOLDOWN_EXPIRED()
BEGIN_TEXT_COMMAND_SCALEFORM_STRING("PIM_DMAGUT")
PRINTLN("[TS][CASINO_HEIST] (GET_MP_INT_PLAYER_STAT(MPPLY_H3_COOLDOWN) - GET_CLOUD_TIME_AS_INT()) * 1000")
PRINTLN("[TS][CASINO_HEIST] (", GET_MP_INT_PLAYER_STAT(MPPLY_H4_COOLDOWN), " - ", GET_CLOUD_TIME_AS_INT(), ") * 1000")
ADD_TEXT_COMPONENT_SUBSTRING_TIME((GET_MP_INT_PLAYER_STAT(MPPLY_H4_COOLDOWN) - GET_CLOUD_TIME_AS_INT()) * 1000, TIME_FORMAT_HOURS|TIME_FORMAT_MINUTES|TIME_FORMAT_SECONDS)
bTick = FALSE
#ENDIF
ELIF m_currentMode = QUICKMATCH_MODE_CONTACT_MISSIONS
AND (m_ContactMissionsList[iSelectedContent] = ENUM_TO_INT(QUICKMATCH_CONTACT_MISSIONS_SPECIAL_VEHICLE)
OR m_ContactMissionsList[iSelectedContent] = ENUM_TO_INT(QUICKMATCH_CONTACT_MISSIONS_MOBILE_OPERATION))
BEGIN_TEXT_COMMAND_SCALEFORM_STRING("JIPMP_SVMH")
ELSE
BEGIN_TEXT_COMMAND_SCALEFORM_STRING("CELL_JIP_A")
ENDIF
ENDIF
bBlockAccept = !bTick
END_TEXT_COMMAND_SCALEFORM_STRING()
END_SCALEFORM_MOVIE_METHOD()
iSlot++
ENDIF
//
// // Store the details in the Scaleform slot
// BEGIN_SCALEFORM_MOVIE_METHOD(SF_MovieIndex, "SET_DATA_SLOT")
// SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(18)
// SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(iSlot)
// SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(0)
// BEGIN_TEXT_COMMAND_SCALEFORM_STRING("CELL_JIP_A")
// END_TEXT_COMMAND_SCALEFORM_STRING()
// END_SCALEFORM_MOVIE_METHOD()
ENDIF
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER (SF_MovieIndex, "DISPLAY_VIEW", QUICKMATCH_LIST_VIEW_STATE)
IF m_currentMode = QUICKMATCH_MODE_HEISTS
IF m_HeistsList[iSelectedContent] = ENUM_TO_INT(QUICKMATCH_HEISTS_DIAMOND_CASINO)
AND NOT HAS_H3_QUICKMATCH_COOLDOWN_EXPIRED()
IF NOT IS_BIT_SET(MPGlobalsAmbience.iFmGbHelpBitSet9, BI_FM_GANG_BOSS_HELP_9_CASINO_HEIST_QUICK_MATCH_DELAY_HELP_DONE)
PRINT_HELP("CH_QM_PHONEN")
PRINTLN("[TS][CASINO_HEIST] SET_BIT(MPGlobalsAmbience.iFmGbHelpBitSet9, BI_FM_GANG_BOSS_HELP_9_CASINO_HEIST_QUICK_MATCH_DELAY_HELP_DONE)")
SET_BIT(MPGlobalsAmbience.iFmGbHelpBitSet9, BI_FM_GANG_BOSS_HELP_9_CASINO_HEIST_QUICK_MATCH_DELAY_HELP_DONE)
ENDIF
#IF FEATURE_HEIST_ISLAND
ELIF m_HeistsList[iSelectedContent] = ENUM_TO_INT(QUICKMATCH_HEISTS_CAYO_PERICO)
AND NOT HAS_H4_QUICKMATCH_COOLDOWN_EXPIRED()
IF NOT IS_BIT_SET(MPGlobalsAmbience.iFmGbHelpBitSet9, BI_FM_GANG_BOSS_HELP_9_ISLAND_HEIST_QUICK_MATCH_DELAY_HELP_DONE)
PRINT_HELP("IH_QM_PHONEN")
PRINTLN("[TS][CASINO_HEIST] SET_BIT(MPGlobalsAmbience.iFmGbHelpBitSet9, BI_FM_GANG_BOSS_HELP_9_ISLAND_HEIST_QUICK_MATCH_DELAY_HELP_DONE)")
SET_BIT(MPGlobalsAmbience.iFmGbHelpBitSet9, BI_FM_GANG_BOSS_HELP_9_ISLAND_HEIST_QUICK_MATCH_DELAY_HELP_DONE)
ENDIF
#ENDIF
ELIF m_HeistsList[iSelectedContent] = ENUM_TO_INT(QUICKMATCH_HEISTS_HEIST)
AND NOT g_sMPTunables.bAutoJoinHeistsDisabled
Display_MP_App_Header(m_QuickMatchTextFM)
ENDIF
ENDIF
IF bTick
Display_MP_App_Buttons(MP_APP_ICON_YES, m_QuickMatchIconTextYes, MP_APP_ICON_BLANK, "", MP_APP_ICON_BACK, m_QuickMatchIconTextBack, m_sAppData)
ELSE
Display_MP_App_Buttons(MP_APP_ICON_BLANK, "", MP_APP_ICON_BLANK, "", MP_APP_ICON_BACK, m_QuickMatchIconTextBack, m_sAppData)
ENDIF
ENDPROC
//Temp - would be done in flash.
PROC Check_for_List_Navigation()
IF dpad_scroll_pause_cued
IF TIMERA() > 150
PRINTLN("appJIPMP - Check_for_List_Navigation SETTING dpad_scroll_pause_cued = FALSE")
dpad_scroll_pause_cued = FALSE
ENDIF
ENDIF
// PC Scrollwheel support
IF IS_USING_KEYBOARD_AND_MOUSE(FRONTEND_CONTROL)
IF Is_Phone_Control_Just_Pressed (FRONTEND_CONTROL, INPUT_CELLPHONE_SCROLL_BACKWARD)
IF m_selectedQuickMatchSlot > 0
m_selectedQuickMatchSlot --
ENDIF
Call_Scaleform_Input_Keypress_Up()
ENDIF
IF Is_Phone_Control_Just_Pressed (FRONTEND_CONTROL, INPUT_CELLPHONE_SCROLL_FORWARD)
m_selectedQuickMatchSlot ++
IF iCanDoQuickmatch = 0
IF m_selectedQuickMatchSlot >= g_numQuickMatchListEntries
m_selectedQuickMatchSlot = 0
ENDIF
ELSE
m_selectedQuickMatchSlot = 0
ENDIF
Call_Scaleform_Input_Keypress_Down()
ENDIF
ENDIF
IF dpad_scroll_pause_cued = FALSE
IF Is_Phone_Control_Just_Pressed (FRONTEND_CONTROL, INT_TO_ENUM (CONTROL_ACTION, PHONE_NAV_UP_INPUT))
IF m_selectedQuickMatchSlot > 0
m_selectedQuickMatchSlot --
ENDIF
Call_Scaleform_Input_Keypress_Up()
dpad_scroll_pause_cued = TRUE
SETTIMERA (0)
ENDIF
IF Is_Phone_Control_Just_Pressed (FRONTEND_CONTROL, INT_TO_ENUM (CONTROL_ACTION, PHONE_NAV_DOWN_INPUT))
m_selectedQuickMatchSlot ++
IF iCanDoQuickmatch = 0
IF m_selectedQuickMatchSlot >= g_numQuickMatchListEntries
m_selectedQuickMatchSlot = 0
ENDIF
ELSE
m_selectedQuickMatchSlot = 0
ENDIF
Call_Scaleform_Input_Keypress_Down()
dpad_scroll_pause_cued = TRUE
SETTIMERA (0)
ENDIF
ENDIF
ENDPROC
FUNC BOOL SHOULD_GO_TO_QUICKMATCH_FRIENDS_OR_SELF_OR_ON_CALL_SCREEN(BOOL bDisplayWithFriendsPassed)
//If we are alone in this session then skip the friends part
IF IS_THIS_A_SOLO_SESSION()
OR HAS_ENTERED_OFFLINE_SAVE_FM()
RETURN FALSE
ENDIF
//Or there's no friends and the on call is disabled
IF bDisplayWithFriendsPassed = FALSE
AND (g_sMPTunables.bOnCallDisabled = TRUE
OR bPlayerIsDrunk = TRUE)
RETURN FALSE
ENDIF
RETURN TRUE
ENDFUNC
PROC UPDATE_QUICKMATCH_JOIN_SCREENS()
IF SHOULD_GO_TO_QUICKMATCH_FRIENDS_OR_SELF_OR_ON_CALL_SCREEN(bDisplayWithFriends)
PRINTLN("appJIPMP - Process_Stage_Mode_List - SHOULD_GO_TO_QUICKMATCH_FRIENDS_OR_SELF_OR_ON_CALL_SCREEN(bDisplayWithFriends)")
//[RANKED_RACES] If we select ranked races then not with friends
//AND ModeList[iselectedModeSlot] != QUICKMATCH_MODE_RACE_RANKED
m_currentStage = QUICKMATCH_FRIENDS_OR_SELF_OR_ON_CALL
Display_Friends_Or_On_Call_Screen()
ELSE
PRINTLN("appJIPMP - Process_Stage_Mode_List - SHOULD_GO_TO_QUICKMATCH_FRIENDS_OR_SELF_OR_ON_CALL_SCREEN ELSE")
m_currentStage = QUICKMATCH_OFFER_JOIN
g_Cellphone.PhoneDS = PDS_COMPLEXAPP
Display_Confirm_Screen()
ENDIF
ENDPROC
PROC GO_BACK_TO_MODES_MENU()
PRINTLN("appJIPMP - GO_BACK_TO_MODES_MENU - BACK TO THE MODE LIST.")
Clear_Accept_Invite_Warning_Help_Text_If_On_Display()
g_Cellphone.PhoneDS = PDS_COMPLEXAPP
Display_First_QuickMatch_Screen()
m_selectedQuickMatchSlot = 0
iSelectedContent = 0
m_currentStage= QUICKMATCH_MODE_LIST
Play_Back_Beep()
m_iStageState = 0
ENDPROC
PROC Display_QUICKMATCH_SUBLIST_Screen(enumQuickMatchModes eMode)
// The JobList page is the Apps first screen, so the phone should be in RunningApp mode so that it knows to return to the HomeScreen on 'BACK'.
IF NOT (g_Cellphone.PhoneDS = PDS_RUNNINGAPP)
IF g_CellPhone.PhoneDS > PDS_AWAY //Added as a precaution...
g_Cellphone.PhoneDS = PDS_RUNNINGAPP
PRINTLN("STATE ASSIGNMENT 203. appJIPMP::Display_JobList_Screen() assigns PDS_RUNNINGAPP")
ENDIF
ENDIF
PRINTLN("appJIPMP - Display_QUICKMATCH_SUBLIST_Screen")
// Setup the highlighter initial position
// Store the details from the JobList array in the JobList Screen slots
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER(SF_MovieIndex,"SET_DATA_SLOT_EMPTY", QUICKMATCH_LIST_VIEW_STATE)
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_DATA_SLOT", QUICKMATCH_LIST_VIEW_STATE,0,0,INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM, "CELL_208") //Call...
Fill_QuickMatch_Sub_List_Screen_Slots(eMode)
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER (SF_MovieIndex, "DISPLAY_VIEW", QUICKMATCH_LIST_VIEW_STATE)
// Display the screen
// NOTE: Must be after the slots have been filled
PRINTLN("appJIPMP - : Display_QUICKMATCH_SUBLIST_Screen() - displaying MPJIPlist [view state: ", QUICKMATCH_LIST_VIEW_STATE, "]")
// Display the Header
Display_MP_App_Header(GET_MODE_TEXT(eMode))
IF slotsUsed = 0 //#1508749
Display_MP_App_Buttons(MP_APP_ICON_BLANK, "", MP_APP_ICON_BLANK, "", MP_APP_ICON_BACK, m_QuickMatchIconTextBack, m_sAppData)
ELSE
Display_MP_App_Buttons(MP_APP_ICON_YES, m_QuickMatchIconTextYes, MP_APP_ICON_BLANK, "", MP_APP_ICON_BACK, m_QuickMatchIconTextBack, m_sAppData)
ENDIF
// Now on the JobList screen
m_currentStage = QUICKMATCH_SUBLIST
ENDPROC
PROC Process_Stage_Mode_List()
Check_for_List_Navigation()
IF iCanDoQuickmatch = 0
AND SlotsUsed > 0 //Need this to prevent "Not available" from being selected.
IF Is_Phone_Control_Just_Pressed (FRONTEND_CONTROL, INT_TO_ENUM (CONTROL_ACTION, PHONE_POSITIVE_INPUT)) //Player selects a job type from the list.
g_InputButtonJustPressed = TRUE
Play_Select_Beep()
BEGIN_SCALEFORM_MOVIE_METHOD (SF_MovieIndex, "GET_CURRENT_SELECTION")
Choice_ReturnedSFIndex = END_SCALEFORM_MOVIE_METHOD_RETURN_VALUE()
WHILE NOT IS_SCALEFORM_MOVIE_METHOD_RETURN_VALUE_READY (Choice_ReturnedSFIndex)
WAIT (0)
PRINTLN("appJIPMP - Process_Stage_Mode_List - Waiting on scaleform return during selecting mode.")
ENDWHILE
iselectedModeSlot = GET_SCALEFORM_MOVIE_METHOD_RETURN_VALUE_INT (Choice_ReturnedSFIndex)
PRINTLN("appJIPMP - Process_Stage_Mode_List - iselectedModeSlot = ", iselectedModeSlot)
IF iselectedModeSlot > -1 AND iselectedModeSlot < ENUM_TO_INT(QUICKMATCH_MODE_MAX)
PRINTLN("appJIPMP - Process_Stage_Mode_List - m_ModeList[iselectedModeSlot]) = ", m_ModeList[iselectedModeSlot])
IF g_CellPhone.PhoneDS > PDS_AWAY
g_Cellphone.PhoneDS = PDS_COMPLEXAPP
// ...some additional debugging help - a unique identifier for each time g_Cellphone.phoneDS gets updated
PRINTLN("STATE ASSIGNMENT 202. appJIPMP::Process_Stage_Mode_List() assigns PDS_COMPLEXAPP")
ENDIF
m_currentMode = INT_TO_ENUM(enumQuickMatchModes,m_ModeList[iselectedModeSlot])
bDisplayWithFriends = ARE_ANY_FRIENDS_INT_THIS_SESSION()
SWITCH INT_TO_ENUM(enumQuickMatchModes,m_currentMode)
CASE QUICKMATCH_MODE_SERIES
PRINTLN("appJIPMP - Process_Stage_Mode_List - Selected Mode = QUICKMATCH_MODE_SERIES")
m_currentStage = QUICKMATCH_SUBLIST
Display_QUICKMATCH_SUBLIST_Screen(QUICKMATCH_MODE_SERIES)
BREAK
CASE QUICKMATCH_MODE_HEISTS
PRINTLN("appJIPMP - Process_Stage_Mode_List - Selected Mode = QUICKMATCH_MODE_HEISTS")
m_currentStage = QUICKMATCH_SUBLIST
Display_QUICKMATCH_SUBLIST_Screen(QUICKMATCH_MODE_HEISTS)
BREAK
CASE QUICKMATCH_MODE_CONTACT_MISSIONS
PRINTLN("appJIPMP - Process_Stage_Mode_List - Selected Mode = QUICKMATCH_MODE_CONTACT_MISSIONS")
m_currentStage = QUICKMATCH_SUBLIST
Display_QUICKMATCH_SUBLIST_Screen(QUICKMATCH_MODE_CONTACT_MISSIONS)
BREAK
CASE QUICKMATCH_MODE_JOBS
PRINTLN("appJIPMP - Process_Stage_Mode_List - Selected Mode = QUICKMATCH_MODE_JOBS")
m_currentStage = QUICKMATCH_SUBLIST
Display_QUICKMATCH_SUBLIST_Screen(QUICKMATCH_MODE_JOBS)
BREAK
CASE QUICKMATCH_MODE_ACTIVITIES
PRINTLN("appJIPMP - Process_Stage_Mode_List - Selected Mode = QUICKMATCH_MODE_ACTIVITIES")
m_currentStage = QUICKMATCH_SUBLIST
Display_QUICKMATCH_SUBLIST_Screen(QUICKMATCH_MODE_ACTIVITIES)
BREAK
CASE QUICKMATCH_MODE_PLAYLIST
PRINTLN("appJIPMP - Process_Stage_Mode_List - Selected Mode = QUICKMATCH_MODE_PLAYLIST")
UPDATE_QUICKMATCH_JOIN_SCREENS()
BREAK
CASE QUICKMATCH_MODE_RANDOM
PRINTLN("appJIPMP - Process_Stage_Mode_List - Selected Mode = QUICKMATCH_MODE_RANDOM")
UPDATE_QUICKMATCH_JOIN_SCREENS()
BREAK
ENDSWITCH
ELSE
PRINTLN("appJIPMP - Process_Stage_Mode_List - iselectedModeSlot is out of range of m_ModeList[iselectedModeSlot]) ")
ENDIF
ENDIF
ELSE
//#1492475
IF Is_Phone_Control_Just_Pressed (FRONTEND_CONTROL, INT_TO_ENUM (CONTROL_ACTION, PHONE_POSITIVE_INPUT))
g_InputButtonJustPressed = TRUE
Play_Back_Beep()
ENDIF
ENDIF
ENDPROC
PROC Process_Stage_Sublist()
Check_for_List_Navigation()
INT iMaxSelections
IF iCanDoQuickmatch = 0
AND SlotsUsed > 0 //Need this to prevent "Not available" from being selected.
IF Is_Phone_Control_Just_Pressed (FRONTEND_CONTROL, INT_TO_ENUM (CONTROL_ACTION, PHONE_POSITIVE_INPUT)) //Player selects a job type from the list.
g_InputButtonJustPressed = TRUE
Play_Select_Beep()
BEGIN_SCALEFORM_MOVIE_METHOD (SF_MovieIndex, "GET_CURRENT_SELECTION")
Choice_ReturnedSFIndex = END_SCALEFORM_MOVIE_METHOD_RETURN_VALUE()
WHILE NOT IS_SCALEFORM_MOVIE_METHOD_RETURN_VALUE_READY (Choice_ReturnedSFIndex)
WAIT (0)
PRINTLN("appJIPMP - Process_Stage_Sublist - - Waiting on scaleform return during selecting mode.")
ENDWHILE
iSelectedContent = GET_SCALEFORM_MOVIE_METHOD_RETURN_VALUE_INT (Choice_ReturnedSFIndex)
PRINTLN("appJIPMP - Process_Stage_Sublist - SELECTED MODE = ", GET_MODE_TEXT(INT_TO_ENUM(enumQuickMatchModes,m_ModeList[iselectedModeSlot])))
PRINTLN("appJIPMP - Process_Stage_Sublist - iSelectedContent = ", iSelectedContent)
SWITCH m_currentMode
CASE QUICKMATCH_MODE_SERIES
PRINTLN("appJIPMP - Process_Stage_Sublist - - iMaxSelections = QUICKMATCH_SERIES_MAX.")
PRINTLN("appJIPMP - Process_Stage_Sublist - SeriesList[iSelectedContent]) = ",GET_CONTENT_TEXT(QUICKMATCH_MODE_SERIES,m_SeriesList[iSelectedContent]))
iMaxSelections = ENUM_TO_INT(QUICKMATCH_SERIES_MAX)
BREAK
CASE QUICKMATCH_MODE_HEISTS
PRINTLN("appJIPMP - Process_Stage_Sublist - - iMaxSelections = QUICKMATCH_HEISTS_MAX.")
PRINTLN("appJIPMP - Process_Stage_Sublist - SeriesList[iSelectedContent]) = ",GET_CONTENT_TEXT(QUICKMATCH_MODE_HEISTS,m_HeistsList[iSelectedContent]))
iMaxSelections = ENUM_TO_INT(QUICKMATCH_HEISTS_MAX)
BREAK
CASE QUICKMATCH_MODE_JOBS
PRINTLN("appJIPMP - Process_Stage_Sublist - - iMaxSelections = QUICKMATCH_JOBS_MAX.")
iMaxSelections = ENUM_TO_INT(QUICKMATCH_JOBS_MAX)
BREAK
CASE QUICKMATCH_MODE_CONTACT_MISSIONS
PRINTLN("appJIPMP - Process_Stage_Sublist - - iMaxSelections = QUICKMATCH_CONTACT_MISSIONS_MAX .")
iMaxSelections = ENUM_TO_INT(QUICKMATCH_CONTACT_MISSIONS_MAX)
BREAK
CASE QUICKMATCH_MODE_ACTIVITIES
PRINTLN("appJIPMP - Process_Stage_Sublist - - iMaxSelections = QUICKMATCH_ACTIVITIES_MAX .")
iMaxSelections = ENUM_TO_INT(QUICKMATCH_ACTIVITIES_MAX)
BREAK
ENDSWITCH
IF iSelectedContent > -1 AND iSelectedContent < iMaxSelections
IF g_CellPhone.PhoneDS > PDS_AWAY
g_Cellphone.PhoneDS = PDS_COMPLEXAPP
PRINTLN("STATE ASSIGNMENT 202. appJIPMP::Process_Stage_Sublist() assigns PDS_COMPLEXAPP")
ENDIF
bDisplayWithFriends = ARE_ANY_FRIENDS_INT_THIS_SESSION()
UPDATE_QUICKMATCH_JOIN_SCREENS()
ENDIF
ENDIF
IF Is_Phone_Control_Just_Pressed (FRONTEND_CONTROL, INT_TO_ENUM (CONTROL_ACTION, PHONE_NEGATIVE_INPUT))
GO_BACK_TO_MODES_MENU()
ENDIF
ELSE
PRINTLN("appJIPMP - Process_Stage_Sublist - SlotsUsed = 0.")
//#1492475
IF Is_Phone_Control_Just_Pressed (FRONTEND_CONTROL, INT_TO_ENUM (CONTROL_ACTION, PHONE_POSITIVE_INPUT))
g_InputButtonJustPressed = TRUE
Play_Back_Beep()
ENDIF
ENDIF
ENDPROC
PROC PROCESS_LAUNCH_QUICKMATCH()
INT itype
Clear_Accept_Invite_Warning_Help_Text_If_On_Display()
IF IS_MODE_AVAILABLE(m_currentMode)
PRINTLN("[TS] ***************************************")
CLEAR_MY_TRANSITION_SESSION_CONTENT_ID()
INT iCurrentPlaylistPos
INT iCurrentMissionArrayPos
INT iPlayList
SWITCH m_currentMode
CASE QUICKMATCH_MODE_RANDOM
iType = ciTRANSITION_SESSIONS_ACTIVITY_TYPE_ANY
PRINTLN("[TS] * QUICKMATCH PHONE - SELECTED RANDOM")
BREAK
CASE QUICKMATCH_MODE_PLAYLIST
iType = FM_GAME_MODE_PLAYLIST
PRINTLN("[TS] * QUICKMATCH PHONE - SELECTED PLAYLIST")
BREAK
CASE QUICKMATCH_MODE_SERIES
PRINTLN("[TS] * QUICKMATCH PHONE - SELECTED QUICKMATCH_MODE_SERIES")
SWITCH INT_TO_ENUM(enumQuickMatchSeries,m_SeriesList[iSelectedContent])
CASE QUICKMATCH_SERIES_FEATURED
iPlayList = CV2_GET_NEW_VS_ARRAY_POS()
IF iPlayList != -1
AND SHOULD_SHOW_QUICKMATCH_MODE_MISSION_NEW_VS(iPlayList)
iType = FMMC_TYPE_MISSION_NEW_VS
iCurrentPlaylistPos = CV2_PROFESSIONAL_GET_CURRENTLY_ACTIVE_V2_CORONA_POS(iPlayList)
iCurrentMissionArrayPos = GET_ROCKSTAR_MISSION_FROM_ROOT_CONTENT_ID_HASH(CV2_PROFESSIONAL_GET_CURRENTLY_ACTIVE_V2_CORONA_ROOT_CONTENT_ID_HASH(iCurrentPlaylistPos, iPlayList))
IF iCurrentMissionArrayPos != -1
SET_MY_TRANSITION_SESSION_CONTENT_ID(g_FMMC_ROCKSTAR_CREATED.sMissionHeaderVars[iCurrentMissionArrayPos].tlName)
SET_TRANSITION_SESSIONS_QUICK_MATCH_MAX_PLAYERS(g_FMMC_ROCKSTAR_CREATED.sMissionHeaderVars[iCurrentMissionArrayPos].iMaxPlayers)
SET_TRANSITION_SESSIONS_SKIP_JOB_WARNING()
#IF IS_DEBUG_BUILD
ELSE
PRINTLN("[TS] * QUICKMATCH PHONE - QUICKMATCH_SERIES_FEATURED - iCurrentMissionArrayPos = -1")
#ENDIF
ENDIF
ELSE
iType = FMMC_TYPE_MISSION_NEW_VS
PRINTLN("[TS] * QUICKMATCH PHONE - SELECTED QUICKMATCH_SERIES_FEATURED")
ENDIF
BREAK
CASE QUICKMATCH_SERIES_COMMUNITY
iType = FMMC_TYPE_COMMUNITY_SERIES
iPlayList = CV2_GET_ADVERSARY_SERIES_ARRAY_POS(FMMC_TYPE_COMMUNITY_SERIES)
IF iPlayList != -1
iCurrentPlaylistPos = CV2_PROFESSIONAL_GET_CURRENTLY_ACTIVE_V2_CORONA_POS(iPlayList)
iCurrentMissionArrayPos = GET_ROCKSTAR_MISSION_FROM_ROOT_CONTENT_ID_HASH(g_sMPTunables.iFmCoronaPlaylistProffesionalRootContentId[iPlayList][iCurrentPlaylistPos], TRUE)
IF iCurrentMissionArrayPos != -1
SET_MY_TRANSITION_SESSION_CONTENT_ID(g_FMMC_ROCKSTAR_VERIFIED.sMissionHeaderVars[iCurrentMissionArrayPos].tlName)
SET_TRANSITION_SESSIONS_QUICK_MATCH_MAX_PLAYERS(g_FMMC_ROCKSTAR_VERIFIED.sMissionHeaderVars[iCurrentMissionArrayPos].iMaxPlayers)
SET_TRANSITION_SESSIONS_SKIP_JOB_WARNING()
#IF IS_DEBUG_BUILD
ELSE
PRINTLN("[TS] * QUICKMATCH PHONE - QUICKMATCH_SERIES_COMMUNITY - iCurrentMissionArrayPos = -1")
#ENDIF
ENDIF
ENDIF
PRINTLN("[TS] * QUICKMATCH PHONE - SELECTED QUICKMATCH_SERIES_COMMUNITY")
BREAK
CASE QUICKMATCH_SERIES_CAYO_PERICO
iType = FMMC_TYPE_CAYO_PERICO_SERIES
iPlayList = CV2_GET_ADVERSARY_SERIES_ARRAY_POS(FMMC_TYPE_CAYO_PERICO_SERIES)
IF iPlayList != -1
iCurrentPlaylistPos = CV2_PROFESSIONAL_GET_CURRENTLY_ACTIVE_V2_CORONA_POS(iPlayList)
iCurrentMissionArrayPos = GET_ROCKSTAR_MISSION_FROM_ROOT_CONTENT_ID_HASH(g_sMPTunables.iFmCoronaPlaylistProffesionalRootContentId[iPlayList][iCurrentPlaylistPos], TRUE)
IF iCurrentMissionArrayPos != -1
SET_MY_TRANSITION_SESSION_CONTENT_ID(g_FMMC_ROCKSTAR_VERIFIED.sMissionHeaderVars[iCurrentMissionArrayPos].tlName)
SET_TRANSITION_SESSIONS_QUICK_MATCH_MAX_PLAYERS(g_FMMC_ROCKSTAR_VERIFIED.sMissionHeaderVars[iCurrentMissionArrayPos].iMaxPlayers)
SET_TRANSITION_SESSIONS_SKIP_JOB_WARNING()
#IF IS_DEBUG_BUILD
ELSE
PRINTLN("[TS] * QUICKMATCH PHONE - QUICKMATCH_SERIES_CAYO_PERICO - iCurrentMissionArrayPos = -1")
#ENDIF
ENDIF
ENDIF
PRINTLN("[TS] * QUICKMATCH PHONE - SELECTED QUICKMATCH_SERIES_CAYO_PERICO")
BREAK
#IF FEATURE_GEN9_EXCLUSIVE
CASE QUICKMATCH_SERIES_HSW_RACE
IF g_sMPTunables.bDisableStuntSeriesBucket
iType = FMMC_TYPE_RACE
ELSE
iType = FMMC_TYPE_HSW_RACE_SERIES
ENDIF
iPlayList = CV2_GET_ADVERSARY_SERIES_ARRAY_POS(FMMC_TYPE_HSW_RACE_SERIES)
IF iPlayList != -1
iCurrentPlaylistPos = CV2_PROFESSIONAL_GET_CURRENTLY_ACTIVE_V2_CORONA_POS(iPlayList)
iCurrentMissionArrayPos = GET_ROCKSTAR_MISSION_FROM_ROOT_CONTENT_ID_HASH(g_sMPTunables.iFmCoronaPlaylistProffesionalRootContentId[iPlayList][iCurrentPlaylistPos])
IF iCurrentMissionArrayPos != -1
SET_MY_TRANSITION_SESSION_CONTENT_ID(g_FMMC_ROCKSTAR_CREATED.sMissionHeaderVars[iCurrentMissionArrayPos].tlName)
SET_TRANSITION_SESSIONS_QUICK_MATCH_MAX_PLAYERS(g_FMMC_ROCKSTAR_CREATED.sMissionHeaderVars[iCurrentMissionArrayPos].iMaxPlayers)
SET_TRANSITION_SESSIONS_SKIP_JOB_WARNING()
#IF IS_DEBUG_BUILD
ELSE
PRINTLN("[TS] * QUICKMATCH PHONE - QUICKMATCH_SERIES_HSW_RACE - iCurrentMissionArrayPos = -1")
#ENDIF
ENDIF
ENDIF
PRINTLN("[TS] * QUICKMATCH PHONE - SELECTED QUICKMATCH_SERIES_HSW_RACE")
BREAK
#ENDIF
CASE QUICKMATCH_SERIES_STREET_RACE
IF g_sMPTunables.bDisableStuntSeriesBucket
iType = FMMC_TYPE_RACE
ELSE
iType = FMMC_TYPE_STREET_RACE_SERIES
ENDIF
iPlayList = CV2_GET_ADVERSARY_SERIES_ARRAY_POS(FMMC_TYPE_STREET_RACE_SERIES)
IF iPlayList != -1
iCurrentPlaylistPos = CV2_PROFESSIONAL_GET_CURRENTLY_ACTIVE_V2_CORONA_POS(iPlayList)
iCurrentMissionArrayPos = GET_ROCKSTAR_MISSION_FROM_ROOT_CONTENT_ID_HASH(g_sMPTunables.iFmCoronaPlaylistProffesionalRootContentId[iPlayList][iCurrentPlaylistPos])
IF iCurrentMissionArrayPos != -1
SET_MY_TRANSITION_SESSION_CONTENT_ID(g_FMMC_ROCKSTAR_CREATED.sMissionHeaderVars[iCurrentMissionArrayPos].tlName)
SET_TRANSITION_SESSIONS_QUICK_MATCH_MAX_PLAYERS(g_FMMC_ROCKSTAR_CREATED.sMissionHeaderVars[iCurrentMissionArrayPos].iMaxPlayers)
SET_TRANSITION_SESSIONS_SKIP_JOB_WARNING()
#IF IS_DEBUG_BUILD
ELSE
PRINTLN("[TS] * QUICKMATCH PHONE - QUICKMATCH_SERIES_STREET_RACE - iCurrentMissionArrayPos = -1")
#ENDIF
ENDIF
ENDIF
PRINTLN("[TS] * QUICKMATCH PHONE - SELECTED QUICKMATCH_SERIES_STREET_RACE")
BREAK
CASE QUICKMATCH_SERIES_PURSUIT
IF g_sMPTunables.bDisableStuntSeriesBucket
iType = FMMC_TYPE_RACE
ELSE
iType = FMMC_TYPE_PURSUIT_SERIES
ENDIF
iPlayList = CV2_GET_ADVERSARY_SERIES_ARRAY_POS(FMMC_TYPE_PURSUIT_SERIES)
IF iPlayList != -1
iCurrentPlaylistPos = CV2_PROFESSIONAL_GET_CURRENTLY_ACTIVE_V2_CORONA_POS(iPlayList)
iCurrentMissionArrayPos = GET_ROCKSTAR_MISSION_FROM_ROOT_CONTENT_ID_HASH(g_sMPTunables.iFmCoronaPlaylistProffesionalRootContentId[iPlayList][iCurrentPlaylistPos])
IF iCurrentMissionArrayPos != -1
SET_MY_TRANSITION_SESSION_CONTENT_ID(g_FMMC_ROCKSTAR_CREATED.sMissionHeaderVars[iCurrentMissionArrayPos].tlName)
SET_TRANSITION_SESSIONS_QUICK_MATCH_MAX_PLAYERS(g_FMMC_ROCKSTAR_CREATED.sMissionHeaderVars[iCurrentMissionArrayPos].iMaxPlayers)
SET_TRANSITION_SESSIONS_SKIP_JOB_WARNING()
#IF IS_DEBUG_BUILD
ELSE
PRINTLN("[TS] * QUICKMATCH PHONE - QUICKMATCH_SERIES_PURSUIT - iCurrentMissionArrayPos = -1")
#ENDIF
ENDIF
ENDIF
PRINTLN("[TS] * QUICKMATCH PHONE - SELECTED QUICKMATCH_SERIES_PURSUIT")
BREAK
CASE QUICKMATCH_SERIES_OPEN_WHEEL
IF g_sMPTunables.bDisableStuntSeriesBucket
iType = FMMC_TYPE_RACE
ELSE
iType = FMMC_TYPE_OPEN_WHEEL_SERIES
ENDIF
iPlayList = CV2_GET_ADVERSARY_SERIES_ARRAY_POS(FMMC_TYPE_OPEN_WHEEL_SERIES)
IF iPlayList != -1
iCurrentPlaylistPos = CV2_PROFESSIONAL_GET_CURRENTLY_ACTIVE_V2_CORONA_POS(iPlayList)
iCurrentMissionArrayPos = GET_ROCKSTAR_MISSION_FROM_ROOT_CONTENT_ID_HASH(g_sMPTunables.iFmCoronaPlaylistProffesionalRootContentId[iPlayList][iCurrentPlaylistPos])
IF iCurrentMissionArrayPos != -1
SET_MY_TRANSITION_SESSION_CONTENT_ID(g_FMMC_ROCKSTAR_CREATED.sMissionHeaderVars[iCurrentMissionArrayPos].tlName)
SET_TRANSITION_SESSIONS_QUICK_MATCH_MAX_PLAYERS(g_FMMC_ROCKSTAR_CREATED.sMissionHeaderVars[iCurrentMissionArrayPos].iMaxPlayers)
SET_TRANSITION_SESSIONS_SKIP_JOB_WARNING()
#IF IS_DEBUG_BUILD
ELSE
PRINTLN("[TS] * QUICKMATCH PHONE - QUICKMATCH_SERIES_OPEN_WHEEL - iCurrentMissionArrayPos = -1")
#ENDIF
ENDIF
ENDIF
PRINTLN("[TS] * QUICKMATCH PHONE - SELECTED QUICKMATCH_SERIES_OPEN_WHEEL")
BREAK
CASE QUICKMATCH_SERIES_RACE
IF g_sMPTunables.bDisableStuntSeriesBucket
iType = FMMC_TYPE_RACE
ELSE
iType = FMMC_TYPE_RACE_SERIES
ENDIF
iPlayList = CV2_GET_ADVERSARY_SERIES_ARRAY_POS(FMMC_TYPE_RACE_SERIES)
IF iPlayList != -1
iCurrentPlaylistPos = CV2_PROFESSIONAL_GET_CURRENTLY_ACTIVE_V2_CORONA_POS(iPlayList)
iCurrentMissionArrayPos = GET_ROCKSTAR_MISSION_FROM_ROOT_CONTENT_ID_HASH(g_sMPTunables.iFmCoronaPlaylistProffesionalRootContentId[iPlayList][iCurrentPlaylistPos])
IF iCurrentMissionArrayPos != -1
SET_MY_TRANSITION_SESSION_CONTENT_ID(g_FMMC_ROCKSTAR_CREATED.sMissionHeaderVars[iCurrentMissionArrayPos].tlName)
SET_TRANSITION_SESSIONS_QUICK_MATCH_MAX_PLAYERS(g_FMMC_ROCKSTAR_CREATED.sMissionHeaderVars[iCurrentMissionArrayPos].iMaxPlayers)
SET_TRANSITION_SESSIONS_SKIP_JOB_WARNING()
#IF IS_DEBUG_BUILD
ELSE
PRINTLN("[TS] * QUICKMATCH PHONE - QUICKMATCH_SERIES_RACE - iCurrentMissionArrayPos = -1")
#ENDIF
ENDIF
ENDIF
PRINTLN("[TS] * QUICKMATCH PHONE - SELECTED QUICKMATCH_SERIES_RACE")
BREAK
CASE QUICKMATCH_SERIES_SURVIVAL
IF g_sMPTunables.bDisableStuntSeriesBucket
iType = FMMC_TYPE_RACE
ELSE
iType = FMMC_TYPE_SURVIVAL_SERIES
ENDIF
iPlayList = CV2_GET_ADVERSARY_SERIES_ARRAY_POS(FMMC_TYPE_SURVIVAL_SERIES)
IF iPlayList != -1
iCurrentPlaylistPos = CV2_PROFESSIONAL_GET_CURRENTLY_ACTIVE_V2_CORONA_POS(iPlayList)
iCurrentMissionArrayPos = GET_ROCKSTAR_MISSION_FROM_ROOT_CONTENT_ID_HASH(g_sMPTunables.iFmCoronaPlaylistProffesionalRootContentId[iPlayList][iCurrentPlaylistPos])
IF iCurrentMissionArrayPos != -1
SET_MY_TRANSITION_SESSION_CONTENT_ID(g_FMMC_ROCKSTAR_CREATED.sMissionHeaderVars[iCurrentMissionArrayPos].tlName)
SET_TRANSITION_SESSIONS_QUICK_MATCH_MAX_PLAYERS(g_FMMC_ROCKSTAR_CREATED.sMissionHeaderVars[iCurrentMissionArrayPos].iMaxPlayers)
SET_TRANSITION_SESSIONS_SKIP_JOB_WARNING()
#IF IS_DEBUG_BUILD
ELSE
PRINTLN("[TS] * QUICKMATCH PHONE - QUICKMATCH_SERIES_SURVIVAL - iCurrentMissionArrayPos = -1")
#ENDIF
ENDIF
ENDIF
PRINTLN("[TS] * QUICKMATCH PHONE - SELECTED QUICKMATCH_SERIES_SURVIVAL")
BREAK
CASE QUICKMATCH_SERIES_ARENA_WAR
IF g_sMPTunables.bDisableStuntSeriesBucket
iType = FMMC_TYPE_RACE
ELSE
iType = FMMC_TYPE_ARENA_SERIES
ENDIF
iPlayList = CV2_GET_ADVERSARY_SERIES_ARRAY_POS(FMMC_TYPE_ARENA_SERIES)
IF iPlayList != -1
iCurrentPlaylistPos = CV2_PROFESSIONAL_GET_CURRENTLY_ACTIVE_V2_CORONA_POS(iPlayList)
iCurrentMissionArrayPos = GET_ROCKSTAR_MISSION_FROM_ROOT_CONTENT_ID_HASH(g_sMPTunables.iFmCoronaPlaylistProffesionalRootContentId[iPlayList][iCurrentPlaylistPos])
IF iCurrentMissionArrayPos != -1
SET_MY_TRANSITION_SESSION_CONTENT_ID(g_FMMC_ROCKSTAR_CREATED.sMissionHeaderVars[iCurrentMissionArrayPos].tlName)
SET_TRANSITION_SESSIONS_QUICK_MATCH_MAX_PLAYERS(g_FMMC_ROCKSTAR_CREATED.sMissionHeaderVars[iCurrentMissionArrayPos].iMaxPlayers)
SET_TRANSITION_SESSIONS_SKIP_JOB_WARNING()
#IF IS_DEBUG_BUILD
ELSE
PRINTLN("[TS] * QUICKMATCH PHONE - QUICKMATCH_SERIES_ARENA_WAR - iCurrentMissionArrayPos = -1")
#ENDIF
ENDIF
ENDIF
PRINTLN("[TS] * QUICKMATCH PHONE - SELECTED QUICKMATCH_SERIES_ARENA_WAR")
BREAK
CASE QUICKMATCH_SERIES_SPECIAL_RACE
IF g_sMPTunables.bDisableStuntSeriesBucket
iType = FMMC_TYPE_MISSION_NEW_VS
ELSE
iType = FMMC_TYPE_SPECIAL_VEHICLE_RACE_SERIES
ENDIF
iPlayList = CV2_GET_ADVERSARY_SERIES_ARRAY_POS(FMMC_TYPE_SPECIAL_VEHICLE_RACE_SERIES)
IF iPlayList != -1
iCurrentPlaylistPos = CV2_PROFESSIONAL_GET_CURRENTLY_ACTIVE_V2_CORONA_POS(iPlayList)
iCurrentMissionArrayPos = GET_ROCKSTAR_MISSION_FROM_ROOT_CONTENT_ID_HASH(g_sMPTunables.iFmCoronaPlaylistProffesionalRootContentId[iPlayList][iCurrentPlaylistPos])
IF iCurrentMissionArrayPos != -1
SET_MY_TRANSITION_SESSION_CONTENT_ID(g_FMMC_ROCKSTAR_CREATED.sMissionHeaderVars[iCurrentMissionArrayPos].tlName)
SET_TRANSITION_SESSIONS_QUICK_MATCH_MAX_PLAYERS(g_FMMC_ROCKSTAR_CREATED.sMissionHeaderVars[iCurrentMissionArrayPos].iMaxPlayers)
SET_TRANSITION_SESSIONS_SKIP_JOB_WARNING()
#IF IS_DEBUG_BUILD
ELSE
PRINTLN("[TS] * QUICKMATCH PHONE - QUICKMATCH_SERIES_SPECIAL_RACE - iCurrentMissionArrayPos = -1")
#ENDIF
ENDIF
ENDIF
PRINTLN("[TS] * QUICKMATCH PHONE - SELECTED QUICKMATCH_SERIES_SPECIAL_RACE")
BREAK
CASE QUICKMATCH_SERIES_SUPER_SPORT
IF g_sMPTunables.bDisableStuntSeriesBucket
iType = FMMC_TYPE_RACE
ELSE
iType = FMMC_TYPE_HOTRING_SERIES
ENDIF
iPlayList = CV2_GET_ADVERSARY_SERIES_ARRAY_POS(FMMC_TYPE_HOTRING_SERIES)
IF iPlayList != -1
iCurrentPlaylistPos = CV2_PROFESSIONAL_GET_CURRENTLY_ACTIVE_V2_CORONA_POS(iPlayList)
iCurrentMissionArrayPos = GET_ROCKSTAR_MISSION_FROM_ROOT_CONTENT_ID_HASH(g_sMPTunables.iFmCoronaPlaylistProffesionalRootContentId[iPlayList][iCurrentPlaylistPos])
IF iCurrentMissionArrayPos != -1
SET_MY_TRANSITION_SESSION_CONTENT_ID(g_FMMC_ROCKSTAR_CREATED.sMissionHeaderVars[iCurrentMissionArrayPos].tlName)
SET_TRANSITION_SESSIONS_QUICK_MATCH_MAX_PLAYERS(g_FMMC_ROCKSTAR_CREATED.sMissionHeaderVars[iCurrentMissionArrayPos].iMaxPlayers)
SET_TRANSITION_SESSIONS_SKIP_JOB_WARNING()
#IF IS_DEBUG_BUILD
ELSE
PRINTLN("[TS] * QUICKMATCH PHONE - QUICKMATCH_SERIES_SUPER_SPORT - iCurrentMissionArrayPos = -1")
#ENDIF
ENDIF
ENDIF
PRINTLN("[TS] * QUICKMATCH PHONE - SELECTED QUICKMATCH_SERIES_SUPER_SPORT")
BREAK
CASE QUICKMATCH_SERIES_TRANSFORM
IF g_sMPTunables.bDisableStuntSeriesBucket
iType = FMMC_TYPE_RACE
ELSE
iType = FMMC_TYPE_TRANSFORM_SERIES
ENDIF
iPlayList = CV2_GET_ADVERSARY_SERIES_ARRAY_POS(FMMC_TYPE_TRANSFORM_SERIES)
IF iPlayList != -1
iCurrentPlaylistPos = CV2_PROFESSIONAL_GET_CURRENTLY_ACTIVE_V2_CORONA_POS(iPlayList)
iCurrentMissionArrayPos = GET_ROCKSTAR_MISSION_FROM_ROOT_CONTENT_ID_HASH(g_sMPTunables.iFmCoronaPlaylistProffesionalRootContentId[iPlayList][iCurrentPlaylistPos])
IF iCurrentMissionArrayPos != -1
SET_MY_TRANSITION_SESSION_CONTENT_ID(g_FMMC_ROCKSTAR_CREATED.sMissionHeaderVars[iCurrentMissionArrayPos].tlName)
SET_TRANSITION_SESSIONS_QUICK_MATCH_MAX_PLAYERS(g_FMMC_ROCKSTAR_CREATED.sMissionHeaderVars[iCurrentMissionArrayPos].iMaxPlayers)
SET_TRANSITION_SESSIONS_SKIP_JOB_WARNING()
#IF IS_DEBUG_BUILD
ELSE
PRINTLN("[TS] * QUICKMATCH PHONE - QUICKMATCH_SERIES_TRANSFORM - iCurrentMissionArrayPos = -1")
#ENDIF
ENDIF
ENDIF
PRINTLN("[TS] * QUICKMATCH PHONE - SELECTED QUICKMATCH_SERIES_TRANSFORM")
BREAK
CASE QUICKMATCH_SERIES_BUNKER
IF g_sMPTunables.bDisableStuntSeriesBucket
iType = FMMC_TYPE_MISSION_NEW_VS
ELSE
iType = FMMC_TYPE_BUNKER_SERIES
ENDIF
iPlayList = CV2_GET_ADVERSARY_SERIES_ARRAY_POS(FMMC_TYPE_BUNKER_SERIES)
IF iPlayList != -1
iCurrentPlaylistPos = CV2_PROFESSIONAL_GET_CURRENTLY_ACTIVE_V2_CORONA_POS(iPlayList)
iCurrentMissionArrayPos = GET_ROCKSTAR_MISSION_FROM_ROOT_CONTENT_ID_HASH(g_sMPTunables.iFmCoronaPlaylistProffesionalRootContentId[iPlayList][iCurrentPlaylistPos])
IF iCurrentMissionArrayPos != -1
SET_MY_TRANSITION_SESSION_CONTENT_ID(g_FMMC_ROCKSTAR_CREATED.sMissionHeaderVars[iCurrentMissionArrayPos].tlName)
SET_TRANSITION_SESSIONS_QUICK_MATCH_MAX_PLAYERS(g_FMMC_ROCKSTAR_CREATED.sMissionHeaderVars[iCurrentMissionArrayPos].iMaxPlayers)
SET_TRANSITION_SESSIONS_SKIP_JOB_WARNING()
#IF IS_DEBUG_BUILD
ELSE
PRINTLN("[TS] * QUICKMATCH PHONE - QUICKMATCH_SERIES_BUNKER - iCurrentMissionArrayPos = -1")
#ENDIF
ENDIF
ENDIF
PRINTLN("[TS] * QUICKMATCH PHONE - SELECTED QUICKMATCH_SERIES_BUNKER")
BREAK
CASE QUICKMATCH_SERIES_STUNT
IF g_sMPTunables.bDisableStuntSeriesBucket
iType = FMMC_TYPE_RACE
ELSE
iType = FMMC_TYPE_RACE_STUNT_FOR_QM
ENDIF
iCurrentPlaylistPos = CV2_GET_CURRENTLY_ACTIVE_V2_CORONA_POS()
iCurrentMissionArrayPos = GET_ROCKSTAR_MISSION_FROM_ROOT_CONTENT_ID_HASH(CV2_GET_CURRENTLY_ACTIVE_V2_CORONA_ROOT_CONTENT_ID_HASH(iCurrentPlaylistPos))
IF iCurrentMissionArrayPos != -1
SET_MY_TRANSITION_SESSION_CONTENT_ID(g_FMMC_ROCKSTAR_CREATED.sMissionHeaderVars[iCurrentMissionArrayPos].tlName)
SET_TRANSITION_SESSIONS_QUICK_MATCH_MAX_PLAYERS(g_FMMC_ROCKSTAR_CREATED.sMissionHeaderVars[iCurrentMissionArrayPos].iMaxPlayers)
SET_TRANSITION_SESSIONS_SKIP_JOB_WARNING()
#IF IS_DEBUG_BUILD
ELSE
PRINTLN("[TS] * QUICKMATCH PHONE - QUICKMATCH_SERIES_STUNT - iCurrentMissionArrayPos = -1")
#ENDIF
ENDIF
PRINTLN("[TS] * QUICKMATCH PHONE - SELECTED QUICKMATCH_SERIES_STUNT")
BREAK
CASE QUICKMATCH_SERIES_ADVERSARY
IF g_sMPTunables.bDisableStuntSeriesBucket
iType = FMMC_TYPE_MISSION_NEW_VS
ELSE
iType = FMMC_TYPE_ADVERSARY_SERIES
ENDIF
iPlayList = CV2_GET_ADVERSARY_SERIES_ARRAY_POS()
IF iPlayList != -1
iCurrentPlaylistPos = CV2_PROFESSIONAL_GET_CURRENTLY_ACTIVE_V2_CORONA_POS(iPlayList)
iCurrentMissionArrayPos = GET_ROCKSTAR_MISSION_FROM_ROOT_CONTENT_ID_HASH(g_sMPTunables.iFmCoronaPlaylistProffesionalRootContentId[iPlayList][iCurrentPlaylistPos])
IF iCurrentMissionArrayPos != -1
SET_MY_TRANSITION_SESSION_CONTENT_ID(g_FMMC_ROCKSTAR_CREATED.sMissionHeaderVars[iCurrentMissionArrayPos].tlName)
SET_TRANSITION_SESSIONS_QUICK_MATCH_MAX_PLAYERS(g_FMMC_ROCKSTAR_CREATED.sMissionHeaderVars[iCurrentMissionArrayPos].iMaxPlayers)
SET_TRANSITION_SESSIONS_SKIP_JOB_WARNING()
#IF IS_DEBUG_BUILD
ELSE
PRINTLN("[TS] * QUICKMATCH PHONE - QUICKMATCH_SERIES_ADVERSARY - iCurrentMissionArrayPos = -1")
#ENDIF
ENDIF
ENDIF
PRINTLN("[TS] * QUICKMATCH PHONE - SELECTED QUICKMATCH_SERIES_ADVERSARY")
BREAK
CASE QUICKMATCH_SERIES_ACTIVE_PREMIUM_RACE
iType = FMMC_TYPE_RACE
iPlayList = CV2_GET_RACE_ARRAY_POS()
iCurrentPlaylistPos = CV2_PROFESSIONAL_GET_CURRENTLY_ACTIVE_V2_CORONA_POS(iPlayList)
iCurrentMissionArrayPos = GET_ROCKSTAR_MISSION_FROM_ROOT_CONTENT_ID_HASH(CV2_PROFESSIONAL_GET_CURRENTLY_ACTIVE_V2_CORONA_ROOT_CONTENT_ID_HASH(iCurrentPlaylistPos, iPlayList))
IF iCurrentMissionArrayPos != -1
AND g_sMPTunables.iProfesionalCoronaType[iPlayList] = FMMC_TYPE_RACE
SET_MY_TRANSITION_SESSION_CONTENT_ID(g_FMMC_ROCKSTAR_CREATED.sMissionHeaderVars[iCurrentMissionArrayPos].tlName)
SET_TRANSITION_SESSIONS_QUICK_MATCH_MAX_PLAYERS(g_FMMC_ROCKSTAR_CREATED.sMissionHeaderVars[iCurrentMissionArrayPos].iMaxPlayers)
SET_TRANSITION_SESSIONS_SKIP_JOB_WARNING()
SET_TRANSITION_SESSIONS_LAUNCHING_PROFESSIONAL_RACE()
#IF IS_DEBUG_BUILD
ELSE
PRINTLN("[TS] * QUICKMATCH PHONE - QUICKMATCH_SERIES_ACTIVE_PREMIUM_RACE - iCurrentMissionArrayPos = -1")
#ENDIF
ENDIF
PRINTLN("[TS] * QUICKMATCH PHONE - SELECTED QUICKMATCH_SERIES_ACTIVE_PREMIUM_RACE")
BREAK
ENDSWITCH
BREAK
CASE QUICKMATCH_MODE_HEISTS
PRINTLN("[TS] * QUICKMATCH PHONE - SELECTED QUICKMATCH_MODE_HEISTS")
SWITCH INT_TO_ENUM(enumQuickMatchHeists,m_HeistsList[iSelectedContent])
#IF FEATURE_HEIST_ISLAND
CASE QUICKMATCH_HEISTS_CAYO_PERICO
iType = FMMC_TYPE_HEIST_ISLAND_FINALE
SET_TRANSITION_SESSIONS_STARTING_HEIST_ISLAND_QUICK_MATCH()
SET_TRANSITION_SESSIONS_STARTING_ON_CALL()
SET_ON_CALL_QUICKMATCH_ATTEMPTS(0)
PRINTLN("[TS] * QUICKMATCH PHONE - SELECTED QUICKMATCH_HEISTS_CAYO_PERICO")
BREAK
#ENDIF
CASE QUICKMATCH_HEISTS_DIAMOND_CASINO
iType = FMMC_TYPE_GB_CASINO_HEIST
SET_TRANSITION_SESSIONS_STARTING_CASINO_HEIST_QUICK_MATCH()
SET_TRANSITION_SESSIONS_STARTING_ON_CALL()
SET_ON_CALL_QUICKMATCH_ATTEMPTS(0)
PRINTLN("[TS] * QUICKMATCH PHONE - SELECTED QUICKMATCH_HEISTS_DIAMOND_CASINO")
BREAK
CASE QUICKMATCH_HEISTS_DOOMSDAY
iType = FMMC_TYPE_FM_GANGOPS
SET_TRANSITION_SESSIONS_STARTING_GANG_OPS_QUICK_MATCH()
SET_TRANSITION_SESSIONS_STARTING_ON_CALL()
SET_ON_CALL_QUICKMATCH_ATTEMPTS(0)
INT iGangOpsType
iGangOpsType = GET_RANDOM_HEIST_QUICK_MATCH_TYPE(TRUE)
IF iGangOpsType = FM_TRAN_ACTIVITY_ID_GO_FIN
iType = FMMC_TYPE_FM_GANGOPS_FIN
ENDIF
SET_TRANSITION_SESSION_HEIST_QUICK_MATCH_TYPE(iGangOpsType)
PRINTLN("[TS] * QUICKMATCH PHONE - SELECTED QUICKMATCH_HEISTS_DOOMSDAY")
BREAK
CASE QUICKMATCH_HEISTS_HEIST
iType = GET_CURRENT_HEIST_ROO_CONTENT_ID_HASH()
SET_TRANSITION_SESSIONS_STARTING_HEIST_QUICK_MATCH()
SET_TRANSITION_SESSIONS_STARTING_ON_CALL()
SET_ON_CALL_QUICKMATCH_ATTEMPTS(0)
SET_TRANSITION_SESSION_HEIST_QUICK_MATCH_TYPE(GET_RANDOM_HEIST_QUICK_MATCH_TYPE())
PRINTLN("[TS] * QUICKMATCH PHONE - SELECTED QUICKMATCH_HEISTS_HEIST")
BREAK
ENDSWITCH
BREAK
CASE QUICKMATCH_MODE_ACTIVITIES
PRINTLN("[TS] * QUICKMATCH PHONE - SELECTED QUICKMATCH_MODE_ACTIVITIES")
SWITCH INT_TO_ENUM(enumQuickMatchActivities,m_ActivitiesList[iSelectedContent])
CASE QUICKMATCH_ACTIVITIES_ARM
iType = FMMC_TYPE_MG_ARM_WRESTLING
PRINTLN("[TS] * QUICKMATCH PHONE - SELECTED ARM")
BREAK
CASE QUICKMATCH_ACTIVITIES_DARTS
iType = FMMC_TYPE_MG_DARTS
PRINTLN("[TS] * QUICKMATCH PHONE - SELECTED DARTS")
BREAK
CASE QUICKMATCH_ACTIVITIES_GOLF
iType = FMMC_TYPE_MG_GOLF
PRINTLN("[TS] * QUICKMATCH PHONE - SELECTED GOLF")
BREAK
CASE QUICKMATCH_ACTIVITIES_RANGE
iType = FMMC_TYPE_MG_SHOOTING_RANGE
PRINTLN("[TS] * QUICKMATCH PHONE - SELECTED RANGE")
BREAK
CASE QUICKMATCH_ACTIVITIES_TENNIS
iType = FMMC_TYPE_MG_TENNIS
PRINTLN("[TS] * QUICKMATCH PHONE - SELECTED TENNIS")
BREAK
ENDSWITCH
BREAK
CASE QUICKMATCH_MODE_CONTACT_MISSIONS
PRINTLN("[TS] * QUICKMATCH PHONE - SELECTED QUICKMATCH_MODE_CONTACT_MISSIONS")
SWITCH INT_TO_ENUM(enumQuickMatchContactMissions,m_ContactMissionsList[iSelectedContent])
CASE QUICKMATCH_CONTACT_MISSIONS_SHORT_TRIP
iType = FMMC_TYPE_FIXER_SHORT_TRIP
SET_TRANSITION_SESSIONS_STARTING_SHORT_TRIP_QUICK_MATCH()
SET_TRANSITION_SESSIONS_STARTING_ON_CALL()
SET_ON_CALL_QUICKMATCH_ATTEMPTS(0)
PRINTLN("[TS] * QUICKMATCH PHONE - SELECTED QUICKMATCH_CONTACT_MISSIONS_SHORT_TRIP")
BREAK
CASE QUICKMATCH_CONTACT_MISSIONS_AUTO_SHOP
iType = FMMC_TYPE_TUNER_ROBBERY_FINALE
SET_TRANSITION_SESSIONS_STARTING_TUNER_ROBBERY_QUICK_MATCH()
SET_TRANSITION_SESSIONS_STARTING_ON_CALL()
SET_ON_CALL_QUICKMATCH_ATTEMPTS(0)
PRINTLN("[TS] * QUICKMATCH PHONE - SELECTED QUICKMATCH_CONTACT_MISSIONS_AUTO_SHOP")
BREAK
CASE QUICKMATCH_CONTACT_MISSIONS_CONTACT
iType = FMMC_TYPE_MISSION
PRINTLN("[TS] * QUICKMATCH PHONE - SELECTED QUICKMATCH_CONTACT_MISSIONS_CONTACT")
BREAK
CASE QUICKMATCH_CONTACT_MISSIONS_LAMAR
iType = FMMC_TYPE_LOWRIDER_INTRO
PRINTLN("[TS] * QUICKMATCH PHONE - SELECTED QUICKMATCH_CONTACT_MISSIONS_LAMAR")
BREAK
CASE QUICKMATCH_CONTACT_MISSIONS_MOBILE_OPERATION
SET_TRANSITION_SESSIONS_STARTING_SVM_QUICK_MATCH()
SET_TRANSITION_SESSIONS_STARTING_ON_CALL()
SET_ON_CALL_QUICKMATCH_ATTEMPTS(0)
iType = FMMC_TYPE_GUNRUNNING_WEAPONIZED_VEHICLE
PRINTLN("[TS] * QUICKMATCH PHONE - QUICKMATCH_CONTACT_MISSIONS_MOBILE_OPERATION")
BREAK
CASE QUICKMATCH_CONTACT_MISSIONS_SPECIAL_VEHICLE
SET_TRANSITION_SESSIONS_STARTING_SVM_QUICK_MATCH()
SET_TRANSITION_SESSIONS_STARTING_ON_CALL()
SET_ON_CALL_QUICKMATCH_ATTEMPTS(0)
iType = FMMC_TYPE_SPECIAL_VEHICLE_MISSION
PRINTLN("[TS] * QUICKMATCH PHONE - QUICKMATCH_CONTACT_MISSIONS_SPECIAL_VEHICLE")
BREAK
ENDSWITCH
BREAK
CASE QUICKMATCH_MODE_JOBS
PRINTLN("[TS] * QUICKMATCH PHONE - SELECTED QUICKMATCH_MODE_JOBS")
SWITCH INT_TO_ENUM(enumQuickMatchJobs,m_JobsList[iSelectedContent])
CASE QUICKMATCH_JOBS_CAPTURE
iType = FMMC_TYPE_MISSION_CTF
PRINTLN("[TS] * QUICKMATCH PHONE - SELECTED QUICKMATCH_JOBS_CAPTURE")
BREAK
CASE QUICKMATCH_JOBS_DEATHMATCH
iType = FMMC_TYPE_DEATHMATCH
PRINTLN("[TS] * QUICKMATCH PHONE - SELECTED QUICKMATCH_JOBS_DEATHMATCH")
BREAK
CASE QUICKMATCH_JOBS_LTS
iType = FMMC_TYPE_MISSION_LTS
PRINTLN("[TS] * QUICKMATCH PHONE - SELECTED QUICKMATCH_JOBS_LTS")
BREAK
CASE QUICKMATCH_JOBS_PARACHUTING
iType = FMMC_TYPE_BASE_JUMP
PRINTLN("[TS] * QUICHMATCH PHONE - SELECTED QUICKMATCH_JOBS_PARACHUTING")
BREAK
CASE QUICKMATCH_JOBS_RACE
iType = FMMC_TYPE_RACE
PRINTLN("[TS] * QUICKMATCH PHONE - SELECTED QUICKMATCH_JOBS_RACE")
BREAK
CASE QUICKMATCH_JOBS_SURVIVAL
iType = FMMC_TYPE_SURVIVAL
PRINTLN("[TS] * QUICKMATCH PHONE - SELECTED QUICKMATCH_JOBS_SURVIVAL")
BREAK
CASE QUICKMATCH_JOBS_VERSUS
iType = FMMC_TYPE_MISSION_VS
PRINTLN("[TS] * QUICKMATCH PHONE - SELECTED QUICKMATCH_JOBS_VERSUS")
BREAK
ENDSWITCH
BREAK
ENDSWITCH
PRINTLN("[TS] ***************************************")
Play_Select_Beep()
IF (m_currentMode = QUICKMATCH_MODE_HEISTS AND m_HeistsList[iSelectedContent] = ENUM_TO_INT(QUICKMATCH_HEISTS_HEIST))
OR (m_currentMode = QUICKMATCH_MODE_HEISTS AND m_HeistsList[iSelectedContent] = ENUM_TO_INT(QUICKMATCH_HEISTS_DOOMSDAY))
AND NOT g_sMPTunables.bAutoJoinHeistsDisabled
//If we selected to join on call direct then set that we did so
IF iselectedFriendsOnCallSlot = ciFRIENDS_OPTION_WITH
AND bDisplayWithFriends
SET_TRANSITION_SESSIONS_STARTING_QUICK_MATCH_WITH_LOCAL_FRIENDS()
FILL_FRIENDS_QUICK_MATCH_ARRAY()
ELIF iselectedFriendsOnCallSlot = ciFRIENDS_OPTION_DIRECT
OR (iselectedFriendsOnCallSlot = ciFRIENDS_OPTION_ON_CALL
AND bDisplayWithFriends = FALSE)
SET_TRANSITION_SESSIONS_STARTING_HEIST_QUICK_MATCH_DIRECT()
ENDIF
ELSE
//If we selected the friends slot then set that we are starting a quick match with friends
IF iselectedFriendsOnCallSlot = ciFRIENDS_OPTION_WITH
//But only if we should be displaying with friends
AND bDisplayWithFriends
SET_TRANSITION_SESSIONS_STARTING_QUICK_MATCH_WITH_LOCAL_FRIENDS()
FILL_FRIENDS_QUICK_MATCH_ARRAY()
ENDIF
ENDIF
//If we should always go on call
IF g_sMPTunables.bQuickJobAlwaysOnCall
AND NOT IS_THIS_A_SOLO_SESSION()
SET_TRANSITION_SESSIONS_STARTING_ON_CALL()
SET_ON_CALL_QUICKMATCH_ATTEMPTS(0)
//If on call is not disabled
ELIF g_sMPTunables.bOnCallDisabled = FALSE
AND bPlayerIsDrunk = FALSE
//If we selected to start an on call then set the flag
IF (iselectedFriendsOnCallSlot = ciFRIENDS_OPTION_ON_CALL
AND bDisplayWithFriends)
//Or it was one less that on call and we're not showing the with friends option
OR (iselectedFriendsOnCallSlot = (ciFRIENDS_OPTION_ON_CALL - 1)
AND NOT bDisplayWithFriends)
SET_TRANSITION_SESSIONS_STARTING_ON_CALL()
SET_ON_CALL_QUICKMATCH_ATTEMPTS(0)
ENDIF
ENDIF
//If we selected any then set that flag
IF iType = ciTRANSITION_SESSIONS_ACTIVITY_TYPE_ANY
SET_FM_JOB_ENTERY_TYPE(ciMISSION_ENTERY_TYPE_PHONE_RANDOM)
ELIF AM_I_TRANSITION_SESSIONS_STARTING_ON_CALL()
SET_FM_JOB_ENTERY_TYPE(ciMISSION_ENTERY_TYPE_ON_CALL)
ELSE
SET_FM_JOB_ENTERY_TYPE(ciMISSION_ENTERY_TYPE_PHONE)
ENDIF
//If we are not starting a ranked quick match then
IF NOT AM_I_TRANSITION_SESSIONS_STARTING_ON_CALL()
INT iCost = GET_CONTACT_REQUEST_COST(REQUEST_REMOVE_WANTED)
//If we can afford to pay to lose the wanted then pay
IF GET_PLAYER_WANTED_LEVEL(PLAYER_ID()) > 0
INT iDifference
IF NOT NETWORK_CAN_SPEND_MONEY2(iCost, FALSE, TRUE, FALSE, iDifference)
iCost-=iDifference
ENDIF
IF iCost > 0
INT iScriptTransactionIndex
GAMER_HANDLE gamerHandle
gamerHandle = GET_GAMER_HANDLE_PLAYER(PLAYER_ID())
GIVE_LOCAL_PLAYER_FM_CASH(-iCost, 1, TRUE, 0)
IF USE_SERVER_TRANSACTIONS()
// Trigger a cash transaction for PC Build (2151163)
TRIGGER_FIRE_AND_FORGET_SERVICE_TRANSACTION(SERVICE_SPEND_LOSE_WANTED_LEVEL, iCost, iScriptTransactionIndex, FALSE, TRUE)
g_cashTransactionData[iScriptTransactionIndex].eExtraData.gamerHandle = gamerHandle
ELSE
NETWORK_SPENT_BUY_WANTEDLEVEL(iCost, gamerHandle, FALSE, TRUE)
ENDIF
ENDIF
ENDIF
//Set the flag to say that I'm doing a quick match
SET_TRANSITION_SESSIONS_STARTING_QUICK_MATCH()
//Set that I need to warp to the start of the mission
SET_TRANSITION_SESSIONS_NEED_TO_WARP_TO_START_SKYCAM()
SET_PLAYER_LEAVING_CORONA_VECTOR(GET_PLAYER_PERCEIVED_COORDS(PLAYER_ID()))
NET_SET_PLAYER_CONTROL(PLAYER_ID(), FALSE, NSPC_NO_COLLISION | NSPC_CAN_BE_TARGETTED | NSPC_FREEZE_POSITION | NSPC_USE_PLAYER_FADE_OUT)
SET_NEWS_FEED_SPLASH_SCREEN_ACTIVE(TRUE, TRUE)
//Set freemode controller state
GlobalplayerBD_FM[NATIVE_TO_INT(PLAYER_ID())].iFmLauncherGameState = FMMC_LAUNCHER_STATE_LOAD_MISSION_FOR_TRANSITION_SESSION
PRINTLN("[TS]... SET_FM_LAUNCHER_PLAYER_GAME_STATE - FMMC_LAUNCHER_STATE_LOAD_MISSION_FOR_TRANSITION_SESSION")
ENDIF
//Set the type of quick match
IF iType = FM_GAME_MODE_PLAYLIST
SET_TRANSITION_SESSIONS_DOING_QUICK_MATCH_PLAYLIST()
ELIF iType = ciTRANSITION_SESSIONS_ACTIVITY_TYPE_ANY
SET_TRANSITION_SESSIONS_QUICK_MATCH_TYPE_RANDOM()
ELSE
SET_TRANSITION_SESSIONS_QUICK_MATCH_TYPE(iType)
ENDIF
CLEAR_PAUSE_MENU_IS_USING_UGC()
//[RANKED_RACES]
IF AM_I_TRANSITION_SESSIONS_STARTING_ON_CALL()
HANG_UP_AND_PUT_AWAY_PHONE(FALSE)
Cleanup_and_Terminate()
ENDIF
ENDIF
// B*2280733 - Reset the debouncing
bDebounceOfferJobAccept = FALSE
ENDPROC
PROC Process_Stage_FRIENDS_OR_SELF_OR_ON_CALL()
Check_for_List_Navigation()
// KGM 6/7/13: If there is a focus mission then put the phone away
// (this means the player has probably just walked into a corona, so avoid trying to launch another mission)
IF (Is_There_A_MissionsAtCoords_Focus_Mission())
HANG_UP_AND_PUT_AWAY_PHONE()
bBlockAccept = FALSE
EXIT
ENDIF
IF iselectedModeSlot < 0
OR iselectedModeSlot >= ENUM_TO_INT(QUICKMATCH_MODE_MAX)
IF g_CellPhone.PhoneDS > PDS_AWAY
g_Cellphone.PhoneDS = PDS_RUNNINGAPP
PRINTLN("STATE ASSIGNMENT 219. appJIPMP::Process_Stage_Offer_join() assigns PDS_RUNNINGAPP")
ENDIF
Display_First_QuickMatch_Screen()
m_currentStage= QUICKMATCH_MODE_LIST
bBlockAccept = FALSE
EXIT
ENDIF
// Check if the player wants to go BACK to JobList
IF Is_Phone_Control_Just_Pressed (FRONTEND_CONTROL, INT_TO_ENUM (CONTROL_ACTION, PHONE_NEGATIVE_INPUT))
g_Cellphone.PhoneDS = PDS_COMPLEXAPP
Display_First_QuickMatch_Screen()
m_selectedQuickMatchSlot = 0
m_currentStage= QUICKMATCH_MODE_LIST
Play_Back_Beep()
bBlockAccept = FALSE
EXIT
ENDIF
IF iCanDoQuickmatch = 0
AND SlotsUsed > 0 //Need this to prevent "Not available" from being selected.
AND NOT bBlockAccept
IF Is_Phone_Control_Just_Pressed (FRONTEND_CONTROL, INT_TO_ENUM (CONTROL_ACTION, PHONE_POSITIVE_INPUT)) //Player selects a job type from the list.
PRINTLN("appJIPMP - Process_Stage_FRIENDS_OR_SELF_OR_ON_CALL - PHONE_POSITIVE_INPUT")
g_InputButtonJustPressed = TRUE
Play_Select_Beep()
BEGIN_SCALEFORM_MOVIE_METHOD (SF_MovieIndex, "GET_CURRENT_SELECTION")
Choice_ReturnedSFIndex = END_SCALEFORM_MOVIE_METHOD_RETURN_VALUE()
WHILE NOT IS_SCALEFORM_MOVIE_METHOD_RETURN_VALUE_READY (Choice_ReturnedSFIndex)
WAIT (0)
PRINTLN("appJIPMP - Process_Stage_FRIENDS_OR_SELF_OR_ON_CALL - appJIPMP - Waiting on scaleform return during selecting mode.")
ENDWHILE
iselectedFriendsOnCallSlot = GET_SCALEFORM_MOVIE_METHOD_RETURN_VALUE_INT (Choice_ReturnedSFIndex)
m_currentStage= QUICKMATCH_OFFER_JOIN
g_Cellphone.PhoneDS = PDS_COMPLEXAPP
IF (m_currentMode= QUICKMATCH_MODE_CONTACT_MISSIONS AND m_ContactMissionsList[iSelectedContent] = ENUM_TO_INT(QUICKMATCH_CONTACT_MISSIONS_SPECIAL_VEHICLE))
OR (m_currentMode= QUICKMATCH_MODE_CONTACT_MISSIONS AND m_ContactMissionsList[iSelectedContent] = ENUM_TO_INT(QUICKMATCH_CONTACT_MISSIONS_MOBILE_OPERATION))
PROCESS_LAUNCH_QUICKMATCH()
ELSE
Display_Confirm_Screen()
ENDIF
bBlockAccept = FALSE
ENDIF
ELSE
//#1492475
IF Is_Phone_Control_Just_Pressed (FRONTEND_CONTROL, INT_TO_ENUM (CONTROL_ACTION, PHONE_POSITIVE_INPUT))
AND NOT bBlockAccept
g_InputButtonJustPressed = TRUE
Play_Back_Beep()
ENDIF
ENDIF
ENDPROC
PROC Process_Stage_Offer_join()
// KGM 6/7/13: If there is a focus mission then put the phone away
// (this means the player has probably just walked into a corona, so avoid trying to launch another mission)
IF (Is_There_A_MissionsAtCoords_Focus_Mission())
bBlockAccept = FALSE
HANG_UP_AND_PUT_AWAY_PHONE()
EXIT
ENDIF
IF iselectedModeSlot < 0
OR iselectedModeSlot >= ENUM_TO_INT(QUICKMATCH_MODE_MAX)
IF g_CellPhone.PhoneDS > PDS_AWAY
g_Cellphone.PhoneDS = PDS_RUNNINGAPP
PRINTLN("STATE ASSIGNMENT 219. appJIPMP::Process_Stage_Offer_join() assigns PDS_RUNNINGAPP")
ENDIF
Clear_Accept_Invite_Warning_Help_Text_If_On_Display()
Display_First_QuickMatch_Screen()
m_currentStage= QUICKMATCH_MODE_LIST
bBlockAccept = FALSE
EXIT
ENDIF
// Check if the player wants to go BACK to JobList
IF Is_Phone_Control_Just_Pressed (FRONTEND_CONTROL, INT_TO_ENUM (CONTROL_ACTION, PHONE_NEGATIVE_INPUT))
bBlockAccept = FALSE
Clear_Accept_Invite_Warning_Help_Text_If_On_Display()
g_Cellphone.PhoneDS = PDS_COMPLEXAPP
IF ARE_ANY_FRIENDS_INT_THIS_SESSION()
AND NOT g_sMPTunables.bQuickJobAlwaysOnCall
Display_Friends_Or_On_Call_Screen()
m_currentStage= QUICKMATCH_FRIENDS_OR_SELF_OR_ON_CALL
ELSE
Display_First_QuickMatch_Screen()
m_selectedQuickMatchSlot = 0
m_currentStage= QUICKMATCH_MODE_LIST
ENDIF
iselectedFriendsOnCallSlot = -1
Play_Back_Beep()
EXIT
ENDIF
Display_Accept_Invite_Warning_Help_Text_If_Required()
// B*2280733 - I'm adding debouncing to this, so the script will not end until the button has been released. This avoids weapons firing while button is still held down in PC version.
IF bDebounceOfferJobAccept = FALSE
IF Is_Phone_Control_Just_Pressed (FRONTEND_CONTROL, INT_TO_ENUM (CONTROL_ACTION, PHONE_POSITIVE_INPUT)) //Player confirms they want to start the job...
bDebounceOfferJobAccept = TRUE
ENDIF
ELSE
IF Is_Phone_Control_Just_Released (FRONTEND_CONTROL, INT_TO_ENUM (CONTROL_ACTION, PHONE_POSITIVE_INPUT)) //Don't exit script until button release (avoids firing weapon)...
AND NOT bBlockAccept
PROCESS_LAUNCH_QUICKMATCH()
ENDIF
ENDIF
ENDPROC
PROC MAINTAIN_NETWORK_SCRIPT_BAIL(BOOL bInitialBail = FALSE)
// Make sure still in the network game
IF NOT (NETWORK_IS_IN_SESSION())
PRINTLN("NETWORK_IS_IN_SESSION() returned FALSE - Disabling cellphone and terminating App")
// Disable the cellphone
DISABLE_CELLPHONE(TRUE)
IF bInitialBail
//Reset the transition session clean up flag
g_TransitionSessionNonResetVars.sTransVars.bCleanedUpAndWait = FALSE
ENDIF
//[RANKED_RACES]
//CLEAR_TRANSITION_SESSIONS_STARTING_RANKED_QUICK_MATCH()
CLEAR_TRANSITION_SESSIONS_STARTING_ON_CALL()
Cleanup_and_Terminate()
ENDIF
ENDPROC
// ===========================================================================================================
// Main Loop
// ===========================================================================================================
SCRIPT
PRINTLN("appJIPMP ************* ************* *************")
PRINTLN("appJIPMP * STARTINGT - ", GET_CLOUD_TIME_AS_INT(), ", F - ", GET_FRAME_COUNT(), " *")
PRINTLN("appJIPMP ************* ************* *************")
// Ensure script can run in network game
NETWORK_SET_SCRIPT_IS_SAFE_FOR_NETWORK_GAME()
iCanDoQuickmatch = CAN_DO_QUICK_MATCH(stQuickMatchTimer)
IF iCanDoQuickmatch > 0
PRINTLN("appJIPMP - CAN_DO_QUICK_MATCH = ", iCanDoQuickmatch, ", Quick Job functionality is blocked.")
ENDIF
#IF IS_DEBUG_BUILD
IF GET_COMMANDLINE_PARAM_EXISTS("sc_OnCallDisabled")
g_sMPTunables.bOnCallDisabled = TRUE
ENDIF
IF GET_COMMANDLINE_PARAM_EXISTS("sc_OnCallFriendsDisabled")
g_sMPTunables.bOnCallFriendsDisabled = TRUE
ENDIF
#ENDIF
CLEAR_MY_TRANSITION_SESSION_ELO()
// DO THIS FIRST: Initialise the MP Cellphone App public header
Initialise_MP_App_Variables(m_sAppData)
//[RANKED_RACES]
//Check to see if we are cleaning up after a quickmatch
IF AM_I_TRANSITION_SESSIONS_STARTING_ON_CALL()
IF IS_TRANSITION_SESSION_LAUNCHING()
PRINTLN("[TS] appJIPMP - IS_TRANSITION_SESSION_LAUNCHING - Cleanup_and_Terminate")
Cleanup_and_Terminate()
ELSE
//Clean up the old transition session
CLEANUP_AFTER_RANKED_QUICKMATCH_CANCEL(TRUE)
IF(GET_FM_JOB_ENTERY_TYPE() = ciMISSION_ENTERY_TYPE_V2_PROFESSIONAL_CORONA_ON_CALL
OR GET_FM_JOB_ENTERY_TYPE() = ciMISSION_ENTERY_TYPE_V2_CORONA_ON_CALL
OR GET_FM_JOB_ENTERY_TYPE() = ciMISSION_ENTERY_TYPE_V2_ADVERSARY_CORONA_ON_CALL)
OR GET_FM_JOB_ENTERY_TYPE() = ciMISSION_ENTERY_TYPE_ON_CALL
OR GET_FM_JOB_ENTERY_TYPE() = ciMISSION_ENTERY_TYPE_ADVERSARY_SERIES_CORONA_ON_CALL
OR GET_FM_JOB_ENTERY_TYPE() = ciMISSION_ENTERY_TYPE_ADVERSARY_SERIES_CORONA_ON_CALL_1
OR GET_FM_JOB_ENTERY_TYPE() = ciMISSION_ENTERY_TYPE_ADVERSARY_SERIES_CORONA_ON_CALL_2
OR GET_FM_JOB_ENTERY_TYPE() = ciMISSION_ENTERY_TYPE_SPECIAL_VEHICLE_SERIES_CORONA_ON_CALL
OR GET_FM_JOB_ENTERY_TYPE() = ciMISSION_ENTERY_TYPE_BUNKER_SERIES_CORONA_ON_CALL
OR GET_FM_JOB_ENTERY_TYPE() = ciMISSION_ENTERY_TYPE_TRANSFORM_SERIES_CORONA_ON_CALL
OR GET_FM_JOB_ENTERY_TYPE() = ciMISSION_ENTERY_TYPE_TARGET_ASSAULT_SERIES_CORONA_ON_CALL
OR GET_FM_JOB_ENTERY_TYPE() = ciMISSION_ENTERY_TYPE_HOTRING_SERIES_CORONA_ON_CALL
OR GET_FM_JOB_ENTERY_TYPE() = ciMISSION_ENTERY_TYPE_ARENA_SERIES_CORONA_ON_CALL
OR GET_FM_JOB_ENTERY_TYPE() = ciMISSION_ENTERY_TYPE_ARENA_SERIES_CORONA_WALL_ON_CALL
OR GET_FM_JOB_ENTERY_TYPE() = ciMISSION_ENTERY_TYPE_RACE_SERIES_CORONA_ON_CALL
OR GET_FM_JOB_ENTERY_TYPE() = ciMISSION_ENTERY_TYPE_SURVIVAL_SERIES_CORONA_ON_CALL
OR GET_FM_JOB_ENTERY_TYPE() = ciMISSION_ENTERY_TYPE_OPEN_WHEEL_SERIES_CORONA_ON_CALL
OR GET_FM_JOB_ENTERY_TYPE() = ciMISSION_ENTERY_TYPE_STREET_RACE_SERIES_CORONA_ON_CALL
OR GET_FM_JOB_ENTERY_TYPE() = ciMISSION_ENTERY_TYPE_PURSUIT_SERIES_CORONA_ON_CALL
CLEAR_FM_JOB_ENTERY_TYPE()
ENDIF
//Set a flag to clean the vars in fmmc_launcher
SET_TRANSITION_SESSIONS_CLEANUP_AFTER_ON_CALL()
//If we are in an activity session thenKill it
BOOL bInTransition = NETWORK_IS_IN_TRANSITION()
IF bInTransition
OR NETWORK_IS_TRANSITION_STARTED()
OR NETWORK_IS_TRANSITION_BUSY()
OR NETWORK_IS_TRANSITION_MATCHMAKING()
OR NETWORK_IS_TRANSITION_LEAVE_POSTPONED()
IF g_sMPTunables.bAPPJIPMP_CANCEL_MATCHMAKING_ON_NETWORK_BAIL
PRINTLN("[TS] appJIPMP - NETWORK_CANCEL_TRANSITION_MATCHMAKING")
NETWORK_CANCEL_TRANSITION_MATCHMAKING()
ENDIF
IF bInTransition
PRINTLN("[TS] appJIPMP - NETWORK_BAIL_TRANSITION")
NETWORK_BAIL_TRANSITION(ENUM_TO_INT(NETWORK_BAIL_TS_APPJIPMP))
ENDIF
ENDIF
CLEAR_ROOT_CONTENT_ID_IF_SAFE()
RESET_ALL_TRANSITION_SESSION_VARS()
CLEAR_PLAYLIST_BITSET()
//Set a flag to clean the vars in fmmc_launcher
SET_TRANSITION_SESSIONS_CLEANUP_AFTER_ON_CALL()
ENDIF
ENDIF
IF NOT IS_PED_INJURED(PLAYER_PED_ID())
AND Is_Ped_Drunk(PLAYER_PED_ID())
bPlayerIsDrunk = TRUE
ENDIF
//Reset the transition session clean up flag
g_TransitionSessionNonResetVars.sTransVars.bCleanedUpAndWait = FALSE
g_sDLCContentContollerStruct.iOnCallBitset = 0
// Main Loop - never terminates while the app can legitimately still run
WHILE TRUE
WAIT(0)
//[RANKED_RACES]
//We need to get that elo data!
IF sGetEloData.bGotElo = FALSE
IF GET_LOCAL_PLAYER_ELO()
sGetEloData.bGotElo = TRUE
ENDIF
ENDIF
MAINTAIN_NETWORK_SCRIPT_BAIL()
iCanDoQuickmatch = CAN_DO_QUICK_MATCH(stQuickMatchTimer) //comment out to quickly test no quick jobs available.
// Need to handle interrupting the app if a cellphone call comes through
// KGM 7/5/12: Also need to ensure a request for AWAY or DISABLED prevents any processing within the App
IF NOT (g_Cellphone.PhoneDS = PDS_ONGOING_CALL)
AND (g_CellPhone.PhoneDS > PDS_AWAY)
// Deal with the various stages of the app
SWITCH (m_currentStage)
// Initial App screen
CASE QUICKMATCH_MODE_LIST
SWITCH m_iStageState
CASE 0
// Display the First App Screen when the app starts
// NOTE: Display First App Screen should set the cellphone state as RunningApp
Display_First_QuickMatch_Screen()
// List navigation initial values
m_selectedQuickMatchSlot = 0
m_iStageState++
BREAK
CASE 1
Process_Stage_Mode_List()
// This will automatically exit the cellphone if the back button is pressed.
// If you move two screens deep into your app, then you must set your app state, g_Cellphone.PhoneDS to PDS_COMPLEXAPP so this doesn't return true.
IF Is_Phone_Control_Just_Pressed (FRONTEND_CONTROL, INT_TO_ENUM (CONTROL_ACTION, PHONE_NEGATIVE_INPUT))
//g_Cellphone.PhoneDS = PDS_RUNNINGAPP
IF (CHECK_FOR_APPLICATION_EXIT())
PRINTLN("CHECK_FOR_APPLICATION_EXIT() returned TRUE")
Cleanup_and_Terminate()
ENDIF
ENDIF
BREAK
ENDSWITCH
BREAK
//Sublists.
CASE QUICKMATCH_SUBLIST
Process_Stage_Sublist()
BREAK
//With friends or alone.
CASE QUICKMATCH_FRIENDS_OR_SELF_OR_ON_CALL
Process_Stage_FRIENDS_OR_SELF_OR_ON_CALL()
BREAK
// Second App Screen (if needed)
CASE QUICKMATCH_OFFER_JOIN
Process_Stage_Offer_join()
BREAK
DEFAULT
#IF IS_DEBUG_BUILD
SCRIPT_ASSERT("Unknown MP JIPMP Stage.")
PRINTNL()
#ENDIF
BREAK
ENDSWITCH
ELSE
//Update: Incoming calls can't currently go through to the phone whilst an app is running. If this changes, we'll need to reinstate it.
//Reinstate the block below to make the phone terminate this script when a phonecall comes through so that the phone will
//return to the main menu post-phonecall.
//This is an important section! It tells this script what to do when a call, be it answerphone or other phonecall, comes through.
//BeforeCallPhoneDS = PDS_MAXIMUM
//Cleanup_and_Terminate()
ENDIF
//Critical! Do not remove. This must run every frame as it handles bad things such as the player dying when the phone is active.
IF CHECK_FOR_ABNORMAL_EXIT()
PRINTLN("CHECK_FOR_ABNORMAL_EXIT() returned TRUE")
Cleanup_and_Terminate()
ENDIF
ENDWHILE
ENDSCRIPT