USING "rage_builtins.sch" USING "globals.sch" USING "commands_misc.sch" USING "commands_script.sch" USING "commands_pad.sch" USING "cellphone_public.sch" USING "cellphone_private.sch" USING "dialogue_public.sch" USING "player_ped_public.sch" USING "stack_sizes.sch" USING "help_at_location.sch" // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** // // MISSION NAME : appSettings.sc // AUTHOR : Steve T // DESCRIPTION : Create a settings list by referencing the array of settings. // // // // // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** CONST_INT MaxNumberOfSettingSlots 20 //Max_Settings_Secondary_Options INT SettingListSlot[MaxNumberOfSettingSlots] INT NumberOfSettingsInList = 0 INT ListCursorIndex = 0 SCALEFORM_RETURN_INDEX Choice_ReturnedSFIndex INT SettingNamesToDraw = 0 INT i_Selected_Setting = 0 INT i_Selected_Slot_to_Restore = 0 INT iTickedSlotonLaunch = 0 INT i_Selected_Slot, i_Temp_Slot_Contents, i_HighlightedSlot //INT Test_Phone_Ringtone_SoundID INT i_iconDecision BOOL b_RingtoneTestUnderway = FALSE BOOL b_CueAutoRingtoneStart = FALSE BOOL b_CheckAutoCueTimer = FALSE BOOL Run_Sample_Vibrate = FALSE INT AutoCueElapsedTime, AutoCueStartTime BOOL b_DoSleepWarningRoutine = FALSE BOOL b_DoSleepHelpRoutine = FALSE //Temp FLOAT listOriginX = 0.82 FLOAT listOriginY = 0.42 FLOAT drawItemX = 0.0 FLOAT drawItemY = 0.0 BOOL dpad_scroll_pause_cued = FALSE FLOAT f_PrimaryHelpX, f_PrimaryHelpY //Added for 2269799. Need to provide support for ringtone preview in settings list. BOOL b_ScrollForwardInitiated = FALSE BOOL b_ScrollBackInitiated = FALSE PROC Sample_Vibrate() AutoCueElapsedTime = GET_GAME_TIMER() INT timePassed = AutoCueElapsedTime - AutoCueStartTime IF timePassed % 600 <= 300 AND timePassed < 3000 SET_CONTROL_SHAKE(PLAYER_CONTROL, 100, 100) ENDIF ENDPROC PROC Place_Names_in_Secondary_SettingSlots() //LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER (SF_MovieIndex, "DISPLAY_VIEW", 1) //Set enum state and header to Homescreen briefly to flush view state data LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER(SF_MovieIndex,"SET_DATA_SLOT_EMPTY", 22) NumberOfSettingsInList = 0 //reset number of Settings before filling list. BOOL Secondary_Setting_name_is_in_order[Max_Settings_Secondary_Options] INT slotIndex = 0 IF g_bInMultiplayer //Reset this to the normal MP behaviour as a failsafe. See charsheet_public for initial set up. Bug 1922922 This_Cellphone_Owner_Settings_ListContents[3].g_SettingList[ENUM_TO_INT(SETTING_WALLPAPER)].Setting_Secondary_Option_labels[0] = "CELL_CREWEMB" GAMER_HANDLE checkPlayerHandle checkPlayerHandle = GET_GAMER_HANDLE_PLAYER(PLAYER_ID()) //IS_LOCAL_PLAYER_IN_ACTIVE_CLAN ? //If the player is not in an active clan at this moment temporarily replace fill index 3, CHAR_MULTIPLAYER, wallpaper setting with the label that says "Default" IF NOT (NETWORK_CLAN_PLAYER_IS_ACTIVE(checkPlayerHandle)) //AND ( g_DumpDisableEveryFrameCaller = FALSE) //Comment in for easy testing. This_Cellphone_Owner_Settings_ListContents[3].g_SettingList[ENUM_TO_INT(SETTING_WALLPAPER)].Setting_Secondary_Option_labels[0] = "CELL_840" #if IS_DEBUG_BUILD cdPrintnl() cdPrintstring("APP Settings - Player not in an active crew. Using default as the first label in Background settings list.") cdPrintnl() #endif ENDIF ENDIF WHILE slotIndex < Max_Settings_Secondary_Options #IF IS_DEBUG_BUILD PRINTSTRING("Populating secondary sf slot ") PRINTINT(slotIndex) PRINTNL() #endif INT comparisonIndex = 0 INT top_order_comparison = (Max_Settings_Secondary_Options - 1) //prevent array overrun //g_savedGlobals.sCellphoneSettingsData.This_Cellphone_Owner_Settings[g_Cellphone.PhoneOwner].g_SettingList[i_Selected_Setting].Setting_Secondary_Order[top_order_comparison] = 5000 This_Cellphone_Owner_Settings_ListContents[g_Cellphone.PhoneOwner].g_SettingList[i_Selected_Setting].Setting_Secondary_Order[top_order_comparison] = 5000 //g_SettingList[top_order_comparison].Setting_orderInt = 5000 WHILE comparisonIndex < Max_Settings_Secondary_Options //PRINTSTRING("comparison index =") //PRINTINT(comparisonIndex) //PRINTNL() //g_SettingList[i_Selected_Setting].Setting_Secondary_Option_available[comparisonIndex] = TRUE //IF g_savedGlobals.sCellphoneSettingsData.This_Cellphone_Owner_Settings[g_Cellphone.PhoneOwner].g_SettingList[i_Selected_Setting].Setting_Secondary_Option_available[comparisonIndex] = TRUE IF This_Cellphone_Owner_Settings_ListContents[g_Cellphone.PhoneOwner].g_SettingList[i_Selected_Setting].Setting_Secondary_Option_available[comparisonIndex] = TRUE //IF g_SettingList[comparisonIndex].phoneGuiPresence = AVAILABLE_IN_GUI IF Secondary_Setting_name_is_in_order[comparisonIndex] = FALSE IF This_Cellphone_Owner_Settings_ListContents[g_Cellphone.PhoneOwner].g_SettingList[i_Selected_Setting].Setting_Secondary_Order[comparisonIndex] < This_Cellphone_Owner_Settings_ListContents[g_Cellphone.PhoneOwner].g_SettingList[i_Selected_Setting].Setting_Secondary_Order[top_order_comparison] //IF g_SettingList[comparisonIndex].Setting_orderInt < g_SettingList[top_order_comparison].Setting_orderInt top_order_comparison = comparisonIndex //PRINTSTRING("top comparison assigned to comparisonindex") //PRINTINT(comparisonIndex) //PRINTNL() LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_DATA_SLOT", (TO_FLOAT(22)), (TO_FLOAT(slotIndex)), (TO_FLOAT(This_Cellphone_Owner_Settings_ListContents[g_Cellphone.PhoneOwner].g_SettingList[i_Selected_Setting].Setting_Secondary_Icon_Int[top_order_comparison])), INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM, This_Cellphone_Owner_Settings_ListContents[g_Cellphone.PhoneOwner].g_SettingList[i_Selected_Setting].Setting_Secondary_Option_Labels[top_order_comparison]) ENDIF ENDIF ENDIF comparisonIndex ++ ENDWHILE SettingListSlot[slotIndex] = top_order_comparison Secondary_Setting_name_is_in_order[top_order_comparison] = TRUE //This sort of works but need to solve issue where switching to high value setting in them will then transfer over unexpectedly. Scaleform pish again! IF ARE_STRINGS_EQUAL (This_Cellphone_Owner_Settings_ListContents[g_Cellphone.PhoneOwner].g_SettingList[i_Selected_Setting].Setting_Secondary_Option_labels[This_Cellphone_Owner_Settings_ListContents[g_Cellphone.PhoneOwner].g_SettingList[i_Selected_Setting].Setting_Currently_Selected_Option] , This_Cellphone_Owner_Settings_ListContents[g_Cellphone.PhoneOwner].g_SettingList[i_Selected_Setting].Setting_Secondary_Option_Labels[top_order_comparison]) i_HighlightedSlot = slotIndex IF i_HighlightedSlot < 0 i_HighlightedSlot = 0 ENDIF //Add tick icon for currently selected option for "Background", "Ringtone" and "Theme" only. IF i_Selected_Setting = ENUM_TO_INT(SETTING_RINGTONE) OR i_Selected_Setting = ENUM_TO_INT(SETTING_WALLPAPER) OR i_Selected_Setting = ENUM_TO_INT(SETTING_THEME) LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_DATA_SLOT", (TO_FLOAT(22)), (TO_FLOAT(slotIndex)), (TO_FLOAT(48)), INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM, This_Cellphone_Owner_Settings_ListContents[g_Cellphone.PhoneOwner].g_SettingList[i_Selected_Setting].Setting_Secondary_Option_Labels[top_order_comparison]) //Keep a copy of the currently ticked slot so we can remove it later, when a new choice has been made. iTickedSlotonLaunch = slotIndex ENDIF //Add tick icon for currently selected option for "Profile" which is used for Snapmatic quicklaunch in MP only. IF i_Selected_Setting = ENUM_TO_INT(SETTING_PROFILE) AND g_bInMultiplayer = TRUE LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_DATA_SLOT", (TO_FLOAT(22)), (TO_FLOAT(slotIndex)), (TO_FLOAT(48)), INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM, This_Cellphone_Owner_Settings_ListContents[g_Cellphone.PhoneOwner].g_SettingList[i_Selected_Setting].Setting_Secondary_Option_Labels[top_order_comparison]) //Keep a copy of the currently ticked slot so we can remove it later, when a new choice has been made. iTickedSlotonLaunch = slotIndex ENDIF ENDIF //IF g_SettingList[slotIndex].phoneGuiPresence = AVAILABLE_IN_GUI //IF g_savedGlobals.sCellphoneSettingsData.This_Cellphone_Owner_Settings[g_Cellphone.PhoneOwner].g_SettingList[i_Selected_Setting].Setting_Secondary_Option_available[slotIndex] = TRUE IF This_Cellphone_Owner_Settings_ListContents[g_Cellphone.PhoneOwner].g_SettingList[i_Selected_Setting].Setting_Secondary_Option_available[slotIndex] = TRUE NumberOfSettingsInList ++ /* PRINTSTRING("NumSettings-") PRINTINT(NumberOfSettingsInList) PRINTNL() */ ENDIF slotIndex ++ ENDWHILE //Set scalefrom movie view state enum to Settings screen and display associated buttons. //LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER (SF_MovieIndex, "DISPLAY_VIEW", 22, TO_FLOAT(i_HighlightedSlot)) //Set enum state and header to Supplementary Settings LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER (SF_MovieIndex, "DISPLAY_VIEW", 22) //LEGACY_SCALEFORM_MOVIE_METHOD_WITH_STRING (SF_MovieIndex, "SET_HEADER", g_SettingList[i_Selected_Setting].Setting_Primary_Label) LEGACY_SCALEFORM_MOVIE_METHOD_WITH_STRING (SF_MovieIndex, "SET_HEADER", This_Cellphone_Owner_Settings_ListContents[g_Cellphone.PhoneOwner].g_SettingList[i_Selected_Setting].Setting_Secondary_Option_labels[This_Cellphone_Owner_Settings_ListContents[g_Cellphone.PhoneOwner].g_SettingList[i_Selected_Setting].Setting_Currently_Selected_Option]) //Monochrome /* LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieButtonsIndex, "SET_SOFT_KEYS", 1, 1, INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM, "CELL_205") //"SELECT" Positive LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieButtonsIndex, "SET_SOFT_KEYS", 2, 1, INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM, "CELL_206") //"BACK" - Negative //Make sure this is off in this particular display view - note that the second int method param is 0 for off. LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieButtonsIndex, "SET_SOFT_KEYS", 3, 0, INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM, "CELL_250") //"Error!" - Other */ //Badger - Select Back combo IF g_b_ToggleButtonLabels LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_SOFT_KEYS", BADGER_POS, 1, 2, INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM, "CELL_205") //"Select" - Positive LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_SOFT_KEYS", BADGER_NEG, 1, 4, INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM, "CELL_206") //"BACK" - Negative ELSE LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_SOFT_KEYS", BADGER_POS, 1, 2, INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM) //"SELECT" - Positive LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_SOFT_KEYS", BADGER_NEG, 1, 4, INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM) //"BACK" - Negative ENDIF LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_SOFT_KEYS", BADGER_OTHER, 0, 1, INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM) //"Error!" - Other CLEAR_BIT (BitSet_CellphoneDisplay, g_BS_OTHER_OPTION_IS_DISPLAYED) ENDPROC PROC MakeIconDecision(INT PassedComparisonIndex, INT PassedTopOrder) //This display the appropriate icon in the root of Settings depending on the secondary level setting. SWITCH PassedComparisonIndex CASE 0 //SETTING_PROFILE, //0 IF g_bInMultiplayer i_iconDecision = 19 //i_TEMPiconTest ELSE IF This_Cellphone_Owner_Settings_ListContents[g_Cellphone.PhoneOwner].g_SettingList[ENUM_TO_INT(SETTING_PROFILE)].Setting_Currently_Selected_Option = ENUM_TO_INT(PROFILE_SLEEP_MODE) i_iconDecision = 26 ELSE i_iconDecision = 25 ENDIF ENDIF BREAK CASE 3//SETTING_VIBRATE IF This_Cellphone_Owner_Settings_ListContents[g_Cellphone.PhoneOwner].g_SettingList[ENUM_TO_INT(SETTING_VIBRATE)].Setting_Currently_Selected_Option = 1 //Vibrate On i_iconDecision = 20 ELSE i_iconDecision = 21 ENDIF BREAK DEFAULT i_iconDecision = This_Cellphone_Owner_Settings_ListContents[g_Cellphone.PhoneOwner].g_SettingList[PassedTopOrder].Setting_Icon_Int BREAK ENDSWITCH ENDPROC PROC Place_Names_in_SettingSlots() NumberOfSettingsInList = 0 //reset number of Settings before filling list. BOOL Setting_name_is_in_order[MaxNumberOfSettingSlots] INT slotIndex = 0 WHILE slotIndex < (ENUM_TO_INT(MAX_SETTINGS)) #if IS_DEBUG_BUILD PRINTSTRING("Populating sf slot ") PRINTINT(slotIndex) PRINTNL() #endif INT comparisonIndex = 0 INT top_order_comparison = (ENUM_TO_INT(MAX_SETTINGS)) //g_savedGlobals.sCellphoneSettingsData.This_Cellphone_Owner_Settings[g_Cellphone.PhoneOwner].g_SettingList[top_order_comparison].Setting_orderInt = 5000 This_Cellphone_Owner_Settings_ListContents[g_Cellphone.PhoneOwner].g_SettingList[top_order_comparison].Setting_orderInt = 5000 //Check if we should include the vibration option on the phone #1241874 IF GET_PROFILE_SETTING (PROFILE_CONTROLLER_VIBRATION) = 0 //Vibration set to off in frontend #if IS_DEBUG_BUILD PRINTSTRING("AppSettings - Vibration Profile Setting is set to 0. Not including in setting list. ") PRINTINT(slotIndex) PRINTNL() #endif This_Cellphone_Owner_Settings_ListContents[g_Cellphone.PhoneOwner].g_SettingList[SETTING_VIBRATE].phoneGuiPresence = UNAVAILABLE_IN_GUI ELSE //Vibration must be ON in frontend. This_Cellphone_Owner_Settings_ListContents[g_Cellphone.PhoneOwner].g_SettingList[SETTING_VIBRATE].phoneGuiPresence = AVAILABLE_IN_GUI ENDIF WHILE comparisonIndex < (ENUM_TO_INT(MAX_SETTINGS)) /* PRINTSTRING("comparison index =") PRINTINT(comparisonIndex) PRINTNL() */ IF This_Cellphone_Owner_Settings_ListContents[g_Cellphone.PhoneOwner].g_SettingList[comparisonIndex].phoneGuiPresence = AVAILABLE_IN_GUI IF Setting_name_is_in_order[comparisonIndex] = FALSE IF This_Cellphone_Owner_Settings_ListContents[g_Cellphone.PhoneOwner].g_SettingList[comparisonIndex].Setting_orderInt < This_Cellphone_Owner_Settings_ListContents[g_Cellphone.PhoneOwner].g_SettingList[top_order_comparison].Setting_orderInt IF g_bInMultiplayer //IF comparisonIndex = ENUM_TO_INT(SETTING_THEME) //This wasn't available in last gen but will be for NG - 1857900 //IF comparisonIndex = ENUM_TO_INT(SETTING_PROFILE) //Profile is now used in Settings in MP only to control quicklaunch of Snapmatic. //OR comparisonIndex = ENUM_TO_INT(SETTING_WALLPAPER) //This wasn't available in last gen but will be for NG - 1857900 //#if IS_DEBUG_BUILD //PRINTSTRING ("ST - AppSettings not including this within multiplayer - comparison index: ") //PRINTINT (comparisonIndex) //PRINTNL() //#endif //ELSE IF comparisonIndex = ENUM_TO_INT(SETTING_PROFILE) /* Update 16.09.14 - now including Snapmatic quicklaunch check in MP NG. IF IS_XBOX_PLATFORM() OR IS_PLAYSTATION_PLATFORM() #if IS_DEBUG_BUILD cdPrintstring("ST_Appsettings not including MP Quicklaunch via SP Profile setting in Next Gen.") cdPrintnl() #endif ELSE */ //Might need to do something unique for SETTING_PROFILE, so keep this separate from other MP setting fill routines. top_order_comparison = comparisonIndex MakeIconDecision(comparisonIndex, top_order_comparison) LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_DATA_SLOT", (TO_FLOAT(13)), (TO_FLOAT(slotIndex)), (TO_FLOAT(i_iconDecision)), INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM, This_Cellphone_Owner_Settings_ListContents[g_Cellphone.PhoneOwner].g_SettingList[top_order_comparison].Setting_Primary_Label) //ENDIF ELSE top_order_comparison = comparisonIndex MakeIconDecision(comparisonIndex, top_order_comparison) LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_DATA_SLOT", (TO_FLOAT(13)), (TO_FLOAT(slotIndex)), (TO_FLOAT(i_iconDecision)), INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM, This_Cellphone_Owner_Settings_ListContents[g_Cellphone.PhoneOwner].g_SettingList[top_order_comparison].Setting_Primary_Label) ENDIF //ENDIF ELSE IF GET_SINGLEPLAYER_CELLPHONE_OPERATING_SYSTEM() = OS_FACADE IF comparisonIndex = ENUM_TO_INT(SETTING_WALLPAPER) //#if USE_TU_CHANGES OR comparisonIndex = ENUM_TO_INT (SETTING_MISC_A) //This is used for INVITE SOUND url:bugstar:1796220 - we don't need it in SP. //#endif #if IS_DEBUG_BUILD PRINTSTRING ("ST - Wallpaper setting not included for Facade OS - comparison index: ") PRINTINT (comparisonIndex) PRINTNL() #endif ELSE top_order_comparison = comparisonIndex MakeIconDecision(comparisonIndex, top_order_comparison) LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_DATA_SLOT", (TO_FLOAT(13)), (TO_FLOAT(slotIndex)), (TO_FLOAT(i_iconDecision)), INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM, This_Cellphone_Owner_Settings_ListContents[g_Cellphone.PhoneOwner].g_SettingList[top_order_comparison].Setting_Primary_Label) ENDIF ELSE //#if USE_TU_CHANGES IF comparisonIndex = ENUM_TO_INT (SETTING_MISC_A) //This is used for INVITE SOUND url:bugstar:1796220 - we don't need it in SP. #if IS_DEBUG_BUILD PRINTSTRING ("ST - Invite Sound setting not included for Singleplayer - comparison index: ") PRINTINT (comparisonIndex) PRINTNL() #endif ELSE //#endif top_order_comparison = comparisonIndex MakeIconDecision(comparisonIndex, top_order_comparison) LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_DATA_SLOT", (TO_FLOAT(13)), (TO_FLOAT(slotIndex)), (TO_FLOAT(i_iconDecision)), INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM, This_Cellphone_Owner_Settings_ListContents[g_Cellphone.PhoneOwner].g_SettingList[top_order_comparison].Setting_Primary_Label) //#if USE_TU_CHANGES ENDIF //#endif ENDIF ENDIF ENDIF ENDIF ENDIF comparisonIndex ++ ENDWHILE SettingListSlot[slotIndex] = top_order_comparison Setting_name_is_in_order[top_order_comparison] = TRUE //IF g_savedGlobals.sCellphoneSettingsData.This_Cellphone_Owner_Settings[g_Cellphone.PhoneOwner].g_SettingList[slotIndex].phoneGuiPresence = AVAILABLE_IN_GUI IF This_Cellphone_Owner_Settings_ListContents[g_Cellphone.PhoneOwner].g_SettingList[slotIndex].phoneGuiPresence = AVAILABLE_IN_GUI NumberOfSettingsInList ++ /* PRINTSTRING("NumSettings-") PRINTINT(NumberOfSettingsInList) PRINTNL() */ ENDIF slotIndex ++ ENDWHILE //Set scalefrom movie view state enum to Settings screen and display associated buttons. LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER (SF_MovieIndex, "DISPLAY_VIEW", 13, TO_FLOAT(i_Selected_Slot_to_Restore)) //Set enum state and header to Settings LEGACY_SCALEFORM_MOVIE_METHOD_WITH_STRING (SF_MovieIndex, "SET_HEADER", "CELL_16") //Monochrome /* LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieButtonsIndex, "SET_SOFT_KEYS", 1, 1, INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM, "CELL_205") //"SELECT" Positive LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieButtonsIndex, "SET_SOFT_KEYS", 2, 1, INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM, "CELL_206") //"BACK" - Negative //Make sure this is off in this particular display view - note that the second int method param is 0 for off. LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieButtonsIndex, "SET_SOFT_KEYS", 3, 0, INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM, "CELL_250") //"Error!" - Other */ //Badger - Select Back combo IF g_b_ToggleButtonLabels LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_SOFT_KEYS", BADGER_POS, 1, 2, INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM, "CELL_205") //"Select" - Positive LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_SOFT_KEYS", BADGER_NEG, 1, 4, INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM, "CELL_206") //"BACK" - Negative ELSE LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_SOFT_KEYS", BADGER_POS, 1, 2, INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM) //"SELECT" - Positive LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_SOFT_KEYS", BADGER_NEG, 1, 4, INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM) //"BACK" - Negative ENDIF LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_SOFT_KEYS", BADGER_OTHER, 0, 1, INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM) //"Error!" - Other CLEAR_BIT (BitSet_CellphoneDisplay, g_BS_OTHER_OPTION_IS_DISPLAYED) ENDPROC PROC Display_Settings_List() INT drawIndex = 0 drawItemX = ListOriginX drawItemY = ListOriginY SettingNamesToDraw = (NumberOfSettingsInList) DRAW_RECT (0.86, 0.50, 0.1, 0.2, 0, 0, 0, 165) WHILE drawIndex < SettingNamesToDraw format_medium_ostext (255, 255, 255, 205) //Semi transparent white IF drawIndex = ListCursorIndex highlight_Item() ENDIF IF This_Cellphone_Owner_Settings_ListContents[g_Cellphone.PhoneOwner].g_SettingList[drawIndex].phoneGuiPresence = AVAILABLE_IN_GUI //would need to check individual owner phonebooks if this is required. DISPLAY_TEXT (drawItemX, drawItemY, This_Cellphone_Owner_Settings_ListContents[g_Cellphone.PhoneOwner].g_SettingList[drawIndex].Setting_Primary_Label) //draw the name of the Setting by referring to the character's text label. drawItemY = drawItemY + 0.03 //Draw the next name slightly down the y-axis ENDIF drawIndex ++ ENDWHILE ENDPROC //Temp - would be done in flash. PROC Check_for_List_Navigation() IF dpad_scroll_pause_cued IF TIMERA() > 50 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, INT_TO_ENUM (CONTROL_ACTION,INPUT_CELLPHONE_SCROLL_BACKWARD)) IF ListCursorIndex > 0 ListCursorIndex -- ENDIF Call_Scaleform_Input_Keypress_Up() ENDIF IF Is_Phone_Control_Just_Pressed( FRONTEND_CONTROL, INT_TO_ENUM (CONTROL_ACTION,INPUT_CELLPHONE_SCROLL_FORWARD)) ListCursorIndex ++ IF ListCursorIndex = NumberOfSettingsInList ListCursorIndex = 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 ListCursorIndex > 0 ListCursorIndex -- 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)) ListCursorIndex ++ IF ListCursorIndex = NumberOfSettingsInList ListCursorIndex = 0 ENDIF Call_Scaleform_Input_Keypress_Down() dpad_scroll_pause_cued = TRUE SETTIMERA (0) ENDIF ENDIF ENDPROC PROC Check_For_Setting_Selection() //Again, could pass stuff in here for context checking depending on screen. Will check all flash stuff. IF g_InputButtonJustPressed = FALSE IF Is_Phone_Control_Just_Pressed (FRONTEND_CONTROL, INT_TO_ENUM (CONTROL_ACTION, PHONE_POSITIVE_INPUT)) //positive action - Setting selected. //Maybe replace the permanent "selection" help with temporary so as to negate need for this? //CLEAR_FLOATING_HELP (FLOATING_HELP_TEXT_ID_1) Play_Select_Beep() g_InputButtonJustPressed = TRUE //i_Selected_Setting = ENUM_TO_INT (SettingListSlot[LEGACY_SCALEFORM_MOVIE_METHOD(SF_MovieIndex, "GET_CURRENT_SELECTION")]) 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) #if IS_DEBUG_BUILD cdPrintstring("appSettings - Waiting on return value from scaleform. 501") cdPrintnl() #endif ENDWHILE i_Selected_Slot_to_Restore = GET_SCALEFORM_MOVIE_METHOD_RETURN_VALUE_INT (Choice_ReturnedSFIndex) //make a copy so this can be input into DISPLAY_VIEW to reselect last highlighted slot. i_Selected_Setting = ENUM_TO_INT (SettingListSlot[i_Selected_Slot_to_Restore]) SWITCH i_Selected_Setting CASE 0 //PRINTSTRING ("PROFILE selected") IF g_bInMultiplayer = FALSE //Profile is used for Snapmatic quicklaunch in MP. IF g_OnMissionState = MISSION_TYPE_OFF_MISSION IF g_savedGlobals.sCellphoneSettingsData.b_HasSleepWarningBeenDisplayed = FALSE CLEAR_HELP (TRUE) //HELP_AT_SCREEN_LOCATION("CELL_7050", f_PrimaryHelpX, f_PrimaryHelpY, HELP_TEXT_WEST, FLOATING_HELP_PRINT_FOREVER, FLOATING_HELP_MISSION_SLOT) PRINT_HELP_FOREVER("CELL_7050") IF f_PrimaryHelpX = f_PrimaryHelpY //do nothing - unref hack that will deleted in final optimisations. ENDIF //Moving this to force action on player part in case phone is forced away accidentally... //g_savedGlobals.sCellphoneSettingsData.b_HasSleepWarningBeenDisplayed = TRUE b_DoSleepWarningRoutine = TRUE ENDIF ENDIF ENDIF BREAK CASE 1 //PRINTSTRING ("RINGTONE selected") BREAK CASE 2 //PRINTSTRING ("THEME selected") BREAK CASE 3 //PRINTSTRING ("VIBRATE selected") BREAK ENDSWITCH IF g_CellPhone.PhoneDS > PDS_AWAY //make sure that the following state assignment cannot interfere with AWAY or DISABLED assignment. g_Cellphone.PhoneDS = PDS_COMPLEXAPP #if IS_DEBUG_BUILD cdPrintnl() cdPrintstring("STATE ASSIGNMENT 22. appSettings assigns PDS_COMPLEXAPP") cdPrintnl() #endif ENDIF Place_Names_in_Secondary_SettingSlots() b_CheckAutoCueTimer = TRUE AutoCueStartTime = GET_GAME_TIMER() ENDIF ENDIF ENDPROC PROC Check_For_Secondary_Setting_Selection() //Again, could pass stuff in here for context checking depending on screen. Will check all flash stuff. //Cues ringtones to autoplay after brief pause and upon navigation of the list. IF i_Selected_Setting = ENUM_TO_INT(SETTING_RINGTONE) IF b_CheckAutoCueTimer AutoCueElapsedTime = GET_GAME_TIMER() IF AutoCueElapsedTime - AutoCueStartTime > 1000 b_CueAutoRingtoneStart = TRUE b_CheckAutoCueTimer = FALSE ENDIF ENDIF IF IS_USING_KEYBOARD_AND_MOUSE(FRONTEND_CONTROL) IF IS_CONTROL_JUST_PRESSED(FRONTEND_CONTROL, INPUT_CELLPHONE_SCROLL_FORWARD) b_ScrollForwardInitiated = TRUE b_ScrollBackInitiated = FALSE ENDIF IF IS_CONTROL_JUST_PRESSED(FRONTEND_CONTROL, INPUT_CELLPHONE_SCROLL_BACKWARD) b_ScrollForwardInitiated = FALSE b_ScrollBackInitiated = TRUE ENDIF ENDIF IF Is_Phone_Control_Just_Pressed (FRONTEND_CONTROL, INT_TO_ENUM (CONTROL_ACTION, PHONE_NAV_UP_INPUT)) OR Is_Phone_Control_Just_Pressed (FRONTEND_CONTROL, INT_TO_ENUM (CONTROL_ACTION, PHONE_NAV_DOWN_INPUT)) OR b_CueAutoRingtoneStart OR b_ScrollForwardInitiated = TRUE //2269799 OR b_ScrollBackInitiated = TRUE //2269799 //2269799 b_ScrollForwardInitiated = FALSE b_ScrollBackInitiated = FALSE b_CueAutoRingtoneStart = FALSE b_CheckAutoCueTimer = FALSE SETTIMERB(0) b_RingtoneTestUnderWay = TRUE //i_Temp_Slot_Contents = ENUM_TO_INT (SettingListSlot[LEGACY_SCALEFORM_MOVIE_METHOD(SF_MovieIndex, "GET_CURRENT_SELECTION")]) 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) #if IS_DEBUG_BUILD cdPrintstring("appSettings - Waiting on return value from scaleform. 502") cdPrintnl() #endif ENDWHILE i_Temp_Slot_Contents = ENUM_TO_INT (SettingListSlot[GET_SCALEFORM_MOVIE_METHOD_RETURN_VALUE_INT (Choice_ReturnedSFIndex)]) IF NOT IS_ENTITY_DEAD (PLAYER_PED_ID()) //STOP_SOUND (Test_Phone_Ringtone_SoundID) //make sure any previous ringtone test is terminated. //#1392094 swap STOP_PED_RINGTONE (PLAYER_PED_ID()) WAIT(100) //This seems to be required here with new ringtone regime. According to Matthew, I may need to preload them... IF NOT IS_ENTITY_DEAD (PLAYER_PED_ID()) //IF HAS_SOUND_FINISHED (Test_Phone_Ringtone_SoundID) //#1392094 swap IF NOT IS_PED_RINGTONE_PLAYING(PLAYER_PED_ID()) //Compare string against filename that reads "Silent Ringtone Dummy". This should always say that and does not point to an actual audio file. IF ARE_STRINGS_EQUAL (This_Cellphone_Owner_Settings_ListContents[g_Cellphone.PhoneOwner].g_SettingList[ENUM_TO_INT(SETTING_RINGTONE)].Setting_Secondary_Option_filename_label[i_Temp_Slot_Contents], "Silent Ringtone Dummy") #if IS_DEBUG_BUILD PRINTSTRING ("AppSettings - Silent Ringtone selected. You won't hear any preview sound.") PRINTNL () #endif ELSE //#1392094 swap //PLAY_SOUND_FROM_ENTITY (Test_Phone_Ringtone_SoundID, //This_Cellphone_Owner_Settings_ListContents[g_Cellphone.PhoneOwner].g_SettingList[ENUM_TO_INT(SETTING_RINGTONE)].Setting_Secondary_Option_filename_label[i_Temp_Slot_Contents], //PLAYER_PED_ID()) //#1392094 swap PLAY_PED_RINGTONE (This_Cellphone_Owner_Settings_ListContents[g_Cellphone.PhoneOwner].g_SettingList[ENUM_TO_INT(SETTING_RINGTONE)].Setting_Secondary_Option_filename_label[i_Temp_Slot_Contents], PLAYER_PED_ID(), TRUE) #if IS_DEBUG_BUILD cdPrintnl() cdPrintstring("AppSettings - Ringtone Sample cued from Play_Ped_Ringtone()") cdPrintnl() #endif ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF IF g_InputButtonJustPressed = FALSE IF Is_Phone_Control_Just_Pressed (FRONTEND_CONTROL, INT_TO_ENUM (CONTROL_ACTION, PHONE_POSITIVE_INPUT)) //positive action - Setting selected. Play_Select_Beep() g_InputButtonJustPressed = TRUE //Legacy //g_savedGlobals.sCellphoneSettingsData.This_Cellphone_Owner_Settings[g_Cellphone.PhoneOwner].g_SettingList[i_Selected_Setting].Setting_Currently_Selected_Option = ENUM_TO_INT (SettingListSlot[LEGACY_SCALEFORM_MOVIE_METHOD(SF_MovieIndex, "GET_CURRENT_SELECTION")]) //This_Cellphone_Owner_Settings_ListContents[g_Cellphone.PhoneOwner].g_SettingList[i_Selected_Setting].Setting_Currently_Selected_Option = ENUM_TO_INT (SettingListSlot[LEGACY_SCALEFORM_MOVIE_METHOD(SF_MovieIndex, "GET_CURRENT_SELECTION")]) //For bug 303583 - need to keep a copy of previously highlighted slot so it can be returned to after re-establishing the view state. //i_Selected_Slot = LEGACY_SCALEFORM_MOVIE_METHOD(SF_MovieIndex, "GET_CURRENT_SELECTION") //need to keep a copy of this 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) #if IS_DEBUG_BUILD cdPrintstring("appSettings - Waiting on return value from scaleform. 503") cdPrintnl() #endif ENDWHILE i_Selected_Slot = GET_SCALEFORM_MOVIE_METHOD_RETURN_VALUE_INT (Choice_ReturnedSFIndex) //Test for upcoming scaleform changes. //WAIT(0) //Prevent scaleform returning -1 for whatever reason... IF i_Selected_Slot < 0 i_Selected_Slot = 0 #if IS_DEBUG_BUILD PRINTNL() PRINTSTRING ("APPSETTINGS WARNING: Returned slot from theme selection was less than zero. Assigning return value to zero.") PRINTNL() #endif ENDIF This_Cellphone_Owner_Settings_ListContents[g_Cellphone.PhoneOwner].g_SettingList[i_Selected_Setting].Setting_Currently_Selected_Option = ENUM_TO_INT (SettingListSlot[i_Selected_Slot]) IF i_Selected_Setting = ENUM_TO_INT(SETTING_THEME) //Grab selected option and put it into saved global... //g_savedGlobals.sCellphoneSettingsData.This_Cellphone_Owner_Settings[g_Cellphone.PhoneOwner].ThemeForThisPlayer = (g_savedGlobals.sCellphoneSettingsData.This_Cellphone_Owner_Settings[g_Cellphone.PhoneOwner].g_SettingList[i_Selected_Setting].Setting_Currently_Selected_Option) // g_savedGlobals.sCellphoneSettingsData.This_Cellphone_Owner_Settings[g_Cellphone.PhoneOwner].ThemeForThisPlayer = //(This_Cellphone_Owner_Settings_ListContents[g_Cellphone.PhoneOwner].g_SettingList[i_Selected_Setting].Setting_Currently_Selected_Option) INT i_ClarityTemp = This_Cellphone_Owner_Settings_ListContents[g_Cellphone.PhoneOwner].g_SettingList[i_Selected_Setting].Setting_Currently_Selected_Option g_savedGlobals.sCellphoneSettingsData.This_Cellphone_Owner_Settings[g_Cellphone.PhoneOwner].ThemeForThisPlayer = This_Cellphone_Owner_Settings_ListContents[g_Cellphone.PhoneOwner].g_SettingList[ENUM_TO_INT(SETTING_THEME)].Setting_Linked_SF_Reference[i_ClarityTemp] LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER (SF_MovieIndex, "SET_THEME", TO_FLOAT (g_savedGlobals.sCellphoneSettingsData.This_Cellphone_Owner_Settings[g_Cellphone.PhoneOwner].ThemeForThisPlayer)) //...and keep a copy of the index for the MP Stat. IF g_bInMultiplayer Temp_MPcurrentTheme = This_Cellphone_Owner_Settings_ListContents[CHAR_MULTIPLAYER].g_SettingList[ENUM_TO_INT(SETTING_THEME)].Setting_Currently_Selected_Option SET_MP_INT_CHARACTER_STAT (MP_STAT_FM_CELLPHONE_THEME,This_Cellphone_Owner_Settings_ListContents[CHAR_MULTIPLAYER].g_SettingList[ENUM_TO_INT(SETTING_THEME)].Setting_Currently_Selected_Option) #if IS_DEBUG_BUILD PRINTNL() PRINTSTRING("Setting MP THEME STAT..........") PRINTINT (GET_MP_INT_CHARACTER_STAT(MP_STAT_FM_CELLPHONE_THEME)) PRINTNL() #endif LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER (SF_MovieIndex, "SET_THEME", TO_FLOAT (Temp_MPcurrentTheme)) ELSE LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER (SF_MovieIndex, "SET_THEME", TO_FLOAT (g_savedGlobals.sCellphoneSettingsData.This_Cellphone_Owner_Settings[g_Cellphone.PhoneOwner].ThemeForThisPlayer)) ENDIF SetUpPhoneSurroundTint() #if IS_DEBUG_BUILD PRINTSTRING ("Selected slot was ") PRINTINT (i_Selected_Slot) //PRINTINT (This_Cellphone_Owner_Settings_ListContents[g_Cellphone.PhoneOwner].g_SettingList[i_Selected_Setting].Setting_Currently_Selected_Option) PRINTNL() PRINTSTRING ("Theme Set to ") PRINTINT (g_savedGlobals.sCellphoneSettingsData.This_Cellphone_Owner_Settings[g_Cellphone.PhoneOwner].ThemeForThisPlayer) PRINTNL () #endif //i_Temp_Slot_Contents = g_savedGlobals.sCellphoneSettingsData.This_Cellphone_Owner_Settings[g_Cellphone.PhoneOwner].ThemeForThisPlayer //Remove tick from old choice. LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_DATA_SLOT", (TO_FLOAT(22)), (TO_FLOAT(iTickedSlotonLaunch)), (TO_FLOAT(23)), INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM, This_Cellphone_Owner_Settings_ListContents[g_Cellphone.PhoneOwner].g_SettingList[i_Selected_Setting].Setting_Secondary_Option_Labels[ENUM_TO_INT (SettingListSlot[iTickedSlotonLaunch])]) //Update new choice with tick... LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_DATA_SLOT", (TO_FLOAT(22)), (TO_FLOAT(i_Selected_Slot)), (TO_FLOAT(48)), INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM, This_Cellphone_Owner_Settings_ListContents[g_Cellphone.PhoneOwner].g_SettingList[i_Selected_Setting].Setting_Secondary_Option_Labels[ENUM_TO_INT (SettingListSlot[i_Selected_Slot])]) //Update iTickedSlot to reflect change. iTickedSlotonLaunch = i_Selected_Slot //Refresh view so colourway / theme change takes effect. Second int parameter specifies that we should return the view state highlight to the last used slot. LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER (SF_MovieIndex, "DISPLAY_VIEW", 22, TO_FLOAT (i_Selected_Slot)) #if IS_DEBUG_BUILD PRINTSTRING ("Re-establishing view state 22 with highlighted slot number ") PRINTINT (i_Selected_Slot) PRINTNL () #endif //Removed to save globals 15.03.13 //If the chosen theme is linked to a wallpaper change, update that too... /* IF This_Cellphone_Owner_Settings_ListContents[g_Cellphone.PhoneOwner].g_SettingList[ENUM_TO_INT(SETTING_THEME)].Setting_Linked_Wallpaper[i_ClarityTemp] > -1 #if IS_DEBUG_BUILD PRINTSTRING ("Found linked wallpaper from this selected slot. Applying wallpaper number: ") PRINTINT (This_Cellphone_Owner_Settings_ListContents[g_Cellphone.PhoneOwner].g_SettingList[ENUM_TO_INT(SETTING_THEME)].Setting_Linked_Wallpaper[i_ClarityTemp]) PRINTNL () #endif g_savedGlobals.sCellphoneSettingsData.This_Cellphone_Owner_Settings[g_Cellphone.PhoneOwner].WallpaperForThisPlayer = This_Cellphone_Owner_Settings_ListContents[g_Cellphone.PhoneOwner].g_SettingList[ENUM_TO_INT(SETTING_THEME)].Setting_Linked_Wallpaper[i_ClarityTemp] LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER (SF_MovieIndex, "SET_BACKGROUND_IMAGE", TO_FLOAT (g_savedGlobals.sCellphoneSettingsData.This_Cellphone_Owner_Settings[g_Cellphone.PhoneOwner].WallpaperForThisPlayer)) ENDIF */ ENDIF IF i_Selected_Setting = ENUM_TO_INT(SETTING_WALLPAPER) //Grab selected option and put it into saved global... g_savedGlobals.sCellphoneSettingsData.This_Cellphone_Owner_Settings[g_Cellphone.PhoneOwner].WallpaperForThisPlayer = (This_Cellphone_Owner_Settings_ListContents[g_Cellphone.PhoneOwner].g_SettingList[i_Selected_Setting].Setting_Currently_Selected_Option) //...and keep a copy of the index for the MP Stat. IF g_bInMultiplayer Temp_MPcurrentWallpaper = This_Cellphone_Owner_Settings_ListContents[CHAR_MULTIPLAYER].g_SettingList[ENUM_TO_INT(SETTING_WALLPAPER)].Setting_Currently_Selected_Option SET_MP_INT_CHARACTER_STAT (MP_STAT_FM_CELLPHONE_BACKGROUND, This_Cellphone_Owner_Settings_ListContents[CHAR_MULTIPLAYER].g_SettingList[ENUM_TO_INT(SETTING_WALLPAPER)].Setting_Currently_Selected_Option) #if IS_DEBUG_BUILD PRINTNL() PRINTSTRING("Setting MP BACKGROUND STAT..........") PRINTINT (GET_MP_INT_CHARACTER_STAT(MP_STAT_FM_CELLPHONE_BACKGROUND)) PRINTNL() #endif IF Temp_MPCurrentWallpaper = 0 //Crew Emblem selected. //Add crew emblem as cellphone wallpaper... TEXT_LABEL_63 sCrewTextureName GAMER_HANDLE PlayerHandle PlayerHandle = GET_GAMER_HANDLE_PLAYER(PLAYER_ID()) BOOL b_TimedOutGettingCrewEmblem = FALSE IF NETWORK_HAVE_USER_CONTENT_PRIVILEGES() = FALSE //See 2002264 #if IS_DEBUG_BUILD cdPrintstring("App Settings - NETWORK_HAVE_USER_CONTENT_PRIVILEGES() returned false prior to Crew Emblem retrieval.") cdPrintnl() #endif ENDIF IF NETWORK_CLAN_PLAYER_IS_ACTIVE(PlayerHandle) AND NETWORK_HAVE_USER_CONTENT_PRIVILEGES() AND g_b_HasCrewEmblemRetrievalFailedThisSession = FALSE //AND (g_DumpDisableEveryFrameCaller = FALSE) comment in for easy testing. #if IS_DEBUG_BUILD cdPrintstring("App_Settings - Player primary clan active and content privileges available! Will try to get texture name for cellphone background. ") cdPrintnl() #endif SETTIMERA(0) WHILE NOT (NETWORK_CLAN_GET_EMBLEM_TXD_NAME(PlayerHandle, sCrewTextureName)) AND (TIMERA() < 3000) //Give MP simulation 3 seconds to get crew texture for testing purposes. WAIT (0) #if IS_DEBUG_BUILD cdPrintstring("App_Settings - waiting on GET_EMBLEM_TXD_NAME to retrieve string") cdPrintnl() #endif IF TIMERA() > 2999 #if IS_DEBUG_BUILD cdPrintstring("WARNING! App_Settings - TIMED OUT on GET_EMBLEM_TXD_NAME to retrieve string!") cdPrintnl() #endif b_TimedOutGettingCrewEmblem = TRUE ENDIF ENDWHILE #if IS_DEBUG_BUILD cdPrintstring("App_Settings - Emblem TXD string retrieved was... ") cdPrintstring(sCrewTextureName) cdPrintnl() #endif IF b_TimedOutGettingCrewEmblem = FALSE //If we didn't time out, set the background crew image. BEGIN_SCALEFORM_MOVIE_METHOD(SF_MovieIndex, "SET_BACKGROUND_CREW_IMAGE") //SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING(sCrewTextureName) //END_SCALEFORM_MOVIE_METHOD() BEGIN_TEXT_COMMAND_SCALEFORM_STRING ("CELL_2000") //~a~ ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME(sCrewTextureName) END_TEXT_COMMAND_SCALEFORM_STRING() END_SCALEFORM_MOVIE_METHOD() ENDIF ELSE #if IS_DEBUG_BUILD cdPrintstring("AppSettings - Clan not active. Assigning default wallpaper as 0.") cdPrintstring(sCrewTextureName) cdPrintnl() #endif LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER (SF_MovieIndex, "SET_BACKGROUND_IMAGE", TO_FLOAT (0)) ENDIF ELSE LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER (SF_MovieIndex, "SET_BACKGROUND_IMAGE", TO_FLOAT (Temp_MPCurrentWallpaper)) ENDIF ELSE LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER (SF_MovieIndex, "SET_BACKGROUND_IMAGE", TO_FLOAT (g_savedGlobals.sCellphoneSettingsData.This_Cellphone_Owner_Settings[g_Cellphone.PhoneOwner].WallpaperForThisPlayer)) ENDIF #if IS_DEBUG_BUILD PRINTSTRING ("Wallpaper Set to ") PRINTINT (g_savedGlobals.sCellphoneSettingsData.This_Cellphone_Owner_Settings[g_Cellphone.PhoneOwner].WallpaperForThisPlayer) PRINTNL () #endif //Remove tick from old choice. LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_DATA_SLOT", (TO_FLOAT(22)), (TO_FLOAT(iTickedSlotonLaunch)), (TO_FLOAT(23)), INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM, This_Cellphone_Owner_Settings_ListContents[g_Cellphone.PhoneOwner].g_SettingList[i_Selected_Setting].Setting_Secondary_Option_Labels[ENUM_TO_INT (SettingListSlot[iTickedSlotonLaunch])]) //Update new choice with tick... LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_DATA_SLOT", (TO_FLOAT(22)), (TO_FLOAT(i_Selected_Slot)), (TO_FLOAT(48)), INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM, This_Cellphone_Owner_Settings_ListContents[g_Cellphone.PhoneOwner].g_SettingList[i_Selected_Setting].Setting_Secondary_Option_Labels[ENUM_TO_INT (SettingListSlot[i_Selected_Slot])]) //Update iTickedSlot to reflect change. iTickedSlotonLaunch = i_Selected_Slot //Refresh view so colourway / theme change takes effect. Second int parameter specifies that we should return the view state highlight to the last used slot. LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER (SF_MovieIndex, "DISPLAY_VIEW", 22, TO_FLOAT (i_Selected_Slot)) #if IS_DEBUG_BUILD PRINTSTRING ("Re-establishing view state 22 with highlighted slot number ") PRINTINT (i_Selected_Slot) PRINTNL () #endif ENDIF IF i_Selected_Setting = ENUM_TO_INT(SETTING_RINGTONE) //SETTIMERB(0) //b_RingtoneTestUnderWay = TRUE //Grab selected option and put it into saved global... //Haha! What an assignment! g_savedGlobals.sCellphoneSettingsData.This_Cellphone_Owner_Settings[g_Cellphone.PhoneOwner].RingtoneForThisPlayer = This_Cellphone_Owner_Settings_ListContents[g_Cellphone.PhoneOwner].g_SettingList[ENUM_TO_INT(SETTING_RINGTONE)].Setting_Secondary_Option_filename_label[This_Cellphone_Owner_Settings_ListContents[g_Cellphone.PhoneOwner].g_SettingList[ENUM_TO_INT(SETTING_RINGTONE)].Setting_Currently_Selected_Option] //...and keep a copy of the index for the MP Stat. IF g_bInMultiplayer SET_MP_INT_CHARACTER_STAT (MP_STAT_FM_CELLPHONE_RINGTONE,This_Cellphone_Owner_Settings_ListContents[CHAR_MULTIPLAYER].g_SettingList[ENUM_TO_INT(SETTING_RINGTONE)].Setting_Currently_Selected_Option) #if IS_DEBUG_BUILD PRINTNL() PRINTSTRING("Setting MP RINGTONE STAT..........") PRINTINT (GET_MP_INT_CHARACTER_STAT(MP_STAT_FM_CELLPHONE_RINGTONE)) PRINTNL() #endif ENDIF /* //Commented out as we now play test sounds automatically above. IF NOT IS_ENTITY_DEAD (PLAYER_PED_ID()) STOP_SOUND (Test_Phone_Ringtone_SoundID) //make sure any previous ringtone test is terminated. IF HAS_SOUND_FINISHED (Test_Phone_Ringtone_SoundID) PLAY_SOUND_FROM_ENTITY (Test_Phone_Ringtone_SoundID, g_savedGlobals.sCellphoneSettingsData.This_Cellphone_Owner_Settings[g_Cellphone.PhoneOwner].RingtoneForThisPlayer, PLAYER_PED_ID()) ENDIF ENDIF */ //Remove tick from old choice. LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_DATA_SLOT", (TO_FLOAT(22)), (TO_FLOAT(iTickedSlotonLaunch)), (TO_FLOAT(18)), INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM, This_Cellphone_Owner_Settings_ListContents[g_Cellphone.PhoneOwner].g_SettingList[i_Selected_Setting].Setting_Secondary_Option_Labels[ENUM_TO_INT (SettingListSlot[iTickedSlotonLaunch])]) //Update new choice with tick... LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_DATA_SLOT", (TO_FLOAT(22)), (TO_FLOAT(i_Selected_Slot)), (TO_FLOAT(48)), INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM, This_Cellphone_Owner_Settings_ListContents[g_Cellphone.PhoneOwner].g_SettingList[i_Selected_Setting].Setting_Secondary_Option_Labels[ENUM_TO_INT (SettingListSlot[i_Selected_Slot])]) //Update iTickedSlot to reflect change. iTickedSlotonLaunch = i_Selected_Slot //Refresh view so colourway / theme change takes effect. Second int parameter specifies that we should return the view state highlight to the last used slot. LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER (SF_MovieIndex, "DISPLAY_VIEW", 22, TO_FLOAT (i_Selected_Slot)) #if IS_DEBUG_BUILD PRINTSTRING ("Re-establishing view state 22 with highlighted slot number ") PRINTINT (i_Selected_Slot) PRINTNL () #endif ENDIF IF i_Selected_Setting = ENUM_TO_INT(SETTING_VIBRATE) //Grab selected option and put it into saved global and MP stat when in MP. g_savedGlobals.sCellphoneSettingsData.This_Cellphone_Owner_Settings[g_Cellphone.PhoneOwner].VibrateForThisPlayer = (This_Cellphone_Owner_Settings_ListContents[g_Cellphone.PhoneOwner].g_SettingList[i_Selected_Setting].Setting_Currently_Selected_Option) IF g_bInMultiplayer #if IS_DEBUG_BUILD PRINTNL() PRINTSTRING("Attempting to set MP_STAT_FM_CELLPHONE_VIBRATE to ") PRINTINT (g_savedGlobals.sCellphoneSettingsData.This_Cellphone_Owner_Settings[g_Cellphone.PhoneOwner].VibrateForThisPlayer) PRINTNL() PRINTSTRING(" from settings list. ") PRINTNL() #endif SET_MP_INT_CHARACTER_STAT(MP_STAT_FM_CELLPHONE_VIBRATE, g_savedGlobals.sCellphoneSettingsData.This_Cellphone_Owner_Settings[CHAR_MULTIPLAYER].VibrateForThisPlayer) #if IS_DEBUG_BUILD PRINTNL() PRINTSTRING("Checking MP VIBRATE STAT after set..........") PRINTINT (GET_MP_INT_CHARACTER_STAT(MP_STAT_FM_CELLPHONE_VIBRATE)) PRINTNL() #endif ENDIF IF g_savedGlobals.sCellphoneSettingsData.This_Cellphone_Owner_Settings[g_Cellphone.PhoneOwner].VibrateForThisPlayer = 1 //Vibrate is set to ON. Run_Sample_Vibrate = TRUE AutoCueStartTime = GET_GAME_TIMER() ELSE Run_Sample_Vibrate = FALSE ENDIF ENDIF IF i_Selected_Setting = ENUM_TO_INT(SETTING_PROFILE) IF g_bInMultiplayer = TRUE This_Cellphone_Owner_Settings_ListContents[CHAR_MULTIPLAYER].g_SettingList[i_Selected_Setting].Setting_Currently_Selected_Option = ENUM_TO_INT (SettingListSlot[i_Selected_Slot]) #if IS_DEBUG_BUILD cdPrintnl() cdPrintstring("AppSettings - Setting MP_STAT_FM_CELLPHONE_QUICKLAUNCH to .") cdPrintint(This_Cellphone_Owner_Settings_ListContents[CHAR_MULTIPLAYER].g_SettingList[i_Selected_Setting].Setting_Currently_Selected_Option) cdPrintnl() #endif //Remove tick from old choice. LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_DATA_SLOT", (TO_FLOAT(22)), (TO_FLOAT(iTickedSlotonLaunch)), (TO_FLOAT(19)), INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM, This_Cellphone_Owner_Settings_ListContents[g_Cellphone.PhoneOwner].g_SettingList[i_Selected_Setting].Setting_Secondary_Option_Labels[ENUM_TO_INT (SettingListSlot[iTickedSlotonLaunch])]) //Update new choice with tick... LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_DATA_SLOT", (TO_FLOAT(22)), (TO_FLOAT(i_Selected_Slot)), (TO_FLOAT(48)), INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM, This_Cellphone_Owner_Settings_ListContents[g_Cellphone.PhoneOwner].g_SettingList[i_Selected_Setting].Setting_Secondary_Option_Labels[ENUM_TO_INT (SettingListSlot[i_Selected_Slot])]) //Update iTickedSlot to reflect change. iTickedSlotonLaunch = i_Selected_Slot //Refresh view so colourway / theme change takes effect. Second int parameter specifies that we should return the view state highlight to the last used slot. LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER (SF_MovieIndex, "DISPLAY_VIEW", 22, TO_FLOAT (i_Selected_Slot)) #if IS_DEBUG_BUILD PRINTSTRING ("Re-establishing view state 22 with highlighted slot number ") PRINTINT (i_Selected_Slot) PRINTNL () #endif //Put back in when stat is available. SET_MP_INT_CHARACTER_STAT(MP_STAT_FM_CELLPHONE_QUICKLAUNCH, This_Cellphone_Owner_Settings_ListContents[CHAR_MULTIPLAYER].g_SettingList[i_Selected_Setting].Setting_Currently_Selected_Option) ELSE //This does not need to be a saved global. //This_Cellphone_Owner_Settings[g_Cellphone.PhoneOwner].ProfileForThisPlayer = (This_Cellphone_Owner_Settings[g_Cellphone.PhoneOwner].g_SettingList[i_Selected_Setting].Setting_Currently_Selected_Option) //Set all SP phones to chosen mode... This_Cellphone_Owner_Settings_ListContents[CHAR_MICHAEL].g_SettingList[i_Selected_Setting].Setting_Currently_Selected_Option = ENUM_TO_INT (SettingListSlot[i_Selected_Slot]) This_Cellphone_Owner_Settings_ListContents[CHAR_FRANKLIN].g_SettingList[i_Selected_Setting].Setting_Currently_Selected_Option = ENUM_TO_INT (SettingListSlot[i_Selected_Slot]) This_Cellphone_Owner_Settings_ListContents[CHAR_TREVOR].g_SettingList[i_Selected_Setting].Setting_Currently_Selected_Option = ENUM_TO_INT (SettingListSlot[i_Selected_Slot]) //If phone is in sleep mode, show mini signifier in top portion of screen, otherwise switch it off. //IF g_savedGlobals.sCellphoneSettingsData.This_Cellphone_Owner_Settings[g_Cellphone.PhoneOwner].g_SettingList[ENUM_TO_INT(SETTING_PROFILE)].Setting_Currently_Selected_Option = ENUM_TO_INT(PROFILE_SLEEP_MODE) //check if phone is in sleep mode. IF This_Cellphone_Owner_Settings_ListContents[g_Cellphone.PhoneOwner].g_SettingList[ENUM_TO_INT(SETTING_PROFILE)].Setting_Currently_Selected_Option = ENUM_TO_INT(PROFILE_SLEEP_MODE) //check if phone is in sleep mode. //Display sleep help if player is off mission. IF g_OnMissionState = MISSION_TYPE_OFF_MISSION IF g_savedGlobals.sCellphoneSettingsData.b_HasSleepWarningBeenDisplayed = FALSE CLEAR_HELP (TRUE) //HELP_AT_SCREEN_LOCATION("CELL_7050", f_PrimaryHelpX, f_PrimaryHelpY, HELP_TEXT_WEST, FLOATING_HELP_PRINT_FOREVER, FLOATING_HELP_MISSION_SLOT) PRINT_HELP_FOREVER ("CELL_7050") IF f_PrimaryHelpX = f_PrimaryHelpY //do nothing - unref hack that will deleted in final optimisations. ENDIF //Moving this to force action on player part in case phone is forced away accidentally... //g_savedGlobals.sCellphoneSettingsData.b_HasSleepWarningBeenDisplayed = TRUE b_DoSleepWarningRoutine = TRUE //SET_GAME_PAUSED (TRUE) ELSE LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER (SF_MovieIndex, "SET_SLEEP_MODE", 1) SET_BIT (BitSet_CellphoneDisplay, g_BS_DISPLAY_SLEEP_SIGNIFIER) SET_BIT (BitSet_CellphoneDisplay_Continued, g_BSC_CELLPHONE_SIGNIFIERS_NEEDS_UPDATED) IF g_savedGlobals.sCellphoneSettingsData.b_HasSleepIconHelpBeenDisplayed = FALSE CLEAR_HELP (TRUE) PRINT_HELP("CELL_7051") g_savedGlobals.sCellphoneSettingsData.b_HasSleepIconHelpBeenDisplayed = TRUE ENDIF ENDIF ENDIF ELSE LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER (SF_MovieIndex, "SET_SLEEP_MODE", 0) CLEAR_BIT (BitSet_CellphoneDisplay, g_BS_DISPLAY_SLEEP_SIGNIFIER) SET_BIT (BitSet_CellphoneDisplay_Continued, g_BSC_CELLPHONE_SIGNIFIERS_NEEDS_UPDATED) ENDIF ENDIF //g_bInMultiplayer condition check ENDIF LEGACY_SCALEFORM_MOVIE_METHOD_WITH_STRING (SF_MovieIndex, "SET_HEADER", This_Cellphone_Owner_Settings_ListContents[g_Cellphone.PhoneOwner].g_SettingList[i_Selected_Setting].Setting_Secondary_Option_labels[This_Cellphone_Owner_Settings_ListContents[g_Cellphone.PhoneOwner].g_SettingList[i_Selected_Setting].Setting_Currently_Selected_Option]) //If the player is on a mission and has perhaps started it with the phone already on the settings list, make sure that SLEEP mode cannot persist by returning to normal mode IF IS_CURRENTLY_ON_MISSION_TO_TYPE(MISSION_TYPE_STORY) SET_CELLPHONE_PROFILE_TO_NORMAL() //from cellphone_public.sch ENDIF ENDIF ENDIF ENDPROC PROC Cleanup_and_Terminate() Restore_Special_Case_Settings() //from cellphone_private.sch //If the player is on a mission and has perhaps started it with the phone already on the settings list, make sure that SLEEP mode cannot persist by returning to normal mode IF IS_CURRENTLY_ON_MISSION_TO_TYPE(MISSION_TYPE_STORY) SET_CELLPHONE_PROFILE_TO_NORMAL() //from cellphone_public.sch ENDIF IF NOT IS_ENTITY_DEAD (PLAYER_PED_ID()) //STOP_SOUND (Test_Phone_Ringtone_SoundID) //make sure any ringtone test is terminated. //#1392094 swap STOP_PED_RINGTONE (PLAYER_PED_ID()) ENDIF //RELEASE_SOUND_ID (Test_Phone_Ringtone_SoundID) //#1392094 swap //CLEAR_FLOATING_HELP (FLOATING_HELP_TEXT_ID_1) //Check for specific help message IF b_DoSleepWarningRoutine CLEAR_HELP (TRUE) ENDIF //If the sleep tutorial has not been fully completed, reset profile to normal... IF g_savedGlobals.sCellphoneSettingsData.b_HasSleepIconHelpBeenDisplayed = FALSE OR g_savedGlobals.sCellphoneSettingsData.b_HasSleepWarningBeenDisplayed = FALSE SET_CELLPHONE_PROFILE_TO_NORMAL() ENDIF SET_GAME_PAUSED (FALSE) TERMINATE_THIS_THREAD() ENDPROC SCRIPT //Ensure this script persists during network game NETWORK_SET_SCRIPT_IS_SAFE_FOR_NETWORK_GAME() LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER(SF_MovieIndex,"SET_DATA_SLOT_EMPTY", 13) Get_Cellphone_Owner() IF g_Chosen_Ratio = DISPLAY_16_9 f_PrimaryHelpX = 0.75 f_PrimaryHelpY = 0.8 ELSE f_PrimaryHelpX = 0.65 f_PrimaryHelpY = 0.77 ENDIF //Fill_All_Settings() Moved to charsheet_initial.sc //Display settings menu help one time only. Removed at request of Imran #955201 /* IF NOT g_savedGlobals.sCellphoneSettingsData.b_HasSettingsHelpBeenDisplayed //This saved global is now reused for the Focus Lock help. SWITCH GET_FLOW_HELP_MESSAGE_STATUS("CELL_750") CASE FHS_EXPIRED ADD_HELP_TO_FLOW_QUEUE("CELL_750", FHP_HIGH, 500, DEFAULT_GOD_TEXT_TIME) BREAK CASE FHS_DISPLAYED g_savedGlobals.sCellphoneSettingsData.b_HasSettingsHelpBeenDisplayed = TRUE #if IS_DEBUG_BUILD cdPrintstring("AppSETTINGS - Settings menu help has been displayed. Saved global set.") cdPrintnl() #endif BREAK ENDSWITCH ENDIF */ //Get the currently selected options from the saved settings data so the headers can be specified easily. //Themes and wallpapers are directly matching ints - easily transferred. This_Cellphone_Owner_Settings_ListContents[g_Cellphone.PhoneOwner].g_SettingList[SETTING_THEME].Setting_Currently_Selected_Option = g_savedGlobals.sCellphoneSettingsData.This_Cellphone_Owner_Settings[g_Cellphone.PhoneOwner].ThemeForThisPlayer This_Cellphone_Owner_Settings_ListContents[g_Cellphone.PhoneOwner].g_SettingList[SETTING_WALLPAPER].Setting_Currently_Selected_Option = g_savedGlobals.sCellphoneSettingsData.This_Cellphone_Owner_Settings[g_Cellphone.PhoneOwner].WallpaperForThisPlayer INT tempcomparisonIndex = 0 WHILE tempcomparisonIndex < (ENUM_TO_INT(MAX_SETTINGS)) IF g_bInMultiplayer This_Cellphone_Owner_Settings_ListContents[g_Cellphone.PhoneOwner].g_SettingList[SETTING_RINGTONE].Setting_Currently_Selected_Option = GET_MP_INT_CHARACTER_STAT(MP_STAT_FM_CELLPHONE_RINGTONE) This_Cellphone_Owner_Settings_ListContents[g_Cellphone.PhoneOwner].g_SettingList[SETTING_THEME].Setting_Currently_Selected_Option = GET_MP_INT_CHARACTER_STAT(MP_STAT_FM_CELLPHONE_THEME) This_Cellphone_Owner_Settings_ListContents[g_Cellphone.PhoneOwner].g_SettingList[SETTING_WALLPAPER].Setting_Currently_Selected_Option = GET_MP_INT_CHARACTER_STAT(MP_STAT_FM_CELLPHONE_BACKGROUND) ELSE IF ARE_STRINGS_EQUAL ( g_savedGlobals.sCellphoneSettingsData.This_Cellphone_Owner_Settings[g_Cellphone.PhoneOwner].RingtoneForThisPlayer, This_Cellphone_Owner_Settings_ListContents[g_Cellphone.PhoneOwner].g_SettingList[ENUM_TO_INT(SETTING_RINGTONE)].Setting_Secondary_Option_filename_label[tempComparisonIndex]) This_Cellphone_Owner_Settings_ListContents[g_Cellphone.PhoneOwner].g_SettingList[SETTING_RINGTONE].Setting_Currently_Selected_Option = tempcomparisonIndex ENDIF ENDIF tempcomparisonIndex ++ ENDWHILE //This does not need to be a saved global but is included in struct. //This_Cellphone_Owner_Settings[g_Cellphone.PhoneOwner].g_SettingList[SETTING_PROFILE].Setting_Currently_Selected_Option = This_Cellphone_Owner_Settings[g_Cellphone.PhoneOwner].ProfileForThisPlayer IF g_bInMultiplayer g_savedGlobals.sCellphoneSettingsData.This_Cellphone_Owner_Settings[CHAR_MULTIPLAYER].VibrateForThisPlayer = GET_MP_INT_CHARACTER_STAT(MP_STAT_FM_CELLPHONE_VIBRATE) #if IS_DEBUG_BUILD PRINTNL() PRINTSTRING("Getting MP VIBRATE STAT..........") PRINTINT (GET_MP_INT_CHARACTER_STAT(MP_STAT_FM_CELLPHONE_VIBRATE)) PRINTNL() #endif ENDIF This_Cellphone_Owner_Settings_ListContents[g_Cellphone.PhoneOwner].g_SettingList[SETTING_VIBRATE].Setting_Currently_Selected_Option = g_savedGlobals.sCellphoneSettingsData.This_Cellphone_Owner_Settings[g_Cellphone.PhoneOwner].VibrateForThisPlayer Temporarily_Remove_Special_Case_Settings() //from cellphone_private.sch IF g_bInMultiplayer //New block using unused PROFILE setting for MP character as way of storing Quicklaunch preference. Quicklaunch MP only now. //Fill_Setting_List (3, SETTING_PROFILE, 190, "CELL_701", 25, AVAILABLE_IN_GUI) //Replace standard sleep profile in MP with Snapmatic Quicklaunch option This_Cellphone_Owner_Settings_ListContents[CHAR_MULTIPLAYER].g_SettingList[ENUM_TO_INT(SETTING_PROFILE)].Setting_orderInt = 190 //Make copy of orderInt in original orderInt in case the order is changed to make the setting a priority. This_Cellphone_Owner_Settings_ListContents[CHAR_MULTIPLAYER].g_SettingList[ENUM_TO_INT(SETTING_PROFILE)].Setting_original_orderInt = 190 This_Cellphone_Owner_Settings_ListContents[CHAR_MULTIPLAYER].g_SettingList[ENUM_TO_INT(SETTING_PROFILE)].Setting_Primary_Label = "CELL_701" This_Cellphone_Owner_Settings_ListContents[CHAR_MULTIPLAYER].g_SettingList[ENUM_TO_INT(SETTING_PROFILE)].Setting_Icon_Int = 19 This_Cellphone_Owner_Settings_ListContents[CHAR_MULTIPLAYER].g_SettingList[ENUM_TO_INT(SETTING_PROFILE)].phoneGuiPresence = AVAILABLE_IN_GUI This_Cellphone_Owner_Settings_ListContents[CHAR_MULTIPLAYER].g_SettingList[ENUM_TO_INT(SETTING_PROFILE)].Setting_Secondary_Option_labels[0] = "CELL_704" //Quicklaunch Off This_Cellphone_Owner_Settings_ListContents[CHAR_MULTIPLAYER].g_SettingList[ENUM_TO_INT(SETTING_PROFILE)].Setting_Secondary_Option_available[0] = TRUE This_Cellphone_Owner_Settings_ListContents[CHAR_MULTIPLAYER].g_SettingList[ENUM_TO_INT(SETTING_PROFILE)].Setting_Secondary_Order[0] = 170 This_Cellphone_Owner_Settings_ListContents[CHAR_MULTIPLAYER].g_SettingList[ENUM_TO_INT(SETTING_PROFILE)].Setting_Secondary_Icon_Int[0] = 19 This_Cellphone_Owner_Settings_ListContents[CHAR_MULTIPLAYER].g_SettingList[ENUM_TO_INT(SETTING_PROFILE)].Setting_Secondary_Option_labels[1] = "CELL_703" //Quicklaunch On This_Cellphone_Owner_Settings_ListContents[CHAR_MULTIPLAYER].g_SettingList[ENUM_TO_INT(SETTING_PROFILE)].Setting_Secondary_Option_available[1] = TRUE This_Cellphone_Owner_Settings_ListContents[CHAR_MULTIPLAYER].g_SettingList[ENUM_TO_INT(SETTING_PROFILE)].Setting_Secondary_Order[1] = 175 This_Cellphone_Owner_Settings_ListContents[CHAR_MULTIPLAYER].g_SettingList[ENUM_TO_INT(SETTING_PROFILE)].Setting_Secondary_Icon_Int[1] = 19 //Should not display, but here to illustrate normal SP use with all options filled. This_Cellphone_Owner_Settings_ListContents[CHAR_MULTIPLAYER].g_SettingList[ENUM_TO_INT(SETTING_PROFILE)].Setting_Secondary_Option_labels[2] = "CELL_801" //Sleep This_Cellphone_Owner_Settings_ListContents[CHAR_MULTIPLAYER].g_SettingList[ENUM_TO_INT(SETTING_PROFILE)].Setting_Secondary_Option_available[2] = FALSE This_Cellphone_Owner_Settings_ListContents[CHAR_MULTIPLAYER].g_SettingList[ENUM_TO_INT(SETTING_PROFILE)].Setting_Secondary_Order[2] = 190 This_Cellphone_Owner_Settings_ListContents[CHAR_MULTIPLAYER].g_SettingList[ENUM_TO_INT(SETTING_PROFILE)].Setting_Secondary_Icon_Int[2] = 26 //Put back in when stat is available. IF GET_MP_INT_CHARACTER_STAT(MP_STAT_FM_CELLPHONE_QUICKLAUNCH) = 0 #if IS_DEBUG_BUILD cdPrintnl() cdPrintstring("AppSettings - Retrieved MP_STAT_FM_CELLPHONE_QUICKLAUNCH as 0.") cdPrintnl() #endif This_Cellphone_Owner_Settings_ListContents[CHAR_MULTIPLAYER].g_SettingList[ENUM_TO_INT(SETTING_PROFILE)].Setting_Currently_Selected_Option = 0 //Would get this from stat... ELSE #if IS_DEBUG_BUILD cdPrintnl() cdPrintstring("AppSettings - Retrieved MP_STAT_FM_CELLPHONE_QUICKLAUNCH as 1.") cdPrintnl() #endif This_Cellphone_Owner_Settings_ListContents[CHAR_MULTIPLAYER].g_SettingList[ENUM_TO_INT(SETTING_PROFILE)].Setting_Currently_Selected_Option = 1 ENDIF ENDIF Place_Names_in_SettingSlots() WHILE TRUE WAIT(0) //Temp test! /* #if IS_DEBUG_BUILD IF Is_Phone_Control_Just_Pressed (FRONTEND_CONTROL, INT_TO_ENUM (CONTROL_ACTION, PHONE_SPECIAL_OPTION_INPUT)) //Special option - square LAUNCH_CALL_SCREEN_FOR_CHAT_CALL("CustomStringY") Cleanup_and_Terminate() ENDIF #endif */ IF b_RingtoneTestUnderway IF TIMERB() > 3500 IF NOT IS_ENTITY_DEAD (PLAYER_PED_ID()) //STOP_SOUND (Test_Phone_Ringtone_SoundID) //make sure any ringtone test is terminated. //#1392094 swap STOP_PED_RINGTONE (PLAYER_PED_ID()) ENDIF b_RingtoneTestUnderway = FALSE ENDIF ENDIF IF g_Cellphone.PhoneDS <> PDS_ONGOING_CALL //i.e a phonecall is not attempting to get through to the player. SWITCH g_Cellphone.PhoneDS CASE PDS_RUNNINGAPP //Scaleform transition //Display_Settings_List() Check_for_List_Navigation() Check_For_Setting_Selection() BREAK CASE PDS_COMPLEXAPP IF b_DoSleepWarningRoutine OR b_DoSleepHelpRoutine IF b_DoSleepWarningRoutine /* IF Is_Phone_Control_Just_Pressed (FRONTEND_CONTROL, INT_TO_ENUM (CONTROL_ACTION, PHONE_POSITIVE_INPUT)) //SET_GAME_PAUSED (FALSE) b_DoSleepWarningRoutine = FALSE g_savedGlobals.sCellphoneSettingsData.b_HasSleepWarningBeenDisplayed = TRUE CLEAR_HELP (TRUE) LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER (SF_MovieIndex, "SET_SLEEP_MODE", 1) SET_BIT (BitSet_CellphoneDisplay, g_BS_DISPLAY_SLEEP_SIGNIFIER) SET_BIT (BitSet_CellphoneDisplay_Continued, g_BSC_CELLPHONE_SIGNIFIERS_NEEDS_UPDATED) //HELP_AT_SCREEN_LOCATION("CELL_7051", (f_PrimaryHelpX - 0.50), f_PrimaryHelpY - 0.075, HELP_TEXT_EAST, FLOATING_HELP_PRINT_FOREVER, FLOATING_HELP_MISSION_SLOT) PRINT_HELP ("CELL_7051") IF g_savedGlobals.sCellphoneSettingsData.b_HasSleepIconHelpBeenDisplayed = FALSE b_DoSleepHelpRoutine = TRUE g_savedGlobals.sCellphoneSettingsData.b_HasSleepIconHelpBeenDisplayed = TRUE SETTIMERB(0) ENDIF ENDIF */ b_DoSleepWarningRoutine = FALSE SETTIMERB(0) g_savedGlobals.sCellphoneSettingsData.b_HasSleepWarningBeenDisplayed = TRUE b_DoSleepHelpRoutine = TRUE ELSE //DoSleepHelpRoutine must be true IF TIMERB() > DEFAULT_GOD_TEXT_TIME //SET_GAME_PAUSED (FALSE) b_DoSleepHelpRoutine = FALSE //CLEAR_FLOATING_HELP (FLOATING_HELP_TEXT_ID_1) CLEAR_HELP(TRUE) ENDIF ENDIF ELSE Check_for_List_Navigation() Check_For_Secondary_Setting_Selection() IF Run_Sample_Vibrate Sample_Vibrate() ENDIF IF Is_Phone_Control_Just_Pressed (FRONTEND_CONTROL, INT_TO_ENUM (CONTROL_ACTION, PHONE_GO_BACK_INPUT)) //Go back action - user opted to return to full text message list from single message display. IF NOT IS_ENTITY_DEAD (PLAYER_PED_ID()) //STOP_SOUND (Test_Phone_Ringtone_SoundID) //make sure any ringtone test is terminated. //#1392094 swap STOP_PED_RINGTONE (PLAYER_PED_ID()) ENDIF Run_Sample_Vibrate = FALSE //make sure that the sample vibrate is terminated. Play_Back_Beep() g_InputButtonJustPressed = TRUE LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER(SF_MovieIndex,"SET_DATA_SLOT_EMPTY", 13) //LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER (SF_MovieIndex, "DISPLAY_VIEW", 1) //Set enum state and header to Homescreen briefly to flush view state data Place_Names_in_SettingSlots() IF g_CellPhone.PhoneDS > PDS_AWAY //make sure that the following state assignment cannot interfere with AWAY or DISABLED assignment. g_Cellphone.PhoneDS = PDS_RUNNINGAPP #if IS_DEBUG_BUILD cdPrintnl() cdPrintstring("STATE ASSIGNMENT 23. appSettings assigns PDS_RUNNINGAPP") cdPrintnl() #endif ENDIF ENDIF ENDIF BREAK DEFAULT #IF IS_DEBUG_BUILD PRINTSTRING("AppSettings in default state. Should terminate if exit check in place.") PRINTNL() #endif BREAK ENDSWITCH IF CHECK_FOR_APPLICATION_EXIT() Cleanup_and_Terminate() ENDIF ELSE //This is an important section! It tells this script what to do when a call, be it answerphone or other phonecall, comes through. //It is important to look at how appTextMessage interacts with any change to this section as it relies upon this script to make a call to any message sender. BeforeCallPhoneDS = PDS_MAXIMUM //After a call has finished the phone display state usually alters to whatever it was before the call came through. //We don't really want to go back to the "calling Setting" screen after an answerphone message so we set it to PDS_MAXIMUM //here. We could just as easily put the phone completely away if need be. //NB - This also means that when browsing the Settings list, if a calls comes through and it terminates then we default //back to MAXIMUM mode not browsing the Settings list. Cleanup_and_Terminate() //Likewise, having this here will make sure this script is terminated should any call come through... ENDIF IF CHECK_FOR_ABNORMAL_EXIT() Cleanup_and_Terminate() ENDIF #if IS_DEBUG_BUILD //draw_debug_screen_grid() //PRINTSTRING("ticked slot ") //PRINTINT(iTickedSlotonLaunch) //PRINTNL() #endif ENDWHILE ENDSCRIPT