USING "rage_builtins.sch" USING "globals.sch" USING "commands_script.sch" USING "commands_pad.sch" USING "cellphone_public.sch" USING "cellphone_private.sch" USING "cellphone_movement.sch" USING "stack_sizes.sch" USING "email_public.sch" USING "selector_public.sch" USING "website_public.sch" // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** // // SCRIPT NAME : appEmail.sc // AUTHOR : Steve T // DESCRIPTION : Placeholder Organiser or Email script, launched from phone // // // // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** //phone rotation stuff VECTOR v_3dEmailOriginalPosition, v_3dEmailDesiredPosition //Texture dictionary notes // IF NOT HAS_STREAMED_TEXTURE_DICT_LOADED("SplashScreens") // REQUEST_STREAMED_TEXTURE_DICT("SplashScreens") //MichaelTSplash // ENDIF // SET_STREAMED_TEXTURE_DICT_AS_NO_LONGER_NEEDED("SplashScreens") /* PROC LOAD_TEXTURE_DICTIONARY_AND_BLOCK() REQUEST_STREAMED_TEXTURE_DICT("placeholderattachment")//TODO, replace with emails PRINTLN("Email system enter wait for attachement texture dictionaries load") WHILE NOT HAS_STREAMED_TEXTURE_DICT_LOADED("placeholderattachment") WAIT(10) ENDWHILE PRINTLN("Email system leaving wait for attachement texture dictionaries load") ENDPROC PROC RELEASE_TEXTURE_DICTIONARIES() PRINTLN("Email system releasing attachement texture dictionaries") SET_STREAMED_TEXTURE_DICT_AS_NO_LONGER_NEEDED("placeholderattachment") ENDPROC */ //Replaced these with safety globals g_b_Rotate3dPhonePortrait and g_b_Rotate3dPhoneLandscape //BOOL b_Rotate3dPhonePortrait = FALSE //BOOL b_Rotate3dPhone = FALSE SCALEFORM_RETURN_INDEX fudp INT fudret = 0 PROC Cleanup_and_Terminate() IF(g_iEmailWithLoadedTextureIndex != -1) SET_STREAMED_TEXTURE_DICT_AS_NO_LONGER_NEEDED(GET_EMAIL_ATTACHMENT_TEXTURE_DICTIONARY_NAME(g_iEmailWithLoadedTextureIndex)) g_iEmailWithLoadedTextureIndex = -1 PRINTLN("Releasing old attachment texture") ENDIF g_bEmailSystemPaused = FALSE //As this script is not checking CHECK_APPLICATION_EXIT() we need to have a failsafe that ensures the correct display state is selected and scaleform //resets the display to the homescreen to avoid any timing issues. Pressing "Select" then "Back" in very quick succession for example. IF g_Cellphone.PhoneDS > PDS_TAKEOUT //i.e don't run this if the phone has just been put into disabled or away state g_Cellphone.PhoneDS = PDS_MAXIMUM Update_Scaleform_VSE () ENDIF //Play_Back_Beep() //RELEASE_TEXTURE_DICTIONARIES() TERMINATE_THIS_THREAD() ENDPROC PROC RotatePhoneToWidescreen() FLOAT fComplete = MovePhoneToDestination( v_3dEmailOriginalPosition, v_3dEmailDesiredPosition, g_3dPhoneStartRotVec, <<-90, 0, 90.0>>, 350.0, FALSE) // scale the phone up just a bit so that email is readable // note that subtitles were already overlapping, so might as well go big (or go home) IF g_IsMonochromeCheatActive = FALSE IF IS_PC_VERSION() IF NOT IsCurrentCamFirstPerson() //2184278 - Enlarging the phone in 800 x 600 seems to display the corner of the phone in 1st person. SET_MOBILE_PHONE_SCALE(500 + 75*fComplete) ENDIF ELSE SET_MOBILE_PHONE_SCALE(500 + 75*fComplete) ENDIF ENDIF //MovePhoneToDestination should return 2.0 very quickly in First Person mode so the prop in hand should begin rotating to landscape on immediate launch of the app. IF fComplete >= 1.0 CellphoneFirstPersonHorizontalModeToggle(TRUE) g_b_Rotate3dPhoneLandscape = FALSE s_iTimeStampStart = 0 ENDIF ENDPROC PROC RotatePhoneToPortrait_and_Exit() FLOAT fComplete = MovePhoneToDestination( v_3dEmailDesiredPosition, v_3dEmailOriginalPosition, <<-90, 0, 90.0>>, g_3dPhoneStartRotVec, 350.0, FALSE) // scale the phone down again. IF g_IsMonochromeCheatActive = FALSE SET_MOBILE_PHONE_SCALE(500 + 75*(1.0-fComplete)) ENDIF //MovePhoneToDestination should return 2.0 very quickly in First Person mode so the prop in hand should begin rotating back on termination of the app. IF fComplete >= 1.0 g_b_Rotate3dPhonePortrait = FALSE //Embedded check in this for 2015070 CellphoneFirstPersonHorizontalModeToggle(FALSE) Cleanup_and_Terminate() s_iTimeStampStart = 0 ENDIF ENDPROC ///Email system enumCharacterList currPlayer BOOL bActivated = FALSE BOOL bViewSwitchedToEmail = FALSE BOOL bUpdateRequired = FALSE BOOL bResponseFiredSinceLastViewOfInbox = FALSE// INT iSelectedEmail = -1 INT iSelectedResponse = -1 BOOL bPadCircle = FALSE BOOL bPadCross = FALSE BOOL bButtonUp = FALSE BOOL bButtonDown = FALSE BOOL bButtonLeft = FALSE BOOL bButtonRight = FALSE BOOL bURLPrimed = FALSE STRING sURLlast = NULL FLOAT fLastValidInboxIndexSelected = 0 BOOL bMovedAfterBack = TRUE // this is to cope with the fact scaleform returns are unreliable PROC DO_GENERIC_DIRECTIONAL_INPUTS() IF g_ShouldForceSelectionOfLatestAppItem PRINTLN("appemail DO_GENERIC_DIRECTIONAL_INPUTS bailed due to autoselect") iSelectedEmail = 0 fLastValidInboxIndexSelected = TO_FLOAT(iSelectedEmail) //double check that there are actually emails to select IF EMAILS_IN_INBOX(currPlayer) = 0 iSelectedEmail = -1 ENDIF IF NOT (iSelectedEmail = -1) g_Cellphone.PhoneDS = PDS_COMPLEXAPP bUpdateRequired = TRUE SETTIMERB(0) Play_Select_Beep() ENDIF EXIT ENDIF IF IS_BROWSER_OPEN() //if the browser has been launched from the email link then ignore inputs PRINTLN("appemail DO_GENERIC_DIRECTIONAL_INPUTS bailed due to net being visible") EXIT ENDIF IF g_b_Rotate3dPhonePortrait PRINTLN("appemail DO_GENERIC_DIRECTIONAL_INPUTS bailed due to phone rotating back to close") EXIT ENDIF //PRINTLN("appemail DO_GENERIC_DIRECTIONAL_INPUTS checking inputs ") //check for the directional buttons to feed the directly to scaleform //check for the action buttons to interact with the menu //, //, //, //, IF NOT (bButtonUp) IF IS_CONTROL_JUST_PRESSED(FRONTEND_CONTROL,INPUT_CELLPHONE_UP) OR IS_CONTROL_JUST_PRESSED(FRONTEND_CONTROL,INPUT_CELLPHONE_SCROLL_BACKWARD) bButtonUp = TRUE BEGIN_SCALEFORM_MOVIE_METHOD(SF_MovieIndex,"SET_INPUT_EVENT")//up SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(1) END_SCALEFORM_MOVIE_METHOD() PLAY_SOUND_FRONTEND (-1, "Menu_Navigate", g_Owner_Soundset) SETTIMERA(0) bMovedAfterBack = TRUE ENDIF ELSE //wait for release IF IS_CONTROL_PRESSED(FRONTEND_CONTROL,INPUT_CELLPHONE_UP) OR IS_CONTROL_PRESSED(FRONTEND_CONTROL,INPUT_CELLPHONE_SCROLL_BACKWARD) IF TIMERA() > 100 AND (iSelectedEmail != -1) BEGIN_SCALEFORM_MOVIE_METHOD(SF_MovieIndex,"SET_INPUT_EVENT")//up SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(1) END_SCALEFORM_MOVIE_METHOD() //PLAY_SOUND_FRONTEND (-1, "Menu_Navigate", g_Owner_Soundset) SETTIMERA(0) bMovedAfterBack = TRUE ENDIF ELSE //NOT IS_CONTROL_PRESSED(FRONTEND_CONTROL,INPUT_CELLPHONE_UP) bButtonUp = FALSE ENDIF ENDIF IF NOT (bButtonDown) IF IS_CONTROL_JUST_PRESSED(FRONTEND_CONTROL,INPUT_CELLPHONE_DOWN) OR IS_CONTROL_JUST_PRESSED(FRONTEND_CONTROL,INPUT_CELLPHONE_SCROLL_FORWARD) bButtonDown = TRUE BEGIN_SCALEFORM_MOVIE_METHOD(SF_MovieIndex,"SET_INPUT_EVENT") SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(3) END_SCALEFORM_MOVIE_METHOD() PLAY_SOUND_FRONTEND (-1, "Menu_Navigate", g_Owner_Soundset) SETTIMERB(0) bMovedAfterBack = TRUE ENDIF ELSE //wait for release IF IS_CONTROL_PRESSED(FRONTEND_CONTROL,INPUT_CELLPHONE_DOWN) OR IS_CONTROL_PRESSED(FRONTEND_CONTROL,INPUT_CELLPHONE_SCROLL_FORWARD) IF TIMERB() > 100 AND (iSelectedEmail != -1) BEGIN_SCALEFORM_MOVIE_METHOD(SF_MovieIndex,"SET_INPUT_EVENT") SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(3) END_SCALEFORM_MOVIE_METHOD() //PLAY_SOUND_FRONTEND (-1, "Menu_Navigate", g_Owner_Soundset) SETTIMERB(0) bMovedAfterBack = TRUE ENDIF ELSE //NOT IS_CONTROL_PRESSED(FRONTEND_CONTROL,INPUT_CELLPHONE_DOWN) bButtonDown = FALSE ENDIF ENDIF IF NOT (bButtonLeft) IF IS_CONTROL_PRESSED(FRONTEND_CONTROL,INPUT_CELLPHONE_LEFT) bButtonLeft = TRUE BEGIN_SCALEFORM_MOVIE_METHOD(SF_MovieIndex,"SET_INPUT_EVENT") SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(4) END_SCALEFORM_MOVIE_METHOD() PLAY_SOUND_FRONTEND (-1, "Menu_Navigate", g_Owner_Soundset) ENDIF ELSE //wait for release IF NOT IS_CONTROL_PRESSED(FRONTEND_CONTROL,INPUT_CELLPHONE_LEFT) bButtonLeft = FALSE ENDIF ENDIF IF NOT (bButtonRight) IF IS_CONTROL_PRESSED(FRONTEND_CONTROL,INPUT_CELLPHONE_RIGHT) bButtonRight = TRUE BEGIN_SCALEFORM_MOVIE_METHOD(SF_MovieIndex,"SET_INPUT_EVENT") SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(2) END_SCALEFORM_MOVIE_METHOD() PLAY_SOUND_FRONTEND (-1, "Menu_Navigate", g_Owner_Soundset) ENDIF ELSE //wait for release IF NOT IS_CONTROL_PRESSED(FRONTEND_CONTROL,INPUT_CELLPHONE_RIGHT) bButtonRight = FALSE ENDIF ENDIF //INPUT_FRONTEND_ACCEPT, IF NOT bPadCross IF IS_CONTROL_PRESSED(FRONTEND_CONTROL,INPUT_CELLPHONE_SELECT) AND (TIMERB() > 100) PRINTLN("appemail Cellphone input select") //attempting to select a mail! IF iSelectedEmail = -1 //iSelectedEmail = CALL_SCALEFORM_MOVIE_METHOD(SF_MovieIndex,"GET_CURRENT_SELECTION") BEGIN_SCALEFORM_MOVIE_METHOD(SF_MovieIndex,"GET_CURRENT_SELECTION") fudp = END_SCALEFORM_MOVIE_METHOD_RETURN_VALUE () WHILE NOT IS_SCALEFORM_MOVIE_METHOD_RETURN_VALUE_READY(fudp) PRINTLN("INITIAL SELECTION appemail spinning its wheels waiting for current selection") //RENDER_BROWSER() WAIT(0) ENDWHILE fudret = GET_SCALEFORM_MOVIE_METHOD_RETURN_VALUE_INT(fudp) iSelectedEmail = fudret #if USE_TU_CHANGES #if IS_DEBUG_BUILD cdPrintnl() cdPrintString("S_T Scaleform return value on selecting email is ") cdPrintInt(fudret) cdPrintnl() cdPrintnl() #endif #endif //double check that there are actually emails to select IF EMAILS_IN_INBOX(currPlayer) = 0 iSelectedEmail = -1 ENDIF IF NOT (iSelectedEmail = -1) //EMAIL_LIST = 8 //EMAIL_VIEW = 9 IF bMovedAfterBack = TRUE fLastValidInboxIndexSelected = TO_FLOAT(iSelectedEmail) PRINTLN("Last valid email selected set to ", fLastValidInboxIndexSelected) bMovedAfterBack = FALSE ENDIF g_Cellphone.PhoneDS = PDS_COMPLEXAPP bUpdateRequired = TRUE SETTIMERB(0) Play_Select_Beep() ENDIF ELSE //TODO go to picking a response! if the mail has one! Or if picking then pick response IF iSelectedResponse = -1 IF SCALEFORM_CHECK_FOR_RESPONSE_ALLOWED(currPlayer,iSelectedEmail) AND (NOT bResponseFiredSinceLastViewOfInbox) //go to response picking iSelectedResponse = 0 bUpdateRequired = TRUE SETTIMERB(0) Play_Select_Beep() ENDIF ELSE //response picked, fire it // //iSelectedResponse = CALL_SCALEFORM_MOVIE_METHOD(SF_MovieIndex,"GET_CURRENT_SELECTION") // BEGIN_SCALEFORM_MOVIE_METHOD(SF_MovieIndex,"GET_CURRENT_SELECTION") // fudp = END_SCALEFORM_MOVIE_METHOD_RETURN_VALUE () // WHILE NOT IS_SCALEFORM_MOVIE_METHOD_RETURN_VALUE_READY(fudp) // PRINTLN("THIS IS THE RESPONSE appemail spinning it's wheels waiting for current selection") // //RENDER_BROWSER() // WAIT(0) // ENDWHILE // fudret = GET_SCALEFORM_MOVIE_METHOD_RETURN_VALUE_INT(fudp) // //Hard coding first responce as we never have any other responce other than RESPOND iSelectedResponse = 0 //fudret PRINTln("\nAppemail firing response: ",fudret,".\n") SCALEFORM_FIRE_RESPONSE(currPlayer,iSelectedEmail,iSelectedResponse) bResponseFiredSinceLastViewOfInbox = TRUE //return to mail iSelectedResponse = -1 bUpdateRequired = TRUE Play_Select_Beep() SETTIMERB(0) ENDIF ENDIF bPadCross = TRUE ENDIF ELSE //IF NOT IS_CONTROL_PRESSED(FRONTEND_CONTROL,INPUT_FRONTEND_ACCEPT) bPadCross = FALSE // ENDIF ENDIF //, //PAD_CIRCLE = 17, //BOOL bPadCircle = FALSE IF (TIMERB() > 100) IF IS_CONTROL_PRESSED(FRONTEND_CONTROL,INPUT_CELLPHONE_CANCEL) PRINTLN("Appemail cancel button press detected") BOOL backCancel = FALSE IF bPadCircle = FALSE IF NOT (iSelectedEmail = -1) IF (iSelectedResponse = -1) //selected mail but no response picking in progress //cancel back to inbox from mail iSelectedEmail = ROUND(fLastValidInboxIndexSelected) bURLPrimed = FALSE SETTIMERB(0) backCancel = TRUE Play_Back_Beep() ELSE //canceling out of a response pick SETTIMERB(0) iSelectedResponse = -1 Play_Back_Beep() ENDIF bUpdateRequired = TRUE ELSE //no mail selected, exit if not already exiting IF GET_FLOW_HELP_MESSAGE_STATUS("AM_H_FLINK") = FHS_QUEUED SET_ONE_TIME_HELP_MESSAGE_DISPLAYED(FHM_FIRST_EMAIL_WITH_LINK) ENDIF IF GET_FLOW_HELP_MESSAGE_STATUS("AM_H_SCROLL") = FHS_QUEUED SET_ONE_TIME_HELP_MESSAGE_DISPLAYED(FHM_FIRST_EMAIL_SCROLL) ENDIF IF g_b_Rotate3dPhoneLandscape = FALSE //Don't allow exit routine, if the phone is in the process of rotating to landscape. AND NOT g_b_Rotate3dPhonePortrait Play_Back_Beep() g_b_Rotate3dPhonePortrait = TRUE //will cue rotate and exit routine from above... g_bEmailSystemPaused = FALSE //Steve T note. Should be able to remove this... ENDIF ENDIF bPadCircle = TRUE ENDIF IF backCancel iSelectedEmail = -1 //g_Cellphone.PhoneDS = PDS_RUNNINGAPP //Steve T Note 2. This relates to the weirdness - we'd need to take this out. ENDIF ELSE bPadCircle = FALSE ENDIF ENDIF IF IS_CONTROL_PRESSED(FRONTEND_CONTROL,INPUT_CELLPHONE_EXTRA_OPTION) PRINTLN("appemail url button detected") IF bURLPrimed //SCRIPT_ASSERT("Email url triggered") //do webpage //clear the help // REMOVE_HELP_FROM_FLOW_QUEUE("AM_H_FLINK") IF GET_FLOW_HELP_MESSAGE_STATUS("AM_H_FLINK") = FHS_QUEUED SET_ONE_TIME_HELP_MESSAGE_DISPLAYED(FHM_FIRST_EMAIL_WITH_LINK) ENDIF IF GET_FLOW_HELP_MESSAGE_STATUS("AM_H_SCROLL") = FHS_QUEUED SET_ONE_TIME_HELP_MESSAGE_DISPLAYED(FHM_FIRST_EMAIL_SCROLL) ENDIF //sURLlast g_BrowserLinkToLaunch = sURLlast //GO_TO_WEBSITE(g_BrowserLinkToLaunch) START_BROWSER(SBSS_Launch_Link) bURLPrimed = FALSE Play_Select_Beep() /* g_b_Rotate3dPhonePortrait = TRUE //will cue rotate and exit routine from above... b_Rotate3dPhoneX = TRUE b_Rotate3dPhoneY = TRUE b_Rotate3dPhoneZ = TRUE g_bEmailSystemPaused = FALSE //Steve T note. Should be able to remove this... */ ENDIF ENDIF ENDPROC SCRIPT IF g_bInMultiplayer //RELEASE_TEXTURE_DICTIONARIES() TERMINATE_THIS_THREAD() ENDIF //Ensure this script persists during network game NETWORK_SET_SCRIPT_IS_SAFE_FOR_NETWORK_GAME() currPlayer = GET_CURRENT_PLAYER_PED_ENUM() REQUEST_ADDITIONAL_TEXT("email", PHONE_TEXT_SLOT) WHILE NOT HAS_ADDITIONAL_TEXT_LOADED(PHONE_TEXT_SLOT) WAIT(0) ENDWHILE /* //SCRIPT_ASSERT("Email test") //pending system test ASSIGN_BUFFER_TO_DYNAMIC_EMAIL_THREAD(TEST_DYNAMIC_THREAD) PRIME_EMAIL_FOR_FIRING_INTO_DYNAMIC_THREAD_IN_HOURS(TEST_DYNAMIC_THREAD, CULT3, 1) OVERRIDE_CONTENT_FOR_PENDING_DYNAMIC_EMAIL(TEST_DYNAMIC_THREAD,CULT3, "EPS_BMAIL_G4") ADD_CONTENT_FOR_FOR_PENDING_DYNAMIC_EMAIL_SUBSTRING(TEST_DYNAMIC_THREAD,CULT3, "EPS_BUYROBBTN") ADD_CONTENT_FOR_FOR_PENDING_DYNAMIC_EMAIL_SUBSTRING(TEST_DYNAMIC_THREAD,CULT3, "EPS_BUYROBBTN") ADD_CONTENT_FOR_FOR_PENDING_DYNAMIC_EMAIL_SUBSTRING(TEST_DYNAMIC_THREAD,CULT3, "EPS_BUYROBBTN") ADD_CONTENT_FOR_FOR_PENDING_DYNAMIC_EMAIL_SUBSTRING(TEST_DYNAMIC_THREAD,CULT3, "EPS_BUYROBBTN") */ //Default these to be on the safe side... g_b_Rotate3dPhonePortrait = FALSE g_b_Rotate3dPhoneLandscape = FALSE //Set up and cue initial rotation of the phone to landscape... g_Cellphone.PhoneDS = PDS_COMPLEXAPP //We're using a "rotate" so the phone needs to be in COMPLEX_APP state to prevent cellphone_flashhand allowing a phone "put away" //to run during the rotate back to portrait. g_b_Rotate3dPhoneLandscape = TRUE g_bEmailSystemPaused = TRUE IF g_B_Scaleform_Movies_Loaded //the phone movie is loaded CONFIGURE_EMAIL_SOFT_KEY_SELECT(FALSE) CONFIGURE_EMAIL_SOFT_KEY_BACK(TRUE) //default back key to on CONFIGURE_EMAIL_SOFT_KEY_LINK(FALSE) ENDIF SETTIMERB(0) //LOAD_TEXTURE_DICTIONARY_AND_BLOCK() //Added for A class bug #1550721 //Removed for 1998041 //GET_MOBILE_PHONE_POSITION (v_3dEmailOriginalPosition) //Added for 1998041 //Prevents the phone from disappearing completely if the player started in 1st person, brought up Email, went to 3rd, then hit exit. v_3dEmailOriginalPosition = g_This_Screen_3dPhoneEndVec[g_Chosen_Ratio] v_3dEmailDesiredPosition = v_3dEmailOriginalPosition // original value was -6. Text-readable size is -10. v_3dEmailDesiredPosition.x -= 10.0 //Specifies the size of the left adjustment to make sure the entire body text is visible in landscape mode. v_3dEmailDesiredPosition.y += 20.0 //Fixes TRC bombshell with new anims by making sure the landscape phone lies above any long or four line subtitles - in German! WHILE TRUE WAIT(0) IF g_Cellphone.PhoneDS <> PDS_ONGOING_CALL //Leave this in, Andrew. IF g_b_Rotate3dPhoneLandscape AND NOT g_b_Rotate3dPhonePortrait //make sure phone can't get stuck trying to rotate forwards and back. RotatePhoneToWidescreen() ELIF g_b_Rotate3dPhonePortrait RotatePhoneToPortrait_and_Exit() ENDIF /* Andrew, I've left these here as examples of where your own organiser / email procs and functions should be called. Draw_Camera_Zoom() Check_For_Shutter_Press() Process_Shutter_Delay() */ //call email update here IF NOT bActivated //perform first run action // attempt to get phone bActivated = TRUE ELSE IF g_B_Scaleform_Movies_Loaded //the phone movie is loaded //CONFIGURE_EMAIL_SOFT_KEY_SELECT(TRUE) //update phone IF NOT bViewSwitchedToEmail //switch view to email bViewSwitchedToEmail = TRUE //call the update on the inbox here FILL_SCALEFORM_INBOX_FOR_PED(SF_MovieIndex, currPlayer) //EMAIL_LIST = 8 //EMAIL_VIEW = 9 #if USE_TU_CHANGES #if IS_DEBUG_BUILD cdPrintnl() cdPrintString("S_T Filled inbox... ") cdPrintnl() cdPrintnl() #endif #endif LEGACY_SCALEFORM_MOVIE_METHOD_WITH_STRING(SF_MovieIndex,"SET_HEADER","EM_INBOX") LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER(SF_MovieIndex,"DISPLAY_VIEW",8) ELSE IF g_bEmailSystemUpdated g_bEmailSystemUpdated = FALSE bUpdateRequired = TRUE ENDIF //update view IF bUpdateRequired SETTIMERA(0) SETTIMERB(0) //add new data to the email/inbox IF (iSelectedEmail = -1)//not picked an email to view yet CPRINTLN(debug_email,"Not selected email") IF bMovedAfterBack bMovedAfterBack = FALSE fLastValidInboxIndexSelected = 0.0 ENDIF LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER(SF_MovieIndex,"SET_DATA_SLOT_EMPTY",8) INT mails = FILL_SCALEFORM_INBOX_FOR_PED(SF_MovieIndex, currPlayer) LEGACY_SCALEFORM_MOVIE_METHOD_WITH_STRING(SF_MovieIndex,"SET_HEADER","EM_INBOX") bResponseFiredSinceLastViewOfInbox = FALSE IF mails > 0 CONFIGURE_EMAIL_SOFT_KEY_SELECT(TRUE) ELSE CONFIGURE_EMAIL_SOFT_KEY_SELECT(FALSE) ENDIF CPRINTLN(debug_email,"mails: ",mails) CONFIGURE_EMAIL_SOFT_KEY_BACK(TRUE) CONFIGURE_EMAIL_SOFT_KEY_LINK(FALSE) PRINTLN("Last valid inbox index selected ", fLastValidInboxIndexSelected) LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER(SF_MovieIndex,"DISPLAY_VIEW",8, fLastValidInboxIndexSelected) ELSE //email is selected CPRINTLN(debug_email,"Selected emails") LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER(SF_MovieIndex,"SET_DATA_SLOT_EMPTY",21) WAIT(0) LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER(SF_MovieIndex,"DISPLAY_VIEW",21) WAIT(0) CONFIGURE_EMAIL_SOFT_KEY_BACK(TRUE) EMAIL_FEED_ID_BUFFER_PURGE() //clear any on screen feed notifications for email IF(iSelectedResponse = -1)//not in picking a response mode CPRINTLN(debug_email,"Selected response: ",iselectedResponse) BLOCKING_PREP_TEXTURE_FOR_SCALEFORM_MOVIE_EMAIL(currPlayer,iSelectedEmail) FILL_SCALEFORM_EMAIL_IN_INBOX_FOR_PED(SF_MovieIndex,currPlayer,iSelectedEmail) g_ShouldForceSelectionOfLatestAppItem = FALSE bURLPrimed = DOES_INBOX_MAIL_HAVE_URL(currPlayer,iSelectedEmail) IF bURLPrimed CPRINTLN(debug_email,"URL Primed") sURLlast = GET_EMAIL_IN_INBOX_URL(currPlayer,iSelectedEmail) PRINTLN("Email attempting to trigger appEmail") //do first time hyperlink help IF NOT HAS_ONE_TIME_HELP_DISPLAYED(FHM_FIRST_EMAIL_WITH_LINK) SWITCH GET_FLOW_HELP_MESSAGE_STATUS("AM_H_FLINK") CASE FHS_EXPIRED ADD_HELP_TO_FLOW_QUEUE("AM_H_FLINK", FHP_HIGH, 0, 1000) BREAK CASE FHS_DISPLAYED SET_ONE_TIME_HELP_MESSAGE_DISPLAYED(FHM_FIRST_EMAIL_WITH_LINK) BREAK ENDSWITCH //SET_ONE_TIME_HELP_MESSAGE_DISPLAYED(FHM_FIRST_EMAIL_WITH_LINK) ELSE //2149152 for PC version to reinforce hyperlink help every session. IF IS_PC_VERSION() IF NOT IS_BIT_SET (BitSet_CellphoneTU, g_BSTU_MP_HYPERLINK_EMAIL_HELP) SET_BIT (BitSet_CellphoneTU, g_BSTU_MP_HYPERLINK_EMAIL_HELP) PRINT_HELP ("AM_H_FLINK") #if IS_DEBUG_BUILD cdPrintnl() cdPrintstring("AppEmail - Displaying Hyperlink control message for the second and final time. Setting bit.") cdPrintnl() #endif ENDIF ENDIF ENDIF //TODO SOFTKEYS CONFIGURE_EMAIL_SOFT_KEY_LINK(TRUE) ELSE //Steve T. IF NOT HAS_ONE_TIME_HELP_DISPLAYED(FHM_FIRST_EMAIL_SCROLL) SWITCH GET_FLOW_HELP_MESSAGE_STATUS("AM_H_SCROLL") CASE FHS_EXPIRED ADD_HELP_TO_FLOW_QUEUE("AM_H_SCROLL", FHP_HIGH, 0, 1000) BREAK CASE FHS_DISPLAYED SET_ONE_TIME_HELP_MESSAGE_DISPLAYED(FHM_FIRST_EMAIL_SCROLL) BREAK ENDSWITCH //SET_ONE_TIME_HELP_MESSAGE_DISPLAYED(FHM_FIRST_EMAIL_SCROLL) ENDIF CONFIGURE_EMAIL_SOFT_KEY_LINK(FALSE) ENDIF LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER(SF_MovieIndex,"DISPLAY_VIEW",9) ELSE CPRINTLN(debug_email,"picking response:",iSelectedEmail) //in picking a response mode LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER(SF_MovieIndex,"SET_DATA_SLOT_EMPTY",21) WAIT(0) LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER(SF_MovieIndex,"DISPLAY_VIEW",21) WAIT(0) //LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER(SF_MovieIndex,"SET_DATA_SLOT_EMPTY",21) LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER(SF_MovieIndex,"SET_DATA_SLOT_EMPTY",9) FILL_SCALEFORM_RESPONSES_FOR_EMAIL(SF_MovieIndex,currPlayer,iSelectedEmail) //LEGACY_SCALEFORM_MOVIE_METHOD_WITH_STRING(SF_MovieIndex,"SET_HEADER","EM_RESPONSE") // LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER(SF_MovieIndex,"DISPLAY_VIEW",21) LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER(SF_MovieIndex,"DISPLAY_VIEW",9) ENDIF ENDIF bUpdateRequired = FALSE ELSE //check for update needing done //do input DO_GENERIC_DIRECTIONAL_INPUTS() ENDIF ENDIF ENDIF ENDIF IF NOT (currPlayer = GET_CURRENT_PLAYER_PED_ENUM()) //PANIC BAIL g_bEmailSystemPaused = FALSE SCRIPT_ASSERT("appEmail panic bailed due to player changing during use!") #if IS_DEBUG_BUILD PRINTSTRING ("appEmail exiting due to player character switch.") PRINTNL () #endif Cleanup_and_Terminate() ENDIF ENDIF //Finally check for abnormal exit IF CHECK_FOR_ABNORMAL_EXIT() //Leave this in, Andrew. /* Legacy. b_Rotate3dPhonePortrait = TRUE b_Rotate3dPhoneX = TRUE b_Rotate3dPhoneY = TRUE b_Rotate3dPhoneZ = TRUE g_bEmailSystemPaused = FALSE WHILE b_Rotate3dPhonePortrait = TRUE RotatePhoneToPortrait_and_Exit() //This will terminate the thread... ENDWHILE */ #if IS_DEBUG_BUILD PRINTSTRING ("appEmail exiting abnormally!") PRINTNL () #endif g_b_Rotate3dPhonePortrait = FALSE g_b_Rotate3dPhoneLandscape = FALSE g_bEmailSystemPaused = FALSE //RELEASE_TEXTURE_DICTIONARIES() //Embedded check in this for 2015070 CellphoneFirstPersonHorizontalModeToggle(FALSE) TERMINATE_THIS_THREAD() ENDIF ENDWHILE ENDSCRIPT