11749 lines
365 KiB
Python
Executable File
11749 lines
365 KiB
Python
Executable File
USING "rage_builtins.sch"
|
|
USING "globals.sch"
|
|
USING "commands_cutscene.sch"
|
|
USING "commands_entity.sch"
|
|
USING "commands_script.sch"
|
|
USING "commands_pad.sch"
|
|
USING "cellphone_public.sch"
|
|
USING "cellphone_private.sch"
|
|
USING "dialogue_public.sch"
|
|
USING "stack_sizes.sch"
|
|
|
|
|
|
USING "ambient_Speech.sch"
|
|
|
|
USING "flow_public_core_override.sch"
|
|
USING "cutscene_public.sch"
|
|
|
|
#if IS_DEBUG_BUILD
|
|
USING "commands_debug.sch"
|
|
USING "commands_audio.sch"
|
|
USING "completionPercentage_public.sch"
|
|
USING "script_camera.sch"
|
|
#endif
|
|
|
|
|
|
USING "friends_public.sch"
|
|
USING "ply_to_ply_calls.sch"
|
|
USING "cellphone_movement.sch"
|
|
USING "director_mode_public.sch"
|
|
|
|
USING "commands_socialclub.sch"
|
|
|
|
|
|
|
|
//USING "Director_Prop_Placement.sch"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// *****************************************************************************************
|
|
// *****************************************************************************************
|
|
// *****************************************************************************************
|
|
//
|
|
// MISSION NAME : cellphone_controller.sc
|
|
// AUTHOR : Steve T
|
|
// DESCRIPTION : Checks for use of cellphone pull out by player in main game.
|
|
// This script should be launched from main.sc and run continuously
|
|
//
|
|
//
|
|
// *****************************************************************************************
|
|
// *****************************************************************************************
|
|
// *****************************************************************************************
|
|
|
|
|
|
|
|
|
|
|
|
//Debug widget declarations.
|
|
#if IS_DEBUG_BUILD
|
|
|
|
//Start of Director Mode prop placement test vars.
|
|
|
|
ENTITY_INDEX TestPropEntity, PlacementDiscEntity
|
|
|
|
|
|
MODEL_NAMES CurrentlySelectedPropModel = prop_bench_09
|
|
|
|
|
|
VECTOR v_player_pos
|
|
FLOAT v_player_heading
|
|
|
|
//VECTOR v_LastPropPlacement_Position
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ENUM enumPROP_PLACEMENT_STAGE
|
|
|
|
PROP_STAGE_Dormant,
|
|
PROP_STAGE_InitialSetUp,
|
|
PROP_STAGE_PropCycling,
|
|
PROP_STAGE_PropInHand,
|
|
PROP_STAGE_PropPlacement,
|
|
PROP_STAGE_PropRemoval,
|
|
PROP_STAGE_SavingPropScene,
|
|
PROP_STAGE_ExitAndCleanup
|
|
|
|
ENDENUM
|
|
|
|
|
|
enumPROP_PLACEMENT_STAGE eCurrentPropStage
|
|
|
|
|
|
|
|
VECTOR v_PlacementDiscOffset, v_ThisPropOffset
|
|
|
|
|
|
|
|
|
|
|
|
CONST_INT i_NumberOfModelsToCycle 4
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//This is the array of possible selectable props. Expand to a struct with full data.
|
|
//hash of model name
|
|
//Label Reference
|
|
//Category enum
|
|
//Adjustment Z value for height
|
|
//Disc placement and type.
|
|
//INT PropModelArrayHash[i_NumberOfModelsToCycle]
|
|
INT i_CurrentModelIndex = 0 //Where are we in the entire cycle of selectable prop models...
|
|
|
|
|
|
//Used to categorise props
|
|
ENUM ePROP_CATEGORY
|
|
|
|
DM_PROPCATEGORY1,
|
|
DM_PROPCATEGORY2,
|
|
DM_PROPCATEGORY3
|
|
|
|
|
|
ENDENUM
|
|
|
|
|
|
|
|
|
|
|
|
STRUCT structSelectableProps
|
|
|
|
|
|
INT PropModelHash
|
|
|
|
TEXT_LABEL_23 PropTextLabel
|
|
ePROP_CATEGORY PropCategory
|
|
|
|
|
|
ENDSTRUCT
|
|
|
|
|
|
|
|
|
|
structSelectableProps SelectablePropArray[i_NumberOfModelsToCycle]
|
|
VECTOR v_InHandPropRotation
|
|
|
|
|
|
|
|
|
|
|
|
ENUM ePLACED_PROP_STATUS_AT_THIS_POSITION
|
|
|
|
PROP_POSITION_VACANT,
|
|
PROP_POSITION_FILLED
|
|
|
|
ENDENUM
|
|
|
|
|
|
|
|
STRUCT structPlacedProp
|
|
|
|
ENTITY_INDEX PropEntityIndex
|
|
INT PropModelHash
|
|
VECTOR PropRotation
|
|
VECTOR PropPlacementVector
|
|
ePLACED_PROP_STATUS_AT_THIS_POSITION PositionStatus
|
|
|
|
ENDSTRUCT
|
|
|
|
|
|
//Will need to have an array of props that *have* been placed. This will then need saved out.
|
|
//hash of model name
|
|
//Rotation
|
|
//Placement Vector
|
|
|
|
|
|
|
|
//Placed Prop Work. Will need to have a field in the struct of data associated with each index that says whether it has been filled with a prop or not.
|
|
//This will allow us to put a new prop into a position that has been vacated by a deleted prop rather than always at the end of the list. Just like the textmsg system works.
|
|
|
|
CONST_INT i_MAX_NUMBER_OF_PROPS_ALLOWED 5
|
|
|
|
|
|
structPlacedProp PlacedProps[i_MAX_NUMBER_OF_PROPS_ALLOWED]
|
|
|
|
|
|
|
|
|
|
INT i_TotalNumberOfPlacedModels
|
|
|
|
INT i_InVicinityOfThisPlacedPropPosition = -99
|
|
|
|
VECTOR v_ThisPlacedProp
|
|
FLOAT f_VicinityCheckRange = 3.0
|
|
INT thisframeVicIndex = 0
|
|
|
|
|
|
SCALEFORM_INDEX SF_PropPlacementMovieIndex
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//End of Director Mode prop placement test vars.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//BOOL TestBorderTexture = FALSE
|
|
|
|
|
|
//CAMERA_INDEX TestCam
|
|
|
|
|
|
|
|
//INT TestRingtone
|
|
|
|
//Comment in to test 731786
|
|
//INT TestInt = 0
|
|
|
|
/*
|
|
INT i_ZitID = -99
|
|
|
|
TEXT_LABEL_23 ZitSong
|
|
TEXT_LABEL_23 ZitArtist
|
|
|
|
TEXT_LABEL_31 ZitPhoneBlock = "TRACKID"
|
|
*/
|
|
|
|
|
|
//TEXT_LABEL_23 testcp
|
|
|
|
|
|
//BOOL b_BlockSigniferMovieFromDrawing = FALSE
|
|
|
|
|
|
VECTOR g_Test3dPhonePosVec = <<117.2, -53.3, -113.0>>
|
|
|
|
|
|
|
|
BOOL DebugPositionToggle = FALSE
|
|
BOOL RunTECToggle = FALSE
|
|
//INT DebugCellphoneGui = 1 //Default startup gui.
|
|
//INT DebugWidgetToneSelection = 1
|
|
//BOOL b_EnableToneSelection = FALSE
|
|
//FLOAT db_signifier_posX = 20.0
|
|
//FLOAT db_signifier_posY = 167.0
|
|
|
|
FLOAT db_preview_signifier_posX = 0.07
|
|
FLOAT db_preview_signifier_posY = 0.755
|
|
|
|
//BOOL b_EnableFeedEntry = FALSE
|
|
|
|
|
|
BOOL b_TickToRequestDisableEveryFrameOption
|
|
|
|
|
|
BOOL b_DebugContactForMichael, b_DebugContactForFranklin, b_DebugContactForTrevor
|
|
BOOL b_DebugContactForEveryone, b_DebugContactForVirtual
|
|
|
|
|
|
BOOL b_InitiateIncomingChatCall, b_InitiateOutgoingChatCall, b_ChatFinished, b_HangUpTest
|
|
|
|
|
|
BOOL b_CharCallTest, b_CharCallReplyTest, b_PlayerCallTest, b_PlayerCallReplyTest, b_JobOfferCallTest
|
|
BOOL b_PlayerConvTest, b_PlayerRandomTest
|
|
BOOL b_PlayerMultipartTest, b_PlayerMultipartTestCall, b_PlayerMultipartWithRepliesTestCall
|
|
BOOL b_PlayerFromLineTest, b_PlayerSingleLineTest
|
|
BOOL b_DisplayGameType, b_Switch_to_MultiplayerPhone, b_Switch_to_SingleplayerPhone
|
|
|
|
BOOL b_AddTestContacts
|
|
|
|
//BOOL b_Cellphone_Cam_Auto_Continue_On_Toggle //Don't check this widget in... it can interfere with missions if used incorrectly.
|
|
|
|
BOOL b_DebugSaveGameTest
|
|
|
|
BOOL b_DebugConvState
|
|
|
|
BOOL b_PurgeMPTextList, b_DisplayTestStructData
|
|
|
|
BOOL b_SendCamHelpText, b_RemoveSendCamHelpText
|
|
|
|
|
|
BOOL b_GetResumptionLabel, b_ResumeConversation
|
|
TEXT_LABEL_23 TestResumptionLabel
|
|
|
|
//BOOL b_AutoplayAnswer
|
|
|
|
|
|
|
|
BOOL b_PlaySimpleConversation
|
|
TEXT_WIDGET_ID widgetID_ConvBlock
|
|
TEXT_WIDGET_ID widgetID_ConvRoot
|
|
|
|
|
|
|
|
structPedsForConversation MyLocalPedStruct, TestLocalPedstruct
|
|
|
|
|
|
//FE_WARNING_FLAGS iButtonBits
|
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
//Signifiers
|
|
|
|
SCALEFORM_INDEX SF_MovieSignifiersIndex
|
|
|
|
BOOL b_PreventDrawingWhilstRadarIsExpanded_PlatformSpecific = FALSE
|
|
|
|
//3624701 - Added these for shunting over MP signifier in the beacon position if the big expanded radar is onscreen
|
|
FLOAT ExpandedRadarManipulator_X = 0.0
|
|
FLOAT ExpandedRadarManipulator_Y = 0.0
|
|
|
|
|
|
|
|
//FLOAT signifier_posX[2], signifier_posY[2] //The movie is always drawn in the same place, these control the offsets.
|
|
|
|
BOOL b_Allow_Drawn_Or_Remove_to_Check_For_Update
|
|
|
|
|
|
//INT IconTest = 26
|
|
|
|
|
|
INT BufferedTextDecision = 0
|
|
|
|
|
|
BOOL Read_Auto_TextLaunch[4]
|
|
|
|
INT Read_Auto_TextLaunchSentTime[4]
|
|
TIME_DATATYPE NetRead_Auto_TextLaunchSentTime[4]
|
|
|
|
|
|
INT Read_Auto_TextLaunchCurrentTime[4]
|
|
|
|
INT i_Read_Auto_TextLaunchDifference
|
|
CONST_INT Read_Auto_TextLaunchTimeoutThreshold 300000 //Should be five minutes
|
|
|
|
|
|
INT i_FeedItemId
|
|
|
|
|
|
//ActivatableFeedType CellphoneAppAutoLaunchType = ACT_APP_NONE - Moved to cellphone globals.
|
|
|
|
|
|
|
|
|
|
INT Post_Save_PauseSentTime
|
|
TIME_DATATYPE NetPost_Save_PauseSentTime
|
|
|
|
INT Post_Save_PauseCurrentTime
|
|
|
|
INT i_Post_Save_PauseDifference
|
|
|
|
|
|
BOOL BufferedText_PostswapPause_Ongoing = FALSE
|
|
|
|
|
|
|
|
|
|
|
|
PHOTO_OPERATION_STATUS PicProcessStatus
|
|
eLowQualityPhotoSetting QualityToAttempt
|
|
|
|
|
|
|
|
INT PostSwap_Buffer_StartTime, PostSwap_Buffer_CurrentTime
|
|
|
|
INT DpadElongated_StartTime, DpadElongated_CurrentTime, DpadElongated_Difference
|
|
|
|
BOOL b_DpadElongatedSuccessfullyExpired = FALSE
|
|
|
|
TIME_DATATYPE Net_Postswap_Buffer_StartTime
|
|
|
|
CONST_INT PostSwap_Buffer_TimeThreshold 7000
|
|
|
|
INT PostSwap_Buffer_TimeDifference
|
|
|
|
BOOL BufferedContact_PostswapPause_Ongoing
|
|
|
|
enumCharacterList BufferOwner
|
|
|
|
|
|
BOOL b_AutoJoblistLaunchCheck = FALSE // Used to make joblist auto launch check nice and tidy.
|
|
|
|
|
|
FLOAT SafeZoneSize, SigDrawPosX, SigDrawPosY
|
|
|
|
FLOAT ControlSafeZoneSize = 0.95
|
|
FLOAT ControlSigDrawPosX = 0.07
|
|
FLOAT ControlSigDrawPosY = 0.755
|
|
FLOAT SafeZoneManipulator
|
|
|
|
|
|
INT i_SleepModeStartTime, i_SleepModeEndTime
|
|
INT i_ValueOfStatWhenSleepWasBegun = 0
|
|
BOOL b_CheckingSleepModeDurationForStatUpdate = FALSE
|
|
|
|
//added for warning screen bug:2414624
|
|
|
|
|
|
|
|
|
|
//Marketing Email Work.
|
|
BOOL b_DisplayedFeedMessageThisSession = FALSE //2697795
|
|
|
|
ENUM eGetNewMarketingEmailStage
|
|
|
|
GNM_DORMANT,
|
|
GNM_LAUNCH_RETRIEVAL,
|
|
GNM_RETRIEVAL_ONGOING,
|
|
GNM_RETRIEVAL_FINISHED
|
|
|
|
ENDENUM
|
|
|
|
|
|
eGetNewMarketingEmailStage GNMCurrentStage = GNM_DORMANT
|
|
eEMAIL_RETRIEVAL_STATUS MarketingCurrentRetrievalStatus
|
|
INT tempPosixStat = 9999
|
|
|
|
|
|
|
|
|
|
|
|
PROC DrawSignifierMovie()
|
|
|
|
|
|
Int MovieAlpha = 255 //3618017 - Scott Butchard requested some control over the alpha for the beacon signifier so adding this in. By default the signifiers will be fully opaque.
|
|
|
|
|
|
|
|
|
|
// KGMINDICATOR
|
|
IF (g_forceDisplayPlayerInvitesIndicator)
|
|
|
|
ControlSigDrawPosX = -0.055
|
|
ControlSigDrawPosY = 0.745
|
|
|
|
|
|
SafeZoneSize = GET_SAFE_ZONE_SIZE()
|
|
SafeZoneManipulator = ((100 * ControlSafeZoneSize) - (100 * SafeZoneSize))
|
|
|
|
SigDrawPosX = (ControlSigDrawPosX + (SafeZoneManipulator * 0.005))
|
|
SigDrawPosY = (ControlSigDrawPosY - (SafeZoneManipulator * 0.005))
|
|
|
|
|
|
//For Debug, use these two lines below and comment in draw_debug_Scaleform_Signifier_Position() call.
|
|
//db_signifier_posX = (db_preview_signifier_posX + (SafeZoneManipulator * 0.005))
|
|
//db_signifier_posY = (db_preview_signifier_posY - (SafeZoneManipulator * 0.005))
|
|
|
|
|
|
IF NOT IS_CELLPHONE_CAMERA_IN_SELFIE_MODE()
|
|
|
|
SET_SCRIPT_GFX_DRAW_BEHIND_PAUSEMENU(TRUE)
|
|
SET_SCRIPT_GFX_DRAW_ORDER(GFX_ORDER_AFTER_FADE)
|
|
|
|
IF IS_PC_VERSION() //2199109
|
|
ADJUST_NEXT_POS_SIZE_AS_NORMALIZED_16_9()
|
|
ENDIF
|
|
|
|
DRAW_SCALEFORM_MOVIE(SF_MovieSignifiersIndex, SigDrawPosX, SigDrawPosY, 0.27, 0.45, 255, 255, 255, MovieAlpha)
|
|
|
|
//For Debug, use this line below and comment in draw_debug_Scaleform_Signifier_Position()
|
|
//DRAW_SCALEFORM_MOVIE(SF_MovieSignifiersIndex, db_signifier_posX, db_signifier_posY, 0.27, 0.45, 255, 255, 255, 255)
|
|
|
|
SET_SCRIPT_GFX_DRAW_BEHIND_PAUSEMENU(FALSE)
|
|
SET_SCRIPT_GFX_DRAW_ORDER(GFX_ORDER_AFTER_HUD)
|
|
|
|
ENDIF
|
|
|
|
// END KGMINDICATOR
|
|
|
|
|
|
ELSE
|
|
|
|
|
|
//Work for 2227208
|
|
IF IS_PC_VERSION()
|
|
|
|
IF g_PlayerBlipsData.bBigMapIsActive //If the expanded map is active, we shouldn't be in a cutscene
|
|
|
|
b_PreventDrawingWhilstRadarIsExpanded_PlatformSpecific = FALSE //We need to draw the PUSH_TO_TALK signifier when the radar is expanded, let's draw all signifiers then.
|
|
|
|
ELSE
|
|
|
|
IF IS_BIT_SET (BitSet_CellphoneDisplay, g_BS_DISABLE_SIGNIFIERS_FOR_CUTSCENE) //If this is set prevent any signifier drawing in the cutscene.
|
|
|
|
|
|
IF IS_BIT_SET (Bitset_CellphoneTU, g_BSTU_PUSHTALK_SIGNIFIER_DISPLAYED)
|
|
|
|
b_PreventDrawingWhilstRadarIsExpanded_PlatformSpecific = FALSE
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
cdPrintString("CELLPHONE_CONT - g_BS_DISABLE_SIGNIFIERS_FOR_CUTSCENE is set in PC build but PUSH_TO_TALK bit is set. Drawing sig movie. See 2254837.")
|
|
cdPrintnl()
|
|
|
|
#endif
|
|
|
|
ELSE
|
|
|
|
b_PreventDrawingWhilstRadarIsExpanded_PlatformSpecific = TRUE
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
cdPrintString("CELLPHONE_CONT - Checking prevention of signifier due to sig disable bit in PC build. See 2254837.")
|
|
cdPrintnl()
|
|
|
|
#endif
|
|
|
|
ENDIF
|
|
|
|
|
|
ELSE
|
|
|
|
b_PreventDrawingWhilstRadarIsExpanded_PlatformSpecific = FALSE
|
|
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
ELSE //On other platforms, we prevent drawing if the cutscene disable bit has been set or the expanded radar is up. PUSH_TO_TALK is PC only.
|
|
|
|
IF g_PlayerBlipsData.bBigMapIsActive
|
|
OR IS_BIT_SET (BitSet_CellphoneDisplay, g_BS_DISABLE_SIGNIFIERS_FOR_CUTSCENE)
|
|
|
|
b_PreventDrawingWhilstRadarIsExpanded_PlatformSpecific = TRUE
|
|
|
|
ELSE
|
|
|
|
b_PreventDrawingWhilstRadarIsExpanded_PlatformSpecific = FALSE
|
|
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
//New Logic for 3615927. Need to draw the signifier movie if the Beacon is displayed even when the phone is disabled. Normally, no signifiers or alerts draw if the phone is disabled as they're part of cellphone_alert_popup.
|
|
IF IS_CELLPHONE_DISABLED_OR_DISABLED_THIS_FRAME_ONLY()
|
|
b_PreventDrawingWhilstRadarIsExpanded_PlatformSpecific = TRUE
|
|
ENDIF
|
|
|
|
|
|
IF IS_BIT_SET (BitSet_CellphoneTU, g_BSTU_BEACON_SIGNIFIER_DISPLAYED)
|
|
|
|
MovieAlpha = 125 // 3618017 - Scott Butchard requested some control over the alpha for the beacon signifier so making this value lower to make the cellphone_alert_popup movie more transparent when the signifier is present.
|
|
//This will make all signifiers have the same transparency this frame. Tough. We don't have individual control over each alert. The passed transparency value impacts all members of that movie.
|
|
//UPDATE: It would seem the alpha component has no impact. UI will need to make a particular alert alpha-ed or not. E.g the Sleep Mode signifier is semi-transparent in SP, but the beacon originally was fully opaque.
|
|
|
|
IF b_PreventDrawingWhilstRadarIsExpanded_PlatformSpecific = TRUE
|
|
b_PreventDrawingWhilstRadarIsExpanded_PlatformSpecific = FALSE
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintString("CELLPHONE_CONT - Signifier move draw logic IS_CELLPHONE_DISABLED_OR_DISABLED_THIS_FRAME_ONLY() is true but need to draw Beacon! Redacting PreventDrawing state.")
|
|
cdPrintnl()
|
|
#endif
|
|
ENDIF
|
|
|
|
ENDIF
|
|
//End of new logic for 3615927 and 3618017
|
|
|
|
|
|
|
|
/* Debug prints only. No check in!
|
|
IF b_PreventDrawingWhilstRadarIsExpanded_PlatformSpecific = TRUE
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING (0.55, 0.34, "STRING", "ExTRUE_P")
|
|
ELSE
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING (0.55, 0.34, "STRING", "ExFALSE_P")
|
|
ENDIF
|
|
|
|
|
|
IF IS_MINIMAP_RENDERING()
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING (0.45, 0.24, "STRING", "MMap_R")
|
|
ELSE
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING (0.45, 0.24, "STRING", "MMap_NoR")
|
|
ENDIF
|
|
|
|
|
|
IF IS_RADAR_HIDDEN()
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING (0.30, 0.14, "STRING", "Rad_Hid")
|
|
ELSE
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING (0.30, 0.14, "STRING", "Rad_Shown")
|
|
ENDIF
|
|
*/
|
|
|
|
|
|
|
|
IF IS_MINIMAP_RENDERING() //Only draw the movie if the minimap radar is displaying. Should fix lots of MP bugs. 2055680 for example.
|
|
IF NOT IS_RADAR_HIDDEN()
|
|
|
|
IF NOT b_PreventDrawingWhilstRadarIsExpanded_PlatformSpecific //Prevents any signifiers drawing under the expanded radar in MP in non_PC builds. PC needs to draw these..
|
|
|
|
//Now moved to platform specific checks above because of 2227208. The expanded radar disables signifiers but we need to bypass this for PC push-to-talk.
|
|
//IF NOT IS_BIT_SET (BitSet_CellphoneDisplay, g_BS_DISABLE_SIGNIFIERS_FOR_CUTSCENE) //MP bug 2049951 can impact this! //Brenda fixed in CL 6307015 for dev_net.
|
|
|
|
//IF NOT IS_CELLPHONE_DISABLED_OR_DISABLED_THIS_FRAME_ONLY() //Commenting out for 3615927 fix. Replacing with a compound check that will set b_PreventDrawing with a redact check for the beacon displaying.
|
|
|
|
IF NOT IS_CELLPHONE_CAMERA_IN_USE()
|
|
|
|
IF IS_PLAYER_PLAYING(PLAYER_ID())
|
|
|
|
IF NOT IS_PLAYER_BEING_ARRESTED(PLAYER_ID())
|
|
|
|
//488121
|
|
SET_SCRIPT_GFX_DRAW_ORDER (GFX_ORDER_AFTER_HUD) //Deliberately calling this every frame in case another script tinkers with it.
|
|
//If they do, then they can switch the signifiers off, which they should be doing anyway.
|
|
|
|
|
|
//Work for 2227208
|
|
IF IS_PC_VERSION()
|
|
AND g_PlayerBlipsData.bBigMapIsActive //On PC, Expanded radar displaying. draw the movie further to the right.
|
|
|
|
ControlSigDrawPosX = 0.165
|
|
ControlSigDrawPosY = 0.755
|
|
|
|
ELSE
|
|
|
|
ControlSigDrawPosX = 0.07
|
|
ControlSigDrawPosY = 0.755
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
SafeZoneSize = GET_SAFE_ZONE_SIZE()
|
|
|
|
|
|
//0.01 reduction of safe zone size = + 0.005 increase in x and -0.005 decrease in y of drawing positions of sleep signifier.
|
|
|
|
|
|
SafeZoneManipulator = ((100 * ControlSafeZoneSize) - (100 * SafeZoneSize)) //Get difference between control and current safe zone size.
|
|
|
|
//PRINTSTRING("SZMan ")
|
|
//PRINTFLOAT(SafeZoneManipulator)
|
|
//PRINTNL()
|
|
|
|
SigDrawPosX = (ControlSigDrawPosX + (SafeZoneManipulator * 0.005))
|
|
SigDrawPosY = (ControlSigDrawPosY - (SafeZoneManipulator * 0.005))
|
|
|
|
/*
|
|
PRINTSTRING("x")
|
|
PRINTFLOAT(SigDrawPosX)
|
|
PRINTNL()
|
|
PRINTFLOAT(SigDrawPosY)
|
|
PRINTNL()
|
|
*/
|
|
|
|
//IF IS_CURRENTLY_ON_MISSION_TO_TYPE(MISSION_TYPE_OFF_MISSION) //Fix for #1413571
|
|
|
|
|
|
IF NOT IS_CELLPHONE_CAMERA_IN_SELFIE_MODE() //Fix for 1728683, Sleep Icon being obscured by selfie instruction text.
|
|
|
|
IF IS_PC_VERSION() //2199109
|
|
ADJUST_NEXT_POS_SIZE_AS_NORMALIZED_16_9()
|
|
ENDIF
|
|
|
|
//It would seem the alpha component has no impact on the drawing of the movie in-game.. UI will need to make a particular alert alpha-ed or not.
|
|
|
|
IF g_PlayerBlipsData.bBigMapIsActive //Shunt any MP signifier that's still drawing to the top right side of the expanded radar - 3624701.
|
|
ExpandedRadarManipulator_X = 0.09
|
|
ExpandedRadarManipulator_Y = -0.250 //Negative value as we're shunting up the screen here.
|
|
|
|
IF IS_PC_VERSION()
|
|
IF IS_BIT_SET (BitSet_CellphoneTU, g_BSTU_BEACON_SIGNIFIER_DISPLAYED)
|
|
|
|
//Fix for 3724988
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintString("CELLPHONE_CONT - Signifier movie draw logic - Big Map is active, is PC version and Beacon signifier marked to display. Not drawing movie however - see bug 3724988 ")
|
|
cdPrintnl()
|
|
#endif
|
|
|
|
ELSE
|
|
DRAW_SCALEFORM_MOVIE(SF_MovieSignifiersIndex, SigDrawPosX, SigDrawPosY, 0.27, 0.45, 255, 255, 255, MovieAlpha) //url:bugstar:3635612. Normalized command above takes care of this. No need for manipulation.
|
|
ENDIF
|
|
ELSE
|
|
DRAW_SCALEFORM_MOVIE(SF_MovieSignifiersIndex, SigDrawPosX + ExpandedRadarManipulator_X, SigDrawPosY + ExpandedRadarManipulator_Y, 0.27, 0.45, 255, 255, 255, MovieAlpha)
|
|
ENDIF
|
|
ELSE
|
|
DRAW_SCALEFORM_MOVIE(SF_MovieSignifiersIndex, SigDrawPosX, SigDrawPosY, 0.27, 0.45, 255, 255, 255, MovieAlpha)
|
|
ENDIF
|
|
|
|
|
|
#if IS_DEBUG_BUILD
|
|
/*
|
|
cdPrintString("CELLPHONE_CONT - Signifier move alpha component test.")
|
|
cdPrintnl()
|
|
|
|
DISPLAY_TEXT_WITH_FLOAT (0.8, 0.1, "CELL_500", ExpandedRadarManipulator_X, 3)
|
|
DISPLAY_TEXT_WITH_FLOAT (0.8, 0.15, "CELL_500", ExpandedRadarManipulator_Y, 3)
|
|
|
|
IF IS_BUTTON_PRESSED (PAD1, DPADRIGHT)
|
|
ExpandedRadarManipulator_Y = ExpandedRadarManipulator_Y + 0.01
|
|
ENDIF
|
|
|
|
IF IS_BUTTON_PRESSED (PAD1, DPADLEFT)
|
|
ExpandedRadarManipulator_Y = ExpandedRadarManipulator_Y - 0.01
|
|
ENDIF
|
|
*/
|
|
#endif
|
|
|
|
|
|
ENDIF
|
|
|
|
//ENDIF
|
|
|
|
|
|
//For Debug position of indicator, comment out draw above, use these three lines below and comment in draw_debug_Scaleform_Signifier_Position() call.
|
|
//db_signifier_posX = (db_preview_signifier_posX + (SafeZoneManipulator * 0.005))
|
|
//db_signifier_posY = (db_preview_signifier_posY - (SafeZoneManipulator * 0.005))
|
|
|
|
|
|
//DRAW_SCALEFORM_MOVIE(SF_MovieSignifiersIndex, db_signifier_posX, db_signifier_posY, 0.27, 0.45, 255, 255, 255, 255)
|
|
//End of three line debug segment
|
|
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
// ENDIF - Commenting out for 3615927 fix.
|
|
|
|
ENDIF
|
|
|
|
//ENDIF
|
|
ENDIF
|
|
|
|
ENDIF //End of radar hidden check.
|
|
ENDIF //End of minimap rendering check.
|
|
|
|
ENDIF //End of g_forceDisplayPlayerInvitesIndicator check.
|
|
|
|
|
|
ENDPROC
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
PROC Tidy_Up_Pic_Taking()
|
|
|
|
DRAW_LOW_QUALITY_PHOTO_TO_PHONE (FALSE)
|
|
|
|
FREE_MEMORY_FOR_HIGH_QUALITY_PHOTO()
|
|
FREE_MEMORY_FOR_LOW_QUALITY_PHOTO()
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
cdPrintString("CELLPHONE_CONT - Tidying up picture taking process. Freeing memory for both LQ and HQ qualities.")
|
|
cdPrintnl()
|
|
|
|
#endif
|
|
|
|
BUSYSPINNER_OFF()
|
|
|
|
|
|
Cellphone_Pic_Just_Taken = FALSE
|
|
|
|
g_b_appHasRequestedTidyUp = FALSE
|
|
|
|
g_b_appHasRequestedSave = FALSE
|
|
|
|
|
|
g_Cell_Pic_Stage = PIC_STAGE_IDLE
|
|
|
|
|
|
ENDPROC
|
|
|
|
|
|
|
|
|
|
|
|
|
|
PROC Check_for_Picture_Just_Taken()
|
|
|
|
IF Cellphone_Pic_Just_Taken //Make sure no one is setting this when they shouldn't! See nasty bug #1388922
|
|
|
|
|
|
g_Cell_Pic_Stage = PIC_SHUTTER_DELAY
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
cdPrintString("CELLPHONE_CONT - Initiating shutter delay.")
|
|
cdPrintnl()
|
|
|
|
#endif
|
|
|
|
CLEAR_BIT (BitSet_CellphoneDisplay_Continued, g_BSC_LOW_QUALITY_CREATE_FAILED) //Reset in case this failed previously.
|
|
|
|
SETTIMERB(0)
|
|
|
|
|
|
|
|
|
|
ENDIF
|
|
|
|
|
|
ENDPROC
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
PROC Shutter_Delay()
|
|
|
|
|
|
IF TIMERB() > 0 //Need for delay seems negligible now. Investigating # 1246572
|
|
|
|
//Was 250 //We need a small delay to let the shutter close. This masks the game pause when the HQ screengrab is underway.
|
|
|
|
g_Cell_Pic_Stage = PIC_STAGE_HQ_BEGIN
|
|
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
cdPrintString("CELLPHONE_CONT - Shutter delay over - beginning HQ operations.")
|
|
cdPrintnl()
|
|
|
|
#endif
|
|
|
|
|
|
|
|
ENDIF
|
|
|
|
|
|
ENDPROC
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
PROC Begin_Take_HQ_Pic()
|
|
|
|
IF BEGIN_TAKE_HIGH_QUALITY_PHOTO()
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
cdPrintString("CELLPHONE_CONT - Success! Allocated memory buffer for taking HQ photograph.")
|
|
cdPrintnl()
|
|
|
|
#endif
|
|
|
|
g_Cell_Pic_Stage = PIC_STAGE_HQ_ONGOING
|
|
|
|
|
|
ELSE
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
cdPrintString("CELLPHONE_CONT - Cannot allocate memory buffer for taking HQ photograph. Trying next frame!")
|
|
cdPrintnl()
|
|
|
|
#endif
|
|
|
|
ENDIF
|
|
|
|
ENDPROC
|
|
|
|
|
|
|
|
|
|
|
|
|
|
PROC Taking_HQ_Pic()
|
|
|
|
|
|
PicProcessStatus = GET_STATUS_OF_TAKE_HIGH_QUALITY_PHOTO()
|
|
|
|
|
|
SWITCH PicProcessStatus
|
|
|
|
|
|
CASE PHOTO_OPERATION_SUCCEEDED
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
cdPrintString("CELLPHONE_CONT - Take HQ Photo Succeeded!")
|
|
cdPrintnl()
|
|
|
|
#endif
|
|
|
|
g_Cell_Pic_Stage = PIC_STAGE_LQ_BEGIN
|
|
|
|
|
|
QualityToAttempt = LOW_QUALITY_PHOTO_QUARTER//LOW_QUALITY_PHOTO_ONE - this would be the maximum quantity we could try, but eats memory!
|
|
|
|
|
|
#if IS_DEBUG_BUILD
|
|
IF g_HighqualityPhotoSprite
|
|
|
|
QualityToAttempt = LOW_QUALITY_PHOTO_ONE
|
|
|
|
ENDIF
|
|
#endif
|
|
|
|
|
|
|
|
/*
|
|
ENUM eLowQualityPhotoSetting
|
|
LOW_QUALITY_PHOTO_ONE,
|
|
LOW_QUALITY_PHOTO_HALF,
|
|
LOW_QUALITY_PHOTO_QUARTER,
|
|
LOW_QUALITY_PHOTO_EIGHTH
|
|
ENDENUM
|
|
*/
|
|
|
|
|
|
BREAK
|
|
|
|
|
|
CASE PHOTO_OPERATION_IN_PROGRESS
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
cdPrintString("CELLPHONE_CONT - Take HQ Photo in progress...")
|
|
cdPrintnl()
|
|
|
|
#endif
|
|
|
|
BREAK
|
|
|
|
|
|
CASE PHOTO_OPERATION_FAILED
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
cdPrintString("CELLPHONE_CONT - Take HQ Photo FAILED! Forcing phone away.")
|
|
cdPrintnl()
|
|
|
|
#endif
|
|
|
|
g_Cellphone.PhoneDS = PDS_AWAY //Force appCamera to quit out for safety as this process has failed.
|
|
|
|
Tidy_Up_Pic_Taking()
|
|
|
|
BREAK
|
|
|
|
|
|
ENDSWITCH
|
|
|
|
|
|
|
|
ENDPROC
|
|
|
|
|
|
|
|
|
|
|
|
|
|
PROC Begin_Take_LQ_Pic()
|
|
|
|
|
|
IF BEGIN_CREATE_LOW_QUALITY_COPY_OF_PHOTO(QualityToAttempt)
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
cdPrintString("CELLPHONE_CONT - Success! Found HQ photo to copy.")
|
|
cdPrintnl()
|
|
|
|
#endif
|
|
|
|
g_Cell_Pic_Stage = PIC_STAGE_LQ_ONGOING
|
|
|
|
|
|
|
|
ELSE
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
cdPrintString("CELLPHONE_CONT - Couldn't find HQ photo to create LQ copy from. Tidying up.")
|
|
cdPrintnl()
|
|
|
|
#endif
|
|
|
|
|
|
//Let appMedia know that the load failed...
|
|
SET_BIT (BitSet_CellphoneDisplay_Continued, g_BSC_LOAD_FROM_MEDIA_FAILED)
|
|
|
|
Tidy_Up_Pic_Taking()
|
|
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ENDPROC
|
|
|
|
|
|
|
|
|
|
|
|
PROC Creating_LQ_Copy()
|
|
|
|
|
|
PicProcessStatus = GET_STATUS_OF_CREATE_LOW_QUALITY_COPY_OF_PHOTO (QualityToAttempt)
|
|
|
|
|
|
//PicProcessStatus = PHOTO_OPERATION_FAILED - Comment in to test fail pipeline.
|
|
|
|
SWITCH PicProcessStatus
|
|
|
|
|
|
CASE PHOTO_OPERATION_SUCCEEDED
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
cdPrintString("CELLPHONE_CONT - Creating LQ copy succeeded!")
|
|
cdPrintnl()
|
|
|
|
#endif
|
|
|
|
|
|
DRAW_LOW_QUALITY_PHOTO_TO_PHONE (TRUE, PHOTO_CLOCKWISE)
|
|
|
|
g_Cell_Pic_Stage = PIC_STAGE_HOLDING_LQ_COPY
|
|
|
|
BREAK
|
|
|
|
|
|
CASE PHOTO_OPERATION_IN_PROGRESS
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
cdPrintString("CELLPHONE_CONT - Creating LQ copy of HQ photo in progress...")
|
|
cdPrintnl()
|
|
|
|
#endif
|
|
|
|
BREAK
|
|
|
|
|
|
CASE PHOTO_OPERATION_FAILED
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
cdPrintString("CELLPHONE_CONT - Create LQ copy of photo failed this time round...")
|
|
cdPrintnl()
|
|
|
|
#endif
|
|
|
|
|
|
//Added as a consequence of PT bug 917230. If the photo taking fails we still need to continue as normal without drawing the pic to the phone, so missions can continue.
|
|
//After a failure, the shutter will remain drawn to the phone in small size landscape mode.
|
|
|
|
|
|
IF QualityToAttempt = LOW_QUALITY_PHOTO_EIGHTH //Abandon save if lowest quality fails. //New
|
|
|
|
|
|
|
|
|
|
SET_BIT (BitSet_CellphoneDisplay_Continued, g_BSC_LOW_QUALITY_CREATE_FAILED) //We also need to prevent appCamera from trying to save an empty buffer.
|
|
|
|
|
|
DRAW_LOW_QUALITY_PHOTO_TO_PHONE (FALSE)
|
|
|
|
FREE_MEMORY_FOR_HIGH_QUALITY_PHOTO()
|
|
FREE_MEMORY_FOR_LOW_QUALITY_PHOTO()
|
|
|
|
|
|
g_Cell_Pic_Stage = PIC_STAGE_HOLDING_LQ_COPY
|
|
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
cdPrintString("CELLPHONE_CONT - Create LQ EIGHTH copy of photo FAILED!")
|
|
cdPrintnl()
|
|
|
|
#endif
|
|
|
|
|
|
|
|
//Removed as a consequence of PT bug 917230
|
|
//Tidy_Up_Pic_Taking()
|
|
|
|
|
|
ENDIF //New
|
|
|
|
|
|
|
|
//Hacked in for feasibility study.
|
|
|
|
IF g_Cell_Pic_Stage = PIC_STAGE_LQ_ONGOING ////Makes sure this doesn't carry through subsequent checks as the cell_pic_stage is reassigned.
|
|
IF QualityToAttempt = LOW_QUALITY_PHOTO_ONE
|
|
|
|
g_Cell_Pic_Stage = PIC_STAGE_LQ_BEGIN //Go again but at lower quality...
|
|
QualityToAttempt = LOW_QUALITY_PHOTO_HALF
|
|
|
|
FREE_MEMORY_FOR_LOW_QUALITY_PHOTO()
|
|
WAIT(0) //Deliberate Test for Graeme.
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
cdPrintString("CELLPHONE_CONT - Create LQ ONE copy of photo FAILED!")
|
|
cdPrintnl()
|
|
|
|
#endif
|
|
|
|
|
|
ENDIF
|
|
ENDIF
|
|
|
|
|
|
IF g_Cell_Pic_Stage = PIC_STAGE_LQ_ONGOING //Makes sure this doesn't carry through subsequent checks as the cell_pic_stage is reassigned.
|
|
IF QualityToAttempt = LOW_QUALITY_PHOTO_HALF
|
|
|
|
g_Cell_Pic_Stage = PIC_STAGE_LQ_BEGIN
|
|
QualityToAttempt = LOW_QUALITY_PHOTO_QUARTER
|
|
|
|
FREE_MEMORY_FOR_LOW_QUALITY_PHOTO()
|
|
WAIT(0)
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
cdPrintString("CELLPHONE_CONT - Create LQ HALF copy of photo FAILED!")
|
|
cdPrintnl()
|
|
|
|
#endif
|
|
|
|
|
|
ENDIF
|
|
ENDIF
|
|
|
|
|
|
IF g_Cell_Pic_Stage = PIC_STAGE_LQ_ONGOING ////Makes sure this doesn't carry through subsequent checks as the cell_pic_stage is reassigned.
|
|
IF QualityToAttempt = LOW_QUALITY_PHOTO_QUARTER
|
|
|
|
g_Cell_Pic_Stage = PIC_STAGE_LQ_BEGIN
|
|
QualityToAttempt = LOW_QUALITY_PHOTO_EIGHTH
|
|
|
|
FREE_MEMORY_FOR_LOW_QUALITY_PHOTO()
|
|
WAIT(0)
|
|
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
cdPrintString("CELLPHONE_CONT - Create LQ QUARTER copy of photo FAILED!")
|
|
cdPrintnl()
|
|
|
|
#endif
|
|
|
|
|
|
ENDIF
|
|
ENDIF
|
|
|
|
|
|
|
|
BREAK
|
|
|
|
|
|
ENDSWITCH
|
|
|
|
|
|
ENDPROC
|
|
|
|
|
|
|
|
|
|
|
|
|
|
PROC Check_Storage()
|
|
|
|
|
|
PicProcessStatus = GET_STATUS_OF_SORTED_LIST_OPERATION(TRUE) //The last BOOL indicates that we are checking for a SAVE. This would be false if we were loading.
|
|
|
|
|
|
SWITCH PicProcessStatus
|
|
|
|
|
|
CASE PHOTO_OPERATION_SUCCEEDED
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
cdPrintString("CELLPHONE_CONT - Sorted List Operation Succeeded!")
|
|
cdPrintnl()
|
|
|
|
#endif
|
|
|
|
g_Cell_pic_Stage = PIC_STAGE_STORE_TO_MEDIA
|
|
|
|
BREAK
|
|
|
|
|
|
|
|
|
|
CASE PHOTO_OPERATION_IN_PROGRESS
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
cdPrintString("CELLPHONE_CONT - Sorting list operation in progress...")
|
|
cdPrintnl()
|
|
|
|
#endif
|
|
|
|
BREAK
|
|
|
|
|
|
|
|
CASE PHOTO_OPERATION_FAILED
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
cdPrintString("CELLPHONE_CONT - Sorted List Operation FAILED!")
|
|
cdPrintnl()
|
|
|
|
#endif
|
|
|
|
Tidy_Up_Pic_Taking()
|
|
|
|
BREAK
|
|
|
|
|
|
ENDSWITCH
|
|
|
|
|
|
|
|
|
|
ENDPROC
|
|
|
|
|
|
|
|
|
|
|
|
|
|
PROC Begin_Store_to_Media()
|
|
|
|
|
|
g_i_PhotoSlot = -1//GET_SLOT_FOR_SAVING_A_PHOTO_TO()
|
|
|
|
|
|
//url:bugstar:5509739 - Add Snapmatic support for exposing the current Arena theme and variation via Snapmatic data.
|
|
IF g_bInMultiplayer
|
|
IF CONTENT_IS_USING_ARENA()
|
|
|
|
SET_ARENA_THEME_AND_VARIATION_FOR_TAKEN_PHOTO(g_FMMC_STRUCT.sArenaInfo.iArena_Theme, g_FMMC_STRUCT.sArenaInfo.iArena_Variation)
|
|
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintString("CELLPHONE_CONT - Begin_Store_to_Media - Arena Theme detected as ")
|
|
cdPrintint(g_FMMC_STRUCT.sArenaInfo.iArena_Theme)
|
|
cdPrintnl()
|
|
cdPrintString("CELLPHONE_CONT - Begin_Store_to_Media - Arena Variation detected as ")
|
|
cdPrintint(g_FMMC_STRUCT.sArenaInfo.iArena_Variation)
|
|
#endif
|
|
ELSE
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintString("CELLPHONE_CONT - Begin_Store_to_Media - No arena setup required. Content not using arena.")
|
|
#endif
|
|
ENDIF
|
|
#IF FEATURE_HEIST_ISLAND
|
|
//IF IS_PLAYER_ON_HEIST_ISLAND(PLAYER_ID())
|
|
IF IS_BIT_SET_ENUM(GlobalplayerBD[NATIVE_TO_INT(PLAYER_ID())].iHeistIslandTravelBS, HITBS__ON_ISLAND)
|
|
SET_ON_ISLAND_X_FOR_TAKEN_PHOTO(TRUE)
|
|
PRINTLN("Begin_Store_to_Media: SET_ON_ISLAND_X_FOR_TAKEN_PHOTO(TRUE)")
|
|
ELSE
|
|
SET_ON_ISLAND_X_FOR_TAKEN_PHOTO(FALSE)
|
|
PRINTLN("Begin_Store_to_Media: SET_ON_ISLAND_X_FOR_TAKEN_PHOTO(FALSE)")
|
|
ENDIF
|
|
#ENDIF
|
|
ELSE
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintString("CELLPHONE_CONT - Begin_Store_to_Media - No arena setup required. Not in multiplayer")
|
|
cdPrintnl()
|
|
#endif
|
|
ENDIF
|
|
|
|
// If the player is on the Heist Island, call SET_ON_ISLAND_X_FOR_TAKEN_PHOTO(TRUE)
|
|
|
|
IF SAVE_HIGH_QUALITY_PHOTO(g_i_PhotoSlot)
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
cdPrintString("CELLPHONE_CONT - Now DEPRECATED - 1158392. Success! Slot to save HQ photo to media is ")
|
|
cdPrintint(g_i_PhotoSlot)
|
|
cdPrintnl()
|
|
|
|
#endif
|
|
|
|
g_Cell_Pic_Stage = PIC_STAGE_STORE_TO_MEDIA_ONGOING
|
|
|
|
//Moved to appCamera to use floating help routines.
|
|
//PRINT_HELP_WITH_NUMBER ("CELL_292", (g_i_PhotoSlot + 1)) //Adjust to account for slot zero as the first slot.
|
|
|
|
BEGIN_TEXT_COMMAND_BUSYSPINNER_ON("CELL_278")
|
|
END_TEXT_COMMAND_BUSYSPINNER_ON(1)//(4) Hard drive save uses standard spinner. "4" is cloud spinner.
|
|
|
|
|
|
|
|
|
|
ELSE
|
|
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
cdPrintString("CELLPHONE_CONT - Slot failed when trying to save HQ photo to media. Tidying up.")
|
|
cdPrintString("CELLPHONE_CONT - Slot was ")
|
|
cdPrintInt(g_i_PhotoSlot)
|
|
cdPrintnl()
|
|
|
|
#endif
|
|
|
|
Tidy_Up_Pic_Taking()
|
|
|
|
ENDIF
|
|
|
|
ENDPROC
|
|
|
|
|
|
|
|
|
|
|
|
|
|
PROC Ongoing_Store_to_Media()
|
|
|
|
|
|
PicProcessStatus = GET_STATUS_OF_SAVE_HIGH_QUALITY_PHOTO()
|
|
|
|
/*Removed. Pictures save to hard drive. No longer need this check!
|
|
IF NOT NETWORK_HAS_SOCIAL_CLUB_ACCOUNT()
|
|
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
cdPrintString("CELLPHONE_CONT - Social Club account lost, player signed out! Abandoning save!")
|
|
cdPrintnl()
|
|
|
|
#endif
|
|
|
|
PicProcessStatus = PHOTO_OPERATION_FAILED
|
|
|
|
ENDIF
|
|
*/
|
|
|
|
|
|
SWITCH PicProcessStatus
|
|
|
|
|
|
CASE PHOTO_OPERATION_SUCCEEDED
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
cdPrintnl()
|
|
cdPrintString("CELLPHONE_CONT - SAVED HQ photo to media ")
|
|
cdPrintint(g_i_PhotoSlot)
|
|
cdPrintnl()
|
|
|
|
#endif
|
|
|
|
//BUSYSPINNER_OFF()
|
|
//Fix for 1942804 - drawing phone camera image to the homescreen when player gets in a vehicle mid-save.
|
|
//DRAW_LOW_QUALITY_PHOTO_TO_PHONE (TRUE, PHOTO_CLOCKWISE)
|
|
|
|
|
|
IF NETWORK_IS_GAME_IN_PROGRESS()
|
|
|
|
NetPost_Save_PauseSentTime = GET_NETWORK_TIME()
|
|
|
|
ELSE
|
|
|
|
Post_Save_PauseSentTime = GET_GAME_TIMER()
|
|
|
|
ENDIF
|
|
|
|
|
|
g_Cell_Pic_Stage = PIC_STAGE_POST_SAVE_PAUSE
|
|
|
|
SETTIMERB(0)
|
|
|
|
BREAK
|
|
|
|
|
|
CASE PHOTO_OPERATION_IN_PROGRESS
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
cdPrintString("CELLPHONE_CONT - Saving HQ photo to media in progress...")
|
|
cdPrintnl()
|
|
|
|
#endif
|
|
|
|
BREAK
|
|
|
|
|
|
CASE PHOTO_OPERATION_FAILED
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
cdPrintString("CELLPHONE_CONT - HQ photo to media save FAILED!")
|
|
cdPrintnl()
|
|
|
|
#endif
|
|
|
|
Tidy_Up_Pic_Taking()
|
|
|
|
BREAK
|
|
|
|
|
|
ENDSWITCH
|
|
|
|
|
|
|
|
|
|
|
|
ENDPROC
|
|
|
|
|
|
|
|
PROC PostSavePause() //Required to prevent easy manipulation of overlap timings. #1231086
|
|
|
|
|
|
|
|
IF NETWORK_IS_GAME_IN_PROGRESS()
|
|
|
|
i_Post_Save_PauseDifference = GET_TIME_DIFFERENCE(GET_NETWORK_TIME(), NetPost_Save_PauseSentTime)
|
|
|
|
ELSE
|
|
|
|
Post_Save_PauseCurrentTime = GET_GAME_TIMER()
|
|
|
|
i_Post_Save_PauseDifference = Post_Save_PauseCurrentTime - Post_Save_PauseSentTime
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
IF i_Post_Save_PauseDifference > 3000 //Increased time for 3 seconds TRC.
|
|
|
|
BUSYSPINNER_OFF()
|
|
|
|
ENDIF
|
|
|
|
IF i_Post_Save_PauseDifference > 3200 //Increased time for 3 seconds TRC and adding a little delay.
|
|
|
|
g_Cell_Pic_Stage = PIC_STAGE_HOLDING_LQ_COPY //This will let appCamera know that the save has been completed - search //Save Routine Completed!
|
|
|
|
ENDIF
|
|
|
|
|
|
ENDPROC
|
|
|
|
|
|
|
|
|
|
|
|
PROC Load_From_Media()
|
|
|
|
IF LOAD_HIGH_QUALITY_PHOTO (g_LoadFromSlot)
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
cdPrintString("CELLPHONE_CONT - Success! Load HQ photo from ")
|
|
cdPrintint(g_LoadFromSlot)
|
|
cdPrintnl()
|
|
|
|
#endif
|
|
|
|
|
|
g_Cell_Pic_Stage = PIC_STAGE_LOAD_FROM_MEDIA_ONGOING
|
|
|
|
|
|
|
|
ELSE
|
|
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
cdPrintString("CELLPHONE_CONT - Slot failed when trying to load HQ photo.")
|
|
cdPrintString("CELLPHONE_CONT - Slot was ")
|
|
cdPrintInt(g_LoadFromSlot)
|
|
cdPrintnl()
|
|
|
|
#endif
|
|
|
|
Tidy_Up_Pic_Taking()
|
|
|
|
|
|
ENDIF
|
|
|
|
|
|
ENDPROC
|
|
|
|
|
|
|
|
|
|
|
|
|
|
PROC Ongoing_Load_From_Media()
|
|
|
|
|
|
PicProcessStatus = GET_LOAD_HIGH_QUALITY_PHOTO_STATUS(g_LoadFromSlot)
|
|
|
|
|
|
//Temp! Do not check in. This forces an auto-fail for testing.
|
|
//WAIT(3000)
|
|
/*
|
|
IF PicProcessStatus = PHOTO_OPERATION_SUCCEEDED
|
|
|
|
PicProcessStatus = PHOTO_OPERATION_FAILED
|
|
|
|
ENDIF
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SWITCH PicProcessStatus
|
|
|
|
|
|
CASE PHOTO_OPERATION_SUCCEEDED
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
cdPrintString("CELLPHONE_CONT - Loaded HQ photo from media")
|
|
cdPrintnl()
|
|
|
|
#endif
|
|
|
|
|
|
g_Cell_Pic_Stage = PIC_STAGE_LQ_BEGIN
|
|
|
|
BREAK
|
|
|
|
|
|
|
|
|
|
CASE PHOTO_OPERATION_IN_PROGRESS
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
cdPrintString("CELLPHONE_CONT - Loading from media in progress...")
|
|
cdPrintnl()
|
|
|
|
#endif
|
|
|
|
BREAK
|
|
|
|
|
|
|
|
CASE PHOTO_OPERATION_FAILED
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
cdPrintString("CELLPHONE_CONT - Load from media FAILED!")
|
|
cdPrintnl()
|
|
|
|
#endif
|
|
|
|
|
|
//Let appMedia know that the load failed...
|
|
SET_BIT (BitSet_CellphoneDisplay_Continued, g_BSC_LOAD_FROM_MEDIA_FAILED)
|
|
|
|
|
|
|
|
Tidy_Up_Pic_Taking()
|
|
|
|
|
|
|
|
|
|
BREAK
|
|
|
|
|
|
ENDSWITCH
|
|
|
|
|
|
ENDPROC
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
PROC Setup_Cellphone_Signifier_Positions_according_to_Screen_Ratio() //Currently empty pending any requirements with screen resolutions / ratios.
|
|
|
|
|
|
//Moved to cellphone_private's Create_3dPhoneObject() due to these position having to adapt to the safezone.
|
|
|
|
//g_This_Screen_3dPhoneStartVec[DISPLAY_16_9] = <<107.0, -134.0, -113.0>> //Left HS<<-101.5, -134.0, -113.0>>
|
|
//g_This_Screen_3dPhoneEndVec[DISPLAY_16_9] = <<107.0, -48.5, -113.0>> //Left HS<<-101.5, -48.5, -113.0>>
|
|
|
|
//g_This_Screen_3dPhoneStartVec[DISPLAY_4_3] = <<71.0, -135.5, -113.0>> //Left HS<<-71.0, -135.5, -113.0>>
|
|
//g_This_Screen_3dPhoneEndVec[DISPLAY_4_3] = <<71.0, -41.5, -113.0>> //Left HS<<-71.0, -41.5, -113.0>>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
IF IS_XBOX360_VERSION()
|
|
|
|
signifier_posX[DISPLAY_16_9] = 10.0
|
|
signifier_posY[DISPLAY_16_9] = 140.0
|
|
|
|
signifier_posX[DISPLAY_4_3] = 132.0
|
|
signifier_posY[DISPLAY_4_3] = 140.0
|
|
|
|
|
|
ELSE //PS3, PC
|
|
|
|
signifier_posX[DISPLAY_16_9] = 10.0
|
|
signifier_posY[DISPLAY_16_9] = 155.0
|
|
|
|
signifier_posX[DISPLAY_4_3] = 132.0
|
|
signifier_posY[DISPLAY_4_3] = 155.0
|
|
|
|
ENDIF
|
|
*/
|
|
|
|
|
|
|
|
//May need to look at these for 480p bugs.
|
|
// PURPOSE: Returns the screen resolution
|
|
//GET_SCREEN_RESOLUTION(INT &X, INT &Y)
|
|
|
|
//INFO:
|
|
//PARAM NOTES:
|
|
//PURPOSE: Returns if running widescreen
|
|
//GET_IS_WIDESCREEN()
|
|
|
|
//INFO:
|
|
//PARAM NOTES:
|
|
//PURPOSE: Returns if running in hidef
|
|
//GET_IS_HIDEF()
|
|
|
|
|
|
|
|
/*Removing this check. Cellphone now tied to safezone.
|
|
IF GET_IS_WIDESCREEN() //Is the user running in 16_9?
|
|
|
|
g_Chosen_Ratio = DISPLAY_16_9
|
|
|
|
ELSE
|
|
|
|
g_Chosen_Ratio = DISPLAY_4_3 //He isn't, use 4_3 instead.
|
|
|
|
|
|
ENDIF
|
|
*/
|
|
|
|
|
|
|
|
ENDPROC
|
|
|
|
|
|
|
|
|
|
PROC DisplayUnreadMarketingMessage()
|
|
|
|
IF g_NumberOfUnreadMarketingEmailsThisSession = 1 // Set the unread emails to 1. The stat will be updated in AppMPEmail when the user reads it.
|
|
|
|
//Fudge fix for 2697795. Display a feed message on launch of session.
|
|
IF NOT IS_ACCOUNT_OVER_17()
|
|
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintString("Cellphone Controller - Launched MP session and email unread detected but Account is not over 17. No feed creation.")
|
|
cdPrintnl()
|
|
#endif
|
|
|
|
EXIT
|
|
|
|
ENDIF
|
|
|
|
IF IS_ACCOUNT_OVER_17_FOR_CHAT(PLAYER_ID()) //Fix for 2437163. Make sure that no feed message appears if the user account does not have communication privileges.
|
|
|
|
IF (GET_PROFILE_SETTING(PROFILE_FEED_FRIENDS) = 1)
|
|
|
|
PRINTLN("Cellphone Controller - Displaying feed notification of unread email detected on MP session launch..")
|
|
|
|
BEGIN_TEXT_COMMAND_THEFEED_POST ("CELL_EMAIL_EVENT")
|
|
END_TEXT_COMMAND_THEFEED_POST_TICKER(TRUE)
|
|
|
|
ELSE
|
|
|
|
IF GET_PROFILE_SETTING(PROFILE_FEED_FRIENDS) <> 1
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintString("Cellphone Controller - Launched MP session and email unread detected but PROFILE_FEED_FRIENDS did not equal 1. No feed creation.")
|
|
cdPrintnl()
|
|
#endif
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
ELSE
|
|
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintString("Cellphone Controller - Launched MP session and email unread detected but Account does not have chat privileges. No feed creation.")
|
|
cdPrintnl()
|
|
#endif
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
ENDIF
|
|
|
|
ENDPROC
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
PROC Check_For_Read_Auto_TextLaunch_Timeout()
|
|
|
|
|
|
IF Read_Auto_TextLaunch[g_Cellphone.PhoneOwner] = TRUE //Only check the current owner. If a swap does take place then the newly swapped to owner can timeout immediately.
|
|
|
|
//By including this clause we can make the timer apply to critical messages only.
|
|
//IF g_savedGlobals.sCellphoneSettingsData.This_Cellphone_Owner_Settings[g_Cellphone.PhoneOwner].g_LastMessageSentMustBeRead
|
|
|
|
|
|
|
|
IF NETWORK_IS_GAME_IN_PROGRESS()
|
|
|
|
i_Read_Auto_TextLaunchDifference = GET_TIME_DIFFERENCE(GET_NETWORK_TIME(), NetRead_Auto_TextLaunchSentTime[g_Cellphone.PhoneOwner])
|
|
|
|
ELSE
|
|
|
|
Read_Auto_TextLaunchCurrentTime[g_Cellphone.PhoneOwner] = GET_GAME_TIMER()
|
|
|
|
i_Read_Auto_TextLaunchDifference = Read_Auto_TextLaunchCurrentTime[g_Cellphone.PhoneOwner] - Read_Auto_TextLaunchSentTime[g_Cellphone.PhoneOwner]
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
|
|
IF i_Read_Auto_TextLaunchDifference > Read_Auto_TextLaunchTimeoutThreshold //If read time has elapsed we must reset the LaunchTo flag which forces the cellphone to launch
|
|
//appTextMessages and the critical message related MustBeRead flag
|
|
//which forces the app to single message view immediately.
|
|
|
|
|
|
g_savedGlobals.sCellphoneSettingsData.This_Cellphone_Owner_Settings[g_Cellphone.PhoneOwner].g_LaunchToTextMessageScreen = FALSE
|
|
|
|
|
|
g_savedGlobals.sCellphoneSettingsData.This_Cellphone_Owner_Settings[g_Cellphone.PhoneOwner].g_LastMessageSentMustBeRead = FALSE
|
|
|
|
//The contents of the procedure won't run again until this is set TRUE on a new text message or a player swap takes place.
|
|
Read_Auto_TextLaunch[g_Cellphone.PhoneOwner] = FALSE
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
cdPrintString("CELLPHONE_CONT - Read_Auto_Textlaunch timeout has taken place. Removing block and launch forces. Player was ")
|
|
cdPrintint(ENUM_TO_INT(g_Cellphone.PhoneOwner))
|
|
cdPrintnl()
|
|
|
|
#endif
|
|
|
|
|
|
ENDIF
|
|
|
|
//ENDIF
|
|
|
|
ENDIF
|
|
|
|
ENDPROC
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
PROC Check_If_Signifier_Movie_Needs_Drawn_or_Removed()
|
|
|
|
|
|
|
|
IF IS_BIT_SET (BitSet_CellphoneDisplay, g_BS_HAS_SIGNIFIER_MOVIE_LOADED)
|
|
|
|
|
|
IF g_Current_Number_Of_Signifiers > 0 //A signifier must be present or this would be zero.
|
|
IF IS_BIT_SET (BitSet_CellphoneDisplay_Continued, g_BSC_CELLPHONE_SIGNIFIERS_NEEDS_UPDATED) //If the update flag is still set we need to re-add any items.
|
|
|
|
IF b_Allow_Drawn_Or_Remove_to_Check_For_Update //necessary to prevent this running before initial update check in main loop.
|
|
|
|
LEGACY_SCALEFORM_MOVIE_METHOD (SF_MovieSignifiersIndex, "CLEAR_ALL")
|
|
|
|
IF IS_BIT_SET (BitSet_CellphoneDisplay, g_BS_DISPLAY_SLEEP_SIGNIFIER)
|
|
|
|
BEGIN_SCALEFORM_MOVIE_METHOD (SF_MovieSignifiersIndex, "CREATE_ALERT")
|
|
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT (26)
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT (222.0)//(signifier_posX[g_Chosen_Ratio] + 155.0)
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT (222.0)//(signifier_posY[g_Chosen_Ratio]) //Petri says invites icon should not display in SP... was 192.0
|
|
//#2059965
|
|
END_SCALEFORM_MOVIE_METHOD()
|
|
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
cdPrintString("CELLPHONE_CONT - Adding sleep signifier.")
|
|
cdPrintnl()
|
|
|
|
#endif
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
IF IS_BIT_SET (BitSet_CellphoneTU, g_BSTU_ONCALL_SIGNIFIER_DISPLAYED) //Mutually exclusive with SLEEP MODE, so can use the same position.
|
|
|
|
|
|
BEGIN_SCALEFORM_MOVIE_METHOD (SF_MovieSignifiersIndex, "CREATE_ALERT")
|
|
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT (53)
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT (222.0)//(signifier_posX[g_Chosen_Ratio] + 155.0)
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT (222.0)//(signifier_posY[g_Chosen_Ratio])
|
|
|
|
END_SCALEFORM_MOVIE_METHOD()
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
cdPrintString("CELLPHONE_CONT - Adding on call signifier in SP ng.")
|
|
cdPrintnl()
|
|
|
|
#endif
|
|
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
IF g_bInMultiplayer = TRUE
|
|
IF IS_BIT_SET (BitSet_CellphoneTU, g_BSTU_INVITE_SIGNIFIER_DISPLAYED) //Mutually exclusive with SLEEP MODE, so can use the same position.
|
|
|
|
BEGIN_SCALEFORM_MOVIE_METHOD (SF_MovieSignifiersIndex, "CREATE_ALERT")
|
|
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT (52)
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT (222.0)//(signifier_posX[g_Chosen_Ratio] + 155.0)
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT (222.0)//(signifier_posY[g_Chosen_Ratio])
|
|
|
|
END_SCALEFORM_MOVIE_METHOD()
|
|
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
cdPrintString("CELLPHONE_CONT - Adding Invite signifier in MP only.")
|
|
cdPrintnl()
|
|
|
|
#endif
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
IF IS_BIT_SET (BitSet_CellphoneTU, g_BSTU_BEACON_SIGNIFIER_DISPLAYED) ////Added for 3599537 - display beacon beside radar.
|
|
BEGIN_SCALEFORM_MOVIE_METHOD (SF_MovieSignifiersIndex, "CREATE_ALERT")
|
|
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT (60) //Should be icon 60
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT (222.0)
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT (148.0)//Position nearer top of radar to allow space for other signifiers. Invites / Push to talk etc.
|
|
|
|
END_SCALEFORM_MOVIE_METHOD()
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
cdPrintString("CELLPHONE_CONT - Adding Beacon signifier in Multiplayer.")
|
|
cdPrintnl()
|
|
|
|
#endif
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
|
|
|
|
IF IS_BIT_SET (BitSet_CellphoneTU, g_BSTU_PUSHTALK_SIGNIFIER_DISPLAYED) //This bit will be set on PC only.
|
|
|
|
BEGIN_SCALEFORM_MOVIE_METHOD (SF_MovieSignifiersIndex, "CREATE_ALERT")
|
|
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT (55)
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT (222.0)//(signifier_posX[g_Chosen_Ratio] + 155.0)
|
|
|
|
IF IS_BIT_SET (BitSet_CellphoneTU, g_BSTU_INVITE_SIGNIFIER_DISPLAYED)
|
|
OR IS_BIT_SET (BitSet_CellphoneTU, g_BSTU_ONCALL_SIGNIFIER_DISPLAYED)
|
|
OR IS_BIT_SET (BitSet_CellphoneDisplay, g_BS_DISPLAY_SLEEP_SIGNIFIER)
|
|
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT (192.0)//(signifier_posY[g_Chosen_Ratio])
|
|
|
|
ELSE
|
|
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT (222.0)//(signifier_posY[g_Chosen_Ratio])
|
|
|
|
ENDIF
|
|
|
|
END_SCALEFORM_MOVIE_METHOD()
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
cdPrintString("CELLPHONE_CONT - Adding PUSHTALK signifier in PC ng.")
|
|
cdPrintnl()
|
|
|
|
#endif
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
CLEAR_BIT (BitSet_CellphoneDisplay_Continued, g_BSC_CELLPHONE_SIGNIFIERS_NEEDS_UPDATED)
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
cdPrintString("CELLPHONE_CONT - Movie is loaded and added any valid signifiers. Clearing Sig Update Flag 2.")
|
|
cdPrintnl()
|
|
|
|
#endif
|
|
|
|
|
|
b_Allow_Drawn_Or_Remove_to_Check_For_Update = FALSE
|
|
|
|
ENDIF
|
|
|
|
ENDIF
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
|
|
|
|
IF g_Current_Number_Of_Signifiers < 1 //nothing needs to use the scaleform signifier movie. Safe to remove it and reset the bit.
|
|
|
|
|
|
|
|
SET_SCALEFORM_MOVIE_AS_NO_LONGER_NEEDED (SF_MovieSignifiersIndex)
|
|
|
|
|
|
|
|
CLEAR_BIT (BitSet_CellphoneDisplay, g_BS_HAS_SIGNIFIER_MOVIE_LOADED)
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
cdPrintstring ("CELLPHONE_CONT - SF_MovieSignifiers removed, movie marked as no longer needed and related bit cleared. Number of signifiers at ")
|
|
cdPrintint (g_Current_Number_Of_Signifiers)
|
|
cdPrintnl ()
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
ELSE //One or more signifiers must still need to be drawn, so continue drawing the scaleform movie every frame provided the phone is not onscreen
|
|
|
|
|
|
/*
|
|
IF IS_CURRENT_PLAYER_IN_SLEEP_MODE()
|
|
|
|
IF NOT IS_CURRENTLY_ON_MISSION_TO_TYPE(MISSION_TYPE_OFF_MISSION)
|
|
|
|
SET_CELLPHONE_PROFILE_TO_NORMAL()
|
|
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
cdPrintstring ("CELLPHONE_CONT - Player was in sleep mode but mission type is no longer off mission.")
|
|
cdPrintnl ()
|
|
|
|
#endif
|
|
|
|
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
b_BlockSigniferMovieFromDrawing = FALSE
|
|
//Don't display the oncall signifier in 3rd person.
|
|
IF IS_BIT_SET (BitSet_CellphoneTU, g_BSTU_ONCALL_SIGNIFIER_DISPLAYED)
|
|
IF IsCurrentCamFirstPerson() = FALSE
|
|
//IF NOT IS_BIT_SET (BitSet_CellphoneDisplay, g_BS_DISPLAY_SLEEP_SIGNIFIER)
|
|
b_BlockSigniferMovieFromDrawing = TRUE
|
|
//ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
*/
|
|
|
|
//IF b_BlockSigniferMovieFromDrawing = FALSE
|
|
|
|
|
|
DrawSignifierMovie()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ENDIF
|
|
|
|
|
|
ELSE
|
|
|
|
|
|
|
|
|
|
|
|
|
|
IF g_Current_Number_Of_Signifiers > 0 //The movie is not loaded but a signifier has requested that it should be drawn as total is greater than zero.
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
cdPrintstring ("CELLPHONE_CONT - Loading cellphone_alert_popup movie...")
|
|
cdPrintnl ()
|
|
|
|
#endif
|
|
|
|
|
|
|
|
SF_MovieSignifiersIndex = REQUEST_SCALEFORM_MOVIE ("cellphone_alert_popup")
|
|
|
|
|
|
WHILE NOT HAS_SCALEFORM_MOVIE_LOADED (SF_MovieSignifiersIndex)
|
|
|
|
WAIT(0)
|
|
|
|
ENDWHILE
|
|
|
|
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
cdPrintstring ("CELLPHONE_CONT - Cellphone_alert_popup loaded and related bit set.")
|
|
cdPrintnl ()
|
|
|
|
#endif
|
|
|
|
//488121
|
|
SET_SCRIPT_GFX_DRAW_ORDER(GFX_ORDER_AFTER_HUD)
|
|
|
|
|
|
SET_BIT (BitSet_CellphoneDisplay, g_BS_HAS_SIGNIFIER_MOVIE_LOADED)
|
|
|
|
|
|
|
|
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
ENDPROC
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
PROC Create_Contact_Feed_Entry()
|
|
|
|
|
|
//For bug 880374, we should replace SignifierPrimaryText with the buffered contents when the player swap has been detected.
|
|
TEXT_LABEL_63 s_TXD_Contact_decision
|
|
|
|
s_TXD_Contact_decision = (GET_FILENAME_FOR_AUDIO_CONVERSATION (g_sCharacterSheetAll[g_Temp_ContactHeadshotRef].picture))
|
|
|
|
#if IS_DEBUG_BUILD //Important, make sure this is always in the logs.
|
|
PRINTNL()
|
|
PRINTSTRING("CELLPHONE CONTROLLER - Extract headshot txd for Contact feed was ")
|
|
PRINTSTRING (s_TXD_Contact_Decision)
|
|
PRINTNL()
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
IF g_UseContactSignifierNewType = FALSE
|
|
|
|
|
|
BEGIN_TEXT_COMMAND_THEFEED_POST ("")
|
|
|
|
TEXT_LABEL_63 s_TempContactHolder
|
|
|
|
s_TempContactHolder = GET_FILENAME_FOR_AUDIO_CONVERSATION(SignifierData[SIG_CONTACT1].SignifierPrimaryText)
|
|
|
|
STRING s_ContactAddedString
|
|
s_ContactAddedString = GET_FILENAME_FOR_AUDIO_CONVERSATION("CELL_253")
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
cdPrintstring ("Strings for contact test are: ")
|
|
cdPrintstring (s_TXD_Contact_decision)
|
|
cdPrintstring (", ")
|
|
cdPrintstring (s_TempContactHolder)
|
|
cdPrintstring (", ")
|
|
cdPrintstring (s_ContactAddedString)
|
|
cdPrintnl()
|
|
|
|
#endif
|
|
|
|
END_TEXT_COMMAND_THEFEED_POST_MESSAGETEXT (s_TXD_Contact_decision, s_TXD_Contact_decision, FALSE, TEXT_ICON_NEW_CONTACT, s_ContactAddedString, s_TempContactHolder)
|
|
|
|
|
|
ELSE
|
|
|
|
|
|
BEGIN_TEXT_COMMAND_THEFEED_POST ("CELL_255")
|
|
|
|
ADD_TEXT_COMPONENT_SUBSTRING_TEXT_LABEL (SignifierData[SIG_CONTACT1].SignifierPrimaryText)
|
|
|
|
END_TEXT_COMMAND_THEFEED_POST_MESSAGETEXT(s_TXD_Contact_decision, s_TXD_Contact_decision, FALSE, TEXT_ICON_NEW_CONTACT, "")
|
|
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
cdPrintnl()
|
|
cdPrintstring ("CELLPHONE_CONT - Created New Contact feed entry. ")
|
|
cdPrintint (g_Current_Number_of_Signifiers)
|
|
cdPrintnl ()
|
|
|
|
|
|
|
|
SWITCH g_Cellphone.PhoneOwner
|
|
|
|
CASE CHAR_MICHAEL
|
|
|
|
PRINTLN("Owner this frame is Michael - ")
|
|
|
|
BREAK
|
|
|
|
|
|
CASE CHAR_FRANKLIN
|
|
|
|
PRINTLN("Owner this frame is Franklin - ")
|
|
|
|
BREAK
|
|
|
|
|
|
CASE CHAR_TREVOR
|
|
|
|
PRINTLN("Owner this frame is Trevor - ")
|
|
|
|
BREAK
|
|
|
|
|
|
DEFAULT
|
|
|
|
PRINTLN("Owner this frame is MP - ")
|
|
|
|
BREAK
|
|
|
|
ENDSWITCH
|
|
|
|
|
|
PRINTSTRING("CELLPHONE_CONT Created new feed entry as this contact has been added for the current owner. New contact: ")
|
|
PRINTSTRING(GET_FILENAME_FOR_AUDIO_CONVERSATION(SignifierData[SIG_CONTACT1].SignifierPrimaryText))
|
|
PRINTNL()
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
CLEAR_BIT (BitSet_CellphoneDisplay, g_BS_DISPLAY_NEW_CONTACT_SIGNIFIER)
|
|
|
|
|
|
ENDPROC
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
PROC Create_TxtMsg_Feed_Entry()
|
|
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
cdPrintnl()
|
|
cdPrintnl()
|
|
cdPrintString("CELLPHONE_CONT - Creating new FEED ENTRY...")
|
|
cdPrintnl()
|
|
cdPrintnl()
|
|
|
|
#endif
|
|
|
|
|
|
|
|
//We need to determine if the texture and associated dictionary strings passed into the end feed command should be from the character sheet or a generated user headshot
|
|
//If we find a headshot, then we must also update the headshot string holder so the text message app knows to display this rather than the usual pic of the sender.
|
|
//The store for this, TxtMsgHeadshotString, is automatically set to NO_HEADSHOT_REQUIRED previously in ProcessTextMessage() in Cellphone_Private.
|
|
|
|
|
|
TEXT_LABEL_63 s_TXD_decision
|
|
|
|
|
|
IF (g_playerTxtmsgHeadshotMP != NULL) //If this is not null then that means a valid headshot has been generated by Generate_Player_Headshot in net_comms.sch
|
|
|
|
IF (IS_PEDHEADSHOT_VALID (g_playerTxtmsgHeadshotMP))
|
|
|
|
IF (IS_PEDHEADSHOT_READY (g_playerTxtmsgHeadshotMP))
|
|
|
|
s_TXD_decision = GET_PEDHEADSHOT_TXD_STRING(g_playerTxtmsgHeadshotMP)
|
|
|
|
//Keep a copy of the PEDHEADSHOT_ID in the identified free index for later reference by appTextMessage.
|
|
g_TxtMsgHeadshotID[TxtMsgIdentifiedFreeArrayIndex] = g_playerTxtmsgHeadshotMP
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
cdPrintnl()
|
|
cdPrintString("CELLPHONE_CONT - Found Headshot. Storing TxtMsgHeadShotID for this index.")
|
|
cdPrintnl()
|
|
|
|
#endif
|
|
|
|
|
|
ELSE
|
|
|
|
s_TXD_decision = "CHAR_DEFAULT" //default to blank headshot if the headshot is not ready.
|
|
|
|
//Default associated headshotID to NULL
|
|
g_TxtMsgHeadshotID[TxtMsgIdentifiedFreeArrayIndex] = NULL
|
|
|
|
|
|
ENDIF
|
|
|
|
ELSE
|
|
|
|
s_TXD_decision = "CHAR_DEFAULT" //default to blank headshot if the headshot is not valid.
|
|
|
|
//Default associated headshotID to NULL
|
|
g_TxtMsgHeadshotID[TxtMsgIdentifiedFreeArrayIndex] = NULL
|
|
|
|
|
|
ENDIF
|
|
|
|
|
|
ELSE
|
|
|
|
//Not a user headshot, use normal character sheet image instead.
|
|
s_TXD_decision =
|
|
GET_FILENAME_FOR_AUDIO_CONVERSATION (g_sCharacterSheetAll[g_SavedGlobals.sTextMessageSavedData.g_TextMessage[TxtMsgIdentifiedFreeArrayIndex].TxtMsgSender].picture)
|
|
|
|
|
|
//url:bugstar:5809076 - Hidden Collectibles - Action Figures - There is no contact image for the Hardcore Comic Store
|
|
//Steve T notes: This is because the picture label was changed after QA had established a save game that contained
|
|
//an earlier pic label for this Comic Store character. That save data was clobbering the change.
|
|
//To get round this safely, point this specific character to the actual text label that holds his texture reference.
|
|
IF (g_SavedGlobals.sTextMessageSavedData.g_TextMessage[TxtMsgIdentifiedFreeArrayIndex].TxtMsgSender = CHAR_COMIC_STORE)
|
|
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintString("JUNE 2019 - Passed character was CHAR_COMIC_STORE. Overriding headshot decision to CELL_COMIC_P")
|
|
#ENDIF
|
|
|
|
|
|
s_TXD_decision = GET_FILENAME_FOR_AUDIO_CONVERSATION("CELL_COMIC_P")
|
|
|
|
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintString("JUNE 2019 - Comic Store extracted TXD decision was: ")
|
|
#endif
|
|
|
|
ELSE
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
cdPrintnl()
|
|
cdPrintString("CELLPHONE_CONT - Found Story Character Headshot. Grabbed TxtMsgHeadShotID for this index. Picture Text Label used for extraction was: ")
|
|
|
|
cdPrintString(g_sCharacterSheetAll[g_SavedGlobals.sTextMessageSavedData.g_TextMessage[TxtMsgIdentifiedFreeArrayIndex].TxtMsgSender].picture)
|
|
cdPrintnl()
|
|
|
|
cdPrintString("JUNE 2019 - Extracted TXD decision was: ")
|
|
cdPrintString(s_TXD_decision)
|
|
cdPrintnl()
|
|
|
|
#endif
|
|
|
|
ENDIF
|
|
|
|
|
|
//Default associated headshotID to NULL
|
|
g_TxtMsgHeadshotID[TxtMsgIdentifiedFreeArrayIndex] = NULL
|
|
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
IF IS_STRING_NULL_OR_EMPTY (s_TXD_decision)
|
|
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
SCRIPT_ASSERT ("Warning: Feed Entry txd decision is null or empty! Using CHAR_DEFAULT instead!")
|
|
PRINTLN("\nWarning: Feed Entry txd decision is null or empty! Using CHAR_DEFAULT instead!\n")
|
|
|
|
#endif
|
|
|
|
|
|
s_TXD_decision = "CHAR_DEFAULT"
|
|
|
|
ELSE
|
|
|
|
IF ARE_STRINGS_EQUAL (s_TXD_decision, "NULL")
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
//SCRIPT_ASSERT ("Warning: Feed Entry txd decision contains NULL. Using CHAR_DEFAULT instead!")
|
|
PRINTLN("\nWarning: Feed Entry txd decision contains NULL. Using CHAR_DEFAULT instead!\n")
|
|
|
|
#endif
|
|
|
|
|
|
s_TXD_decision = "CHAR_DEFAULT"
|
|
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
cdPrintnl()
|
|
cdPrintstring ("CELLPHONE CONT - Sender image string was ")
|
|
cdPrintstring (s_TXD_decision)
|
|
cdPrintnl()
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
IF g_SavedGlobals.sTextMessageSavedData.g_TextMessage[TxtMsgIdentifiedFreeArrayIndex].TxtMsgSpecialComponents = CAR_LIST_COMPONENT
|
|
OR g_SavedGlobals.sTextMessageSavedData.g_TextMessage[TxtMsgIdentifiedFreeArrayIndex].TxtMsgSpecialComponents = SUPERAUTOS_LIST_COMPONENT
|
|
OR g_SavedGlobals.sTextMessageSavedData.g_TextMessage[TxtMsgIdentifiedFreeArrayIndex].TxtMsgSpecialComponents = LEGENDARY_LIST_COMPONENT
|
|
OR g_SavedGlobals.sTextMessageSavedData.g_TextMessage[TxtMsgIdentifiedFreeArrayIndex].TxtMsgSpecialComponents = PEDALMETAL_LIST_COMPONENT
|
|
OR g_SavedGlobals.sTextMessageSavedData.g_TextMessage[TxtMsgIdentifiedFreeArrayIndex].TxtMsgSpecialComponents = WARSTOCK_LIST_COMPONENT
|
|
OR g_SavedGlobals.sTextMessageSavedData.g_TextMessage[TxtMsgIdentifiedFreeArrayIndex].TxtMsgSpecialComponents = ELITAS_LIST_COMPONENT
|
|
OR g_SavedGlobals.sTextMessageSavedData.g_TextMessage[TxtMsgIdentifiedFreeArrayIndex].TxtMsgSpecialComponents = DOCKTEASE_LIST_COMPONENT
|
|
OR g_SavedGlobals.sTextMessageSavedData.g_TextMessage[TxtMsgIdentifiedFreeArrayIndex].TxtMsgSpecialComponents = DAILYOBJ_LIST_COMPONENT
|
|
OR g_SavedGlobals.sTextMessageSavedData.g_TextMessage[TxtMsgIdentifiedFreeArrayIndex].TxtMsgSpecialComponents = DAILY_CHALKBOARD_VEHICLE_LIST_COMPONENT // url:bugstar:7188269
|
|
|
|
/* Removed. See bug 847795. This was used when a new car list notification did not include the full list of cars in the feed entry.
|
|
TEXT_LABEL CarListTokenDecision
|
|
|
|
|
|
IF g_CarListMessageDecision = NEW_CAR_LIST
|
|
|
|
CarListTokenDecision = "CELL_256"
|
|
|
|
ELSE
|
|
|
|
CarListTokenDecision = "CELL_254" //Must be updated car list.
|
|
|
|
ENDIF
|
|
*/
|
|
|
|
//BEGIN_TEXT_COMMAND_THEFEED_POST (CarListTokenDecision)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
INT tempConstructionInt = 0
|
|
INT iMsgNumberComponet = MIN_VALUE_INT(9, g_SavedGlobals.sTextMessageSavedData.g_TextMessage[TxtMsgIdentifiedFreeArrayIndex].TxtMsgNumberComponent)
|
|
|
|
//Decide which tilda a tilda configuration we should use based on how many cars were stipulated when the messsage was sent.
|
|
SWITCH iMsgNumberComponet
|
|
|
|
|
|
CASE 1
|
|
BEGIN_TEXT_COMMAND_THEFEED_POST ("CELL_CL01") //This refers to a label with one ~a~ car component...
|
|
BREAK
|
|
|
|
|
|
CASE 2
|
|
BEGIN_TEXT_COMMAND_THEFEED_POST ("CELL_CL02") //This refers to a label with two ~a~ car components...
|
|
BREAK
|
|
|
|
|
|
|
|
CASE 3
|
|
BEGIN_TEXT_COMMAND_THEFEED_POST ("CELL_CL03") //This refers to a label with three ~a~ car components...
|
|
BREAK
|
|
|
|
|
|
|
|
CASE 4
|
|
BEGIN_TEXT_COMMAND_THEFEED_POST ("CELL_CL04") //This refers to a label with four ~a~ car components...
|
|
BREAK
|
|
|
|
|
|
|
|
CASE 5
|
|
BEGIN_TEXT_COMMAND_THEFEED_POST ("CELL_CL05") //This refers to a label with five ~a~ car components...
|
|
BREAK
|
|
|
|
|
|
|
|
CASE 6
|
|
BEGIN_TEXT_COMMAND_THEFEED_POST ("CELL_CL06") //This refers to a label with six ~a~ car components...
|
|
BREAK
|
|
|
|
|
|
|
|
CASE 7
|
|
BEGIN_TEXT_COMMAND_THEFEED_POST ("CELL_CL07") //This refers to a label with seven ~a~ car components...
|
|
BREAK
|
|
|
|
|
|
|
|
CASE 8
|
|
BEGIN_TEXT_COMMAND_THEFEED_POST ("CELL_CL08") //This refers to a label with eight ~a~ car components...
|
|
BREAK
|
|
|
|
|
|
|
|
CASE 9
|
|
BEGIN_TEXT_COMMAND_THEFEED_POST ("CELL_CL09") //This refers to a label with nine ~a~ car components...
|
|
BREAK
|
|
|
|
|
|
|
|
|
|
ENDSWITCH
|
|
|
|
|
|
//Add in user-defined label at the very start. i.e The first tilda a tilda substring.
|
|
//E.g Grab these cars! The list then follows as the specified amount of substrings.
|
|
|
|
ADD_TEXT_COMPONENT_SUBSTRING_TEXT_LABEL(g_SavedGlobals.sTextMessageSavedData.g_TextMessage[TxtMsgIdentifiedFreeArrayIndex].TxtMsgLabel)
|
|
|
|
|
|
//Add each separate car as a substring.
|
|
WHILE tempConstructionInt < iMsgNumberComponet
|
|
|
|
//ADD_TEXT_COMPONENT_SUBSTRING_TEXT_LABEL(MPGlobalsAmbience.ImportExportWantedCars[tempConstructionInt]) //This is taken from MP.
|
|
|
|
//Adding in support for multiple car lists at request of 1600460
|
|
SWITCH g_SavedGlobals.sTextMessageSavedData.g_TextMessage[TxtMsgIdentifiedFreeArrayIndex].TxtMsgSpecialComponents
|
|
|
|
|
|
CASE CAR_LIST_COMPONENT
|
|
|
|
ADD_TEXT_COMPONENT_SUBSTRING_TEXT_LABEL(MPGlobalsAmbience.ImportExportWantedCars[tempConstructionInt]) //This is taken from MP and is the standard import / export list.
|
|
|
|
BREAK
|
|
|
|
|
|
//New additions.
|
|
CASE SUPERAUTOS_LIST_COMPONENT
|
|
|
|
ADD_TEXT_COMPONENT_SUBSTRING_TEXT_LABEL(g_SuperAutosVehicleUnlock[tempConstructionInt]) //This is taken from MP and is the standard import / export list.
|
|
|
|
BREAK
|
|
|
|
|
|
CASE LEGENDARY_LIST_COMPONENT
|
|
|
|
ADD_TEXT_COMPONENT_SUBSTRING_TEXT_LABEL(g_LegendaryVehicleUnlock[tempConstructionInt]) //This is taken from MP and is the standard import / export list.
|
|
|
|
BREAK
|
|
|
|
|
|
CASE PEDALMETAL_LIST_COMPONENT
|
|
|
|
ADD_TEXT_COMPONENT_SUBSTRING_TEXT_LABEL(g_PedalMetalVehicleUnlock[tempConstructionInt]) //This is taken from MP and is the standard import / export list.
|
|
|
|
BREAK
|
|
|
|
|
|
CASE WARSTOCK_LIST_COMPONENT
|
|
|
|
ADD_TEXT_COMPONENT_SUBSTRING_TEXT_LABEL(g_WarstockVehicleUnlock[tempConstructionInt]) //This is taken from MP and is the standard import / export list.
|
|
|
|
BREAK
|
|
|
|
|
|
CASE ELITAS_LIST_COMPONENT
|
|
|
|
ADD_TEXT_COMPONENT_SUBSTRING_TEXT_LABEL(g_ElitasVehicleUnlock[tempConstructionInt]) //This is taken from MP and is the standard import / export list.
|
|
|
|
BREAK
|
|
|
|
|
|
CASE DOCKTEASE_LIST_COMPONENT
|
|
|
|
ADD_TEXT_COMPONENT_SUBSTRING_TEXT_LABEL(g_DockTeaseVehicleUnlock[tempConstructionInt]) //This is taken from MP and is the standard import / export list.
|
|
|
|
BREAK
|
|
|
|
|
|
CASE DAILYOBJ_LIST_COMPONENT
|
|
|
|
ADD_TEXT_COMPONENT_SUBSTRING_TEXT_LABEL(g_DailyObjectivesList[tempConstructionInt]) //This is taken from MP and is the standard import / export list.
|
|
|
|
BREAK
|
|
|
|
// url:bugstar:7188269 - Exotic Exports - As a QoL update, can we please add the ability to request a text message from Sessanta that lists the vehicles you still need to get that day?
|
|
CASE DAILY_CHALKBOARD_VEHICLE_LIST_COMPONENT
|
|
|
|
ADD_TEXT_COMPONENT_SUBSTRING_TEXT_LABEL(g_CalkboardAutosVehicleUnlock[tempConstructionInt]) //This is taken from MP and is the calkboard vehicle list
|
|
|
|
BREAK
|
|
|
|
ENDSWITCH
|
|
|
|
|
|
|
|
|
|
|
|
tempConstructionInt ++
|
|
|
|
ENDWHILE
|
|
|
|
TEXT_LABEL_63 s_TempHolder
|
|
|
|
|
|
s_TempHolder = GET_FILENAME_FOR_AUDIO_CONVERSATION(g_sCharacterSheetAll[g_SavedGlobals.sTextMessageSavedData.g_TextMessage[TxtMsgIdentifiedFreeArrayIndex].TxtMsgSender].label)
|
|
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
cdPrintstring ("Strings for car list text message are: ")
|
|
cdPrintstring (s_TXD_decision)
|
|
cdPrintstring (", ")
|
|
cdPrintstring (s_TempHolder)
|
|
cdPrintnl()
|
|
|
|
#endif
|
|
|
|
i_FeedItemId = END_TEXT_COMMAND_THEFEED_POST_MESSAGETEXT (s_TXD_decision, s_TXD_decision, FALSE, TEXT_ICON_MESSAGE, s_TempHolder)
|
|
|
|
g_Last_App_ActivatableType = ACT_APP_TEXT
|
|
g_Last_App_ActivatableFeedID = i_FeedItemId
|
|
|
|
g_playerTxtmsgHeadshotMP = NULL //Reset headshot holder to NULL now that we have created the feed entry.
|
|
|
|
|
|
ELSE
|
|
|
|
|
|
|
|
|
|
|
|
BEGIN_TEXT_COMMAND_THEFEED_POST (g_SavedGlobals.sTextMessageSavedData.g_TextMessage[TxtMsgIdentifiedFreeArrayIndex].TxtMsgLabel)
|
|
|
|
SWITCH g_SavedGlobals.sTextMessageSavedData.g_TextMessage[TxtMsgIdentifiedFreeArrayIndex].TxtMsgSpecialComponents
|
|
|
|
|
|
CASE NO_SPECIAL_COMPONENTS
|
|
//No further additions to text label string need integrated.
|
|
BREAK
|
|
|
|
|
|
|
|
CASE STRING_COMPONENT
|
|
|
|
ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME (g_SavedGlobals.sTextMessageSavedData.g_TextMessage[TxtMsgIdentifiedFreeArrayIndex].TxtMsgStringComponent)
|
|
|
|
//Check if any additional strings are required...
|
|
IF g_SavedGlobals.sTextMessageSavedData.g_TextMessage[TxtMsgIdentifiedFreeArrayIndex].TxtMsgNumberOfAdditionalStrings = 1
|
|
AND NOT (ARE_STRINGS_EQUAL ( g_SavedGlobals.sTextMessageSavedData.g_TextMessage[TxtMsgIdentifiedFreeArrayIndex].TxtMsgSecondStringComponent, "NULL"))
|
|
|
|
ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME (g_SavedGlobals.sTextMessageSavedData.g_TextMessage[TxtMsgIdentifiedFreeArrayIndex].TxtMsgSecondStringComponent)
|
|
|
|
ENDIF
|
|
|
|
|
|
IF g_SavedGlobals.sTextMessageSavedData.g_TextMessage[TxtMsgIdentifiedFreeArrayIndex].TxtMsgNumberOfAdditionalStrings = 2
|
|
AND NOT (ARE_STRINGS_EQUAL ( g_SavedGlobals.sTextMessageSavedData.g_TextMessage[TxtMsgIdentifiedFreeArrayIndex].TxtMsgSecondStringComponent, "NULL"))
|
|
AND NOT (ARE_STRINGS_EQUAL ( g_SavedGlobals.sTextMessageSavedData.g_TextMessage[TxtMsgIdentifiedFreeArrayIndex].TxtMsgThirdStringComponent, "NULL"))
|
|
|
|
// ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME (g_SavedGlobals.sTextMessageSavedData.g_TextMessage[TxtMsgIdentifiedFreeArrayIndex].TxtMsgSecondStringComponent)
|
|
//ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME (g_SavedGlobals.sTextMessageSavedData.g_TextMessage[TxtMsgIdentifiedFreeArrayIndex].TxtMsgThirdStringComponent)
|
|
IF DOES_TEXT_LABEL_EXIST(g_SavedGlobals.sTextMessageSavedData.g_TextMessage[TxtMsgIdentifiedFreeArrayIndex].TxtMsgSecondStringComponent)
|
|
ADD_TEXT_COMPONENT_SUBSTRING_TEXT_LABEL(g_SavedGlobals.sTextMessageSavedData.g_TextMessage[TxtMsgIdentifiedFreeArrayIndex].TxtMsgSecondStringComponent)
|
|
ELSE
|
|
ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME (g_SavedGlobals.sTextMessageSavedData.g_TextMessage[TxtMsgIdentifiedFreeArrayIndex].TxtMsgSecondStringComponent)
|
|
ENDIF
|
|
IF DOES_TEXT_LABEL_EXIST(g_SavedGlobals.sTextMessageSavedData.g_TextMessage[TxtMsgIdentifiedFreeArrayIndex].TxtMsgThirdStringComponent)
|
|
ADD_TEXT_COMPONENT_SUBSTRING_TEXT_LABEL(g_SavedGlobals.sTextMessageSavedData.g_TextMessage[TxtMsgIdentifiedFreeArrayIndex].TxtMsgThirdStringComponent)
|
|
ELSE
|
|
ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME (g_SavedGlobals.sTextMessageSavedData.g_TextMessage[TxtMsgIdentifiedFreeArrayIndex].TxtMsgThirdStringComponent)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
BREAK
|
|
|
|
|
|
|
|
|
|
CASE NUMBER_COMPONENT
|
|
|
|
ADD_TEXT_COMPONENT_INTEGER (g_SavedGlobals.sTextMessageSavedData.g_TextMessage[TxtMsgIdentifiedFreeArrayIndex].TxtMsgNumberComponent)
|
|
|
|
BREAK
|
|
|
|
|
|
|
|
|
|
|
|
CASE STRING_AND_NUMBER_COMPONENT
|
|
|
|
ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME (g_SavedGlobals.sTextMessageSavedData.g_TextMessage[TxtMsgIdentifiedFreeArrayIndex].TxtMsgStringComponent)
|
|
ADD_TEXT_COMPONENT_INTEGER (g_SavedGlobals.sTextMessageSavedData.g_TextMessage[TxtMsgIdentifiedFreeArrayIndex].TxtMsgNumberComponent)
|
|
|
|
|
|
|
|
//Check if any additional strings are required...
|
|
IF g_SavedGlobals.sTextMessageSavedData.g_TextMessage[TxtMsgIdentifiedFreeArrayIndex].TxtMsgNumberOfAdditionalStrings = 1
|
|
AND NOT (ARE_STRINGS_EQUAL ( g_SavedGlobals.sTextMessageSavedData.g_TextMessage[TxtMsgIdentifiedFreeArrayIndex].TxtMsgSecondStringComponent, "NULL"))
|
|
|
|
ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME (g_SavedGlobals.sTextMessageSavedData.g_TextMessage[TxtMsgIdentifiedFreeArrayIndex].TxtMsgSecondStringComponent)
|
|
|
|
ENDIF
|
|
|
|
|
|
IF g_SavedGlobals.sTextMessageSavedData.g_TextMessage[TxtMsgIdentifiedFreeArrayIndex].TxtMsgNumberOfAdditionalStrings = 2
|
|
AND NOT (ARE_STRINGS_EQUAL ( g_SavedGlobals.sTextMessageSavedData.g_TextMessage[TxtMsgIdentifiedFreeArrayIndex].TxtMsgSecondStringComponent, "NULL"))
|
|
AND NOT (ARE_STRINGS_EQUAL ( g_SavedGlobals.sTextMessageSavedData.g_TextMessage[TxtMsgIdentifiedFreeArrayIndex].TxtMsgThirdStringComponent, "NULL"))
|
|
|
|
// ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME (g_SavedGlobals.sTextMessageSavedData.g_TextMessage[TxtMsgIdentifiedFreeArrayIndex].TxtMsgSecondStringComponent)
|
|
// ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME (g_SavedGlobals.sTextMessageSavedData.g_TextMessage[TxtMsgIdentifiedFreeArrayIndex].TxtMsgThirdStringComponent)
|
|
IF DOES_TEXT_LABEL_EXIST(g_SavedGlobals.sTextMessageSavedData.g_TextMessage[TxtMsgIdentifiedFreeArrayIndex].TxtMsgSecondStringComponent)
|
|
ADD_TEXT_COMPONENT_SUBSTRING_TEXT_LABEL(g_SavedGlobals.sTextMessageSavedData.g_TextMessage[TxtMsgIdentifiedFreeArrayIndex].TxtMsgSecondStringComponent)
|
|
ELSE
|
|
ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME (g_SavedGlobals.sTextMessageSavedData.g_TextMessage[TxtMsgIdentifiedFreeArrayIndex].TxtMsgSecondStringComponent)
|
|
ENDIF
|
|
IF DOES_TEXT_LABEL_EXIST(g_SavedGlobals.sTextMessageSavedData.g_TextMessage[TxtMsgIdentifiedFreeArrayIndex].TxtMsgThirdStringComponent)
|
|
ADD_TEXT_COMPONENT_SUBSTRING_TEXT_LABEL(g_SavedGlobals.sTextMessageSavedData.g_TextMessage[TxtMsgIdentifiedFreeArrayIndex].TxtMsgThirdStringComponent)
|
|
ELSE
|
|
ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME (g_SavedGlobals.sTextMessageSavedData.g_TextMessage[TxtMsgIdentifiedFreeArrayIndex].TxtMsgThirdStringComponent)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
|
|
BREAK
|
|
|
|
ENDSWITCH
|
|
|
|
IF g_SavedGlobals.sTextMessageSavedData.g_TextMessage[TxtMsgIdentifiedFreeArrayIndex].TxtMsgSender = NO_CHARACTER //As the sender is no character we can assume this is a gamerTag.
|
|
|
|
TEXT_LABEL_63 s_MPGamerTagTempHolder
|
|
|
|
//Grab played name and apply prefix and suffix for displaying the sender name with the condensed font.
|
|
s_MPGamerTagTempHolder = "<C>"
|
|
s_MPGamerTagTempHolder += g_Temp_MP_SenderString
|
|
s_MPGamerTagTempHolder += "</C>"
|
|
|
|
i_FeedItemId = END_TEXT_COMMAND_THEFEED_POST_MESSAGETEXT (s_TXD_decision, s_TXD_decision, FALSE, TEXT_ICON_MESSAGE, s_MPGamerTagTempHolder)
|
|
|
|
g_Last_App_ActivatableType = ACT_APP_TEXT
|
|
g_Last_App_ActivatableFeedID = i_FeedItemId
|
|
|
|
|
|
|
|
ELSE
|
|
|
|
|
|
|
|
TEXT_LABEL_63 s_TempHolder, s_SocialClubConstruct
|
|
|
|
|
|
|
|
|
|
s_TempHolder = GET_FILENAME_FOR_AUDIO_CONVERSATION(g_sCharacterSheetAll[g_SavedGlobals.sTextMessageSavedData.g_TextMessage[TxtMsgIdentifiedFreeArrayIndex].TxtMsgSender].label)
|
|
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
cdPrintstring ("Strings for text message are: ")
|
|
cdPrintstring (s_TXD_decision)
|
|
cdPrintstring (", ")
|
|
cdPrintstring (s_TempHolder)
|
|
cdPrintnl()
|
|
|
|
#endif
|
|
|
|
|
|
//Check for Social Club sender here. If so, colour yellow. #1562653
|
|
|
|
IF g_SavedGlobals.sTextMessageSavedData.g_TextMessage[TxtMsgIdentifiedFreeArrayIndex].TxtMsgSender = CHAR_SOCIAL_CLUB
|
|
|
|
s_SocialClubConstruct = "~HUD_COLOUR_SOCIAL_CLUB~"
|
|
s_SocialClubConstruct += s_TempHolder
|
|
|
|
|
|
|
|
i_FeedItemId = END_TEXT_COMMAND_THEFEED_POST_MESSAGETEXT (s_TXD_decision, s_TXD_decision, FALSE, TEXT_ICON_MESSAGE, s_SocialClubConstruct)
|
|
|
|
ELSE
|
|
|
|
i_FeedItemId = END_TEXT_COMMAND_THEFEED_POST_MESSAGETEXT (s_TXD_decision, s_TXD_decision, FALSE, TEXT_ICON_MESSAGE, s_TempHolder)
|
|
|
|
ENDIF
|
|
|
|
|
|
g_Last_App_ActivatableType = ACT_APP_TEXT
|
|
g_Last_App_ActivatableFeedID = i_FeedItemId
|
|
|
|
|
|
g_playerTxtmsgHeadshotMP = NULL //Reset headshot holder to NULL now that we have created the feed entry.
|
|
|
|
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
ENDIF
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
cdPrintstring ("CELLPHONE CONT - Feed id is ")
|
|
cdPrintint (i_FeedItemId)
|
|
cdPrintnl()
|
|
|
|
#endif
|
|
|
|
//Update stored text message array index with the feed id so that it can be instantly removed if the text message is deleted by script or user.
|
|
g_SavedGlobals.sTextMessageSavedData.g_TextMessage[TxtMsgIdentifiedFreeArrayIndex].TxtMsgFeedEntryId = i_FeedItemId
|
|
|
|
|
|
ENDPROC
|
|
|
|
|
|
|
|
|
|
|
|
|
|
PROC Create_Email_Feed_Entry()
|
|
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
cdPrintnl()
|
|
cdPrintnl()
|
|
cdPrintString("CELLPHONE_CONT - Creating new EMAIL FEED ENTRY...")
|
|
cdPrintnl()
|
|
cdPrintnl()
|
|
|
|
#endif
|
|
|
|
|
|
CLEAR_BIT (BitSet_CellphoneTU, g_BSTU_DISPLAY_EMAIL_SIGNIFIER)
|
|
|
|
|
|
|
|
|
|
|
|
//We need to determine if the texture and associated dictionary strings passed into the end feed command should be from the character sheet or a generated user headshot
|
|
//If we find a headshot, then we must also update the headshot string holder so the text message app knows to display this rather than the usual pic of the sender.
|
|
//The store for this, TxtMsgHeadshotString, is automatically set to NO_HEADSHOT_REQUIRED previously in ProcessTextMessage() in Cellphone_Private.
|
|
|
|
|
|
TEXT_LABEL_63 s_TXD_decision
|
|
|
|
|
|
IF (g_playerTxtmsgHeadshotMP != NULL) //If this is not null then that means a valid headshot has been generated by Generate_Player_Headshot in net_comms.sch
|
|
|
|
IF (IS_PEDHEADSHOT_VALID (g_playerTxtmsgHeadshotMP))
|
|
|
|
IF (IS_PEDHEADSHOT_READY (g_playerTxtmsgHeadshotMP))
|
|
|
|
s_TXD_decision = GET_PEDHEADSHOT_TXD_STRING(g_playerTxtmsgHeadshotMP)
|
|
|
|
//Keep a copy of the PEDHEADSHOT_ID in the identified free index for later reference by appTextMessage.
|
|
g_TxtMsgHeadshotID[TxtMsgIdentifiedFreeArrayIndex] = g_playerTxtmsgHeadshotMP
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
cdPrintnl()
|
|
cdPrintString("CELLPHONE_CONT - Found Headshot. Storing TxtMsgHeadShotID for this index.")
|
|
cdPrintnl()
|
|
|
|
#endif
|
|
|
|
|
|
ELSE
|
|
|
|
s_TXD_decision = "CHAR_DEFAULT" //default to blank headshot if the headshot is not ready.
|
|
|
|
//Default associated headshotID to NULL
|
|
g_TxtMsgHeadshotID[EmailIdentifiedFreeArrayIndex] = NULL
|
|
|
|
|
|
ENDIF
|
|
|
|
ELSE
|
|
|
|
s_TXD_decision = "CHAR_DEFAULT" //default to blank headshot if the headshot is not valid.
|
|
|
|
//Default associated headshotID to NULL
|
|
g_TxtMsgHeadshotID[EmailIdentifiedFreeArrayIndex] = NULL
|
|
|
|
|
|
ENDIF
|
|
|
|
|
|
ELSE
|
|
|
|
//Not a user headshot, use normal character sheet image instead.
|
|
s_TXD_decision =
|
|
GET_FILENAME_FOR_AUDIO_CONVERSATION (g_sCharacterSheetAll[g_EmailMessage[EmailIdentifiedFreeArrayIndex].EmailSender].picture)
|
|
|
|
//Default associated headshotID to NULL
|
|
g_TxtMsgHeadshotID[EmailIdentifiedFreeArrayIndex] = NULL
|
|
|
|
|
|
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
IF IS_STRING_NULL_OR_EMPTY (s_TXD_decision)
|
|
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
SCRIPT_ASSERT ("Warning: Feed Entry txd decision is null or empty! Using CHAR_DEFAULT instead!")
|
|
PRINTLN("\nWarning: Feed Entry txd decision is null or empty! Using CHAR_DEFAULT instead!\n")
|
|
|
|
#endif
|
|
|
|
|
|
s_TXD_decision = "CHAR_DEFAULT"
|
|
|
|
ELSE
|
|
|
|
IF ARE_STRINGS_EQUAL (s_TXD_decision, "NULL")
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
//SCRIPT_ASSERT ("Warning: Feed Entry txd decision contains NULL. Using CHAR_DEFAULT instead!")
|
|
PRINTLN("\nWarning: Feed Entry txd decision contains NULL. Using CHAR_DEFAULT instead!\n")
|
|
|
|
#endif
|
|
|
|
|
|
s_TXD_decision = "CHAR_DEFAULT"
|
|
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
cdPrintnl()
|
|
cdPrintstring ("CELLPHONE CONT - Sender image string was ")
|
|
cdPrintstring (s_TXD_decision)
|
|
cdPrintnl()
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
IF g_EmailMessage[EmailIdentifiedFreeArrayIndex].EmailSpecialComponents = CAR_LIST_COMPONENT
|
|
OR g_EmailMessage[EmailIdentifiedFreeArrayIndex].EmailSpecialComponents = SUPERAUTOS_LIST_COMPONENT
|
|
OR g_EmailMessage[EmailIdentifiedFreeArrayIndex].EmailSpecialComponents = LEGENDARY_LIST_COMPONENT
|
|
OR g_EmailMessage[EmailIdentifiedFreeArrayIndex].EmailSpecialComponents = PEDALMETAL_LIST_COMPONENT
|
|
OR g_EmailMessage[EmailIdentifiedFreeArrayIndex].EmailSpecialComponents = WARSTOCK_LIST_COMPONENT
|
|
OR g_EmailMessage[EmailIdentifiedFreeArrayIndex].EmailSpecialComponents = ELITAS_LIST_COMPONENT
|
|
OR g_EmailMessage[EmailIdentifiedFreeArrayIndex].EmailSpecialComponents = DOCKTEASE_LIST_COMPONENT
|
|
OR g_EmailMessage[EmailIdentifiedFreeArrayIndex].EmailSpecialComponents = DAILYOBJ_LIST_COMPONENT
|
|
|
|
/* Removed. See bug 847795. This was used when a new car list notification did not include the full list of cars in the feed entry.
|
|
TEXT_LABEL CarListTokenDecision
|
|
|
|
|
|
IF g_CarListMessageDecision = NEW_CAR_LIST
|
|
|
|
CarListTokenDecision = "CELL_256"
|
|
|
|
ELSE
|
|
|
|
CarListTokenDecision = "CELL_254" //Must be updated car list.
|
|
|
|
ENDIF
|
|
*/
|
|
|
|
//BEGIN_TEXT_COMMAND_THEFEED_POST (CarListTokenDecision)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
INT tempConstructionInt = 0
|
|
|
|
|
|
//Decide which tilda a tilda configuration we should use based on how many cars were stipulated when the messsage was sent.
|
|
SWITCH g_EmailMessage[EmailIdentifiedFreeArrayIndex].EmailNumberComponent
|
|
|
|
|
|
CASE 1
|
|
BEGIN_TEXT_COMMAND_THEFEED_POST ("CELL_CL01") //This refers to a label with one ~a~ car component...
|
|
BREAK
|
|
|
|
|
|
CASE 2
|
|
BEGIN_TEXT_COMMAND_THEFEED_POST ("CELL_CL02") //This refers to a label with two ~a~ car components...
|
|
BREAK
|
|
|
|
|
|
|
|
CASE 3
|
|
BEGIN_TEXT_COMMAND_THEFEED_POST ("CELL_CL03") //This refers to a label with three ~a~ car components...
|
|
BREAK
|
|
|
|
|
|
|
|
CASE 4
|
|
BEGIN_TEXT_COMMAND_THEFEED_POST ("CELL_CL04") //This refers to a label with four ~a~ car components...
|
|
BREAK
|
|
|
|
|
|
|
|
CASE 5
|
|
BEGIN_TEXT_COMMAND_THEFEED_POST ("CELL_CL05") //This refers to a label with five ~a~ car components...
|
|
BREAK
|
|
|
|
|
|
|
|
CASE 6
|
|
BEGIN_TEXT_COMMAND_THEFEED_POST ("CELL_CL06") //This refers to a label with six ~a~ car components...
|
|
BREAK
|
|
|
|
|
|
|
|
CASE 7
|
|
BEGIN_TEXT_COMMAND_THEFEED_POST ("CELL_CL07") //This refers to a label with seven ~a~ car components...
|
|
BREAK
|
|
|
|
|
|
|
|
CASE 8
|
|
BEGIN_TEXT_COMMAND_THEFEED_POST ("CELL_CL08") //This refers to a label with eight ~a~ car components...
|
|
BREAK
|
|
|
|
|
|
|
|
CASE 9
|
|
BEGIN_TEXT_COMMAND_THEFEED_POST ("CELL_CL09") //This refers to a label with nine ~a~ car components...
|
|
BREAK
|
|
|
|
|
|
|
|
|
|
ENDSWITCH
|
|
|
|
|
|
//Add in user-defined label at the very start. i.e The first tilda a tilda substring.
|
|
//E.g Grab these cars! The list then follows as the specified amount of substrings.
|
|
|
|
ADD_TEXT_COMPONENT_SUBSTRING_TEXT_LABEL(g_EmailMessage[EmailIdentifiedFreeArrayIndex].EmailLabel)
|
|
|
|
|
|
//Add each separate car as a substring.
|
|
WHILE tempConstructionInt < g_EmailMessage[EmailIdentifiedFreeArrayIndex].EmailNumberComponent
|
|
|
|
//ADD_TEXT_COMPONENT_SUBSTRING_TEXT_LABEL(MPGlobalsAmbience.ImportExportWantedCars[tempConstructionInt]) //This is taken from MP.
|
|
|
|
//Adding in support for multiple car lists at request of 1600460
|
|
SWITCH g_EmailMessage[EmailIdentifiedFreeArrayIndex].EmailSpecialComponents
|
|
|
|
|
|
CASE CAR_LIST_COMPONENT
|
|
|
|
ADD_TEXT_COMPONENT_SUBSTRING_TEXT_LABEL(MPGlobalsAmbience.ImportExportWantedCars[tempConstructionInt]) //This is taken from MP and is the standard import / export list.
|
|
|
|
BREAK
|
|
|
|
|
|
//New additions.
|
|
CASE SUPERAUTOS_LIST_COMPONENT
|
|
|
|
ADD_TEXT_COMPONENT_SUBSTRING_TEXT_LABEL(g_SuperAutosVehicleUnlock[tempConstructionInt]) //This is taken from MP and is the standard import / export list.
|
|
|
|
BREAK
|
|
|
|
|
|
CASE LEGENDARY_LIST_COMPONENT
|
|
|
|
ADD_TEXT_COMPONENT_SUBSTRING_TEXT_LABEL(g_LegendaryVehicleUnlock[tempConstructionInt]) //This is taken from MP and is the standard import / export list.
|
|
|
|
BREAK
|
|
|
|
|
|
CASE PEDALMETAL_LIST_COMPONENT
|
|
|
|
ADD_TEXT_COMPONENT_SUBSTRING_TEXT_LABEL(g_PedalMetalVehicleUnlock[tempConstructionInt]) //This is taken from MP and is the standard import / export list.
|
|
|
|
BREAK
|
|
|
|
|
|
CASE WARSTOCK_LIST_COMPONENT
|
|
|
|
ADD_TEXT_COMPONENT_SUBSTRING_TEXT_LABEL(g_WarstockVehicleUnlock[tempConstructionInt]) //This is taken from MP and is the standard import / export list.
|
|
|
|
BREAK
|
|
|
|
|
|
CASE ELITAS_LIST_COMPONENT
|
|
|
|
ADD_TEXT_COMPONENT_SUBSTRING_TEXT_LABEL(g_ElitasVehicleUnlock[tempConstructionInt]) //This is taken from MP and is the standard import / export list.
|
|
|
|
BREAK
|
|
|
|
|
|
CASE DOCKTEASE_LIST_COMPONENT
|
|
|
|
ADD_TEXT_COMPONENT_SUBSTRING_TEXT_LABEL(g_DockTeaseVehicleUnlock[tempConstructionInt]) //This is taken from MP and is the standard import / export list.
|
|
|
|
BREAK
|
|
|
|
// url:bugstar:7188269 - Exotic Exports - As a QoL update, can we please add the ability to request a text message from Sessanta that lists the vehicles you still need to get that day?
|
|
|
|
CASE DAILYOBJ_LIST_COMPONENT
|
|
|
|
ADD_TEXT_COMPONENT_SUBSTRING_TEXT_LABEL(g_DailyObjectivesList[tempConstructionInt]) //This is taken from MP and is the standard import / export list.
|
|
|
|
BREAK
|
|
|
|
ENDSWITCH
|
|
|
|
|
|
|
|
|
|
|
|
tempConstructionInt ++
|
|
|
|
ENDWHILE
|
|
|
|
|
|
|
|
|
|
|
|
TEXT_LABEL_63 s_TempHolder
|
|
|
|
|
|
s_TempHolder = GET_FILENAME_FOR_AUDIO_CONVERSATION(g_sCharacterSheetAll[g_EmailMessage[EmailIdentifiedFreeArrayIndex].EmailSender].label)
|
|
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
cdPrintstring ("Strings for car list email message are: ")
|
|
cdPrintstring (s_TXD_decision)
|
|
cdPrintstring (", ")
|
|
cdPrintstring (s_TempHolder)
|
|
cdPrintnl()
|
|
|
|
#endif
|
|
|
|
i_FeedItemId = END_TEXT_COMMAND_THEFEED_POST_MESSAGETEXT (s_TXD_decision, s_TXD_decision, FALSE, TEXT_ICON_EMAIL, s_TempHolder)
|
|
|
|
SET_BIT (BitSet_CellphoneTU, g_BSTU_AUTOLAUNCH_NEW_EMAIL_APP) //Critical! Let's flashhand know to launch the MP Email App.
|
|
|
|
g_Last_App_ActivatableType = ACT_APP_EMAIL
|
|
g_Last_App_ActivatableFeedID = i_FeedItemId
|
|
|
|
g_playerTxtmsgHeadshotMP = NULL //Reset headshot holder to NULL now that we have created the feed entry.
|
|
|
|
|
|
ELSE
|
|
|
|
|
|
|
|
|
|
|
|
BEGIN_TEXT_COMMAND_THEFEED_POST (g_EmailMessage[EmailIdentifiedFreeArrayIndex].EmailLabel)
|
|
|
|
SWITCH g_EmailMessage[EmailIdentifiedFreeArrayIndex].EmailSpecialComponents
|
|
|
|
|
|
CASE NO_SPECIAL_COMPONENTS
|
|
//No further additions to text label string need integrated.
|
|
BREAK
|
|
|
|
|
|
|
|
CASE STRING_COMPONENT
|
|
|
|
ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME (g_EmailMessage[EmailIdentifiedFreeArrayIndex].EmailStringComponent)
|
|
|
|
//Check if any additional strings are required...
|
|
IF g_EmailMessage[EmailIdentifiedFreeArrayIndex].EmailNumberOfAdditionalStrings = 1
|
|
AND NOT (ARE_STRINGS_EQUAL ( g_EmailMessage[EmailIdentifiedFreeArrayIndex].EmailSecondStringComponent, "NULL"))
|
|
|
|
ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME (g_EmailMessage[EmailIdentifiedFreeArrayIndex].EmailSecondStringComponent)
|
|
|
|
ENDIF
|
|
|
|
|
|
IF g_EmailMessage[EmailIdentifiedFreeArrayIndex].EmailNumberOfAdditionalStrings = 2
|
|
AND NOT (ARE_STRINGS_EQUAL (g_EmailMessage[EmailIdentifiedFreeArrayIndex].EmailSecondStringComponent, "NULL"))
|
|
AND NOT (ARE_STRINGS_EQUAL (g_EmailMessage[EmailIdentifiedFreeArrayIndex].EmailThirdStringComponent, "NULL"))
|
|
|
|
IF DOES_TEXT_LABEL_EXIST (g_EmailMessage[EmailIdentifiedFreeArrayIndex].EmailSecondStringComponent)
|
|
ADD_TEXT_COMPONENT_SUBSTRING_TEXT_LABEL (g_EmailMessage[EmailIdentifiedFreeArrayIndex].EmailSecondStringComponent)
|
|
ELSE
|
|
ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME (g_EmailMessage[EmailIdentifiedFreeArrayIndex].EmailSecondStringComponent)
|
|
ENDIF
|
|
IF DOES_TEXT_LABEL_EXIST (g_EmailMessage[EmailIdentifiedFreeArrayIndex].EmailThirdStringComponent)
|
|
ADD_TEXT_COMPONENT_SUBSTRING_TEXT_LABEL (g_EmailMessage[EmailIdentifiedFreeArrayIndex].EmailThirdStringComponent)
|
|
ELSE
|
|
ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME (g_EmailMessage[EmailIdentifiedFreeArrayIndex].EmailThirdStringComponent)
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
BREAK
|
|
|
|
|
|
|
|
|
|
CASE NUMBER_COMPONENT
|
|
|
|
ADD_TEXT_COMPONENT_INTEGER (g_EmailMessage[EmailIdentifiedFreeArrayIndex].EmailNumberComponent)
|
|
|
|
BREAK
|
|
|
|
|
|
|
|
|
|
|
|
CASE STRING_AND_NUMBER_COMPONENT
|
|
|
|
ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME (g_EmailMessage[EmailIdentifiedFreeArrayIndex].EmailStringComponent)
|
|
ADD_TEXT_COMPONENT_INTEGER (g_EmailMessage[EmailIdentifiedFreeArrayIndex].EmailNumberComponent)
|
|
|
|
|
|
|
|
//Check if any additional strings are required...
|
|
IF g_EmailMessage[EmailIdentifiedFreeArrayIndex].EmailNumberOfAdditionalStrings = 1
|
|
AND NOT (ARE_STRINGS_EQUAL (g_EmailMessage[EmailIdentifiedFreeArrayIndex].EmailSecondStringComponent, "NULL"))
|
|
|
|
ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME (g_EmailMessage[EmailIdentifiedFreeArrayIndex].EmailSecondStringComponent)
|
|
|
|
ENDIF
|
|
|
|
|
|
IF g_EmailMessage[EmailIdentifiedFreeArrayIndex].EmailNumberOfAdditionalStrings = 2
|
|
AND NOT (ARE_STRINGS_EQUAL (g_EmailMessage[EmailIdentifiedFreeArrayIndex].EmailSecondStringComponent, "NULL"))
|
|
AND NOT (ARE_STRINGS_EQUAL (g_EmailMessage[EmailIdentifiedFreeArrayIndex].EmailThirdStringComponent, "NULL"))
|
|
|
|
IF DOES_TEXT_LABEL_EXIST(g_EmailMessage[EmailIdentifiedFreeArrayIndex].EmailSecondStringComponent)
|
|
ADD_TEXT_COMPONENT_SUBSTRING_TEXT_LABEL(g_EmailMessage[EmailIdentifiedFreeArrayIndex].EmailSecondStringComponent)
|
|
ELSE
|
|
ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME (g_EmailMessage[EmailIdentifiedFreeArrayIndex].EmailSecondStringComponent)
|
|
ENDIF
|
|
IF DOES_TEXT_LABEL_EXIST(g_EmailMessage[EmailIdentifiedFreeArrayIndex].EmailThirdStringComponent)
|
|
ADD_TEXT_COMPONENT_SUBSTRING_TEXT_LABEL(g_EmailMessage[EmailIdentifiedFreeArrayIndex].EmailThirdStringComponent)
|
|
ELSE
|
|
ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME (g_EmailMessage[EmailIdentifiedFreeArrayIndex].EmailThirdStringComponent)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
|
|
BREAK
|
|
|
|
ENDSWITCH
|
|
|
|
|
|
IF g_EmailMessage[EmailIdentifiedFreeArrayIndex].EmailSender = NO_CHARACTER //As the sender is no character we can assume this is a gamerTag.
|
|
|
|
TEXT_LABEL_63 s_MPGamerTagTempHolder
|
|
|
|
//Grab played name and apply prefix and suffix for displaying the sender name with the condensed font.
|
|
s_MPGamerTagTempHolder = "<C>"
|
|
s_MPGamerTagTempHolder += g_Temp_MP_SenderString
|
|
s_MPGamerTagTempHolder += "</C>"
|
|
|
|
i_FeedItemId = END_TEXT_COMMAND_THEFEED_POST_MESSAGETEXT (s_TXD_decision, s_TXD_decision, FALSE, TEXT_ICON_EMAIL, s_MPGamerTagTempHolder)
|
|
|
|
SET_BIT (BitSet_CellphoneTU, g_BSTU_AUTOLAUNCH_NEW_EMAIL_APP) //Critical! Let's flashhand know to launch the MP Email App.
|
|
g_Last_App_ActivatableType = ACT_APP_EMAIL
|
|
g_Last_App_ActivatableFeedID = i_FeedItemId
|
|
|
|
|
|
|
|
ELSE
|
|
|
|
|
|
|
|
TEXT_LABEL_63 s_TempHolder, s_SocialClubConstruct
|
|
|
|
|
|
|
|
|
|
s_TempHolder = GET_FILENAME_FOR_AUDIO_CONVERSATION(g_sCharacterSheetAll[g_EmailMessage[EmailIdentifiedFreeArrayIndex].EmailSender].label)
|
|
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
cdPrintstring ("Strings for email message are: ")
|
|
cdPrintstring (s_TXD_decision)
|
|
cdPrintstring (", ")
|
|
cdPrintstring (s_TempHolder)
|
|
cdPrintnl()
|
|
|
|
#endif
|
|
|
|
|
|
//Check for Social Club sender here. If so, colour yellow. #1562653
|
|
|
|
IF g_EmailMessage[EmailIdentifiedFreeArrayIndex].EmailSender = CHAR_SOCIAL_CLUB
|
|
|
|
s_SocialClubConstruct = "~HUD_COLOUR_SOCIAL_CLUB~"
|
|
s_SocialClubConstruct += s_TempHolder
|
|
|
|
|
|
|
|
i_FeedItemId = END_TEXT_COMMAND_THEFEED_POST_MESSAGETEXT (s_TXD_decision, s_TXD_decision, FALSE, TEXT_ICON_EMAIL, s_SocialClubConstruct)
|
|
|
|
ELSE
|
|
|
|
i_FeedItemId = END_TEXT_COMMAND_THEFEED_POST_MESSAGETEXT (s_TXD_decision, s_TXD_decision, FALSE, TEXT_ICON_EMAIL, s_TempHolder)
|
|
|
|
ENDIF
|
|
|
|
SET_BIT (BitSet_CellphoneTU, g_BSTU_AUTOLAUNCH_NEW_EMAIL_APP) //Critical! Let's flashhand know to launch the MP Email App. //Critical! Let's flashhand know to launch the MP Email App.
|
|
g_Last_App_ActivatableType = ACT_APP_EMAIL
|
|
g_Last_App_ActivatableFeedID = i_FeedItemId
|
|
|
|
|
|
g_playerTxtmsgHeadshotMP = NULL //Reset headshot holder to NULL now that we have created the feed entry.
|
|
|
|
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
ENDIF
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
cdPrintstring ("CELLPHONE CONT - Email Feed id is ")
|
|
cdPrintint (i_FeedItemId)
|
|
cdPrintnl()
|
|
|
|
#endif
|
|
|
|
//Update stored text message array index with the feed id so that it can be instantly removed if the text message is deleted by script or user.
|
|
g_EmailMessage[EmailIdentifiedFreeArrayIndex].EmailFeedEntryId = i_FeedItemId
|
|
|
|
|
|
ENDPROC
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
PROC Vibrate_Pad_For_Text_Message()
|
|
#IF IS_DEBUG_BUILD
|
|
IF GET_COMMANDLINE_PARAM_EXISTS("nocellvibrate")
|
|
EXIT
|
|
ENDIF
|
|
#ENDIF
|
|
|
|
Get_Cellphone_Owner()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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("Vibration - text message. Getting MP VIBRATE STAT..........")
|
|
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.
|
|
|
|
IF NOT IS_PHONE_ONSCREEN()
|
|
SET_CONTROL_SHAKE (PLAYER_CONTROL, 2000, 100)
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
PRINTNL()
|
|
PRINTSTRING("Vibrating pad for text message ")
|
|
|
|
#endif
|
|
|
|
|
|
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
ENDPROC
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
PROC Update_Feed_For_New_Text_Message()
|
|
|
|
|
|
|
|
//Adds new text message signifiers ( feed entry, vibration) if flagged for this message.
|
|
|
|
|
|
IF IS_BIT_SET (BitSet_CellphoneDisplay, g_BS_DISPLAY_NEW_TXTMSG_SIGNIFIER)
|
|
|
|
|
|
Create_TxtMsg_Feed_Entry()
|
|
|
|
Vibrate_Pad_For_Text_Message()
|
|
|
|
//As this text message has been seen to arrive in the feed, let it launch appTexts automatically the next time the phone launches.
|
|
g_savedGlobals.sCellphoneSettingsData.This_Cellphone_Owner_Settings[g_Cellphone.PhoneOwner].g_LaunchToTextMessageScreen = TRUE
|
|
|
|
|
|
//If a new text message has been sent to this character and reached this routine then we can assume it's safe to reset the Read_Auto_Textlaunch timer.
|
|
//The old MustBeRead text message cannot be blocking further message sends for any new message to reach here.
|
|
|
|
|
|
//By including this clause we can make the timer apply to critical messages only.
|
|
//IF g_savedGlobals.sCellphoneSettingsData.This_Cellphone_Owner_Settings[g_Cellphone.PhoneOwner].g_LastMessageSentMustBeRead //Set by ProcessTextMessage before it returns true.
|
|
|
|
IF NETWORK_IS_GAME_IN_PROGRESS()
|
|
|
|
NetRead_Auto_TextLaunchSentTime[g_Cellphone.PhoneOwner] = GET_NETWORK_TIME()
|
|
|
|
Read_Auto_TextLaunch[g_Cellphone.PhoneOwner] = TRUE
|
|
|
|
|
|
ELSE
|
|
|
|
IF NOT IS_BIT_SET (BitSet_CellphoneDisplay, g_BS_SENDING_TXTMSG_TO_ALL_PLAYERS)
|
|
|
|
Read_Auto_TextLaunchSentTime[g_Cellphone.PhoneOwner] = GET_GAME_TIMER()
|
|
|
|
Read_Auto_TextLaunch[g_Cellphone.PhoneOwner] = TRUE
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
cdPrintString("CELLPHONE_CONT - A new text message has been sent or a buffered message newly added. Recipient owner was ")
|
|
cdPrintint(ENUM_TO_INT(g_Cellphone.PhoneOwner))
|
|
cdPrintnl()
|
|
|
|
#endif
|
|
|
|
ELSE
|
|
|
|
|
|
Read_Auto_TextLaunchSentTime[CHAR_MICHAEL] = GET_GAME_TIMER()
|
|
Read_Auto_TextLaunchSentTime[CHAR_TREVOR] = GET_GAME_TIMER()
|
|
Read_Auto_TextLaunchSentTime[CHAR_FRANKLIN] = GET_GAME_TIMER()
|
|
|
|
Read_Auto_TextLaunch[CHAR_MICHAEL] = TRUE
|
|
Read_Auto_TextLaunch[CHAR_TREVOR] = TRUE
|
|
Read_Auto_TextLaunch[CHAR_FRANKLIN] = TRUE
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
cdPrintString("CELLPHONE_CONT - A new text message has been sent or a buffered message newly added for all SP player characters.")
|
|
cdPrintnl()
|
|
|
|
#endif
|
|
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
//ENDIF
|
|
|
|
|
|
|
|
|
|
CLEAR_BIT (BitSet_CellphoneDisplay, g_BS_DISPLAY_NEW_TXTMSG_SIGNIFIER)
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
cdPrintString("CELLPHONE_CONT - Update_Feed_For_New_Text_Message concluded.")
|
|
cdPrintnl()
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
|
|
ENDPROC
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
PROC Check_For_CancelledMPTextData()
|
|
|
|
|
|
IF IS_BIT_SET (BitSet_CellphoneDisplay, g_BS_MP_REQUESTS_RESET_OF_TXT_SIG)
|
|
|
|
CLEAR_BIT (BitSet_CellphoneDisplay, g_BS_MP_REQUESTS_RESET_OF_TXT_SIG)
|
|
|
|
|
|
Get_Cellphone_Owner()
|
|
|
|
g_savedGlobals.sCellphoneSettingsData.This_Cellphone_Owner_Settings[CHAR_MULTIPLAYER].g_LaunchToTextMessageScreen = FALSE
|
|
g_savedGlobals.sCellphoneSettingsData.This_Cellphone_Owner_Settings[CHAR_MULTIPLAYER].g_LastMessageSentMustBeRead = FALSE
|
|
|
|
|
|
ENDIF
|
|
|
|
ENDPROC
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
PROC Check_For_PlayerSwap()
|
|
|
|
|
|
Get_Cellphone_Owner()
|
|
|
|
|
|
|
|
|
|
//Check for any buffered text message or new contact.
|
|
IF g_bInMultiplayer = FALSE
|
|
|
|
IF NOT IS_CELLPHONE_DISABLED_OR_DISABLED_THIS_FRAME_ONLY()
|
|
|
|
|
|
|
|
|
|
IF BufferedText_PostswapPause_Ongoing = FALSE
|
|
|
|
IF g_SavedGlobals.sTextMessageSavedData.g_TextMessage[SP_MICHAEL_BUFFER_INDEX].TxtMsgLockStatus <> TXTMSG_EMPTY
|
|
OR g_SavedGlobals.sTextMessageSavedData.g_TextMessage[SP_FRANKLIN_BUFFER_INDEX].TxtMsgLockStatus <> TXTMSG_EMPTY
|
|
OR g_SavedGlobals.sTextMessageSavedData.g_TextMessage[SP_TREVOR_BUFFER_INDEX].TxtMsgLockStatus <> TXTMSG_EMPTY
|
|
|
|
|
|
SWITCH g_Cellphone.PhoneOwner
|
|
|
|
CASE CHAR_MICHAEL
|
|
|
|
IF g_SavedGlobals.sTextMessageSavedData.g_TextMessage[SP_MICHAEL_BUFFER_INDEX].TxtMsgLockStatus <> TXTMSG_EMPTY
|
|
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintnl()
|
|
cdPrintstring("CELLPHONE_CONT - Found buffered text and current phone owner is Michael")
|
|
cdPrintnl()
|
|
#endif
|
|
|
|
BufferedTextDecision = SP_MICHAEL_BUFFER_INDEX
|
|
BufferedText_PostswapPause_Ongoing = TRUE
|
|
|
|
SETTIMERA(0)
|
|
|
|
ENDIF
|
|
|
|
BREAK
|
|
|
|
|
|
CASE CHAR_FRANKLIN
|
|
|
|
IF g_SavedGlobals.sTextMessageSavedData.g_TextMessage[SP_FRANKLIN_BUFFER_INDEX].TxtMsgLockStatus <> TXTMSG_EMPTY
|
|
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintnl()
|
|
cdPrintstring("CELLPHONE_CONT - Found buffered text and current phone owner is Franklin")
|
|
cdPrintnl()
|
|
#endif
|
|
|
|
BufferedTextDecision = SP_FRANKLIN_BUFFER_INDEX
|
|
BufferedText_PostswapPause_Ongoing = TRUE
|
|
|
|
SETTIMERA(0)
|
|
|
|
ENDIF
|
|
|
|
BREAK
|
|
|
|
|
|
CASE CHAR_TREVOR
|
|
|
|
IF g_SavedGlobals.sTextMessageSavedData.g_TextMessage[SP_TREVOR_BUFFER_INDEX].TxtMsgLockStatus <> TXTMSG_EMPTY
|
|
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintnl()
|
|
cdPrintstring("CELLPHONE_CONT - Found buffered text and current phone owner is Trevor")
|
|
cdPrintnl()
|
|
#endif
|
|
|
|
BufferedTextDecision = SP_TREVOR_BUFFER_INDEX
|
|
BufferedText_PostswapPause_Ongoing = TRUE
|
|
|
|
SETTIMERA(0)
|
|
|
|
ENDIF
|
|
|
|
BREAK
|
|
|
|
|
|
DEFAULT
|
|
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintnl()
|
|
cdPrintstring("CELLPHONE_CONT - Owner was strangely DEFAULT during BufferedText_PostswapPause_Ongoing checks.")
|
|
cdPrintnl()
|
|
#endif
|
|
|
|
|
|
BREAK
|
|
|
|
ENDSWITCH
|
|
|
|
|
|
ENDIF
|
|
|
|
|
|
ELSE // ELSE BufferedText_PostswapPause_Ongoing = TRUE clause...
|
|
|
|
|
|
//If a message has been found in the buffer slot for this player character, send it on to him...
|
|
//Each SP player character has a special array position reserved between the end of the SP reserved portion and the beginning of the MP portion.
|
|
|
|
//For 2413878, it seems as if the player could temporarily be regarded as Michael when playing as a non-story character when leaving DM. This meant that swapping
|
|
//back to story mode from director mode and entering the game as Franklin or Trevor could result in them receiving Michael's buffered text messages.
|
|
//Implementing a timed check to make sure that the character under control is definitely the same as the buffer index detected before sending on the message.
|
|
|
|
IF TIMERA() > 15000
|
|
|
|
BufferedText_PostswapPause_Ongoing = FALSE //Vital. If a change in character is detected we would need to go through the process again if the message hasn't been sent on.
|
|
|
|
BOOL b_BufferChangeDetected = FALSE
|
|
|
|
|
|
Get_Cellphone_Owner() // Ten seconds has elapsed after we detected a buffered text message, let's check it's still the same player under control.
|
|
|
|
|
|
IF BufferedTextDecision = SP_MICHAEL_BUFFER_INDEX
|
|
AND (g_Cellphone.PhoneOwner <> CHAR_MICHAEL)
|
|
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintnl()
|
|
cdPrintstring("CELLPHONE_CONT - Had Buffered message for Michael to deliver but player under control is no longer Michael. Aborting send on.")
|
|
cdPrintnl()
|
|
#endif
|
|
|
|
b_BufferChangeDetected = TRUE
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
IF BufferedTextDecision = SP_FRANKLIN_BUFFER_INDEX
|
|
AND (g_Cellphone.PhoneOwner <> CHAR_FRANKLIN)
|
|
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintnl()
|
|
cdPrintstring("CELLPHONE_CONT - Had Buffered message for Franklin to deliver but player under control is no longer Franklin. Aborting send on.")
|
|
cdPrintnl()
|
|
#endif
|
|
|
|
b_BufferChangeDetected = TRUE
|
|
|
|
ENDIF
|
|
|
|
|
|
IF BufferedTextDecision = SP_TREVOR_BUFFER_INDEX
|
|
AND (g_Cellphone.PhoneOwner <> CHAR_TREVOR)
|
|
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintnl()
|
|
cdPrintstring("CELLPHONE_CONT - Had Buffered message for Trevor to deliver but player under control is no longer Trevor. Aborting send on.")
|
|
cdPrintnl()
|
|
#endif
|
|
|
|
b_BufferChangeDetected = TRUE
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
IF g_SavedGlobals.sTextMessageSavedData.g_TextMessage[BufferedTextDecision].TxtMsgLockStatus <> TXTMSG_EMPTY
|
|
AND b_BufferChangeDetected = FALSE
|
|
|
|
#if FEATURE_SP_DLC_DIRECTOR_MODE
|
|
IF NOT IS_CURRENTLY_ON_MISSION_OF_TYPE (MISSION_TYPE_DIRECTOR) //Block buffer emptying whilst in Director Mode: 2413878
|
|
#endif
|
|
|
|
|
|
//There's a possibility that the text message might not be able to be sent, but won't spam rag here...
|
|
IF SEND_TEXT_MESSAGE_TO_CURRENT_PLAYER (
|
|
g_SavedGlobals.sTextMessageSavedData.g_TextMessage[BufferedTextDecision].TxtMsgSender,
|
|
g_SavedGlobals.sTextMessageSavedData.g_TextMessage[BufferedTextDecision].TxtMsgLabel,
|
|
g_SavedGlobals.sTextMessageSavedData.g_TextMessage[BufferedTextDecision].TxtMsgLockStatus,
|
|
|
|
g_SavedGlobals.sTextMessageSavedData.g_TextMessage[BufferedTextDecision].TxtMsgCritical,
|
|
|
|
g_SavedGlobals.sTextMessageSavedData.g_TextMessage[BufferedTextDecision].TxtMsgAutoUnlockStatus,
|
|
|
|
|
|
g_SavedGlobals.sTextMessageSavedData.g_TextMessage[BufferedTextDecision].TxtMsgReplyStatus,
|
|
|
|
ICON_STANDARD_TEXTMSG,
|
|
TRUE,
|
|
|
|
g_SavedGlobals.sTextMessageSavedData.g_TextMessage[BufferedTextDecision].TxtMsgBarterStatus,
|
|
g_SavedGlobals.sTextMessageSavedData.g_TextMessage[BufferedTextDecision].TxtMsgCanCallSenderStatus)
|
|
|
|
|
|
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintnl()
|
|
cdPrintstring("CELLPHONE_CONT - BUFFERED TEXT Sent buffered text message to new current player. Should not see this in Director Mode.")
|
|
cdPrintnl()
|
|
#endif
|
|
|
|
|
|
//VITAL. Set buffer back to empty for the player character.
|
|
g_SavedGlobals.sTextMessageSavedData.g_TextMessage[BufferedTextDecision].TxtMsgLockStatus = TXTMSG_EMPTY
|
|
|
|
|
|
ENDIF
|
|
|
|
#if FEATURE_SP_DLC_DIRECTOR_MODE
|
|
ENDIF
|
|
#endif
|
|
|
|
|
|
ENDIF //<> TXTMSG_EMPTY and b_bufferChangeDetected check.
|
|
|
|
ENDIF //TimerA elapsed check.
|
|
|
|
|
|
|
|
ENDIF //BufferedText_PostswapPause_Ongoing = FALSE
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
IF BufferedContact_PostswapPause_Ongoing = FALSE
|
|
|
|
|
|
//Check if the player character has any buffered contact that requires a feed entry.
|
|
IF BufferedContactAvailable[ENUM_TO_INT(g_Cellphone.PhoneOwner)]
|
|
|
|
BufferedContact_PostswapPause_Ongoing = TRUE
|
|
|
|
|
|
#if IS_DEBUG_BUILD
|
|
PRINTNL()
|
|
PRINTSTRING("CELLPHONE_CONT - Found buffered contact for new cellphone owner. Now starting threshold pause before submitting feed entry.")
|
|
PRINTSTRING(GET_FILENAME_FOR_AUDIO_CONVERSATION(SignifierData[SIG_CONTACT1].SignifierPrimaryText))
|
|
PRINTNL()
|
|
#endif
|
|
|
|
|
|
BufferOwner = g_Cellphone.PhoneOwner
|
|
|
|
|
|
IF NETWORK_IS_GAME_IN_PROGRESS()
|
|
|
|
Net_Postswap_Buffer_StartTime = GET_NETWORK_TIME()
|
|
|
|
ELSE
|
|
|
|
PostSwap_Buffer_StartTime = GET_GAME_TIMER()
|
|
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
|
|
ELSE
|
|
|
|
IF NETWORK_IS_GAME_IN_PROGRESS()
|
|
|
|
PostSwap_Buffer_TimeDifference = GET_TIME_DIFFERENCE(GET_NETWORK_TIME(), Net_Postswap_Buffer_StartTime)
|
|
|
|
ELSE
|
|
|
|
PostSwap_Buffer_CurrentTime = GET_GAME_TIMER()
|
|
|
|
PostSwap_Buffer_TimeDifference = PostSwap_Buffer_CurrentTime - PostSwap_Buffer_StartTime
|
|
|
|
ENDIF
|
|
|
|
|
|
IF PostSwap_Buffer_TimeDifference > PostSwap_Buffer_TimeThreshold
|
|
|
|
|
|
IF CAN_MISSION_TYPE_START_AGAINST_CURRENT_TYPE(MISSION_TYPE_STORY)
|
|
|
|
SignifierData[SIG_CONTACT1].SignifierPrimaryText = BufferedContactSignifierText[ENUM_TO_INT(g_Cellphone.PhoneOwner)]
|
|
|
|
g_Temp_ContactHeadshotRef = BufferedHeadshotRef[ENUM_TO_INT(g_Cellphone.PhoneOwner)]
|
|
|
|
|
|
//Commented out - occasionally this is overwritten by *something*, possibly a save and can result in a NULL passed. As this only happens twice in the
|
|
//entire game, we're better off removing the generation of this buffered contact feed message. See #1583935
|
|
//SET_BIT (BitSet_CellphoneDisplay, g_BS_DISPLAY_NEW_CONTACT_SIGNIFIER) //Will trigger a new contact feed entry via bit check in this script
|
|
|
|
BufferedContactAvailable[ENUM_TO_INT(g_Cellphone.PhoneOwner)] = FALSE
|
|
|
|
|
|
#if IS_DEBUG_BUILD
|
|
PRINTNL()
|
|
PRINTSTRING("CELLPHONE_CONT - Found buffered contact for new cellphone owner. No longer creating feed entry for buffered contact. See bug #1583935.")
|
|
PRINTNL()
|
|
PRINTSTRING("Contact is in phonebook as ")
|
|
PRINTSTRING(GET_FILENAME_FOR_AUDIO_CONVERSATION(SignifierData[SIG_CONTACT1].SignifierPrimaryText))
|
|
PRINTNL()
|
|
#endif
|
|
|
|
|
|
|
|
BufferedContact_PostswapPause_Ongoing = FALSE
|
|
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
|
|
IF BufferOwner <> g_Cellphone.PhoneOwner //If the cellphone owner has change during the buffer pause, abandon but don't clear the buffer.
|
|
|
|
BufferedContact_PostswapPause_Ongoing = FALSE
|
|
|
|
ENDIF
|
|
|
|
|
|
ENDIF //BufferedContact_PostswapPause_Ongoing = FALSE condition check.
|
|
|
|
|
|
|
|
|
|
|
|
ENDIF //end of NOT IS_CELLPHONE_DISABLED_OR_DISABLED_THIS_FRAME_ONLY() condition check.
|
|
|
|
ENDIF //end of g_bInMultiplayer condition check.
|
|
|
|
|
|
|
|
ENDPROC
|
|
|
|
|
|
|
|
|
|
|
|
FUNC BOOL Check_For_Takeout_Only()
|
|
|
|
IF Is_Phone_Control_Just_Pressed (FRONTEND_CONTROL, INT_TO_ENUM (CONTROL_ACTION, PHONE_TAKEOUT_INPUT))
|
|
//AND NOT (Is_Phone_Control_Pressed (FRONTEND_CONTROL, INT_TO_ENUM (CONTROL_ACTION, PHONE_NAV_LEFT_INPUT)))
|
|
AND NOT (IS_HUD_COMPONENT_ACTIVE(NEW_HUD_WEAPON_WHEEL)) //fix for 653167
|
|
AND NOT (IS_STUNT_JUMP_IN_PROGRESS()) //2177764
|
|
|
|
|
|
//2260093 - TODO request to display a "phone may be impeded" feed message if the tamper decorator exists on the player.
|
|
IF IS_PC_VERSION()
|
|
IF DECOR_EXIST_ON(PLAYER_PED_ID(), "Synched")
|
|
|
|
STRING AlertHeadingString = GET_FILENAME_FOR_AUDIO_CONVERSATION ("CELL_ANTIH_A")
|
|
|
|
BEGIN_TEXT_COMMAND_THEFEED_POST("CELL_ANTIH")
|
|
END_TEXT_COMMAND_THEFEED_POST_MESSAGETEXT("CHAR_SOCIAL_CLUB", "CHAR_SOCIAL_CLUB", FALSE, TEXT_ICON_BLANK, AlertHeadingString)
|
|
|
|
ENDIF
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
//Don't allow the phone to pop up whilst using the sniper scope - #2032679
|
|
//CHECK_AIMING_FIRING_RAGDOLL_STATE_FOR_DPAD_TAKEOUT() further down this function originally handled other aiming checks but the sniper did not set the aiming flag correctly.
|
|
|
|
IF NOT IS_PED_INJURED(PLAYER_PED_ID())
|
|
IF IS_AIMING_THROUGH_SNIPER_SCOPE(PLAYER_PED_ID())
|
|
OR IS_PED_AIMING_FROM_COVER(PLAYER_PED_ID()) //2170729 - this means any weapons aimed from cover will block launch but that's okay, the loophole needed closed across them all.
|
|
//CHECK_AIMING_FIRING... does an IF GET_PED_CONFIG_FLAG(PLAYER_PED_ID(), PCF_IsAimingGun) check anyway which means that aiming with
|
|
//most guns would already block the launch. If the phone's already up, then you can aim. Aiming with the sniper when the phone is up is
|
|
//a special case because of the overlay and is handled in cellphone_flashhand in the b_Sniper_equipped section.
|
|
|
|
IF IS_CONTROL_PRESSED(PLAYER_CONTROL, INPUT_AIM)
|
|
OR IS_CONTROL_PRESSED(PLAYER_CONTROL, INPUT_VEH_AIM)
|
|
RETURN FALSE
|
|
ENDIF
|
|
|
|
ENDIF
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
CellphoneAppAutoLaunchType = ACT_APP_NONE //Reset these as a precaution.
|
|
g_ShouldForceSelectionOfLatestAppItem = FALSE
|
|
|
|
|
|
IF THEFEED_GET_LAST_SHOWN_PHONE_ACTIVATABLE_FEED_ID() = g_Last_App_ActivatableFeedID //The last activatable ID single var should be set whenever an activatable feed entry is generated.
|
|
AND THEFEED_GET_LAST_SHOWN_PHONE_ACTIVATABLE_FEED_ID() <> -1 // The default value when no feed is ongoing.
|
|
|
|
|
|
CellphoneAppAutoLaunchType = g_Last_App_ActivatableType //Grab this now in case it changes during elongated press duration
|
|
|
|
|
|
DpadElongated_StartTime = GET_GAME_TIMER()
|
|
DpadElongated_Difference = 0
|
|
b_DpadElongatedSuccessfullyExpired = FALSE
|
|
|
|
|
|
WHILE Is_Phone_Control_Pressed (FRONTEND_CONTROL, INT_TO_ENUM (CONTROL_ACTION, PHONE_TAKEOUT_INPUT))
|
|
AND DpadElongated_Difference < 250 //Elongated press time.
|
|
AND g_b_PreloadOngoing = FALSE //Make sure any phone call takes precedence here.
|
|
//AND NOT (Is_Phone_Control_Pressed (FRONTEND_CONTROL, INT_TO_ENUM (CONTROL_ACTION, PHONE_NAV_LEFT_INPUT)))
|
|
AND NOT (IS_HUD_COMPONENT_ACTIVE(NEW_HUD_WEAPON_WHEEL))
|
|
|
|
IF g_Current_Number_Of_Signifiers > 0
|
|
DrawSignifierMovie()
|
|
ENDIF
|
|
|
|
WAIT (0)
|
|
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintnl()
|
|
cdPrintstring("Check_For_Takeout_Only() waiting to return true or false...")
|
|
cdPrintnl()
|
|
#endif
|
|
|
|
DpadElongated_CurrentTime = GET_GAME_TIMER()
|
|
|
|
DpadElongated_Difference = DpadElongated_CurrentTime - DpadElongated_StartTime
|
|
|
|
|
|
IF g_Current_Number_Of_Signifiers > 0
|
|
DrawSignifierMovie()
|
|
ENDIF
|
|
|
|
|
|
ENDWHILE
|
|
|
|
|
|
|
|
IF Is_Phone_Control_Pressed (FRONTEND_CONTROL, INT_TO_ENUM (CONTROL_ACTION, PHONE_TAKEOUT_INPUT)) //Check that this is still held...
|
|
AND g_b_PreloadOngoing = FALSE //...and checking this breakout clause.
|
|
AND NOT (IS_HUD_COMPONENT_ACTIVE(NEW_HUD_WEAPON_WHEEL)) //Finally, Making sure this didn't break us out of while loop!
|
|
|
|
b_DpadElongatedSuccessfullyExpired = TRUE // All are okay, must have been successful expiration of DpadElongated_Difference that caused WHILE breakout!
|
|
|
|
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintnl()
|
|
cdPrintstring("Check_For_Takeout_Only() - successful elongated expiration...")
|
|
cdPrintnl()
|
|
#endif
|
|
|
|
ENDIF
|
|
|
|
|
|
IF g_b_PreloadOngoing = FALSE
|
|
|
|
IF b_DpadElongatedSuccessfullyExpired = TRUE
|
|
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintnl()
|
|
cdPrintstring("Check_For_Takeout_Only() says Elongated timer successfully expired. ACT_APP state is ")
|
|
cdPrintint(ENUM_TO_INT(CellphoneAppAutoLaunchType))
|
|
cdPrintnl()
|
|
cdPrintstring ("DpadElongated_Difference was ")
|
|
cdPrintint(DpadElongated_Difference)
|
|
cdPrintnl()
|
|
#endif
|
|
|
|
g_ShouldForceSelectionOfLatestAppItem = TRUE
|
|
|
|
CellphoneAppAutoLaunchType = g_Last_App_ActivatableType //Grab this now in case it changes during elongated press duration
|
|
|
|
IF CellphoneAppAutoLaunchType = ACT_APP_EMAIL
|
|
|
|
//g_Redial_NumpadEntryString[0] = "2221"
|
|
//g_Redial_NumpadEntryString[1] = "2221"
|
|
//g_Redial_NumpadEntryString[2] = "2221"
|
|
|
|
ENDIF
|
|
|
|
|
|
IF CellphoneAppAutoLaunchType = ACT_APP_INVITE
|
|
|
|
//g_Redial_NumpadEntryString[0] = "2222"
|
|
//g_Redial_NumpadEntryString[1] = "2222"
|
|
//g_Redial_NumpadEntryString[2] = "2222"
|
|
|
|
ENDIF
|
|
|
|
|
|
IF CellphoneAppAutoLaunchType = ACT_APP_TEXT
|
|
|
|
//g_Redial_NumpadEntryString[0] = "2223"
|
|
//g_Redial_NumpadEntryString[1] = "2223"
|
|
//g_Redial_NumpadEntryString[2] = "2223"
|
|
|
|
ENDIF
|
|
|
|
|
|
IF CellphoneAppAutoLaunchType = ACT_APP_NONE
|
|
|
|
//g_Redial_NumpadEntryString[0] = "2224"
|
|
//g_Redial_NumpadEntryString[1] = "2224"
|
|
//g_Redial_NumpadEntryString[2] = "2224"
|
|
|
|
ENDIF
|
|
|
|
|
|
IF CellphoneAppAutoLaunchType = ACT_APP_BOSSINV
|
|
|
|
//g_Redial_NumpadEntryString[0] = "2225"
|
|
//g_Redial_NumpadEntryString[1] = "2225"
|
|
//g_Redial_NumpadEntryString[2] = "2225"
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
ELSE
|
|
|
|
CellphoneAppAutoLaunchType = ACT_APP_NONE
|
|
|
|
//g_Redial_NumpadEntryString[0] = "333"
|
|
//g_Redial_NumpadEntryString[1] = "333"
|
|
//g_Redial_NumpadEntryString[2] = "333"
|
|
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintnl()
|
|
cdPrintstring("Check_For_Takeout_Only() says b_DpadElongatedSuccessfullyExpired is still FALSE. Weapon Wheel? ACT_APP state is ")
|
|
cdPrintint(ENUM_TO_INT(CellphoneAppAutoLaunchType))
|
|
cdPrintnl()
|
|
#endif
|
|
|
|
|
|
ENDIF
|
|
|
|
ELSE
|
|
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintnl()
|
|
cdPrintstring("Check_For_Takeout_Only() reporting a preload was ongoing. Setting ACT_APP_NONE state.")
|
|
cdPrintnl()
|
|
#endif
|
|
|
|
CellphoneAppAutoLaunchType = ACT_APP_NONE
|
|
|
|
//g_Redial_NumpadEntryString[0] = "444"
|
|
//g_Redial_NumpadEntryString[1] = "444"
|
|
//g_Redial_NumpadEntryString[2] = "444"
|
|
|
|
|
|
ENDIF
|
|
|
|
|
|
ELSE
|
|
|
|
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintnl()
|
|
cdPrintstring("Check_For_Takeout_Only() says THEFEED_GET_LAST_SHOWN_PHONE_ACTIVATABLE_FEED_ID() is weird or -1")
|
|
cdPrintint(ENUM_TO_INT(CellphoneAppAutoLaunchType))
|
|
cdPrintnl()
|
|
#endif
|
|
|
|
|
|
CellphoneAppAutoLaunchType = ACT_APP_NONE
|
|
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
//Recheck clause post-while before returning true...
|
|
//IF NOT (Is_Phone_Control_Pressed (FRONTEND_CONTROL, INT_TO_ENUM (CONTROL_ACTION, PHONE_NAV_LEFT_INPUT)))
|
|
IF NOT (IS_HUD_COMPONENT_ACTIVE(NEW_HUD_WEAPON_WHEEL)) //fix for 653167
|
|
|
|
|
|
RETURN TRUE
|
|
|
|
ELSE
|
|
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintnl()
|
|
cdPrintstring("WARNING! Check_For_Takeout_Only() was checking for elongated press but weapon wheel pressed during interim. ")
|
|
cdPrintnl()
|
|
#endif
|
|
|
|
CellphoneAppAutoLaunchType = ACT_APP_NONE
|
|
|
|
g_ShouldForceSelectionOfLatestAppItem = FALSE
|
|
|
|
|
|
RETURN FALSE
|
|
|
|
ENDIF
|
|
|
|
ELSE
|
|
|
|
|
|
//Do not reset auto launch or force selection here! The func running again even without a Is_Phone_Control_Just_Pressed may overwrite previous details.
|
|
|
|
RETURN FALSE
|
|
|
|
ENDIF
|
|
|
|
|
|
ENDFUNC
|
|
|
|
|
|
|
|
|
|
PROC Check_User_Altering_PhoneDisplayStatus()
|
|
|
|
|
|
IF Check_For_Takeout_Only()
|
|
OR IS_BIT_SET (BitSet_CellphoneDisplay, g_BS_LAUNCH_PHONE_TO_HOMESCREEN)
|
|
|
|
/* Removed 31.08.10
|
|
WHILE IS_BUTTON_PRESSED(PAD1, INT_TO_ENUM (PAD_BUTTON_NUMBER, PHONE_TAKEOUT_INPUT))
|
|
WAIT(0)
|
|
ENDWHILE
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
CLEAR_BIT (BitSet_CellphoneDisplay, g_BS_LAUNCH_PHONE_TO_HOMESCREEN)
|
|
|
|
|
|
Get_Cellphone_Owner()
|
|
|
|
|
|
|
|
/*Temp for Gurney... Keith to trigger in his stuff alternatively.
|
|
#if IS_DEBUG_BUILD
|
|
|
|
IF NETWORK_IS_IN_CODE_DEVELOPMENT_MODE()
|
|
AND g_bInMultiplayer
|
|
|
|
cdPrintstring ("CELLPHONE_CONT - In MP and Net Code Development Mode has passed true. Will not launch phone.")
|
|
cdPrintnl ()
|
|
|
|
EXIT
|
|
|
|
ENDIF
|
|
|
|
#endif
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
//Update 25.11.11 - by request of TODO 293726 this check has been removed. Phone can be taken out in water.
|
|
/*
|
|
IF NOT (g_Cellphone.PhoneOwner = CHAR_FRANKLIN) //i.e Michael or Trevor
|
|
AND IS_ENTITY_IN_WATER (PLAYER_PED_ID()) //and they are in the water
|
|
AND NOT g_bInMultiplayer //and we're in singleplayer...
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
cdPrintstring ("CELLPHONE_CONT - Can't launch phone as current player character does not have waterproof phone.")
|
|
cdPrintnl ()
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
ELSE //Franklin has a waterproof phone or Michael and Trevor are not in water.
|
|
*/
|
|
|
|
IF NOT IS_ENTITY_DEAD (PLAYER_PED_ID())
|
|
|
|
//The above has gone back in as directed by 990085. Phone use is also killed in cellphone flashhand again.
|
|
IF NOT (IS_PED_SWIMMING_UNDER_WATER (PLAYER_PED_ID()))
|
|
|
|
|
|
|
|
IF CHECK_AIMING_FIRING_RAGDOLL_STATE_FOR_DPAD_TAKEOUT()
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
cdPrintstring ("CELLPHONE_CONT - Can't launch phone as current player character aim, target, fire , ragdoll check has returned TRUE.")
|
|
cdPrintnl ()
|
|
|
|
#endif
|
|
|
|
|
|
ELSE
|
|
|
|
//Make sure phone cannot be taken out again until it has been fully put away by checking if cellphone_flashhand has terminated. See Bug 11411
|
|
IF GET_NUMBER_OF_THREADS_RUNNING_THE_SCRIPT_WITH_THIS_HASH(HASH("cellphone_flashhand")) = 0
|
|
|
|
|
|
//If the phone is playing interference, the user taking the phone out will automatically abort the interference phase and begin ringing.
|
|
IF IS_BIT_SET (BitSet_CellphoneDisplay_Continued, g_BSC_PLAY_INTERFERENCE_AUDIO)
|
|
|
|
CLEAR_BIT (BitSet_CellphoneDisplay_Continued, g_BSC_PLAY_INTERFERENCE_AUDIO)
|
|
|
|
ENDIF
|
|
|
|
|
|
//Preload Work.
|
|
IF g_b_PreloadOngoing = TRUE
|
|
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintnl()
|
|
cdPrintstring("WARNING! Cellphone_Controller has forced breakout from preload as phone has been taken out.")
|
|
cdPrintnl()
|
|
#endif
|
|
|
|
|
|
g_b_PreloadOngoing = FALSE
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
SWITCH g_Cellphone.PhoneDS
|
|
|
|
CASE PDS_AWAY
|
|
g_Cellphone.PhoneDS = PDS_TAKEOUT
|
|
|
|
IF b_DisplayedFeedMessageThisSession = FALSE //2697795 - Check if we need to display a feed message for any unread emails.
|
|
DisplayUnreadMarketingMessage()
|
|
b_DisplayedFeedMessageThisSession = TRUE
|
|
ENDIF
|
|
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintnl()
|
|
cdPrintstring("STATE ASSIGNMENT 35. Cellphone_Controller assigns PDS_TAKEOUT")
|
|
cdPrintnl()
|
|
#endif
|
|
|
|
BREAK
|
|
|
|
/*Handle this transition in cellphone_flashhand.sc
|
|
CASE PDS_MINIMAL
|
|
g_Cellphone.PhoneDS = PDS_MAXIMUM
|
|
BREAK
|
|
*/
|
|
|
|
DEFAULT
|
|
//Do nothing as yet...
|
|
BREAK
|
|
|
|
|
|
|
|
|
|
ENDSWITCH
|
|
|
|
|
|
|
|
|
|
g_Cellphone_Launched_by_Button_Press = TRUE
|
|
|
|
|
|
|
|
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
IF g_bInMultiplayer
|
|
|
|
cdPrintstring ("CELLPHONE_CONT - Launching MULTIPLAYER cellphone November 2018...")
|
|
cdPrintnl()
|
|
|
|
ELSE
|
|
|
|
cdPrintstring ("CELLPHONE_CONT - Launching SINGLEPLAYER cellphone...")
|
|
cdPrintnl()
|
|
|
|
ENDIF
|
|
|
|
|
|
#endif
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
ENDIF
|
|
|
|
|
|
ELSE
|
|
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
cdPrintstring ("CELLPHONE_CONT - Can't launch phone as current player character is swimming under water.")
|
|
cdPrintnl ()
|
|
|
|
#endif
|
|
|
|
|
|
ENDIF //End of "entity in water" check that has been removed.
|
|
|
|
ENDIF //ped dead check
|
|
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
ENDPROC
|
|
|
|
|
|
|
|
|
|
|
|
PROC Cellphone_Draw_Status()
|
|
|
|
|
|
SWITCH g_Cellphone.PhoneDS
|
|
|
|
|
|
|
|
|
|
CASE PDS_TAKEOUT
|
|
|
|
//New
|
|
IF IS_BIT_SET (BitSet_CellphoneDisplay_Continued, g_BSC_PLAY_INTERFERENCE_AUDIO)
|
|
|
|
|
|
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintstring ("CELLPHONE_CONT - Radio interference bit set.")
|
|
cdPrintnl()
|
|
cdPrintnl()
|
|
#endif
|
|
|
|
|
|
|
|
|
|
//Temp! Clear bit immediately for safe check in until sound is actually working. Check Master Mobile Interfence Control in main loop now.
|
|
//CLEAR_BIT (BitSet_CellphoneDisplay_Continued, g_BSC_PLAY_INTERFERENCE_AUDIO)
|
|
|
|
|
|
ELSE
|
|
|
|
|
|
|
|
|
|
|
|
IF IS_THREAD_ACTIVE (Cellphone_FlashResponseThread) //Hack in for holiday... This should stop the phone reappearing during a call with replies segment.
|
|
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintstring ("CELLPHONE_CONT - Cellphone takeout cued but already onscreen.")
|
|
cdPrintnl()
|
|
cdPrintnl()
|
|
#endif
|
|
|
|
|
|
|
|
ELSE
|
|
|
|
|
|
|
|
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintstring ("CELLPHONE_CONT - Cellphone takeout cued...")
|
|
cdPrintnl ()
|
|
cdPrintnl ()
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
IF NOT IS_THREAD_ACTIVE (Cellphone_FlashResponseThread)
|
|
IF GET_NUMBER_OF_THREADS_RUNNING_THE_SCRIPT_WITH_THIS_HASH(HASH("cellphone_flashhand")) = 0
|
|
|
|
|
|
//request_load_scriptstring ("cellphone_flashhand") //Can't use this any longer because of 2067176. Need to render signifier movie during request pause.
|
|
|
|
REQUEST_SCRIPT ("cellphone_flashhand")
|
|
|
|
WHILE NOT HAS_SCRIPT_LOADED ("cellphone_flashhand")
|
|
|
|
WAIT(0)
|
|
|
|
IF g_Current_Number_Of_Signifiers > 0
|
|
DrawSignifierMovie()
|
|
ENDIF
|
|
|
|
ENDWHILE
|
|
|
|
|
|
|
|
|
|
|
|
IF GET_NUMBER_OF_THREADS_RUNNING_THE_SCRIPT_WITH_THIS_HASH(HASH("cellphone_flashhand")) = 0 //1943564 - Required to prevent rare double launch of cellphone_flashhand.
|
|
|
|
Cellphone_FlashResponseThread = START_NEW_SCRIPT ("cellphone_flashhand", DEFAULT_STACK_SIZE)
|
|
|
|
ENDIF
|
|
|
|
SET_SCRIPT_AS_NO_LONGER_NEEDED ("cellphone_flashhand")
|
|
|
|
|
|
|
|
ENDIF
|
|
ENDIF
|
|
|
|
|
|
|
|
HIDE_PHONE_FOR_HOTSWAP (FALSE) //we need to make sure that the phone can be drawn in case any hotswap which had hidden the phone failed to complete.
|
|
|
|
|
|
|
|
//Create_3dPhoneObject() //from cellphone_private.sch //Change requested by bug number 310808 - now in cellphone_flashhand.sc
|
|
|
|
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//NB. This is an important but quite tricky section. Dialogue handler, which controls all phonecalls can stipulate the contents of
|
|
//g_UpcomingConversationInboundForCellphone and g_ShouldPhoneBeForcedOnScreen. If either are true, i.e someone is phoning the player or
|
|
//we want to force the phone into hand for a cutscene, then dialogue handler will also set g_Cellphone.PhoneDS = PDS_TAKEOUT.
|
|
//This script detects this in this switch, and launches flash handler as above. Below, we check for either inbound or force status being
|
|
//true and tell cellphone_flashhand.sc to display the calling screen after we have launched that script.
|
|
|
|
//Otherwise we will display phone in normal launch state if no phonecall is inbound and the phone should not be forced in hand.
|
|
|
|
IF g_UpcomingConversationInboundForCellphone
|
|
OR g_ShouldPhoneBeForcedOnScreen
|
|
|
|
|
|
|
|
//Make sure cellphone_flashhand is running as a failsafe. It should get loaded up above
|
|
IF NOT IS_THREAD_ACTIVE (Cellphone_FlashResponseThread)
|
|
IF GET_NUMBER_OF_THREADS_RUNNING_THE_SCRIPT_WITH_THIS_HASH(HASH("cellphone_flashhand")) = 0
|
|
|
|
//request_load_scriptstring ("cellphone_flashhand") //Can't use this any longer because of 2067176. Need to render signifier movie during request pause.
|
|
|
|
REQUEST_SCRIPT ("cellphone_flashhand")
|
|
|
|
WHILE NOT HAS_SCRIPT_LOADED ("cellphone_flashhand")
|
|
|
|
WAIT(0)
|
|
|
|
IF g_Current_Number_Of_Signifiers > 0
|
|
DrawSignifierMovie()
|
|
ENDIF
|
|
|
|
ENDWHILE
|
|
|
|
|
|
|
|
|
|
IF GET_NUMBER_OF_THREADS_RUNNING_THE_SCRIPT_WITH_THIS_HASH(HASH("cellphone_flashhand")) = 0 //1943564 - Required to prevent rare double launch of cellphone_flashhand.
|
|
|
|
Cellphone_FlashResponseThread = START_NEW_SCRIPT ("cellphone_flashhand", DEFAULT_STACK_SIZE)
|
|
|
|
ENDIF
|
|
|
|
SET_SCRIPT_AS_NO_LONGER_NEEDED ("cellphone_flashhand")
|
|
|
|
ENDIF
|
|
ENDIF
|
|
|
|
|
|
//Autoplay_Fix
|
|
//Perhaps change this to use g_B_Scaleform_Movies_Loaded? Find out if this could possibly change index value...
|
|
//This could be part of a timeout clause.
|
|
|
|
WHILE NOT HAS_SCALEFORM_MOVIE_LOADED (SF_MovieIndex) //make sure that movies requested by cellphone_flashhand have been loaded in.
|
|
AND g_B_External_Interrupt_Autoplay_MovieFail_Flag = FALSE //Only perform this WHILE check if the MovieFail has not been flagged TRUE. Critical!
|
|
//OR NOT HAS_SCALEFORM_MOVIE_LOADED (SF_MovieButtonsIndex)
|
|
WAIT(0)
|
|
|
|
IF g_Current_Number_Of_Signifiers > 0
|
|
DrawSignifierMovie()
|
|
ENDIF
|
|
|
|
|
|
ENDWHILE
|
|
|
|
|
|
//Important section!
|
|
|
|
IF g_B_External_Interrupt_Autoplay_MovieFail_Flag = FALSE
|
|
|
|
//Critical!
|
|
g_Cellphone.PhoneDS = PDS_ONGOING_CALL //This will let buildcellphone within dialogue handler continue, as its "looped while" pause can now pass through.
|
|
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintnl()
|
|
cdPrintstring("STATE ASSIGNMENT 36_29. Cellphone_Controller assigns PDS_ONGOING_CALL")
|
|
cdPrintnl()
|
|
|
|
|
|
|
|
cdPrintnl()
|
|
cdPrintstring("CELLPHONE_CONT - Cellphone Controller has set PDS to ONGOING_CALL state.")
|
|
|
|
#endif
|
|
|
|
|
|
Update_Scaleform_VSE ()
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
ELSE
|
|
|
|
b_AutoJoblistLaunchCheck = FALSE //Reset before checking MP and global joblist auto launch check.
|
|
|
|
|
|
IF g_bInMultiplayer
|
|
AND (g_autolaunchJobListApp OR g_sBossAgencyApp.bAutoLaunchAppOnDpadUp ) //This is set and reset by Keith. See bug 955417
|
|
|
|
|
|
b_AutoJoblistLaunchCheck = TRUE
|
|
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
cdPrintnl()
|
|
cdPrintstring("CELLPHONE_CONT - Cellphone Controller has found g_autolaunchJobListApp set to TRUE")
|
|
|
|
#endif
|
|
|
|
ENDIF
|
|
|
|
|
|
//We should launch the text message or joblist app straight away if the critical message or LaunchToText flags are true.
|
|
|
|
IF g_savedGlobals.sCellphoneSettingsData.This_Cellphone_Owner_Settings[g_Cellphone.PhoneOwner].g_LaunchToTextMessageScreen = TRUE
|
|
OR g_savedGlobals.sCellphoneSettingsData.This_Cellphone_Owner_Settings[g_Cellphone.PhoneOwner].g_LastMessageSentMustBeRead = TRUE
|
|
OR b_AutoJoblistLaunchCheck = TRUE
|
|
OR CellphoneAppAutoLaunchType <> ACT_APP_NONE
|
|
|
|
|
|
|
|
WHILE NOT HAS_SCALEFORM_MOVIE_LOADED (SF_MovieIndex) //make sure that movies requested by cellphone_flashhand have been loaded in.
|
|
AND g_B_External_Interrupt_Autoplay_MovieFail_Flag = FALSE //Only perform this WHILE check if the MovieFail has not been flagged TRUE. Critical!
|
|
|
|
WAIT(0)
|
|
|
|
IF g_Current_Number_Of_Signifiers > 0
|
|
DrawSignifierMovie()
|
|
ENDIF
|
|
|
|
ENDWHILE
|
|
|
|
|
|
//For bug 110732, potentially have the launch triggered from within cellphone_flashhand via a bitset global? That way the script can only launch
|
|
//if flashhand is still running. We'll see how potential fix goes. 31.08.11
|
|
IF g_B_External_Interrupt_Autoplay_MovieFail_Flag = FALSE
|
|
//Check for inbound
|
|
|
|
IF g_Cellphone.PhoneDS > PDS_AWAY //Bug 352962 necessitated this addition, although the issue was dormant for movie fails.
|
|
|
|
g_Cellphone.PhoneDS = PDS_MAXIMUM //this needs to be here to prevent PDS_TAKEOUT state retriggering - can't use PDS_RUNNINGAPP as that is part of a secondary check
|
|
//in LAUNCH_CELLPHONE_APPLICATION logic.
|
|
|
|
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintnl()
|
|
cdPrintstring("STATE ASSIGNMENT 37. Cellphone_Controller assigns PDS_MAXIMUM")
|
|
cdPrintnl()
|
|
#endif
|
|
|
|
|
|
IF CellphoneAppAutoLaunchType = ACT_APP_NONE //Must have been text message vars or joblist check from quick takeout that got us to this point...
|
|
|
|
|
|
IF b_AutoJoblistLaunchCheck //Must be in multiplayer for this to have returned true, so Joblist is available.
|
|
//Auto launch of joblist takes precedence over new text messages. After Keith clears the joblist flag, the text
|
|
//message app will launch next time round if the phone is put away and taken out again without opening any texts.
|
|
|
|
// KGM 6/12/12: We no longer want to launch the app, but the joblist icon should be highlighted (it is automatically at the moment)
|
|
// However, it should still take priority over Critical Text Messages so I've left the code as-is but with the launch line commented out
|
|
//LAUNCH_CELLPHONE_APPLICATION (AppMPJOBLIST, FALSE, TRUE)
|
|
|
|
ELSE
|
|
|
|
|
|
IF g_bInMultiplayer = FALSE //It has been requested that a stored, unread text does not force the phone to the text screen on takeout. #985697
|
|
|
|
|
|
//Removed for 185537 as part of g_BSTU_QUICK_LAUNCH_SNAPMATIC mechanism. Texts use the elongated press like the invites and email now.
|
|
//LAUNCH_CELLPHONE_APPLICATION (appTEXTS, FALSE, TRUE) //Launch appTextMessage straight away, do not load scaleform movies again and override screen check
|
|
|
|
//Added for 1918479 to handle potential block of critical messages.
|
|
IF g_savedGlobals.sCellphoneSettingsData.This_Cellphone_Owner_Settings[g_Cellphone.PhoneOwner].g_LastMessageSentMustBeRead = TRUE
|
|
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintnl()
|
|
cdPrintstring("CELLPHONE_CONTROLLER - Cellphone_Controller LAUNCHING TEXT MESSAGE App for Critical message.")
|
|
cdPrintnl()
|
|
#endif
|
|
|
|
|
|
CC_INTERNAL_LAUNCH_CELLPHONE_APPLICATION (appTEXTS, FALSE, TRUE)
|
|
|
|
|
|
/*
|
|
|
|
LAUNCH_CELLPHONE_APPLICATION (appTEXTS, FALSE, TRUE)
|
|
|
|
*/
|
|
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
|
|
ELSE
|
|
|
|
|
|
IF CellphoneAppAutoLaunchType = ACT_APP_TEXT
|
|
|
|
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintnl()
|
|
cdPrintstring("CELLPHONE_CONT - ACT_APP_TEXT auto launch through flashhand signposted!")
|
|
cdPrintnl()
|
|
#endif
|
|
|
|
|
|
ENDIF
|
|
|
|
|
|
IF CellphoneAppAutoLaunchType = ACT_APP_EMAIL
|
|
|
|
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintnl()
|
|
cdPrintstring("CELLPHONE_CONT - ACT_APP_EMAIL auto launch through flashhand signposted!")
|
|
cdPrintnl()
|
|
#endif
|
|
|
|
|
|
ENDIF
|
|
|
|
|
|
IF CellphoneAppAutoLaunchType = ACT_APP_INVITE
|
|
|
|
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintnl()
|
|
cdPrintstring("CELLPHONE_CONT - ACT_APP_INVITE auto launch through flashhand signposted!")
|
|
cdPrintnl()
|
|
#endif
|
|
|
|
|
|
ENDIF
|
|
|
|
|
|
IF CellphoneAppAutoLaunchType = ACT_APP_BOSSINV
|
|
|
|
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintnl()
|
|
cdPrintstring("CELLPHONE_CONT - ACT_APP_BOSSINV auto launch through flashhand signposted!")
|
|
cdPrintnl()
|
|
#endif
|
|
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
ENDIF
|
|
|
|
ELSE
|
|
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintnl()
|
|
cdPrintstring("CELLPHONE_CONT - Whilst waiting on movies to load from flashhand after takeout, phone was set to away or disabled, not assigning PDS_MAXIMUM, EC 1")
|
|
cdPrintnl()
|
|
#endif
|
|
|
|
ENDIF
|
|
|
|
|
|
ENDIF
|
|
|
|
ELSE
|
|
|
|
|
|
WHILE NOT HAS_SCALEFORM_MOVIE_LOADED (SF_MovieIndex) //make sure that movies requested by cellphone_flashhand have been loaded in.
|
|
AND g_B_External_Interrupt_Autoplay_MovieFail_Flag = FALSE //Only perform this WHILE check if the MovieFail has not been flagged TRUE. Critical!
|
|
WAIT(0)
|
|
|
|
IF g_Current_Number_Of_Signifiers > 0
|
|
DrawSignifierMovie()
|
|
ENDIF
|
|
|
|
ENDWHILE
|
|
|
|
|
|
IF g_B_External_Interrupt_Autoplay_MovieFail_Flag = FALSE
|
|
|
|
|
|
IF g_Cellphone.PhoneDS > PDS_AWAY //Bug 352962 necessitated this addition, although the issue was dormant for movie fails.
|
|
|
|
|
|
IF g_UpcomingConversationInboundForCellphone
|
|
OR g_ShouldPhoneBeForcedOnScreen
|
|
|
|
g_Cellphone.PhoneDS = PDS_ONGOING_CALL //This will let buildcellphone within dialogue handler continue, as its "looped while" pause can now pass through.
|
|
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintnl()
|
|
cdPrintstring("STATE ASSIGNMENT EMERGENCY CLAUSE 1. Cellphone_Controller wasn't expecting a call when taken out but one has appeared during movie load. #1520932")
|
|
cdPrintnl()
|
|
#endif
|
|
|
|
|
|
ELSE
|
|
|
|
g_Cellphone.PhoneDS = PDS_MAXIMUM
|
|
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintnl()
|
|
cdPrintstring("STATE ASSIGNMENT 38. Cellphone_Controller assigns PDS_MAXIMUM")
|
|
cdPrintnl()
|
|
#endif
|
|
|
|
ENDIF
|
|
|
|
ELSE
|
|
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintnl()
|
|
cdPrintstring("CELLPHONE_CONT - Whilst waiting on movies to load from flashhand after takeout, phone was set to away or disabled, not assigning PDS_MAXIMUM, EC 2")
|
|
cdPrintnl()
|
|
#endif
|
|
|
|
ENDIF
|
|
|
|
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
ENDIF //g_BSC_PLAY_INTERFERENCE_AUDIO
|
|
|
|
|
|
BREAK
|
|
|
|
|
|
/* Comment these in if we need to see explicit details - they will spam every frame though!
|
|
CASE PDS_AWAY
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
cdPrintnl()
|
|
cdPrintstring ("CELLPHONE_CONTROLLER - Cellphone_Draw_Status reports that phone state has been set to PDS_AWAY")
|
|
cdPrintnl()
|
|
|
|
#endif
|
|
|
|
BREAK
|
|
|
|
|
|
|
|
CASE PDS_DISABLED
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
cdPrintnl()
|
|
cdPrintstring ("CELLPHONE_CONTROLLER - Cellphone_Draw_Status reports that phone state has been set to PDS_DISABLED")
|
|
cdPrintnl()
|
|
|
|
#endif
|
|
|
|
BREAK
|
|
|
|
|
|
|
|
DEFAULT
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
cdPrintnl()
|
|
cdPrintstring ("CELLPHONE_CONTROLLER - Cellphone_Draw_Status reports that phone state is not DISABLED, TAKEOUT or AWAY")
|
|
cdPrintnl()
|
|
|
|
#endif
|
|
|
|
BREAK
|
|
*/
|
|
|
|
|
|
ENDSWITCH
|
|
|
|
|
|
ENDPROC
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
PROC Cinematic_Cam_Handler()
|
|
|
|
|
|
IF g_DelayCinematicCamReinstatement = INITIALISE_DELAY
|
|
|
|
SET_INPUT_EXCLUSIVE (PLAYER_CONTROL, (INT_TO_ENUM (CONTROL_ACTION, PHONE_NEGATIVE_INPUT)))
|
|
|
|
|
|
SETTIMERB(0)
|
|
|
|
g_DelayCinematicCamReinstatement = ONGOING_DELAY
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
IF g_DelayCinematicCamReinstatement = ONGOING_DELAY
|
|
|
|
|
|
SET_INPUT_EXCLUSIVE (PLAYER_CONTROL, (INT_TO_ENUM (CONTROL_ACTION, PHONE_NEGATIVE_INPUT)))
|
|
|
|
IF TIMERB() > 500
|
|
|
|
//SET_CINEMATIC_BUTTON_ACTIVE (TRUE)
|
|
g_DelayCinematicCamReinstatement = NO_DELAY_REQUIRED
|
|
|
|
ENDIF
|
|
|
|
|
|
ENDIF
|
|
|
|
|
|
ENDPROC
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
PROC Check_For_Disable_Cellphone_ThisFrameOnly()
|
|
|
|
|
|
|
|
IF (IS_BIT_SET (BitSet_CellphoneDisplay_Continued, g_BSC_REQUESTED_DISABLE_CELLPHONE_THIS_FRAME))
|
|
|
|
IF NOT (g_Cellphone.PhoneDS = PDS_DISABLED) //If the phone has already been permanently disabled, don't set state to this frame only.
|
|
|
|
g_Cellphone.PhoneDS = PDS_DISABLED_THIS_FRAME_ONLY
|
|
|
|
#if IS_DEBUG_BUILD
|
|
g_Cellphone_Disable_ThisFrameOnly_WidgetToggle = TRUE
|
|
#endif
|
|
|
|
ENDIF
|
|
|
|
CLEAR_BIT (BitSet_CellphoneDisplay_Continued, g_BSC_REQUESTED_DISABLE_CELLPHONE_THIS_FRAME)
|
|
|
|
EXIT //Exit the procedure this frame.
|
|
|
|
ENDIF
|
|
|
|
|
|
IF NOT (IS_BIT_SET (BitSet_CellphoneDisplay_Continued, g_BSC_REQUESTED_DISABLE_CELLPHONE_THIS_FRAME))
|
|
|
|
|
|
IF NOT (g_Cellphone.PhoneDS = PDS_DISABLED) //Perhaps just check for is PDS_DISABLED_THIS_FRAME_ONLY?
|
|
|
|
IF g_Cellphone.PhoneDS < PDS_TAKEOUT //If the phone's in takeout state or beyond, don't assign AWAY. Critical!
|
|
g_Cellphone.PhoneDS = PDS_AWAY //only re-enables to AWAY state if phone is not in permanently disabled state.
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
#if IS_DEBUG_BUILD
|
|
g_Cellphone_Disable_ThisFrameOnly_WidgetToggle = FALSE
|
|
#endif
|
|
|
|
|
|
EXIT
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
ENDPROC
|
|
|
|
|
|
|
|
|
|
|
|
PROC Check_For_Disable_Camera_App_ThisFrameOnly()
|
|
|
|
|
|
IF (IS_BIT_SET (BitSet_CellphoneDisplay_Continued, g_BSC_REQUESTED_DISABLE_CAMERA_APP_THIS_FRAME))
|
|
|
|
SET_BIT (BitSet_CellphoneDisplay_Continued, g_BSC_SHOULD_DISABLE_CAMERA_APP_THIS_FRAME)
|
|
|
|
CLEAR_BIT (BitSet_CellphoneDisplay_Continued, g_BSC_REQUESTED_DISABLE_CAMERA_APP_THIS_FRAME)
|
|
|
|
//#if IS_DEBUG_BUILD()
|
|
// DISPLAY_TEXT_WITH_LITERAL_STRING (0.55, 0.54, "STRING", "IS_REQUEST_BIT_SET")
|
|
// WAIT(2000)
|
|
//#endif
|
|
|
|
EXIT //Exit the procedure this frame.
|
|
|
|
ENDIF
|
|
|
|
|
|
IF NOT (IS_BIT_SET (BitSet_CellphoneDisplay_Continued, g_BSC_REQUESTED_DISABLE_CAMERA_APP_THIS_FRAME))
|
|
|
|
CLEAR_BIT (BitSet_CellphoneDisplay_Continued, g_BSC_SHOULD_DISABLE_CAMERA_APP_THIS_FRAME)
|
|
|
|
//#if IS_DEBUG_BUILD()
|
|
// DISPLAY_TEXT_WITH_LITERAL_STRING (0.55, 0.54, "STRING", "NOT_SET")
|
|
// WAIT(2000)
|
|
//#endif
|
|
|
|
|
|
EXIT
|
|
|
|
ENDIF
|
|
|
|
|
|
ENDPROC
|
|
|
|
|
|
|
|
|
|
PROC Check_For_Disable_Internet_App_ThisFrameOnly()
|
|
|
|
|
|
IF (IS_BIT_SET (BitSet_CellphoneDisplay_Continued, g_BSC_REQUESTED_DISABLE_INTERNET_APP_THIS_FRAME))
|
|
|
|
SET_BIT (BitSet_CellphoneDisplay_Continued, g_BSC_SHOULD_DISABLE_INTERNET_APP_THIS_FRAME)
|
|
|
|
CLEAR_BIT (BitSet_CellphoneDisplay_Continued, g_BSC_REQUESTED_DISABLE_INTERNET_APP_THIS_FRAME)
|
|
|
|
|
|
EXIT
|
|
|
|
ENDIF
|
|
|
|
|
|
IF NOT (IS_BIT_SET (BitSet_CellphoneDisplay_Continued, g_BSC_REQUESTED_DISABLE_INTERNET_APP_THIS_FRAME))
|
|
|
|
CLEAR_BIT (BitSet_CellphoneDisplay_Continued, g_BSC_SHOULD_DISABLE_INTERNET_APP_THIS_FRAME)
|
|
|
|
|
|
EXIT
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
ENDPROC
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
PROC Create_Cellphone_Widget_Group()
|
|
|
|
|
|
|
|
START_WIDGET_GROUP ("Cellphone and Dialogue Debug")
|
|
|
|
ADD_WIDGET_BOOL("Disable Cellphone", g_Cellphone_Disable_WidgetToggle)
|
|
ADD_WIDGET_BOOL("Disable Eyefind Test", g_DisplayNewSideTaskSignifier)
|
|
ADD_WIDGET_BOOL("Display Debug Text in console window outwith stream", g_b_CellDialDebugTextToggle)
|
|
ADD_WIDGET_BOOL("Dump Disable Every Frame details to RAG", g_DumpDisableEveryFrameCaller)
|
|
ADD_WIDGET_BOOL("Test First Person Mode Animations", g_b_ShouldCellphoneUseFirstPersonAnims)
|
|
ADD_WIDGET_BOOL("Use new Contact Feed - Esteban", g_UseContactSignifierNewType)
|
|
ADD_WIDGET_BOOL("Set Eyefind send tag to Marketing", g_DisplayTestPhotoSprite)
|
|
ADD_WIDGET_BOOL("Autofill Message body to bypass profanity check", g_b_InstructEyefindtoSendAutoLongMessage)
|
|
ADD_WIDGET_BOOL("Force re-run of MktPosix grab", g_b_ForceRerunOfMarketingPosixGrab)
|
|
ADD_WIDGET_BOOL("Force Best Quality Photo Sprite", g_HighqualityPhotoSprite)
|
|
ADD_WIDGET_BOOL("Cellphone requested quicksave", g_HasCellphoneRequestedSave)
|
|
ADD_WIDGET_BOOL("Cellphone Disabled This Frame Only", g_Cellphone_Disable_ThisFrameOnly_WidgetToggle)
|
|
ADD_WIDGET_BOOL("Click to test disable every frame", b_TickToRequestDisableEveryFrameOption)
|
|
ADD_WIDGET_BOOL ("Display running movie dump", g_b_DisplayDrawingMovieDump)
|
|
|
|
|
|
|
|
//ADD_WIDGET_BOOL("Enable Feed entries for texts.", b_EnableFeedEntry)
|
|
|
|
ADD_WIDGET_BOOL("Enable trial Phone Hide during call", g_b_AllowHidePhoneDuringCallTrial)
|
|
|
|
|
|
ADD_WIDGET_BOOL("Enable SP Trackify app on homescreen", g_savedGlobals.sCellphoneSettingsData.b_IsTrackifyAppAvailable)
|
|
|
|
ADD_WIDGET_BOOL("Test MP auto launch to AppMPJOBLIST", g_autolaunchJoblistApp)
|
|
|
|
ADD_WIDGET_BOOL("Use Prologue Cellphone", g_Use_Prologue_Cellphone)
|
|
|
|
ADD_WIDGET_BOOL("Secondary app screen available?", g_b_Secondary_Screen_Available)
|
|
|
|
ADD_WIDGET_BOOL("Display Onscreen Standard Conversation info", g_b_DisplayConversationToggle)
|
|
ADD_WIDGET_BOOL("Display Onscreen Standard Procedural Conversation info", g_b_DisplayProceduralConversationToggle)
|
|
|
|
|
|
ADD_WIDGET_BOOL("Allow Dialogue while in water", g_AllowUnderwaterDialogue)
|
|
|
|
ADD_WIDGET_BOOL("Display Script State for Dialogue info", b_DebugConvState)
|
|
|
|
|
|
ADD_WIDGET_BOOL ("Has script disabled signifier movie?", g_Debug_Signifiers_Hidden_by_Script)
|
|
|
|
|
|
ADD_WIDGET_BOOL ("Display Onscreen State Debug", g_Cellphone_Onscreen_State_Debug)
|
|
ADD_WIDGET_BOOL ("Display Hangup and Force Answer Timers", g_b_DebugPhoneTimerDisplay)
|
|
|
|
//ADD_WIDGET_BOOL("Enable Tone Debug - will overwrite game prefs!", b_EnableToneSelection)
|
|
|
|
//ADD_WIDGET_INT_SLIDER ("Current Player Ringtone_Selection", DebugWidgetToneSelection, 0, 5, 1)
|
|
|
|
ADD_WIDGET_BOOL("Run testemergencycall.sc", RunTECToggle)
|
|
|
|
ADD_WIDGET_BOOL("Display in 16-9 mode", g_Cellphone_Ratio_16_9_WidgetToggle)
|
|
|
|
ADD_WIDGET_BOOL("Display in 4-3 mode", g_Cellphone_Ratio_4_3_WidgetToggle)
|
|
|
|
|
|
ADD_WIDGET_BOOL("Cellphone Cam Fullscreen Mode", g_Cellphone_FullScreen_Mode)
|
|
|
|
//ADD_WIDGET_BOOL("Set Cellphone Cam Auto Continue bit", b_Cellphone_Cam_Auto_Continue_On_Toggle)
|
|
|
|
//ADD_WIDGET_BOOL("g_bGameSpyOnline", g_bGameSpyOnline)
|
|
|
|
|
|
ADD_WIDGET_BOOL("Display temp button labels", g_DoDebugTempDraw_Phone)
|
|
|
|
ADD_WIDGET_BOOL("Display test local conv struct data", b_DisplayTestStructData)
|
|
|
|
ADD_WIDGET_BOOL("Purge text message list for Multiplayer", b_PurgeMPTextList)
|
|
|
|
|
|
|
|
|
|
START_WIDGET_GROUP ("Simple Conversation User Test")
|
|
|
|
widgetID_ConvBlock = ADD_TEXT_WIDGET ("Enter your block:")
|
|
widgetID_ConvRoot = ADD_TEXT_WIDGET ("Enter your root:")
|
|
ADD_WIDGET_BOOL ("Play conversation:", b_PlaySimpleConversation)
|
|
|
|
STOP_WIDGET_GROUP ()
|
|
|
|
/*
|
|
|
|
//INFO:
|
|
//PARAM NOTES: Widget id, which can be used in GET_CONTENTS_OF_TEXT_WIDGET and DELETE_WIDGET
|
|
//PURPOSE: Creates a widget in which the user can enter text. More info..
|
|
NATIVE FUNC TEXT_WIDGET_ID ADD_TEXT_WIDGET(STRING Title)
|
|
|
|
//INFO:
|
|
//PARAM NOTES: a string holding the contents of the text widget
|
|
//PURPOSE: Returns the contents of a text widget that has previously been created with ADD_TEXT_WIDGET. More info..
|
|
NATIVE FUNC STRING GET_CONTENTS_OF_TEXT_WIDGET(TEXT_WIDGET_ID id)
|
|
|
|
//INFO:
|
|
//PARAM NOTES:
|
|
//PURPOSE: Sets the contents of a text widget that has previously been created with ADD_TEXT_WIDGET. More info..
|
|
NATIVE PROC SET_CONTENTS_OF_TEXT_WIDGET(TEXT_WIDGET_ID id, STRING NewWidgetContents)
|
|
*/
|
|
|
|
|
|
|
|
START_WIDGET_GROUP ("Alter phone position and rotation")
|
|
|
|
ADD_WIDGET_BOOL("Enable 3d model position adjustment - phone model must be onscreen.", DebugPositionToggle)
|
|
|
|
g_3dPhoneDebugRotVec = g_3dPhoneStartRotVec
|
|
|
|
ADD_WIDGET_FLOAT_SLIDER ("3d_PhonePosX", g_Test3dPhonePosVec.x, -900.0, 900.0, 0.5)
|
|
ADD_WIDGET_FLOAT_SLIDER ("3d_PhonePosY", g_Test3dPhonePosVec.y, -900.0, 900.0, 0.5)
|
|
ADD_WIDGET_FLOAT_SLIDER ("3d_PhonePosZ", g_Test3dPhonePosVec.z, -900.0, 900.0, 0.5)
|
|
|
|
ADD_WIDGET_FLOAT_SLIDER ("3d_PhoneRotX", g_3dPhoneDebugRotVec.x, -900.0, 900.0, 0.05)
|
|
ADD_WIDGET_FLOAT_SLIDER ("3d_PhoneRotY", g_3dPhoneDebugRotVec.y, -900.0, 900.0, 0.05)
|
|
ADD_WIDGET_FLOAT_SLIDER ("3d_PhoneRotZ", g_3dPhoneDebugRotVec.z, -900.0, 900.0, 0.05)
|
|
|
|
STOP_WIDGET_GROUP ()
|
|
|
|
|
|
|
|
|
|
|
|
START_WIDGET_GROUP ("Cellphone Scaleform Selection")
|
|
|
|
ADD_WIDGET_BOOL ("Toggle button labels", g_b_ToggleButtonLabels)
|
|
ADD_WIDGET_BOOL ("Enable Onscreen Gui Change and Info", b_DebugCellphoneGuiInfo)
|
|
|
|
ADD_WIDGET_INT_SLIDER ("Select gui theme", DebugCellphoneGui, 0, 5, 1)
|
|
|
|
STOP_WIDGET_GROUP ()
|
|
|
|
|
|
|
|
|
|
|
|
START_WIDGET_GROUP ("Scaleform Movie and Button placement")
|
|
|
|
ADD_WIDGET_FLOAT_SLIDER ("SF Button Pos X", g_SF_ButtonsPosX, 0.0, 1.0, 0.005)
|
|
ADD_WIDGET_FLOAT_SLIDER ("SF Button Pos Y", g_SF_ButtonsPosY, 0.0, 1.0, 0.005)
|
|
|
|
ADD_WIDGET_FLOAT_SLIDER ("SF Button Size X", g_SF_ButtonsSizeX, 0.0, 1.0, 0.005)
|
|
ADD_WIDGET_FLOAT_SLIDER ("SF Button Size Y", g_SF_ButtonsSizeY, 0.0, 1.0, 0.005)
|
|
|
|
|
|
ADD_WIDGET_FLOAT_SLIDER ("SF MainGUI Pos X", g_SF_PhonePosX, 0.0, 1.0, 0.005)
|
|
ADD_WIDGET_FLOAT_SLIDER ("SF MainGUI Pos Y", g_SF_PhonePosY, 0.0, 1.0, 0.005)
|
|
|
|
ADD_WIDGET_FLOAT_SLIDER ("SF MainGUI Size X", g_SF_PhoneSizeX, 0.0, 1.0, 0.005)
|
|
ADD_WIDGET_FLOAT_SLIDER ("SF MainGUI Size Y", g_SF_PhoneSizeY, 0.0, 1.0, 0.005)
|
|
|
|
STOP_WIDGET_GROUP ()
|
|
|
|
|
|
|
|
|
|
START_WIDGET_GROUP ("Contacts, Dialogue and transition tests")
|
|
|
|
|
|
ADD_WIDGET_BOOL ("Buffered contact available for Michael", BufferedContactAvailable[ENUM_TO_INT(CHAR_MICHAEL)])
|
|
ADD_WIDGET_BOOL ("Buffered contact available for Trevor", BufferedContactAvailable[ENUM_TO_INT(CHAR_TREVOR)])
|
|
ADD_WIDGET_BOOL ("Buffered contact available for Franklin", BufferedContactAvailable[ENUM_TO_INT(CHAR_FRANKLIN)])
|
|
|
|
|
|
ADD_WIDGET_BOOL ("Add miscellaneous contacts for all SP chars", b_AddTestContacts)
|
|
ADD_WIDGET_BOOL ("Add contact for Michael", b_DebugContactForMichael)
|
|
ADD_WIDGET_BOOL ("Add contact for Franklin", b_DebugContactForFranklin)
|
|
ADD_WIDGET_BOOL ("Add contact for Trevor", b_DebugContactForTrevor)
|
|
ADD_WIDGET_BOOL ("Add contact for all SP player chars", b_DebugContactForEveryone)
|
|
|
|
ADD_WIDGET_BOOL ("Add contact for Virtual Multiplayer Char", b_DebugContactForVirtual)
|
|
|
|
|
|
|
|
ADD_WIDGET_BOOL ("Incoming Chat Call test", b_InitiateIncomingChatCall)
|
|
ADD_WIDGET_BOOL ("Outgoing Chat Call test - Phone must be up.", b_InitiateOutgoingChatCall)
|
|
ADD_WIDGET_BOOL ("Set incoming chat as finished", b_Chatfinished)
|
|
ADD_WIDGET_BOOL ("HANG_UP_AND_PUT_AWAY_PHONE()", b_HangUpTest)
|
|
|
|
|
|
|
|
|
|
ADD_WIDGET_BOOL ("Play CHAR_CALL test call", b_CharCallTest)
|
|
ADD_WIDGET_BOOL ("Play CHAR_CALL_WITH_REPLIES test call", b_CharCallReplyTest)
|
|
ADD_WIDGET_BOOL ("Play PLAYER_CALL test call", b_PlayerCallTest)
|
|
ADD_WIDGET_BOOL ("Play PLAYER_CALL_WITH_REPLIES test call", b_PlayerCallReplyTest)
|
|
ADD_WIDGET_BOOL ("Play test conversation", b_PlayerConvTest)
|
|
ADD_WIDGET_BOOL ("Play test random line", b_PlayerRandomTest)
|
|
ADD_WIDGET_BOOL ("Play single line of conv", b_PlayerSingleLineTest)
|
|
ADD_WIDGET_BOOL ("Play conv from specified line", b_PlayerFromLineTest)
|
|
|
|
ADD_WIDGET_BOOL ("Get resumption label from ongoing conversation", b_GetResumptionLabel)
|
|
ADD_WIDGET_BOOL ("Resume conversation from last resumption label", b_ResumeConversation)
|
|
|
|
ADD_WIDGET_BOOL ("Play test Multipart conversation", b_PlayerMultipartTest)
|
|
ADD_WIDGET_BOOL ("Play test Multipart phonecall", b_PlayerMultipartTestCall)
|
|
ADD_WIDGET_BOOL ("Play test Multipart with Replies phonecall", b_PlayerMultipartwithRepliesTestCall)
|
|
|
|
|
|
ADD_WIDGET_BOOL ("Play MP Job Offer", b_JobOfferCallTest)
|
|
|
|
|
|
ADD_WIDGET_BOOL ("Toggle autoplay test", g_bFlowAutoplayInProgress)
|
|
|
|
ADD_WIDGET_BOOL ("Set g_bInMultiplayer to TRUE to mimic MP phone.", b_Switch_to_MultiplayerPhone)
|
|
ADD_WIDGET_BOOL ("Set g_bInMultiplayer to FALSE for SP phone.", b_Switch_to_SingleplayerPhone)
|
|
ADD_WIDGET_BOOL ("Display game type - redisplays if altered by new setting.", b_DisplayGameType)
|
|
|
|
|
|
ADD_WIDGET_BOOL ("Alter Cam Help text to include Send", b_SendCamHelpText)
|
|
|
|
ADD_WIDGET_BOOL ("Remove Send option from Cam Help text", b_RemoveSendCamHelpText)
|
|
|
|
|
|
ADD_WIDGET_BOOL ("Launch Save Game Menu", b_DebugSaveGameTest)
|
|
|
|
|
|
|
|
STOP_WIDGET_GROUP ()
|
|
|
|
|
|
|
|
STOP_WIDGET_GROUP ()
|
|
|
|
|
|
|
|
//g_Cellphone_FullScreen_Mode = TRUE
|
|
|
|
|
|
|
|
ENDPROC
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
|
|
PROC Maintain_Cellphone_Debug()
|
|
|
|
|
|
|
|
|
|
//Phone DISABLE toggle. The mechanism to set the phone to disabled mode is explicit and refers to phone states rather than using the DISABLE_CELLPHONE command from cellphone_public.sch.
|
|
//This is so I can know exactly what has been used to disable the phone and prevent daft "there's nae calls getting through, I'm no sure what I've done!" pish.
|
|
|
|
IF g_Cellphone_Disable_WidgetToggle = TRUE
|
|
|
|
IF NOT (g_Cellphone.PhoneDS = PDS_DISABLED) //This should take precedence over DISABLED_THIS_FRAME_ONLY, so we check for permanent state only.
|
|
|
|
HANG_UP_AND_PUT_AWAY_PHONE() //tidy up call...
|
|
|
|
g_Cellphone.PhoneDS = PDS_DISABLED
|
|
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintnl()
|
|
cdPrintstring("STATE ASSIGNMENT 40. Cellphone_Controller assigns PDS_DISABLED")
|
|
cdPrintnl()
|
|
#endif
|
|
|
|
|
|
|
|
cdPrintstring ("CELLPHONE_CONT - Phone set to disabled by debug widget. No calls will get through and the phone cannot be brought up.")
|
|
cdPrintnl()
|
|
|
|
ENDIF
|
|
|
|
ELSE
|
|
|
|
IF g_Cellphone.PhoneDS = PDS_DISABLED
|
|
|
|
g_Cellphone.PhoneDS = PDS_AWAY
|
|
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintnl()
|
|
cdPrintstring("STATE ASSIGNMENT 41. Cellphone_Controller assigns PDS_AWAY")
|
|
cdPrintnl()
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
cdPrintstring ("CELLPHONE_CONT - Phone woken by debug widget. Calls and phone enabled!")
|
|
cdPrintnl()
|
|
|
|
ENDIF
|
|
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
IF b_TickToRequestDisableEveryFrameOption
|
|
|
|
DISABLE_CELLPHONE_THIS_FRAME_ONLY()
|
|
|
|
//DISABLE_CELLPHONE_CAMERA_APP_THIS_FRAME_ONLY()
|
|
|
|
// b_TickToRequestDisableEveryFrameOption = FALSE
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
IF b_DebugConvState
|
|
|
|
format_medium_ostext (0, 128, 255, 255)
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING (0.5, 0.11, "STRING", "Checks for native mobile phone call ongoing only.")
|
|
|
|
|
|
IF IS_MOBILE_PHONE_CALL_ONGOING()
|
|
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING (0.55, 0.14, "STRING", "Phone call ongoing.")
|
|
|
|
ELSE
|
|
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING (0.55, 0.14, "STRING", "No M. Phone")
|
|
|
|
ENDIF
|
|
|
|
|
|
IF g_IsThisConversationForPhone
|
|
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING (0.1, 0.14, "STRING", "g_ConvForPhone TRUE")
|
|
|
|
ENDIF
|
|
|
|
|
|
format_medium_ostext (0, 128, 255, 255)
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING (0.5, 0.31, "STRING", "Checks for native scripted conversation ongoing only.")
|
|
|
|
IF IS_SCRIPTED_CONVERSATION_ONGOING()
|
|
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING (0.55, 0.34, "STRING", "Scripted Conv.")
|
|
|
|
ELSE
|
|
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING (0.55, 0.34, "STRING", "No S. Conv")
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
format_medium_ostext (0, 128, 255, 255)
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING (0.5, 0.47, "STRING", "Checks for scripted conversation or CONV_STATE_FREE.")
|
|
|
|
IF IS_ANY_CONVERSATION_ONGOING_OR_QUEUED()
|
|
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING (0.55, 0.50, "STRING", "Ongoing or queued.")
|
|
|
|
ELSE
|
|
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING (0.55, 0.50, "STRING", "No Script Conv and Conv Free")
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
#if USE_TU_CHANGES
|
|
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING (0.15, 0.44, "STRING", "Using TU changes")
|
|
|
|
|
|
|
|
IF g_Holder_ForceDLC_DialogueRequest = TRUE
|
|
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING (0.15, 0.64, "STRING", "FDR Holder is TRUE")
|
|
|
|
ENDIF
|
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
/*
|
|
IF Is_Phone_Control_Just_Pressed (FRONTEND_CONTROL, INT_TO_ENUM (CONTROL_ACTION, PHONE_NEGATIVE_INPUT))
|
|
|
|
KILL_FACE_TO_FACE_CONVERSATION()
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
cdPrintnl ()
|
|
cdPrintstring ("CELLPHONE_CONT - Kill face-to-face conversation test fired from this script!")
|
|
cdPrintnl ()
|
|
|
|
#endif
|
|
|
|
ENDIF
|
|
*/
|
|
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
IF g_Cellphone_Onscreen_State_Debug = TRUE
|
|
|
|
|
|
#if USE_CLF_DLC
|
|
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING (0.2, 0.10, "STRING", "Using A_T build")
|
|
|
|
#endif
|
|
|
|
|
|
IF g_CellphonePromptResponse = RESPONDED_NO
|
|
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING (0.2, 0.10, "STRING", "Responded NO")
|
|
|
|
ENDIF
|
|
|
|
|
|
IF g_CellphonePromptResponse = RESPONDED_YES
|
|
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING (0.2, 0.10, "STRING", "Responded YES")
|
|
|
|
ENDIF
|
|
|
|
|
|
IF g_Phone_Active_but_Hidden
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING (0.2, 0.10, "STRING", "Phone Hidden!")
|
|
ENDIF
|
|
|
|
|
|
IF voiceSession.bInVoiceSession = TRUE
|
|
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING (0.4, 0.20, "STRING", "Voice Session Ongoing.")
|
|
|
|
ENDIF
|
|
|
|
IF g_IsThisAnMPChatCall
|
|
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING (0.35, 0.10, "STRING", "g_IsThisAnMPChatCall")
|
|
|
|
ENDIF
|
|
|
|
SWITCH g_cellphone.PhoneDS
|
|
|
|
|
|
|
|
CASE PDS_DISABLED
|
|
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING (0.4, 0.30, "STRING", "Disabled State.")
|
|
|
|
BREAK
|
|
|
|
CASE PDS_SLEEPING
|
|
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING (0.4, 0.30, "STRING", "Sleeping State.")
|
|
|
|
BREAK
|
|
|
|
CASE PDS_AWAY
|
|
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING (0.4, 0.30, "STRING", "Away State.")
|
|
|
|
BREAK
|
|
|
|
CASE PDS_TAKEOUT
|
|
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING (0.4, 0.30, "STRING", "Takeout State.")
|
|
|
|
BREAK
|
|
|
|
|
|
CASE PDS_MINIMAL
|
|
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING (0.4, 0.30, "STRING", "Minimal State.")
|
|
|
|
BREAK
|
|
|
|
|
|
CASE PDS_MAXIMUM
|
|
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING (0.4, 0.30, "STRING", "Maximum State.")
|
|
|
|
BREAK
|
|
|
|
|
|
CASE PDS_RUNNINGAPP
|
|
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING (0.4, 0.30, "STRING", "RunningApp State.")
|
|
|
|
BREAK
|
|
|
|
|
|
CASE PDS_COMPLEXAPP
|
|
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING (0.4, 0.30, "STRING", "ComplexApp State.")
|
|
|
|
BREAK
|
|
|
|
|
|
CASE PDS_ONGOING_CALL
|
|
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING (0.4, 0.30, "STRING", "OngoingCall State.")
|
|
|
|
BREAK
|
|
|
|
|
|
CASE PDS_ATTEMPTING_TO_CALL_CONTACT
|
|
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING (0.4, 0.30, "STRING", "Attempting Call State.")
|
|
|
|
BREAK
|
|
|
|
CASE PDS_DISABLED_THIS_FRAME_ONLY
|
|
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING (0.4, 0.30, "STRING", "Disabled_This_Frame_Only")
|
|
|
|
BREAK
|
|
|
|
|
|
ENDSWITCH
|
|
|
|
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
|
|
IF g_Chosen_Ratio = DISPLAY_16_9
|
|
|
|
IF g_Cellphone_Ratio_4_3_WidgetToggle = TRUE
|
|
|
|
g_Chosen_Ratio = DISPLAY_4_3
|
|
|
|
g_Cellphone_Ratio_16_9_WidgetToggle = FALSE
|
|
|
|
ENDIF
|
|
|
|
ELSE
|
|
|
|
IF g_Cellphone_Ratio_16_9_WidgetToggle = TRUE
|
|
|
|
g_Chosen_Ratio = DISPLAY_16_9
|
|
|
|
g_Cellphone_Ratio_4_3_WidgetToggle = FALSE
|
|
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
|
|
/*
|
|
IF NOT IS_BIT_SET (BitSet_CellphoneDisplay, g_BS_FORCE_CELLPHONE_CAM_AUTO_CONTINUE)
|
|
|
|
|
|
IF b_Cellphone_Cam_Auto_Continue_On_Toggle = TRUE
|
|
|
|
SET_BIT (BitSet_CellphoneDisplay, g_BS_FORCE_CELLPHONE_CAM_AUTO_CONTINUE)
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
cdPrintnl ()
|
|
cdPrintstring ("CELLPHONE_CONT - Bit set for g_BS_FORCE_CELLPHONE_CAM_AUTO_CONTINUE")
|
|
cdPrintnl ()
|
|
|
|
#endif
|
|
|
|
|
|
|
|
ENDIF
|
|
|
|
ELSE
|
|
|
|
IF b_Cellphone_Cam_Auto_Continue_On_Toggle = FALSE
|
|
|
|
CLEAR_BIT (BitSet_CellphoneDisplay, g_BS_FORCE_CELLPHONE_CAM_AUTO_CONTINUE)
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
cdPrintnl ()
|
|
cdPrintstring ("CELLPHONE_CONT - Clearing bit for g_BS_FORCE_CELLPHONE_CAM_AUTO_CONTINUE")
|
|
cdPrintnl ()
|
|
|
|
#endif
|
|
|
|
|
|
|
|
ENDIF
|
|
|
|
ENDIF
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
IF RunTECToggle = TRUE
|
|
|
|
IF GET_NUMBER_OF_THREADS_RUNNING_THE_SCRIPT_WITH_THIS_HASH(HASH ("testemergencycall")) = 0
|
|
|
|
request_load_scriptstring ("testemergencycall")
|
|
|
|
START_NEW_SCRIPT ("testemergencycall", DEFAULT_STACK_SIZE)
|
|
|
|
SET_SCRIPT_AS_NO_LONGER_NEEDED ("testemergencycall")
|
|
|
|
ELSE
|
|
|
|
cdPrintstring ("Testemergencycall is already running...")
|
|
cdPrintnl ()
|
|
|
|
ENDIF
|
|
|
|
RunTECToggle = FALSE
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
IF b_InitiateIncomingChatCall
|
|
|
|
|
|
b_InitiateIncomingChatCall = FALSE
|
|
|
|
INITIATE_INCOMING_CHAT_CALL ("CustomNameZ") //from dialogue public.
|
|
|
|
|
|
ENDIF
|
|
|
|
|
|
IF b_InitiateOutgoingChatCall
|
|
|
|
b_InitiateOutgoingChatCall = FALSE
|
|
|
|
IF IS_PHONE_ONSCREEN()
|
|
LAUNCH_CALL_SCREEN_FOR_OUTGOING_CHAT_CALL ("CustomNameY") //from cellphone public.
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
IF b_ChatFinished
|
|
|
|
b_ChatFinished = FALSE
|
|
|
|
SET_INCOMING_CHAT_CALL_SETUP_AS_FINISHED()
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
IF b_HangUpTest
|
|
|
|
b_HangUpTest = FALSE
|
|
|
|
HANG_UP_AND_PUT_AWAY_PHONE()
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
IF b_CharCallTest
|
|
|
|
//CHAR_CALL_PLAYER_CELLPHONE_FORCE_ANSWER (MyLocalPedStruct, CHAR_FRANKLIN, "JHS1AUD", "JHS1_STP4", CONV_PRIORITY_VERY_HIGH)
|
|
|
|
//ESP4_RCM_1:EPS4AUD]
|
|
|
|
|
|
//ADD_PED_FOR_DIALOGUE (MyLocalPedStruct, 0, PLAYER_PED_ID(), "MICHAEL")
|
|
ADD_PED_FOR_DIALOGUE (MyLocalPedStruct, 3, NULL, "STEVE")
|
|
//ADD_PED_FOR_DIALOGUE (MyLocalPedStruct, 5, NULL, "JIMMYBOS")
|
|
|
|
/*
|
|
IF CHAR_CALL_PLAYER_CELLPHONE_FORCE_ANSWER (MyLocalPedStruct, CHAR_MICHAEL, "EPS4AUD", "EPS4_MRET2", CONV_PRIORITY_VERY_HIGH)
|
|
|
|
//DISABLE_HANGUP_FOR_THIS_CALL(TRUE)
|
|
//DISABLE_CELLPHONE_DIALOGUE_LINE_SKIP (TRUE)
|
|
|
|
ENDIF
|
|
*/
|
|
|
|
|
|
//Testing bug 1086265
|
|
//IF CHAR_CALL_PLAYER_CELLPHONE_FORCE_ANSWER(MyLocalPedStruct, CHAR_STEVE, "FBIPRAU", "FBI4_READY", CONV_PRIORITY_VERY_HIGH)
|
|
IF CHAR_CALL_PLAYER_CELLPHONE (MyLocalPedStruct, CHAR_RICKIE, "FM_1AU", "FM_PLANETAKE", CONV_PRIORITY_VERY_HIGH)
|
|
//DISABLE_HANGUP_FOR_THIS_CALL(TRUE)
|
|
//DISABLE_CELLPHONE_DIALOGUE_LINE_SKIP (TRUE)
|
|
|
|
b_CharCallTest = FALSE
|
|
|
|
//IF NOT IS_DIRECTOR_HEIST_CHARCTER_UNLOCKED(DU_HEIST_RICKIE)
|
|
//SET_DIRECTOR_HEIST_CHARACTER_UNLOCKED(DU_HEIST_RICKIE)
|
|
//cdPrintstring("Unlocked DM Rickie")
|
|
//cdPrintnl()
|
|
//ENDIF
|
|
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
/*
|
|
IF CHAR_CALL_PLAYER_CELLPHONE (MyLocalPedStruct, CHAR_ALL_PLAYERS_CONF, "FB3AUD", "F3_CALL1", CONV_PRIORITY_VERY_HIGH)
|
|
|
|
DISABLE_HANGUP_FOR_THIS_CALL(TRUE)
|
|
|
|
ENDIF
|
|
*/
|
|
|
|
//b_CharCallTest = FALSE
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
IF b_PurgeMPTextList
|
|
|
|
|
|
//CLEAR_TEXT_MESSAGE_SIGNIFIER_FOR_MULTIPLAYER()
|
|
|
|
|
|
PURGE_TEXT_MESSAGES_FOR_MULTIPLAYER()
|
|
|
|
|
|
|
|
b_PurgeMPTextList = FALSE
|
|
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
IF b_CharCallReplyTest
|
|
|
|
|
|
ADD_PED_FOR_DIALOGUE (MyLocalPedStruct, 0, PLAYER_PED_ID(), "MICHAEL")
|
|
ADD_PED_FOR_DIALOGUE (MyLocalPedStruct, 4, NULL, "MARNIE")
|
|
ADD_PED_FOR_DIALOGUE (MyLocalPedStruct, 5, NULL, "JIMMYBOS")
|
|
|
|
|
|
|
|
IF CHAR_CALL_PLAYER_CELLPHONE_WITH_REPLIES(MyLocalPedStruct, CHAR_FRANKLIN, "EPS4AUD", "EPS4_MRET2", CONV_PRIORITY_FLOW_ONLY_USE_AMBIENT_SLOT_BYPASS_SLEEPMODE, "TXT_103", "EPS4_PCLOSE", "EPS4_MCLOSE")
|
|
|
|
KEEP_MP_CALL_ACTIVE_ON_PAUSE_MENU(TRUE)
|
|
|
|
//DISABLE_HANGUP_FOR_THIS_CALL(TRUE)
|
|
|
|
ENDIF
|
|
|
|
b_CharCallReplyTest = FALSE
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
IF b_JobOfferCallTest
|
|
|
|
//CHAR_CALL_PLAYER_CELLPHONE_WITH_MP_JOB_OFFER_FORCE_ANSWER (MyLocalPedStruct, CHAR_FRANKLIN, "JHS1AUD", "JHS1_STP5", CONV_PRIORITY_VERY_HIGH, "TXT_103")
|
|
|
|
|
|
//CHAR_CALL_PLAYER_CELLPHONE_WITH_MP_JOB_OFFER_FORCE_ANSWER (MyLocalPedStruct, CHAR_FRANKLIN, "FB3AUD",
|
|
// "F3_CALL4", CONV_PRIORITY_VERY_HIGH, "MP_PDA_1") //Chumash
|
|
|
|
ADD_PED_FOR_DIALOGUE (MyLocalPedStruct, 0, PLAYER_PED_ID(), "MICHAEL")
|
|
ADD_PED_FOR_DIALOGUE (MyLocalPedStruct, 4, NULL, "MARNIE")
|
|
ADD_PED_FOR_DIALOGUE (MyLocalPedStruct, 5, NULL, "JIMMYBOS")
|
|
|
|
|
|
CHAR_CALL_PLAYER_CELLPHONE_WITH_MP_JOB_OFFER_FORCE_ANSWER (MyLocalPedStruct, CHAR_FRANKLIN, "EPS4AUD",
|
|
"EPS4_MRET2", CONV_PRIORITY_VERY_HIGH, "MP_PDA_1")
|
|
|
|
|
|
|
|
b_JobOfferCallTest = FALSE
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
|
|
IF b_PlayerCallTest
|
|
|
|
/*
|
|
IF PLAYER_CALL_CHAR_CELLPHONE (MyLocalPedStruct, CHAR_FRANKLIN, "FB3AUD", "F3_WRAP", CONV_PRIORITY_LOW)
|
|
|
|
//DISABLE_HANGUP_FOR_THIS_CALL(TRUE)
|
|
|
|
ENDIF
|
|
*/
|
|
|
|
ADD_PED_FOR_DIALOGUE (MyLocalPedStruct, 0, PLAYER_PED_ID(), "MICHAEL")
|
|
ADD_PED_FOR_DIALOGUE (MyLocalPedStruct, 1, NULL, "FRANKLIN")
|
|
|
|
|
|
//PLAYER_CALL_CHAR_CELLPHONE(MyLocalPedStruct, CHAR_LESTER, "JHAUD", "JH_PLAN", CONV_PRIORITY_FLOW_ONLY_USE_AMBIENT_SLOT)
|
|
|
|
//PLAYER_CALL_CHAR_CELLPHONE(MyLocalPedStruct, CHAR_ABIGAIL, "DIVEAU", "DIVE_PHONE", CONV_PRIORITY_VERY_HIGH)
|
|
|
|
//PLAYER_INITIATE_CHAT_CALL (MyLocalPedStruct, CHAR_FRANKLIN, "SLM1AUD", "S1_RDY", CONV_PRIORITY_NON_CRITICAL_CALL)
|
|
|
|
//IF PLAYER_CALL_CHAR_CELLPHONE(MyLocalPedStruct, CHAR_PEGASUS_DELIVERY, "MethAud", "CH1CAL", CONV_PRIORITY_high)
|
|
|
|
|
|
IF PLAYER_CALL_CHAR_CELLPHONE(MyLocalPedStruct, CHAR_TREVOR, "MCH1AUD", "MCH1_CP01M", CONV_PRIORITY_VERY_HIGH)
|
|
|
|
//BLOCK_HUD_PHONE_MOVEMENT_FOR_SWITCH_SCENE_CALL(TRUE)
|
|
|
|
//SET_BIT (BitSet_CellphoneDisplay_Third, g_BSTHIRD_PREVENT_PRELOADED_PHONECALL_START)
|
|
|
|
b_PlayerCallTest = FALSE
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
IF b_PlayerCallReplyTest
|
|
|
|
|
|
ADD_PED_FOR_DIALOGUE (MyLocalPedStruct, 0, PLAYER_PED_ID(), "MICHAEL")
|
|
ADD_PED_FOR_DIALOGUE (MyLocalPedStruct, 1, NULL, "FRANKLIN")
|
|
|
|
|
|
|
|
PLAYER_CALL_CHAR_CELLPHONE_WITH_REPLIES (MyLocalPedStruct, CHAR_FRANKLIN, "JHAUD", "JH_PLAN", CONV_PRIORITY_VERY_HIGH, "TXT_103", "JH_CARLVE", "JH_GONOW")
|
|
|
|
b_PlayerCallReplyTest = FALSE
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
|
|
|
|
IF b_PlayerConvTest
|
|
|
|
|
|
ADD_PED_FOR_DIALOGUE (MyLocalPedStruct, 0, PLAYER_PED_ID(), "FRANKLIN")
|
|
|
|
//ADD_PED_FOR_DIALOGUE (MyLocalPedStruct, 1, NULL, "LAMAR")
|
|
//CREATE_CONVERSATION (MyLocalPedStruct, "FM_1AU", "FM_LAM1", CONV_PRIORITY_MEDIUM)
|
|
|
|
//CREATE_CONVERSATION (MyLocalPedStruct, "JHAUD", "JH_PLAN", CONV_PRIORITY_MEDIUM) //This is a lower priority than non essential calls for testing.
|
|
|
|
//CREATE_CONVERSATION (MyLocalPedStruct, "FAM6AUD", "FAM6_TATT2", CONV_PRIORITY_MEDIUM)
|
|
|
|
|
|
//CREATE_CONVERSATION (MyLocalPedStruct, "FAM6AUD", "FAM6_CHAT1", CONV_PRIORITY_MEDIUM)
|
|
|
|
|
|
//DISABLE_CELLPHONE (TRUE)
|
|
|
|
//WAIT (0)
|
|
|
|
|
|
g_B_ContentCreationPeds_Should_be_added_for_Dialogue = TRUE
|
|
|
|
g_ContentCreationConversationPedsStruct.PedInfo[0].AddPedNativeNumber = 16
|
|
g_ContentCreationConversationPedsStruct.PedInfo[0].VoiceID = "FRANKLIN"
|
|
g_ContentCreationConversationPedsStruct.PedInfo[0].Index = NULL
|
|
g_ContentCreationConversationPedsStruct.PedInfo[0].ActiveInConversation = TRUE
|
|
|
|
|
|
g_ContentCreationConversationPedsStruct.PedInfo[1].AddPedNativeNumber = 17
|
|
g_ContentCreationConversationPedsStruct.PedInfo[1].VoiceID = "MICHAEL"
|
|
g_ContentCreationConversationPedsStruct.PedInfo[1].Index = NULL
|
|
g_ContentCreationConversationPedsStruct.PedInfo[1].ActiveInConversation = TRUE
|
|
|
|
|
|
g_ContentCreationConversationPedsStruct.PedInfo[2].AddPedNativeNumber = 18
|
|
g_ContentCreationConversationPedsStruct.PedInfo[2].VoiceID = "TREVOR"
|
|
g_ContentCreationConversationPedsStruct.PedInfo[2].Index = NULL
|
|
g_ContentCreationConversationPedsStruct.PedInfo[2].ActiveInConversation = FALSE
|
|
|
|
|
|
g_ContentCreationConversationPedsStruct.PedInfo[3].AddPedNativeNumber = 19
|
|
g_ContentCreationConversationPedsStruct.PedInfo[3].VoiceID = "STEVE"
|
|
g_ContentCreationConversationPedsStruct.PedInfo[3].Index = NULL
|
|
g_ContentCreationConversationPedsStruct.PedInfo[3].ActiveInConversation = TRUE
|
|
|
|
|
|
g_ContentCreationConversationPedsStruct.PedInfo[4].AddPedNativeNumber = 20
|
|
g_ContentCreationConversationPedsStruct.PedInfo[4].VoiceID = "STEVE"
|
|
g_ContentCreationConversationPedsStruct.PedInfo[4].Index = NULL
|
|
g_ContentCreationConversationPedsStruct.PedInfo[4].ActiveInConversation = TRUE
|
|
|
|
|
|
|
|
|
|
g_ContentCreationConversationPedsStruct.PedInfo[18].AddPedNativeNumber = 34
|
|
g_ContentCreationConversationPedsStruct.PedInfo[18].VoiceID = "FRANKLIN"
|
|
g_ContentCreationConversationPedsStruct.PedInfo[18].Index = NULL
|
|
g_ContentCreationConversationPedsStruct.PedInfo[18].ActiveInConversation = TRUE
|
|
|
|
|
|
|
|
g_ContentCreationConversationPedsStruct.PedInfo[19].AddPedNativeNumber = 35
|
|
g_ContentCreationConversationPedsStruct.PedInfo[19].VoiceID = "AMANDA"
|
|
g_ContentCreationConversationPedsStruct.PedInfo[19].Index = NULL
|
|
g_ContentCreationConversationPedsStruct.PedInfo[19].ActiveInConversation = TRUE
|
|
|
|
|
|
|
|
|
|
ADD_PED_FOR_DIALOGUE (MyLocalPedStruct, 5, NULL, "LAMAR")
|
|
//CREATE_CONVERSATION (MyLocalPedStruct, "FAM3AUD", "FAM3_MST1", CONV_PRIORITY_MEDIUM)
|
|
|
|
//This truck yours..
|
|
//IF CREATE_CONVERSATION_FROM_SPECIFIC_LINE ( MyLocalPedStruct, "FAM3AUD", "FAM3_MST1", "FAM3_MST1_4", CONV_PRIORITY_MEDIUM )
|
|
|
|
//Feb 14
|
|
//IF CREATE_CONVERSATION ( MyLocalPedStruct, "ARM1AUD", "ARM1_TOW2", CONV_PRIORITY_MEDIUM)
|
|
|
|
IF CREATE_CONVERSATION (MyLocalPedStruct, "PBPAU", "PBP_GOGET", CONV_PRIORITY_MEDIUM)
|
|
|
|
|
|
//Rowan test.
|
|
//IF CREATE_CONVERSATION ( MyLocalPedStruct, "MPOBHAU", "MPOBH1", CONV_PRIORITY_MEDIUM)
|
|
|
|
//IF CREATE_CONVERSATION( MyLocalPedStruct, "ARMYAUD", "ARMY_WRN1", CONV_PRIORITY_MEDIUM)
|
|
|
|
|
|
b_PlayerConvTest = FALSE
|
|
|
|
//g_B_ContentCreationPeds_Should_be_added_for_Dialogue = FALSE
|
|
|
|
ENDIF
|
|
|
|
//Long conversation subtitles for testing landscape phone mode fix.
|
|
//CREATE_CONVERSATION ( MyLocalPedStruct, "D1AUD", "DS1_1", CONV_PRIORITY_MEDIUM )
|
|
|
|
|
|
//CREATE_CONVERSATION (MyLocalPedStruct, "FAM2AUD", "FAM2_BGUY2", CONV_PRIORITY_MEDIUM)
|
|
|
|
// CREATE_CONVERSATION_FROM_SPECIFIC_LINE(MyLocalPedStruct, "EPS6AUD", "EPS6_SPOT", "EPS6_SPOT_3", CONV_PRIORITY_HIGH)
|
|
|
|
|
|
//CREATE_CONVERSATION(MyLocalPedStruct, "EPS6AUD", "EPS6_SPOT", CONV_PRIORITY_MEDIUM)
|
|
|
|
//WAIT (0)
|
|
|
|
//DISABLE_CELLPHONE (TRUE)
|
|
|
|
|
|
|
|
//[txm7_ret1F_1:Txm7aud]
|
|
//CREATE_CONVERSATION (MyLocalPedStruct, "TXM7AUD", "TXM7_ret1F", CONV_PRIORITY_MEDIUM)
|
|
|
|
//CREATE_CONVERSATION (MyLocalPedStruct, "FB3AUD", "F3_DEAD", CONV_PRIORITY_LOW)
|
|
|
|
|
|
//CREATE_CONVERSATION (MyLocalPedStruct, "FMTAUD", "TRV_IG_5a", CONV_PRIORITY_AMBIENT_MEDIUM)
|
|
|
|
|
|
//CREATE_CONVERSATION (MyLocalPedStruct, "FAM1AUD", "FAM1_CLOSER", CONV_PRIORITY_LOW, DISPLAY_SUBTITLES, do_not_add_to_brief_screen)
|
|
|
|
//CREATE_CONVERSATION(MyLocalPedStruct, "REHH1AU", "REHH1_ASK", CONV_PRIORITY_AMBIENT_HIGH)
|
|
|
|
|
|
|
|
//CREATE_CONVERSATION(MyLocalPedStruct, "FAM1AUD", "FAM1_HANGON", CONV_PRIORITY_AMBIENT_HIGH )
|
|
|
|
//CREATE_CONVERSATION(MyLocalPedStruct, "NIGE1AU", "NIGE1_INA", CONV_PRIORITY_AMBIENT_HIGH)
|
|
|
|
|
|
//CREATE_CONVERSATION (MyLocalPedStruct, "RBS1AUD", "RBS1_DRV2", CONV_PRIORITY_VERY_LOW) //very long
|
|
|
|
//CREATE_CONVERSATION (MyLocalPedStruct, "RBS1AUD", "RBS1_BOXHIT", CONV_PRIORITY_VERY_LOW) //very long
|
|
|
|
|
|
//CREATE_CONVERSATION(MyLocalPedStruct, "REHH1AU", "REHH1_SLW", CONV_PRIORITY_AMBIENT_HIGH)
|
|
|
|
|
|
//CREATE_CONVERSATION (MyLocalPedStruct, "RBXd_7AU", "RB_7_GP_G1", CONV_PRIORITY_VERY_LOW)
|
|
|
|
|
|
//CREATE_CONVERSATION (MyLocalPedStruct, "ARM1AUD", "ARM1_CHOICE", CONV_PRIORITY_MEDIUM)
|
|
|
|
|
|
//August 2012 test
|
|
//CREATE_CONVERSATION (MyLocalPedStruct, "MRS3AUD", "MRS3_OUTRO", CONV_PRIORITY_MEDIUM)
|
|
|
|
|
|
|
|
//CREATE_CONVERSATION (MyLocalPedStruct, "MEJ1AUD", "MEJ1_VAN", CONV_PRIORITY_MEDIUM)
|
|
//CREATE_CONVERSATION (MyLocalPedStruct, "MPSCAAU", "DIRTY_WARN", CONV_PRIORITY_MEDIUM)
|
|
|
|
|
|
|
|
|
|
|
|
//ADD_PED_FOR_DIALOGUE (MyLocalPedStruct, 0, PLAYER_PED_ID(), "FRANKLIN")
|
|
//ADD_PED_FOR_DIALOGUE (MyLocalPedStruct, 5, NULL, "TaxiAlonzo")
|
|
|
|
//FR_LF_EC1_1
|
|
|
|
//CREATE_CONVERSATION (MyLocalPedStruct, "FRLFbAU", "FR_LF_EC1", CONV_PRIORITY_MEDIUM)
|
|
|
|
//WRK2_1:CHI2AUD Bolt bug.
|
|
|
|
//CREATE_CONVERSATION (MyLocalPedStruct, "CHI2AUD", "WRK2", CONV_PRIORITY_MEDIUM)
|
|
|
|
//CREATE_CONVERSATION (MyLocalPedStruct, "FBI2AUD", "FBI2_INTER1", CONV_PRIORITY_LOW)
|
|
|
|
|
|
|
|
//CREATE_CONVERSATION (MyLocalPedStruct, "LEM1AUD", "LEM1_ROOF3", CONV_PRIORITY_MEDIUM)
|
|
//CREATE_CONVERSATION (MyLocalPedStruct, "txm9AUD", "LEM1_ROOF3", CONV_PRIORITY_MEDIUM)
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
|
|
IF b_PlayerSingleLineTest
|
|
|
|
|
|
//SC_FOLLOWD_1A:SCAUD]
|
|
|
|
//ADD_PED_FOR_DIALOGUE (MyLocalPedStruct, 1, NULL, "JULIET")
|
|
//PLAY_SINGLE_LINE_FROM_CONVERSATION (MyLocalPedStruct, "SCAUD", "SC_FOLLOWD", "SC_FOLLOWD_2", CONV_PRIORITY_MEDIUM)
|
|
|
|
//PLAY_SINGLE_LINE_FROM_CONVERSATION (MyLocalPedStruct, "RBS1AUD", "RBS1_DRV2", "RBS1_DRV2_6", CONV_PRIORITY_VERY_LOW) //very long
|
|
//PLAY_SINGLE_LINE_FROM_CONVERSATION (MyLocalPedStruct, "RBS1AUD", "RBS1_DRV2", "RBS1_DRV2_6", CONV_PRIORITY_VERY_LOW) //very long
|
|
|
|
|
|
ADD_PED_FOR_DIALOGUE (MyLocalPedStruct, 0, PLAYER_PED_ID(), "FRANKLIN")
|
|
|
|
//ADD_PED_FOR_DIALOGUE (MyLocalPedStruct, 1, NULL, "LAMAR")
|
|
//CREATE_CONVERSATION (MyLocalPedStruct, "FM_1AU", "FM_LAM1", CONV_PRIORITY_MEDIUM)
|
|
|
|
//CREATE_CONVERSATION (MyLocalPedStruct, "JHAUD", "JH_PLAN", CONV_PRIORITY_MEDIUM) //This is a lower priority than non essential calls for testing.
|
|
|
|
//CREATE_CONVERSATION (MyLocalPedStruct, "FAM6AUD", "FAM6_TATT2", CONV_PRIORITY_MEDIUM)
|
|
|
|
|
|
//CREATE_CONVERSATION (MyLocalPedStruct, "FAM6AUD", "FAM6_CHAT1", CONV_PRIORITY_MEDIUM)
|
|
|
|
|
|
//DISABLE_CELLPHONE (TRUE)
|
|
|
|
//WAIT (0)
|
|
|
|
|
|
|
|
|
|
ADD_PED_FOR_DIALOGUE (MyLocalPedStruct, 5, NULL, "LAMAR")
|
|
//CREATE_CONVERSATION (MyLocalPedStruct, "FAM3AUD", "FAM3_MST1", CONV_PRIORITY_MEDIUM)
|
|
|
|
//This truck yours..
|
|
//IF CREATE_CONVERSATION_FROM_SPECIFIC_LINE ( MyLocalPedStruct, "FAM3AUD", "FAM3_MST1", "FAM3_MST1_4", CONV_PRIORITY_MEDIUM )
|
|
|
|
//Feb 14
|
|
//IF PLAY_SINGLE_LINE_FROM_CONVERSATION_USING_V_CONTENT_IN_DLC (MyLocalPedStruct, "ARM1AUD", "ARM1_TOW2", "ARM1_TOW2_3", CONV_PRIORITY_MEDIUM)
|
|
|
|
IF PLAY_SINGLE_LINE_FROM_CONVERSATION (MyLocalPedStruct, "ARM1AUD", "ARM1_TOW2", "ARM1_TOW2_3", CONV_PRIORITY_MEDIUM)
|
|
|
|
|
|
|
|
|
|
//Rowan test.
|
|
//IF CREATE_CONVERSATION ( MyLocalPedStruct, "MPOBHAU", "MPOBH1", CONV_PRIORITY_MEDIUM)
|
|
|
|
//IF CREATE_CONVERSATION( MyLocalPedStruct, "ARMYAUD", "ARMY_WRN1", CONV_PRIORITY_MEDIUM)
|
|
|
|
|
|
b_PlayerSingleLineTest = FALSE
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
/*
|
|
IF PLAY_SINGLE_LINE_FROM_CONVERSATION (MyLocalPedStruct, "RBS1AUD", "RBS1_DRV2", "RBS1_DRV2_6", CONV_PRIORITY_VERY_LOW, DO_NOT_DISPLAY_SUBTITLES)
|
|
|
|
b_PlayerSingleLineTest = FALSE
|
|
|
|
ENDIF
|
|
*/
|
|
|
|
//STOP_SCRIPTED_CONVERSATION(TRUE)
|
|
|
|
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
IF b_PlayerFromLineTest
|
|
|
|
|
|
//CREATE_CONVERSATION_FROM_SPECIFIC_LINE (MyLocalPedStruct, "RBS1AUD", "RBS1_DRV2", "RBS1_DRV2_6", CONV_PRIORITY_MEDIUM) //very long
|
|
|
|
IF CREATE_CONVERSATION_FROM_SPECIFIC_LINE ( MyLocalPedStruct, "FM_1AU", "FM_RCM", "FM_RCM_3", CONV_PRIORITY_MEDIUM)
|
|
|
|
b_PlayerFromLineTest = FALSE
|
|
|
|
ENDIF
|
|
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
IF b_PlaySimpleConversation //This runs from the widget in rag.
|
|
|
|
|
|
b_PlaySimpleConversation = FALSE
|
|
|
|
|
|
|
|
CREATE_CONVERSATION (MyLocalPedStruct, GET_CONTENTS_OF_TEXT_WIDGET(widgetID_ConvBlock), GET_CONTENTS_OF_TEXT_WIDGET(widgetID_ConvRoot), CONV_PRIORITY_MEDIUM)
|
|
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
IF b_GetResumptionLabel
|
|
|
|
//TestResumptionLabel = GET_STANDARD_CONVERSATION_LABEL_FOR_FUTURE_RESUMPTION()
|
|
|
|
|
|
TestResumptionLabel = GET_CURRENTLY_PLAYING_STANDARD_CONVERSATION_LABEL()
|
|
|
|
b_GetResumptionLabel = FALSE
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
IF b_ResumeConversation
|
|
|
|
KILL_FACE_TO_FACE_CONVERSATION()
|
|
WAIT (0)
|
|
|
|
|
|
|
|
CREATE_CONVERSATION_FROM_SPECIFIC_LINE (MyLocalPedStruct, "MRS3AUD", "MRS3_OUTRO", TestResumptionLabel, CONV_PRIORITY_MEDIUM)
|
|
|
|
b_ResumeConversation = FALSE
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
IF b_PlayerRandomTest
|
|
|
|
|
|
|
|
//CREATE_CONVERSATION (MyLocalPedStruct, "JHAUD", "JH_FRENCT", CONV_PRIORITY_AMBIENT_HIGH)
|
|
|
|
//CREATE_CONVERSATION (MyLocalPedStruct, "JHAUD", "JH_CRENC2", CONV_PRIORITY_AMBIENT_HIGH)
|
|
|
|
CREATE_CONVERSATION(MyLocalPedStruct, "RECREAU", "RECRE_PAIN", CONV_PRIORITY_AMBIENT_HIGH ) //random
|
|
|
|
|
|
b_PlayerRandomTest = FALSE
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
IF b_SendCamHelpText
|
|
|
|
ENABLE_PICTURE_MESSAGE_SENDING_AND_HELP (TRUE)
|
|
|
|
b_SendCamHelpText = FALSE
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
IF b_RemoveSendCamHelpText
|
|
|
|
ENABLE_PICTURE_MESSAGE_SENDING_AND_HELP (FALSE)
|
|
|
|
b_RemoveSendCamHelpText = FALSE
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
IF b_PlayerMultipartTest
|
|
|
|
//"Hey! Genius..." "No. Please..." "You moron" "He looks like..."
|
|
|
|
CREATE_MULTIPART_CONVERSATION_WITH_4_LINES_USING_V_CONTENT_IN_DLC (MyLocalPedStruct, "FB3AUD",
|
|
|
|
"F3_CALL1B", "F3_CALL1B_1",
|
|
|
|
"F3_WREN1", "F3_WREN1_2",
|
|
|
|
"F3_ARM4", "F3_ARM4_1",
|
|
|
|
"f3_TENTER", "F3_TENTER_5", CONV_PRIORITY_MEDIUM)
|
|
|
|
|
|
// CREATE_MULTIPART_CONVERSATION_WITH_4_LINES (MyLocalPedStruct, "RECREAU",
|
|
//
|
|
// "RECRE_APPR", "RECRE_APPR_2",
|
|
//
|
|
// "RECRE_PAIN", "RECRE_PAIN",
|
|
//
|
|
// "RECRE_VDIE", "RECRE_VDIE_1",
|
|
//
|
|
// "RECRE_PLEAD3", "RECRE_PLEAD3",
|
|
//
|
|
// CONV_PRIORITY_MEDIUM)
|
|
|
|
|
|
|
|
|
|
|
|
b_PlayerMultipartTest = FALSE
|
|
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
IF b_PlayerMultipartWithRepliesTestCall
|
|
|
|
|
|
CHAR_CALL_PLAYER_CELLPHONE_MULTIPART_WITH_2_LINES_WITH_2_LINE_REPLIES (MyLocalPedStruct, CHAR_FRANKLIN, "RECREAU",
|
|
|
|
"RECRE_APPR", "RECRE_APPR_2",
|
|
|
|
"RECRE_PAIN", "RECRE_PAIN",
|
|
|
|
"TXT_103",
|
|
|
|
|
|
"RECRE_PLEAD2", "RECRE_PLEAD2_2", "RECRE_PLEAD", "RECRE_PLEAD_2",
|
|
"RECRE_APPR", "RECRE_APPR_2", "RECRE_PLEAD", "RECRE_PLEAD_3",
|
|
|
|
|
|
CONV_PRIORITY_VERY_HIGH)
|
|
|
|
|
|
|
|
b_PlayerMultipartWithRepliesTestCall = FALSE
|
|
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
IF b_PlayerMultipartTestCall
|
|
|
|
/*
|
|
PLAYER_CALL_CHAR_CELLPHONE_MULTIPART_WITH_4_LINES (MyLocalPedStruct, CHAR_FRANKLIN, "FB3AUD",
|
|
|
|
"F3_CALL1", "F3_CALL1_2",
|
|
|
|
"F3_WRAP", "F3_WRAP_4",
|
|
|
|
"F3_DEAD", "F3_DEAD_3",
|
|
|
|
"f3_TENTER", "F3_TENTER_5", CONV_PRIORITY_VERY_HIGH)
|
|
*/
|
|
|
|
|
|
|
|
/*
|
|
PLAYER_CALL_CHAR_CELLPHONE_MULTIPART_WITH_4_LINES(MyLocalPedStruct,
|
|
CHAR_LAMAR,
|
|
"FRLFaAU",
|
|
"FRFLC_G_HG_a", "FRFLC_G_HG_a",
|
|
"FRFLC_G_HG_b", "FRFLC_G_HG_b",
|
|
"FRFLC_N_RC_a_1", "FRFLC_N_RC_a_1",
|
|
"FRFLC_N_RC_b_2", "FRFLC_N_RC_b_2",
|
|
CONV_PRIORITY_CELLPHONE)
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
PLAYER_CALL_CHAR_CELLPHONE_MULTIPART_WITH_2_LINES(MyLocalPedStruct, CHAR_LAMAR, "FpFLAU",
|
|
"FpFL_G1", "FpFL_G1",
|
|
"FpFL_G2", "FpFL_G2",
|
|
CONV_PRIORITY_NON_CRITICAL_CALL)
|
|
|
|
|
|
|
|
|
|
/*
|
|
PLAYER_CALL_CHAR_CELLPHONE_MULTIPART_WITH_4_LINES(MyLocalPedStruct, CHAR_LAMAR, "FpFLAU",
|
|
|
|
"FpFL_G1", "FpFL_G1",
|
|
|
|
"FpFL_G2", "FpFL_G2",
|
|
|
|
"FpFL_Y1_fs", "FpFL_Y1_fs_1",
|
|
|
|
"FpFL_Y2_ok", "FpFL_Y2_ok",
|
|
|
|
CONV_PRIORITY_NON_CRITICAL_CALL)
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
PLAYER_CALL_CHAR_CELLPHONE_MULTIPART_WITH_4_LINES (MyLocalPedStruct, CHAR_FRANKLIN, "RECREAU",
|
|
|
|
"RECRE_APPR", "RECRE_APPR_2",
|
|
|
|
"RECRE_PAIN", "RECRE_PAIN",
|
|
|
|
"RECRE_VDIE", "RECRE_VDIE_1",
|
|
|
|
"RECRE_APPR", "RECRE_APPR_1",
|
|
|
|
CONV_PRIORITY_VERY_HIGH)
|
|
|
|
*/
|
|
|
|
|
|
/*
|
|
PLAYER_CALL_CHAR_CELLPHONE_MULTIPART_WITH_2_LINES (MyLocalPedStruct, CHAR_FRANKLIN, "FB3AUD",
|
|
|
|
"F3_CALL1", "F3_CALL1_2",
|
|
|
|
"f3_TENTER", "F3_TENTER_5", CONV_PRIORITY_VERY_HIGH) */
|
|
|
|
|
|
|
|
|
|
b_PlayerMultipartTestCall = FALSE
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
|
|
IF b_DebugContactForMichael
|
|
|
|
//ADD_CONTACT_TO_PHONEBOOK (CHAR_LESTER, MICHAEL_BOOK)
|
|
|
|
//ADD_CONTACT_TO_PHONEBOOK (CHAR_AMMUNATION, MICHAEL_BOOK)
|
|
//ADD_CONTACT_TO_PHONEBOOK (CHAR_LS_CUSTOMS, MICHAEL_BOOK)
|
|
//ADD_CONTACT_TO_PHONEBOOK (CHAR_MP_STRIPCLUB_PR, MICHAEL_BOOK)
|
|
//ADD_CONTACT_TO_PHONEBOOK (CHAR_LS_TOURIST_BOARD, MICHAEL_BOOK)
|
|
//ADD_CONTACT_TO_PHONEBOOK (CHAR_LS_TOURIST_BOARD, MICHAEL_BOOK)
|
|
//ADD_CONTACT_TO_PHONEBOOK (CHAR_PEGASUS_DELIVERY, MICHAEL_BOOK)
|
|
ADD_CONTACT_TO_PHONEBOOK (CHAR_DAVE, MICHAEL_BOOK)
|
|
|
|
|
|
//WAIT (2000)
|
|
|
|
//ADD_CONTACT_TO_PHONEBOOK (CHAR_LAMAR, MICHAEL_BOOK)
|
|
|
|
//Register_Script_To_Relaunch_List(LAUNCH_BIT_CELLPHONE_FLASHHAND)
|
|
|
|
//ADD_CONTACT_TO_PHONEBOOK (CHAR_HAO, MICHAEL_BOOK)
|
|
|
|
b_DebugContactForMichael = FALSE
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
IF b_DebugContactForFranklin
|
|
|
|
//ADD_CONTACT_TO_PHONEBOOK (CHAR_MICHAEL, FRANKLIN_BOOK)
|
|
|
|
//REMOVE_CONTACT_FROM_ALL_PHONEBOOKS(CHAR_JOSH)
|
|
//Remove_Script_From_Relaunch_List(LAUNCH_BIT_CELLPHONE_FLASHHAND)
|
|
|
|
|
|
ADD_CONTACT_TO_PHONEBOOK (CHAR_AMANDA, FRANKLIN_BOOK)
|
|
|
|
b_DebugContactForFranklin = FALSE
|
|
|
|
ENDIF
|
|
|
|
|
|
IF b_DebugContactForTrevor
|
|
|
|
ADD_CONTACT_TO_PHONEBOOK (CHAR_TAXI, TREVOR_BOOK)
|
|
|
|
b_DebugContactForTrevor = FALSE
|
|
|
|
ENDIF
|
|
|
|
|
|
IF b_DebugContactForEveryone
|
|
|
|
ADD_CONTACT_TO_PHONEBOOK (CHAR_HAO, ALL_OWNERS_BOOKS)
|
|
|
|
b_DebugContactForEveryone = FALSE
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
IF b_AddTestContacts
|
|
|
|
ADD_CONTACT_TO_PHONEBOOK (CHAR_MOLLY, ALL_OWNERS_BOOKS)
|
|
|
|
ADD_CONTACT_TO_PHONEBOOK (CHAR_DIRECTOR, ALL_OWNERS_BOOKS)
|
|
|
|
ADD_CONTACT_TO_PHONEBOOK (CHAR_DEVIN, ALL_OWNERS_BOOKS)
|
|
ADD_CONTACT_TO_PHONEBOOK (CHAR_STRETCH, ALL_OWNERS_BOOKS)
|
|
ADD_CONTACT_TO_PHONEBOOK (CHAR_RICKIE, ALL_OWNERS_BOOKS)
|
|
ADD_CONTACT_TO_PHONEBOOK (CHAR_SOLOMON, ALL_OWNERS_BOOKS)
|
|
ADD_CONTACT_TO_PHONEBOOK (CHAR_CALL911, ALL_OWNERS_BOOKS)
|
|
ADD_CONTACT_TO_PHONEBOOK (CHAR_LS_TOURIST_BOARD, ALL_OWNERS_BOOKS)
|
|
ADD_CONTACT_TO_PHONEBOOK (CHAR_LS_CUSTOMS, ALL_OWNERS_BOOKS)
|
|
|
|
ADD_CONTACT_TO_PHONEBOOK (CHAR_HITCHER_GIRL, ALL_OWNERS_BOOKS)
|
|
|
|
ADD_CONTACT_TO_PHONEBOOK (CHAR_RON, ALL_OWNERS_BOOKS)
|
|
|
|
ADD_CONTACT_TO_PHONEBOOK (CHAR_MARTIN, ALL_OWNERS_BOOKS)
|
|
ADD_CONTACT_TO_PHONEBOOK (CHAR_MP_MERRYWEATHER, ALL_OWNERS_BOOKS)
|
|
ADD_CONTACT_TO_PHONEBOOK (CHAR_MP_GERALD, ALL_OWNERS_BOOKS)
|
|
ADD_CONTACT_TO_PHONEBOOK (CHAR_JOE, ALL_OWNERS_BOOKS)
|
|
|
|
ADD_CONTACT_TO_PHONEBOOK (CHAR_MAUDE, ALL_OWNERS_BOOKS)
|
|
ADD_CONTACT_TO_PHONEBOOK (CHAR_JIMMY_BOSTON, ALL_OWNERS_BOOKS)
|
|
|
|
ADD_CONTACT_TO_PHONEBOOK (CHAR_LIFEINVADER, ALL_OWNERS_BOOKS)
|
|
|
|
ADD_CONTACT_TO_PHONEBOOK (CHAR_MP_DETONATEPHONE, ALL_OWNERS_BOOKS)
|
|
ADD_CONTACT_TO_PHONEBOOK (CHAR_MP_MERRYWEATHER, ALL_OWNERS_BOOKS)
|
|
|
|
ADD_CONTACT_TO_PHONEBOOK (CHAR_BARRY, ALL_OWNERS_BOOKS)
|
|
ADD_CONTACT_TO_PHONEBOOK (CHAR_JOSH, ALL_OWNERS_BOOKS)
|
|
|
|
ADD_CONTACT_TO_PHONEBOOK (CHAR_PATRICIA, ALL_OWNERS_BOOKS)
|
|
ADD_CONTACT_TO_PHONEBOOK (CHAR_PEGASUS_DELIVERY, ALL_OWNERS_BOOKS)
|
|
|
|
|
|
ADD_CONTACT_TO_PHONEBOOK (CHAR_DR_FRIEDLANDER, ALL_OWNERS_BOOKS)
|
|
ADD_CONTACT_TO_PHONEBOOK (CHAR_AMANDA, ALL_OWNERS_BOOKS)
|
|
ADD_CONTACT_TO_PHONEBOOK (CHAR_ABIGAIL, ALL_OWNERS_BOOKS)
|
|
|
|
//ADD_CONTACT_TO_PHONEBOOK (CHAR_CEOASSIST, ALL_OWNERS_BOOKS)
|
|
|
|
ADD_CONTACT_TO_PHONEBOOK (CHAR_DENISE, ALL_OWNERS_BOOKS)
|
|
ADD_CONTACT_TO_PHONEBOOK (CHAR_BLIMP, ALL_OWNERS_BOOKS)
|
|
ADD_CONTACT_TO_PHONEBOOK (CHAR_DETONATEBOMB, ALL_OWNERS_BOOKS)
|
|
|
|
ADD_CONTACT_TO_PHONEBOOK (CHAR_DETONATEPHONE, ALL_OWNERS_BOOKS)
|
|
ADD_CONTACT_TO_PHONEBOOK (CHAR_GAYMILITARY, ALL_OWNERS_BOOKS)
|
|
//ADD_CONTACT_TO_PHONEBOOK (CHAR_DETONATEBOMB, ALL_OWNERS_BOOKS)
|
|
|
|
ADD_CONTACT_TO_PHONEBOOK (CHAR_FRANKLIN, ALL_OWNERS_BOOKS)
|
|
ADD_CONTACT_TO_PHONEBOOK (CHAR_JIMMY, ALL_OWNERS_BOOKS)
|
|
ADD_CONTACT_TO_PHONEBOOK (CHAR_LS_CUSTOMS, ALL_OWNERS_BOOKS)
|
|
ADD_CONTACT_TO_PHONEBOOK (CHAR_MP_MECHANIC, ALL_OWNERS_BOOKS)
|
|
//ADD_CONTACT_TO_PHONEBOOK (CHAR_LESTER, ALL_OWNERS_BOOKS)
|
|
ADD_CONTACT_TO_PHONEBOOK (CHAR_LESTER_DEATHWISH, ALL_OWNERS_BOOKS)
|
|
ADD_CONTACT_TO_PHONEBOOK (CHAR_TOW_TONYA, ALL_OWNERS_BOOKS)
|
|
ADD_CONTACT_TO_PHONEBOOK (CHAR_TRACEY, ALL_OWNERS_BOOKS)
|
|
ADD_CONTACT_TO_PHONEBOOK (CHAR_TAXI, ALL_OWNERS_BOOKS)
|
|
ADD_CONTACT_TO_PHONEBOOK (CHAR_DIAL_A_SUB, ALL_OWNERS_BOOKS)
|
|
|
|
ADD_CONTACT_TO_PHONEBOOK (CHAR_MICHAEL, ALL_OWNERS_BOOKS)
|
|
ADD_CONTACT_TO_PHONEBOOK (CHAR_TREVOR, ALL_OWNERS_BOOKS)
|
|
|
|
ADD_CONTACT_TO_PHONEBOOK (CHAR_CHOP, ALL_OWNERS_BOOKS)
|
|
ADD_CONTACT_TO_PHONEBOOK (CHAR_CRIS, ALL_OWNERS_BOOKS)
|
|
ADD_CONTACT_TO_PHONEBOOK (CHAR_HUNTER, ALL_OWNERS_BOOKS)
|
|
|
|
|
|
ADD_CONTACT_TO_PHONEBOOK (CHAR_OMEGA, ALL_OWNERS_BOOKS)
|
|
ADD_CONTACT_TO_PHONEBOOK (CHAR_TANISHA, ALL_OWNERS_BOOKS)
|
|
ADD_CONTACT_TO_PHONEBOOK (CHAR_STEVE, ALL_OWNERS_BOOKS)
|
|
|
|
|
|
|
|
ADD_CONTACT_TO_PHONEBOOK (CHAR_CHENG, ALL_OWNERS_BOOKS)
|
|
ADD_CONTACT_TO_PHONEBOOK (CHAR_CHENGSR, ALL_OWNERS_BOOKS)
|
|
ADD_CONTACT_TO_PHONEBOOK (CHAR_TOW_TONYA, ALL_OWNERS_BOOKS)
|
|
ADD_CONTACT_TO_PHONEBOOK (CHAR_MARTIN, ALL_OWNERS_BOOKS)
|
|
ADD_CONTACT_TO_PHONEBOOK (CHAR_CHEF, ALL_OWNERS_BOOKS)
|
|
|
|
ADD_CONTACT_TO_PHONEBOOK (CHAR_LEST_MIKE_CONF, ALL_OWNERS_BOOKS)
|
|
ADD_CONTACT_TO_PHONEBOOK (CHAR_LEST_FRANK_CONF, ALL_OWNERS_BOOKS)
|
|
|
|
b_AddTestContacts = FALSE
|
|
|
|
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
IF b_DebugContactForVirtual
|
|
|
|
//Legacy
|
|
//ADD_CONTACT_TO_MULTIPLAYER_PHONEBOOK (CHAR_STEVE)
|
|
|
|
ADD_CONTACT_TO_PHONEBOOK (CHAR_MP_DETONATEPHONE, MULTIPLAYER_BOOK)
|
|
ADD_CONTACT_TO_PHONEBOOK (CHAR_MP_MECHANIC, MULTIPLAYER_BOOK)
|
|
ADD_CONTACT_TO_PHONEBOOK (CHAR_LESTER, MULTIPLAYER_BOOK)
|
|
ADD_CONTACT_TO_PHONEBOOK (CHAR_MARTIN, MULTIPLAYER_BOOK)
|
|
ADD_CONTACT_TO_PHONEBOOK (CHAR_CHENG, MULTIPLAYER_BOOK)
|
|
ADD_CONTACT_TO_PHONEBOOK (CHAR_MICHAEL, MULTIPLAYER_BOOK)
|
|
ADD_CONTACT_TO_PHONEBOOK (CHAR_TREVOR, MULTIPLAYER_BOOK)
|
|
ADD_CONTACT_TO_PHONEBOOK (CHAR_AMANDA, MULTIPLAYER_BOOK)
|
|
ADD_CONTACT_TO_PHONEBOOK (CHAR_MP_P_ASSIST, MULTIPLAYER_BOOK)
|
|
ADD_CONTACT_TO_PHONEBOOK (CHAR_MP_MERRYWEATHER, MULTIPLAYER_BOOK)
|
|
ADD_CONTACT_TO_PHONEBOOK (CHAR_YACHT_CAPTAIN, MULTIPLAYER_BOOK)
|
|
|
|
b_DebugContactForVirtual = FALSE
|
|
|
|
ENDIF
|
|
|
|
IF b_DebugSaveGameTest
|
|
|
|
DISABLE_CELLPHONE_THIS_FRAME_ONLY()
|
|
HANG_UP_AND_PUT_AWAY_PHONE()
|
|
SET_SAVE_MENU_ACTIVE()
|
|
|
|
b_DebugSaveGameTest = FALSE
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
/*
|
|
IF b_DebugMimicMP = FALSE
|
|
|
|
g_bInMultiplayer = FALSE
|
|
|
|
ELSE
|
|
|
|
g_bInMultiplayer = TRUE
|
|
|
|
ENDIF
|
|
*/
|
|
|
|
|
|
|
|
IF b_Switch_to_MultiplayerPhone = TRUE
|
|
|
|
g_bInMultiplayer = TRUE
|
|
|
|
b_Switch_to_MultiplayerPhone = FALSE
|
|
b_DisplayGameType = TRUE
|
|
|
|
ENDIF
|
|
|
|
|
|
IF b_Switch_to_SingleplayerPhone = TRUE
|
|
|
|
g_bInMultiplayer = FALSE
|
|
|
|
b_Switch_to_SingleplayerPhone = FALSE
|
|
b_DisplayGameType = TRUE
|
|
|
|
ENDIF
|
|
|
|
|
|
IF b_DisplayGameType = TRUE
|
|
|
|
IF g_bInMultiplayer
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING (0.61, 0.50, "STRING", "Multiplayer phone mode")
|
|
ELSE
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING (0.61, 0.50, "STRING", "Singleplayer phone mode")
|
|
ENDIF
|
|
|
|
//Bits = FE_WARNING_OK
|
|
//SET_WARNING_MESSAGE_WITH_HEADER ("CELL_CAM_ALERT", "CELL_CAM_FW_1", iButtonBits, "CELL_CAM_FW_2", FALSE, -1, "", "", TRUE)
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
IF b_EnableToneSelection
|
|
This_Cellphone_Owner_Settings[g_Cellphone.PhoneOwner].RingtoneForThisPlayer = DebugWidgetToneSelection
|
|
ENDIF
|
|
*/
|
|
|
|
|
|
IF b_DebugCellphoneGuiInfo
|
|
|
|
format_medium_ostext (255, 255, 255, 255) //White
|
|
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING ( 0.60, 0.7, "STRING", "Loaded GUI Movie: ")
|
|
|
|
|
|
|
|
format_medium_ostext (255, 255, 0, 255) //yellow
|
|
|
|
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING ( 0.7, 0.7, "STRING", ScaleformDebugMovie[DebugCellphoneGui])
|
|
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ENDPROC
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
PROC draw_debug_Scaleform_Signifier_Position()
|
|
|
|
|
|
//DRAW_SCALEFORM_MOVIE (SF_MoviePreviewIndex, db_preview_signifier_posX, db_preview_signifier_posY, 0.16, 0.14, 255, 255, 255, 255)
|
|
|
|
|
|
|
|
DISPLAY_TEXT_WITH_FLOAT (0.3, 0.1, "CELL_500", (1 - GET_SAFE_ZONE_SIZE()), 3)
|
|
DISPLAY_TEXT_WITH_FLOAT (0.3, 0.15, "CELL_501", GET_SAFE_ZONE_SIZE(), 3)
|
|
|
|
|
|
DISPLAY_TEXT_WITH_FLOAT (0.8, 0.1, "CELL_500", db_preview_signifier_posX, 3)
|
|
DISPLAY_TEXT_WITH_FLOAT (0.8, 0.15, "CELL_501", db_preview_signifier_posY, 3)
|
|
|
|
|
|
IF IS_BUTTON_PRESSED (PAD1, DPADUP)
|
|
|
|
//db_signifier_posY = db_signifier_posY - 1
|
|
db_preview_signifier_posY = db_preview_signifier_posY - 0.005
|
|
|
|
ENDIF
|
|
|
|
IF IS_BUTTON_PRESSED (PAD1, DPADDOWN)
|
|
|
|
//db_signifier_posY = db_signifier_posY + 1
|
|
db_preview_signifier_posY = db_preview_signifier_posY + 0.005
|
|
|
|
ENDIF
|
|
|
|
IF IS_BUTTON_PRESSED (PAD1, DPADLEFT)
|
|
|
|
//db_signifier_posX = db_signifier_posX - 1
|
|
db_preview_signifier_posX = db_preview_signifier_posX - 0.005
|
|
|
|
|
|
ENDIF
|
|
|
|
IF IS_BUTTON_PRESSED (PAD1, DPADRIGHT)
|
|
|
|
//db_signifier_posX = db_signifier_posX + 1
|
|
db_preview_signifier_posX = db_preview_signifier_posX + 0.005
|
|
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ENDPROC
|
|
#endif
|
|
|
|
|
|
|
|
|
|
//DMPP Temp Prop Placement procedures.
|
|
#if IS_DEBUG_BUILD
|
|
|
|
|
|
/*
|
|
INPUT_CREATOR_LS, // Creator Left stick equivalent for functions like field of view, etc.
|
|
INPUT_CREATOR_RS, // Creator right stick equivalent for functions like field of view, etc.
|
|
INPUT_CREATOR_LT, // Creator left trigger equivalent for zooming.
|
|
INPUT_CREATOR_RT, // Creator right trigger equivalent for zooming.
|
|
INPUT_CREATOR_MENU_TOGGLE, // Creator menu toggle on/off for PC keyboard and mouse.
|
|
INPUT_CREATOR_ACCEPT, // Creator accept/place items button.
|
|
INPUT_CREATOR_DELETE, // Creator delete items button.
|
|
|
|
INPUT_FRONTEND_RB //Rotate Left
|
|
INPUT_FRONTEND_LB //Rotate Right
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
PROC Set_Up_Buttons_For_Placement()
|
|
|
|
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER(SF_PropPlacementMovieIndex, "SET_CLEAR_SPACE", 200)
|
|
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER(SF_PropPlacementMovieIndex, "SET_DATA_SLOT_EMPTY", 3)
|
|
|
|
INSTRUCTIONAL_BUTTON_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING(SF_PropPlacementMovieIndex, "SET_DATA_SLOT", 4,
|
|
GET_CONTROL_INSTRUCTIONAL_BUTTONS_STRING(FRONTEND_CONTROL, INPUT_FRONTEND_LB),
|
|
"DMPP_ROTL") //Rotate Prop Left
|
|
|
|
|
|
INSTRUCTIONAL_BUTTON_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING(SF_PropPlacementMovieIndex, "SET_DATA_SLOT", 3,
|
|
GET_CONTROL_INSTRUCTIONAL_BUTTONS_STRING(FRONTEND_CONTROL, INPUT_FRONTEND_RB),
|
|
"DMPP_ROTR") //Rotate Prop Right
|
|
|
|
INSTRUCTIONAL_BUTTON_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING(SF_PropPlacementMovieIndex, "SET_DATA_SLOT", 2,
|
|
GET_CONTROL_GROUP_INSTRUCTIONAL_BUTTONS_STRING(FRONTEND_CONTROL, INPUTGROUP_FRONTEND_DPAD_LR),
|
|
"DMPP_ADJUST") //Adjust Selection
|
|
|
|
|
|
|
|
INSTRUCTIONAL_BUTTON_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING(SF_PropPlacementMovieIndex, "SET_DATA_SLOT", 1,
|
|
GET_CONTROL_INSTRUCTIONAL_BUTTONS_STRING(PLAYER_CONTROL, INPUT_CELLPHONE_CANCEL),
|
|
"DMPP_EXIT") //Exit
|
|
|
|
|
|
INSTRUCTIONAL_BUTTON_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING(SF_PropPlacementMovieIndex, "SET_DATA_SLOT", 0,
|
|
GET_CONTROL_INSTRUCTIONAL_BUTTONS_STRING(FRONTEND_CONTROL, INPUT_CREATOR_ACCEPT),
|
|
"DMPP_PLACEP") //Place Prop
|
|
|
|
|
|
|
|
BEGIN_SCALEFORM_MOVIE_METHOD(SF_PropPlacementMovieIndex, "SET_MAX_WIDTH")
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(1.0)
|
|
END_SCALEFORM_MOVIE_METHOD()
|
|
|
|
|
|
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER(SF_PropPlacementMovieIndex, "DRAW_INSTRUCTIONAL_BUTTONS", 0) // Set to 1 for stacked.
|
|
|
|
|
|
|
|
ENDPROC
|
|
|
|
|
|
|
|
|
|
PROC Set_Up_Buttons_For_Removal()
|
|
|
|
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER(SF_PropPlacementMovieIndex, "SET_CLEAR_SPACE", 200)
|
|
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER(SF_PropPlacementMovieIndex, "SET_DATA_SLOT_EMPTY", 3)
|
|
|
|
|
|
INSTRUCTIONAL_BUTTON_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING(SF_PropPlacementMovieIndex, "SET_DATA_SLOT", 1,
|
|
GET_CONTROL_INSTRUCTIONAL_BUTTONS_STRING(PLAYER_CONTROL, INPUT_CELLPHONE_CANCEL),
|
|
"DMPP_EXIT") //Exit
|
|
|
|
|
|
INSTRUCTIONAL_BUTTON_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING(SF_PropPlacementMovieIndex, "SET_DATA_SLOT", 0,
|
|
GET_CONTROL_INSTRUCTIONAL_BUTTONS_STRING(FRONTEND_CONTROL, INPUT_CREATOR_DELETE),
|
|
"DMPP_REMOVEP") //Remove Prop
|
|
|
|
|
|
|
|
BEGIN_SCALEFORM_MOVIE_METHOD(SF_PropPlacementMovieIndex, "SET_MAX_WIDTH")
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(1.0)
|
|
END_SCALEFORM_MOVIE_METHOD()
|
|
|
|
|
|
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER(SF_PropPlacementMovieIndex, "DRAW_INSTRUCTIONAL_BUTTONS", 0) // Set to 1 for stacked.
|
|
|
|
|
|
ENDPROC
|
|
|
|
|
|
|
|
|
|
|
|
PROC Fill_Selectable_Prop_Sheet(INT PassedArrayIndex, STRING PassedModelNameToGetHashFrom, STRING PassedTextLabel, ePROP_CATEGORY PassedCategory)
|
|
|
|
SelectablePropArray[PassedArrayIndex].PropModelHash = GET_HASH_KEY(PassedModelNameToGetHashFrom)
|
|
SelectablePropArray[PassedArrayIndex].PropTextLabel = PassedTextLabel
|
|
SelectablePropArray[PassedArrayIndex].PropCategory = PassedCategory
|
|
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintnl()
|
|
cdPrintstring("Filling Prop Sheet Entry ")
|
|
cdPrintint(PassedArrayIndex)
|
|
cdPrintnl()
|
|
#endif
|
|
|
|
thisframeVicIndex = 0
|
|
|
|
ENDPROC
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//Set up placement disk and first prop model.
|
|
PROC Do_Prop_Stage_InitialSetUp()
|
|
|
|
//Set up the offsets for this particular prop. Eventually this should come the from the prop sheet. Offsets will be individual to that prop.
|
|
v_PlacementDiscOffset = <<0.0, 3.0, -0.5>>
|
|
v_ThisPropOffset = <<0.0, 3.0, 0.5>>
|
|
|
|
|
|
REQUEST_MODEL(PROP_MP_PLACEMENT_SM)
|
|
WHILE NOT HAS_MODEL_LOADED(PROP_MP_PLACEMENT_SM)
|
|
WAIT(0)
|
|
REQUEST_MODEL(PROP_MP_PLACEMENT_SM)
|
|
ENDWHILE
|
|
|
|
IF NOT IS_PED_INJURED(PLAYER_PED_ID())
|
|
|
|
v_player_pos = GET_ENTITY_COORDS(PLAYER_PED_ID())
|
|
v_player_heading = GET_ENTITY_HEADING(PLAYER_PED_ID())
|
|
|
|
|
|
PlacementDiscEntity = CREATE_OBJECT(PROP_MP_PLACEMENT_SM, GET_OFFSET_FROM_COORD_AND_HEADING_IN_WORLD_COORDS(v_player_pos, v_player_heading, v_PlacementDiscOffset))
|
|
|
|
|
|
SET_ENTITY_COLLISION (PlacementDiscEntity, FALSE)
|
|
|
|
|
|
|
|
SET_ENTITY_DYNAMIC (PlacementDiscEntity, FALSE)
|
|
|
|
|
|
|
|
ENDIF
|
|
|
|
SET_MODEL_AS_NO_LONGER_NEEDED (PROP_MP_PLACEMENT_SM)
|
|
|
|
|
|
|
|
|
|
REQUEST_MODEL(CurrentlySelectedPropModel)
|
|
WHILE NOT HAS_MODEL_LOADED(CurrentlySelectedPropModel)
|
|
WAIT(0)
|
|
REQUEST_MODEL(CurrentlySelectedPropModel)
|
|
ENDWHILE
|
|
|
|
IF NOT IS_PED_INJURED(PLAYER_PED_ID())
|
|
|
|
v_player_pos = GET_ENTITY_COORDS(PLAYER_PED_ID())
|
|
v_player_heading = GET_ENTITY_HEADING(PLAYER_PED_ID())
|
|
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintnl()
|
|
cdPrintstring ("Prop Test Creation")
|
|
cdPrintnl()
|
|
#endif
|
|
|
|
|
|
TestPropEntity = CREATE_OBJECT(CurrentlySelectedPropModel, GET_OFFSET_FROM_COORD_AND_HEADING_IN_WORLD_COORDS(v_player_pos, v_player_heading, v_ThisPropOffset))
|
|
|
|
//SET_ENTITY_ROTATION(TestPropEntity, <<0, 0, 90>>)
|
|
|
|
//ATTACH_ENTITY_TO_ENTITY(TestPropEntity, PLAYER_PED_ID(), GET_PED_BONE_INDEX( PLAYER_PED_ID(), BONETAG_PH_R_HAND ), <<1.5, 2.0,0>>, <<0,0,0>>, TRUE, TRUE, FALSE )
|
|
|
|
|
|
SET_ENTITY_COLLISION (TestPropEntity, FALSE)
|
|
|
|
SET_ENTITY_DYNAMIC (TestPropEntity, FALSE)
|
|
|
|
|
|
eCurrentPropStage = PROP_STAGE_PropInHand
|
|
|
|
|
|
ENDIF
|
|
|
|
|
|
SET_MODEL_AS_NO_LONGER_NEEDED (CurrentlySelectedPropModel)
|
|
|
|
|
|
|
|
Set_Up_Buttons_For_Placement()
|
|
|
|
|
|
|
|
ENDPROC //End of InitialSetup procedure.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
PROC Do_Prop_Stage_ExitAndCleanUp()
|
|
|
|
|
|
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
cdPrintnl()
|
|
cdPrintstring ("Director Mode Prop Placement - Tidying up entities and models.")
|
|
cdPrintnl()
|
|
|
|
#endif
|
|
|
|
IF i_InVicinityOfThisPlacedPropPosition > -99
|
|
IF DOES_ENTITY_EXIST (PlacedProps[i_InVicinityOfThisPlacedPropPosition].PropEntityIndex) //Make sure any transparent entities are opaqued on exit.
|
|
SET_ENTITY_ALPHA (PlacedProps[i_InVicinityOfThisPlacedPropPosition].PropEntityIndex, 255, TRUE)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
|
|
IF DOES_ENTITY_EXIST(TestPropEntity)
|
|
DELETE_ENTITY (TestPropEntity)
|
|
ENDIF
|
|
|
|
IF DOES_ENTITY_EXIST(PlacementDiscEntity)
|
|
DELETE_ENTITY (PlacementDiscEntity)
|
|
ENDIF
|
|
|
|
SET_MODEL_AS_NO_LONGER_NEEDED (PROP_MP_PLACEMENT_SM)
|
|
SET_MODEL_AS_NO_LONGER_NEEDED (CurrentlySelectedPropModel)
|
|
|
|
SET_SCALEFORM_MOVIE_AS_NO_LONGER_NEEDED (SF_PropPlacementMovieIndex)
|
|
|
|
|
|
eCurrentPropStage = PROP_STAGE_Dormant
|
|
|
|
|
|
ENDPROC
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
PROC Do_Prop_Stage_PropInHand()
|
|
|
|
|
|
IF DOES_ENTITY_EXIST (TestPropEntity)
|
|
AND DOES_ENTITY_EXIST (PlacementDiscEntity)
|
|
AND NOT IS_PED_INJURED (PLAYER_PED_ID())
|
|
|
|
|
|
v_player_pos = GET_ENTITY_COORDS(PLAYER_PED_ID())
|
|
v_player_heading = GET_ENTITY_HEADING(PLAYER_PED_ID())
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
//Check position of prop entity and player.
|
|
//If in range, then go into removal mode, deleting disk and held prop ( like we do after placing one )
|
|
//Set InVicinity to that prop.
|
|
//Alpha prop.
|
|
//Do prop removal
|
|
|
|
*/
|
|
|
|
|
|
/*
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintnl()
|
|
cdPrintstring("PROP_PLACEMENT - In Vicinity of Placed Prop Check. Checking Prop ")
|
|
cdPrintint(thisframeVicIndex)
|
|
cdPrintnl()
|
|
#endif
|
|
*/
|
|
|
|
|
|
IF PlacedProps[thisframeVicIndex].PositionStatus = PROP_POSITION_FILLED
|
|
|
|
IF DOES_ENTITY_EXIST (PlacedProps[thisframeVicIndex].PropEntityIndex)
|
|
|
|
|
|
|
|
v_ThisPlacedProp = GET_ENTITY_COORDS (PlacedProps[thisframeVicIndex].PropEntityIndex)
|
|
|
|
IF GET_DISTANCE_BETWEEN_COORDS(v_player_pos, v_ThisPlacedProp, TRUE ) < f_VicinityCheckRange
|
|
|
|
i_InVicinityOfThisPlacedPropPosition = thisframeVicIndex
|
|
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintnl()
|
|
cdPrintstring("PROP_PLACEMENT - In Vicinity of Placed Prop! Position in placed array is ")
|
|
cdPrintint(i_InVicinityOfThisPlacedPropPosition)
|
|
cdPrintnl()
|
|
#endif
|
|
|
|
|
|
|
|
IF DOES_ENTITY_EXIST(TestPropEntity)
|
|
DELETE_ENTITY (TestPropEntity)
|
|
ENDIF
|
|
|
|
IF DOES_ENTITY_EXIST(PlacementDiscEntity)
|
|
DELETE_ENTITY (PlacementDiscEntity)
|
|
ENDIF
|
|
|
|
|
|
SET_ENTITY_ALPHA(PlacedProps[thisframeVicIndex].PropEntityIndex, 130, TRUE)
|
|
|
|
Set_Up_Buttons_For_Removal()
|
|
|
|
eCurrentPropStage = PROP_STAGE_PropRemoval
|
|
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
|
|
thisframeVicIndex ++
|
|
|
|
IF thisframeVicIndex = i_MAX_NUMBER_OF_PROPS_ALLOWED
|
|
OR thisframeVicIndex > i_MAX_NUMBER_OF_PROPS_ALLOWED
|
|
|
|
thisframeVicIndex = 0 // Reset the frame vicinity check counter.
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//Update Position of Prop in front of the player.
|
|
|
|
|
|
SET_ENTITY_COORDS (TestPropEntity, GET_OFFSET_FROM_COORD_AND_HEADING_IN_WORLD_COORDS(v_player_pos, v_player_heading, v_ThisPropOffset))
|
|
|
|
IF DOES_ENTITY_EXIST (PlacementDiscEntity)
|
|
SET_ENTITY_COORDS (PlacementDiscEntity, GET_OFFSET_FROM_COORD_AND_HEADING_IN_WORLD_COORDS(v_player_pos, v_player_heading, v_PlacementDiscOffset))
|
|
ENDIF
|
|
|
|
|
|
IF eCurrentPropStage <> PROP_STAGE_PropRemoval
|
|
|
|
IF IS_CONTROL_JUST_PRESSED (FRONTEND_CONTROL, INPUT_CREATOR_ACCEPT)
|
|
|
|
IF i_TotalNumberOfPlacedModels < i_MAX_NUMBER_OF_PROPS_ALLOWED
|
|
|
|
//Check if another prop is nearby here?
|
|
|
|
eCurrentPropStage = PROP_STAGE_PropPlacement
|
|
|
|
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
|
|
IF IS_CONTROL_PRESSED (FRONTEND_CONTROL, INPUT_FRONTEND_LB)
|
|
|
|
|
|
v_InHandPropRotation = GET_ENTITY_ROTATION (TestPropEntity)
|
|
|
|
IF v_InHandPropRotation.Z < 359.0
|
|
OR v_InHandPropRotation.Z = 359.0
|
|
|
|
|
|
v_InHandPropRotation.Z = v_InhandPropRotation.Z + 0.9
|
|
|
|
SET_ENTITY_ROTATION(TestPropEntity, v_InHandPropRotation)
|
|
|
|
ELSE
|
|
|
|
//v_InHandPropRotation.Z = 0
|
|
|
|
SET_ENTITY_ROTATION(TestPropEntity, v_InHandPropRotation)
|
|
|
|
ENDIF
|
|
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
IF IS_CONTROL_PRESSED (FRONTEND_CONTROL, INPUT_FRONTEND_RB)
|
|
|
|
|
|
v_InHandPropRotation = GET_ENTITY_ROTATION (TestPropEntity)
|
|
|
|
//IF v_InHandPropRotation.Z > 0.0
|
|
//OR v_InHandPropRotation.Z = 0.0
|
|
|
|
cdprintstring("testing!")
|
|
cdprintnl()
|
|
|
|
v_InHandPropRotation.Z = v_InhandPropRotation.Z - 0.9
|
|
|
|
SET_ENTITY_ROTATION(TestPropEntity, v_InHandPropRotation)
|
|
|
|
//ELSE
|
|
|
|
|
|
//cdprintstring("resetting r!")
|
|
//cdprintnl()
|
|
|
|
|
|
//v_InHandPropRotation.Z = 359.8
|
|
|
|
//SET_ENTITY_ROTATION(TestPropEntity, v_InHandPropRotation)
|
|
|
|
//ENDIF
|
|
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
IF Is_Phone_Control_Just_Pressed (FRONTEND_CONTROL, INT_TO_ENUM (CONTROL_ACTION, PHONE_NAV_RIGHT_INPUT))
|
|
|
|
i_CurrentModelIndex ++
|
|
|
|
IF i_CurrentModelIndex = i_NumberOfModelsToCycle
|
|
|
|
i_CurrentModelIndex = 0
|
|
|
|
ENDIF
|
|
|
|
eCurrentPropStage = PROP_STAGE_PropCycling
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
IF Is_Phone_Control_Just_Pressed (FRONTEND_CONTROL, INT_TO_ENUM (CONTROL_ACTION, PHONE_NAV_LEFT_INPUT))
|
|
|
|
i_CurrentModelIndex --
|
|
|
|
|
|
IF i_CurrentModelIndex < 0
|
|
|
|
i_CurrentModelIndex = i_NumberOfModelsToCycle - 1 //Go to last position in array.
|
|
|
|
ENDIF
|
|
|
|
|
|
eCurrentPropStage = PROP_STAGE_PropCycling
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
ENDPROC
|
|
|
|
|
|
|
|
|
|
PROC Do_Prop_Stage_PropPlacement()
|
|
|
|
IF DOES_ENTITY_EXIST (TestPropEntity)
|
|
AND NOT IS_PED_INJURED (PLAYER_PED_ID())
|
|
|
|
//If the current location passes all placement location and prop quota checks, let's go ahead and place the prop.
|
|
|
|
|
|
VECTOR v_Placement_Position, v_Placement_Rotation
|
|
|
|
v_Placement_Rotation = GET_ENTITY_ROTATION(TestPropEntity)
|
|
|
|
v_Placement_Position = GET_OFFSET_FROM_COORD_AND_HEADING_IN_WORLD_COORDS(v_player_pos, v_player_heading, v_ThisPropOffset)
|
|
//GET_GROUND_Z_FOR_3D_COORD ( v_player_pos, v_Placement_Position.z)
|
|
|
|
v_Placement_Position.z = v_Placement_Position.z + 0.5
|
|
|
|
//SET_ENTITY_COORDS(TestPropEntity, v_Placement_Position)
|
|
|
|
//GET_GROUND_Z_FOR_3D_COORD ( v_player_pos, v_Placement_Position.z)
|
|
|
|
//SET_ENTITY_DYNAMIC (TestPropEntity, TRUE)
|
|
|
|
//SET_ENTITY_COLLISION (TestPropEntity, TRUE)
|
|
|
|
//Turns out props don't always have the correct centre point so may appear embedded in the ground.
|
|
//Need to write a little tool that gets the correct z
|
|
|
|
|
|
|
|
//FREEZE_ENTITY_POSITION(TestPropEntity, FALSE)
|
|
|
|
|
|
//Delete the placement disc and reset everything for a new prop. This provides a natural little pause, rather than going direct into PropInHand state.
|
|
IF DOES_ENTITY_EXIST (PlacementDiscEntity)
|
|
DELETE_ENTITY (PlacementDiscEntity)
|
|
ENDIF
|
|
|
|
|
|
IF DOES_ENTITY_EXIST (TestPropEntity)
|
|
DELETE_ENTITY (TestPropEntity)
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//v_LastPropPlacement_Position = v_Placement_Position
|
|
|
|
|
|
|
|
|
|
|
|
|
|
INT IdentifiedFreeIndex = -99
|
|
INT tempIndex = 0
|
|
|
|
|
|
WHILE tempIndex < i_MAX_NUMBER_OF_PROPS_ALLOWED
|
|
|
|
IF PlacedProps[tempIndex].PositionStatus = PROP_POSITION_VACANT
|
|
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintnl()
|
|
cdPrintstring("PROP_PLACEMENT - Found VACANT prop placement position at ")
|
|
cdPrintint(tempIndex)
|
|
cdPrintnl()
|
|
#endif
|
|
|
|
IdentifiedFreeIndex = tempIndex
|
|
|
|
tempIndex = 99 //Break out of loop now we have identified a free index.
|
|
|
|
ELSE
|
|
|
|
tempIndex ++
|
|
|
|
ENDIF
|
|
|
|
|
|
ENDWHILE
|
|
|
|
|
|
IF IdentifiedFreeIndex > -99 //Must have found a free position in the Placed Props array.
|
|
|
|
//Update array of Placed Props - This will need to check for vacant positions
|
|
PlacedProps[IdentifiedFreeIndex].PropEntityIndex = CREATE_OBJECT(CurrentlySelectedPropModel, v_Placement_Position)
|
|
PlacedProps[IdentifiedFreeIndex].PropModelHash = SelectablePropArray[i_CurrentModelIndex].PropModelHash
|
|
PlacedProps[IdentifiedFreeIndex].PropRotation = v_Placement_Rotation
|
|
PlacedProps[IdentifiedFreeIndex].PropPlacementVector = v_Placement_Position
|
|
PlacedProps[IdentifiedFreeIndex].PositionStatus = PROP_POSITION_FILLED
|
|
|
|
|
|
|
|
SET_ENTITY_COLLISION (PlacedProps[IdentifiedFreeIndex].PropEntityIndex, TRUE)
|
|
|
|
|
|
|
|
APPLY_FORCE_TO_ENTITY_CENTER_OF_MASS(PlacedProps[IdentifiedFreeIndex].PropEntityIndex, APPLY_TYPE_FORCE, <<0,0,-60>>, 0, FALSE, TRUE) //Probably going to have to freeze objects :(
|
|
|
|
|
|
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintnl()
|
|
cdPrintstring("PROP_PLACEMENT - Placed Prop in PlacedProp array position ")
|
|
cdPrintint(IdentifiedFreeIndex)
|
|
cdPrintnl()
|
|
#endif
|
|
|
|
|
|
|
|
i_TotalNumberOfPlacedModels ++
|
|
|
|
|
|
|
|
IF i_TotalNumberOfPlacedModels = i_MAX_NUMBER_OF_PROPS_ALLOWED
|
|
|
|
//Display Warning
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//Once a prop has been placed the player should automatically go into PropRemoval state as they will be in the removal range of the last placed prop.
|
|
|
|
|
|
|
|
i_InVicinityOfThisPlacedPropPosition = IdentifiedFreeIndex
|
|
|
|
SET_ENTITY_ALPHA(PlacedProps[i_InVicinityOfThisPlacedPropPosition].PropEntityIndex, 130, TRUE)
|
|
|
|
|
|
|
|
Set_Up_Buttons_For_Removal()
|
|
|
|
eCurrentPropStage = PROP_STAGE_PropRemoval
|
|
|
|
|
|
ELSE
|
|
|
|
|
|
Set_Up_Buttons_For_Removal()
|
|
|
|
eCurrentPropStage = PROP_STAGE_PropRemoval
|
|
|
|
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintnl()
|
|
cdPrintstring("PROP_PLACEMENT - WARNING! Was trying to place a prop but did not find a vacant position! ")
|
|
cdPrintint(tempIndex)
|
|
cdPrintnl()
|
|
#endif
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
ENDIF
|
|
|
|
|
|
ENDPROC //End of Do_Prop_Stage_PropPlacement procedure.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
PROC Do_Prop_Stage_PropCycling()
|
|
|
|
//Would set up Dan's labels here for new prop selection.
|
|
|
|
|
|
IF DOES_ENTITY_EXIST (TestPropEntity)
|
|
DELETE_ENTITY (TestPropEntity)
|
|
ENDIF
|
|
|
|
|
|
IF DOES_ENTITY_EXIST (PlacementDiscEntity)
|
|
DELETE_ENTITY (PlacementDiscEntity)
|
|
ENDIF
|
|
|
|
|
|
CurrentlySelectedPropModel = INT_TO_ENUM(MODEL_NAMES, SelectablePropArray[i_CurrentModelIndex].PropModelHash)
|
|
|
|
eCurrentPropStage = PROP_STAGE_InitialSetUp //Load up the next prop.
|
|
|
|
|
|
ENDPROC
|
|
|
|
|
|
|
|
|
|
|
|
PROC Do_Prop_Stage_PropRemoval()
|
|
|
|
IF NOT IS_PED_INJURED (PLAYER_PED_ID())
|
|
|
|
|
|
//We'll need to check the full array of placed props here for proximity to the player.
|
|
|
|
IF IS_CONTROL_JUST_PRESSED (FRONTEND_CONTROL, INT_TO_ENUM (CONTROL_ACTION, INPUT_CREATOR_DELETE))
|
|
|
|
|
|
IF i_InVicinityOfThisPlacedPropPosition > -1
|
|
AND i_InVicinityOfThisPlacedPropPosition < i_MAX_NUMBER_OF_PROPS_ALLOWED
|
|
|
|
IF DOES_ENTITY_EXIST (PlacedProps[i_InVicinityOfThisPlacedPropPosition].PropEntityIndex)
|
|
|
|
DELETE_ENTITY (PlacedProps[i_InVicinityOfThisPlacedPropPosition].PropEntityIndex)
|
|
PlacedProps[i_InVicinityOfThisPlacedPropPosition].PositionStatus = PROP_POSITION_VACANT
|
|
|
|
|
|
|
|
i_TotalNumberOfPlacedModels --
|
|
|
|
//Need to set this position as PROP_POSITION_VACANT
|
|
|
|
i_InVicinityOfThisPlacedPropPosition = -99
|
|
|
|
eCurrentPropStage = PROP_STAGE_InitialSetUp
|
|
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
IF i_InVicinityOfThisPlacedPropPosition > -1
|
|
AND i_InVicinityOfThisPlacedPropPosition < i_MAX_NUMBER_OF_PROPS_ALLOWED
|
|
|
|
IF DOES_ENTITY_EXIST (PlacedProps[i_InVicinityOfThisPlacedPropPosition].PropEntityIndex)
|
|
IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID()), GET_ENTITY_COORDS(PlacedProps[i_InVicinityOfThisPlacedPropPosition].PropEntityIndex, TRUE)) > ( f_VicinityCheckRange + 2.0 )
|
|
|
|
SET_ENTITY_ALPHA (PlacedProps[i_InVicinityOfThisPlacedPropPosition].PropEntityIndex, 255, TRUE)
|
|
|
|
i_InVicinityOfThisPlacedPropPosition = -99
|
|
|
|
eCurrentPropStage = PROP_STAGE_InitialSetUp
|
|
|
|
ENDIF
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
|
|
ENDIF
|
|
|
|
|
|
ENDPROC
|
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SCRIPT
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//Ensure this script persists during network game
|
|
NETWORK_SET_SCRIPT_IS_SAFE_FOR_NETWORK_GAME()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Create_Cellphone_Widget_Group()
|
|
|
|
g_Cellphone_Disable_WidgetToggle = FALSE //Make sure global bool for phone sleep is set to FALSE on launch of this script.
|
|
|
|
|
|
//Remember! Assigned ped voices must match the voice speaker correlation entries in the dialoguestar sheet or the audio will not play.
|
|
|
|
ADD_PED_FOR_DIALOGUE (MyLocalPedStruct, 0, NULL, "MICHAEL")
|
|
ADD_PED_FOR_DIALOGUE (MyLocalPedStruct, 1, NULL, "FRANKLIN")
|
|
|
|
ADD_PED_FOR_DIALOGUE (MyLocalPedStruct, 2, NULL, "TREVOR")
|
|
|
|
//ADD_PED_FOR_DIALOGUE (MyLocalPedStruct, 3, NULL, "STEVE")
|
|
ADD_PED_FOR_DIALOGUE (MyLocalPedStruct, 3, NULL, "EDDIE")
|
|
|
|
|
|
ADD_PED_FOR_DIALOGUE (MyLocalPedStruct, 4, NULL, "Dave")
|
|
ADD_PED_FOR_DIALOGUE (MyLocalPedStruct, 5, NULL, "MisterK")
|
|
|
|
SET_VOICE_LOCATION_FOR_NULL_PED (MyLocalPedStruct, 4, <<-31.5, 16.2, 89.9>>)
|
|
|
|
|
|
//ADD_PED_FOR_DIALOGUE (MyLocalPedStruct, ConvertSingleCharacter("8"), PLAYER_PED_ID(), "MICHAEL")
|
|
|
|
//ADD_PED_FOR_DIALOGUE (MyLocalPedStruct, ConvertSingleCharacter("D"), PLAYER_PED_ID(), "FRANKLIN")
|
|
|
|
//ADD_PED_FOR_DIALOGUE (MyLocalPedStruct, 0, PLAYER_PED_ID(), "FRANKLIN")
|
|
|
|
|
|
|
|
//Set up movie titles for debug selection widget. To add more increase TEXT_LABEL_23 ScaleformDebugMovie[6] in cellphone_globals.sch and
|
|
|
|
ScaleformDebugMovie[0] = "cellphone_badger"
|
|
ScaleformDebugMovie[1] = "cellphone_ifruit"
|
|
ScaleformDebugMovie[2] = "cellphone_b"
|
|
ScaleformDebugMovie[3] = "cellphone_ifruit"
|
|
ScaleformDebugMovie[4] = "cellphone_facade"
|
|
ScaleformDebugMovie[5] = "cellphone_prologue"
|
|
|
|
|
|
|
|
SET_TRACKIFY_TARGET_VECTOR (<<1565.5, 2858.3, 54.7>>, TRUE)
|
|
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|
|
i_SP_Queue_Window_StartTime = GET_GAME_TIMER() //Used by Social Feed Controller to determine whether the feed creation window is open or not.
|
|
//Starting it here as the Cellphone Controller script is persistent across SP and MP.
|
|
|
|
|
|
|
|
|
|
//Set up screen positions and keep a copy of display ratio type via Setup_Cellphone_Signifier...
|
|
Setup_Cellphone_Signifier_Positions_according_to_Screen_Ratio()
|
|
|
|
|
|
Fill_All_Primary_App_Sheets()
|
|
TitleUpdate_Patch_In_JobList_For_SP_Phone()
|
|
|
|
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
|
|
IF g_Chosen_Ratio = DISPLAY_16_9
|
|
|
|
g_Cellphone_Ratio_4_3_WidgetToggle = FALSE
|
|
g_Cellphone_Ratio_16_9_WidgetToggle = TRUE
|
|
|
|
ELSE
|
|
|
|
g_Cellphone_Ratio_16_9_WidgetToggle = FALSE
|
|
g_Cellphone_Ratio_4_3_WidgetToggle = TRUE
|
|
|
|
ENDIF
|
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//Set phone display status to AWAY on startup of this script.
|
|
g_Cellphone.PhoneDS = PDS_AWAY
|
|
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintnl()
|
|
cdPrintstring("STATE ASSIGNMENT 42. Cellphone_Controller assigns PDS_AWAY")
|
|
cdPrintnl()
|
|
#endif
|
|
|
|
|
|
|
|
//g_b_ToggleButtonLabels = TRUE //default to showing button labels
|
|
|
|
g_b_ToggleButtonLabels = FALSE //default to not showing button labels
|
|
|
|
g_b_Secondary_Screen_Available = FALSE //default to having secondary screen unavailable
|
|
|
|
|
|
g_Cell_Pic_Stage = PIC_STAGE_IDLE
|
|
|
|
|
|
|
|
//When testing release mode, reinstate this section in order to send some test text messages so buttons and format can be checked.
|
|
/*
|
|
WAIT (2000)
|
|
SEND_TEXT_MESSAGE_TO_CURRENT_PLAYER (CHAR_MICHAEL, "TMSG", "TXT_101", TXTMSG_LOCKED)
|
|
|
|
WAIT (2000)
|
|
SEND_TEXT_MESSAGE_TO_CURRENT_PLAYER (CHAR_FRANKLIN, "TMSG", "TXT_102", TXTMSG_UNLOCKED)
|
|
|
|
WAIT (2000)
|
|
SEND_TEXT_MESSAGE_TO_CURRENT_PLAYER (CHAR_TREVOR, "TMSG", "TXT_106", TXTMSG_UNLOCKED)
|
|
*/
|
|
|
|
|
|
|
|
|
|
//Do not check in... This is for testing the core code phone if the main loop contents are disabled.
|
|
//CREATE_MOBILE_PHONE (MOBILE_1)
|
|
|
|
|
|
|
|
|
|
//DMPP Prop Placement temp setup
|
|
#if IS_DEBUG_BUILD
|
|
|
|
eCurrentPropStage = PROP_STAGE_Dormant
|
|
|
|
#endif
|
|
scrEmail_Data single_Marketing_email_Received_Data
|
|
|
|
|
|
|
|
WHILE TRUE
|
|
|
|
|
|
|
|
|
|
|
|
WAIT(0)
|
|
|
|
|
|
|
|
|
|
|
|
//This will fix 2502872 and 2517397 when code fix the actual toggle.
|
|
IF g_Cellphone.PhoneDS > PDS_AWAY
|
|
|
|
DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_VEH_HYDRAULICS_CONTROL_TOGGLE)
|
|
DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_VEH_PARACHUTE) //fix for 3176604
|
|
DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_VEH_BIKE_WINGS)
|
|
DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_VEH_TRANSFORM) //4168740 and 4152553 - Disable Deluxo transformation when phone is up in any circumstance.
|
|
DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_VEH_PARACHUTE) //4983240 - Disable Scramjet boost when phone is up in any circumstance.
|
|
|
|
//DISPLAY_TEXT_WITH_LITERAL_STRING (0.55, 0.34, "STRING", "Dev NG CHN TEST PC")
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
IF g_b_ForceRerunOfMarketingPosixGrab
|
|
AND GNMCurrentStage = GNM_RETRIEVAL_FINISHED
|
|
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintnl()
|
|
cdPrintstring("Cellphone_Controller - DEBUG FORCING a new marketing email retrieval process.")
|
|
cdPrintnl()
|
|
#endif
|
|
|
|
g_b_ForceRerunOfMarketingPosixGrab = FALSE
|
|
GNMCurrentStage = GNM_DORMANT
|
|
|
|
ENDIF
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
IF GNMCurrentStage = GNM_DORMANT
|
|
|
|
IF NETWORK_IS_GAME_IN_PROGRESS()
|
|
|
|
GNMCurrentStage = GNM_LAUNCH_RETRIEVAL
|
|
|
|
tempPosixStat = GET_MP_INT_CHARACTER_STAT(MP_STAT_LAST_READ_EMAIL_POSIX)
|
|
|
|
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintnl()
|
|
cdPrintstring("Cellphone_Controller - Launching Marketing email retrieval process.")
|
|
cdPrintnl()
|
|
#endif
|
|
|
|
ENDIF
|
|
|
|
ELSE
|
|
|
|
IF NETWORK_IS_GAME_IN_PROGRESS()
|
|
|
|
IF GNMCurrentStage = GNM_LAUNCH_RETRIEVAL
|
|
|
|
//Start email retrieval
|
|
//Get stat value
|
|
//Set launch timer
|
|
|
|
//2563312 - We need to support localisation tags now.
|
|
SWITCH GET_CURRENT_LANGUAGE()
|
|
|
|
|
|
CASE LANGUAGE_UNDEFINED
|
|
SC_EMAIL_SET_CURRENT_EMAIL_TAG("gta5mkt_en")
|
|
BREAK
|
|
|
|
CASE LANGUAGE_ENGLISH
|
|
SC_EMAIL_SET_CURRENT_EMAIL_TAG("gta5mkt_en")
|
|
BREAK
|
|
|
|
CASE LANGUAGE_FRENCH
|
|
SC_EMAIL_SET_CURRENT_EMAIL_TAG("gta5mkt_fr")
|
|
BREAK
|
|
|
|
CASE LANGUAGE_GERMAN
|
|
SC_EMAIL_SET_CURRENT_EMAIL_TAG("gta5mkt_ge")
|
|
BREAK
|
|
|
|
CASE LANGUAGE_ITALIAN
|
|
SC_EMAIL_SET_CURRENT_EMAIL_TAG("gta5mkt_it")
|
|
BREAK
|
|
|
|
CASE LANGUAGE_SPANISH
|
|
SC_EMAIL_SET_CURRENT_EMAIL_TAG("gta5mkt_sp")
|
|
BREAK
|
|
|
|
CASE LANGUAGE_PORTUGUESE
|
|
SC_EMAIL_SET_CURRENT_EMAIL_TAG("gta5mkt_pt")
|
|
BREAK
|
|
|
|
CASE LANGUAGE_POLISH
|
|
SC_EMAIL_SET_CURRENT_EMAIL_TAG("gta5mkt_pl")
|
|
BREAK
|
|
|
|
CASE LANGUAGE_RUSSIAN
|
|
SC_EMAIL_SET_CURRENT_EMAIL_TAG("gta5mkt_ru")
|
|
BREAK
|
|
|
|
CASE LANGUAGE_KOREAN
|
|
SC_EMAIL_SET_CURRENT_EMAIL_TAG("gta5mkt_ko")
|
|
BREAK
|
|
|
|
CASE LANGUAGE_CHINESE
|
|
SC_EMAIL_SET_CURRENT_EMAIL_TAG("gta5mkt_ch")
|
|
BREAK
|
|
|
|
CASE LANGUAGE_JAPANESE
|
|
SC_EMAIL_SET_CURRENT_EMAIL_TAG("gta5mkt_ja")
|
|
BREAK
|
|
|
|
CASE LANGUAGE_MEXICAN
|
|
SC_EMAIL_SET_CURRENT_EMAIL_TAG("gta5mkt_me")
|
|
BREAK
|
|
CASE LANGUAGE_CHINESE_SIMPLIFIED
|
|
//New tag provided in bug 3790944.
|
|
SC_EMAIL_SET_CURRENT_EMAIL_TAG("gta5mkt_cn")
|
|
BREAK
|
|
|
|
ENDSWITCH
|
|
|
|
//Removed.
|
|
//SC_EMAIL_SET_CURRENT_EMAIL_TAG("gta5marketing") //Critical! We only want to retrieve marketing messages, not any Eyefind user sent stuff.
|
|
|
|
IF MPGlobalsAmbience.bRecievedEventEmail
|
|
SC_EMAIL_RETRIEVE_EMAILS (0, 1) //Just need to grab the first email which should be the newest.
|
|
ENDIF
|
|
|
|
|
|
|
|
GNMCurrentStage = GNM_RETRIEVAL_ONGOING
|
|
|
|
ENDIF
|
|
|
|
|
|
IF GNMCurrentStage = GNM_RETRIEVAL_ONGOING
|
|
|
|
MarketingCurrentRetrievalStatus = SC_EMAIL_GET_RETRIEVAL_STATUS()
|
|
|
|
SWITCH MarketingCurrentRetrievalStatus
|
|
|
|
|
|
//Marketing Retrieval Processed Finished ? THIS IS NOT GETTING HIT FROM CODE.
|
|
CASE EMAIL_RETRIEVAL_SUCCEEDED
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
cdPrintnl()
|
|
cdPrintstring("Cellphone_Cont - Finished retrieving email batch.")
|
|
cdPrintnl()
|
|
#ENDIF
|
|
|
|
BREAK
|
|
|
|
|
|
CASE EMAIL_RETRIEVAL_NONE
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
cdPrintnl()
|
|
cdPrintstring("Cellphone_Cont - Marketing EMAIL RETRIEVAL NONE - Should not see this spam repeatedly! Report to Steve T! Marketing emails retrieved is ")
|
|
cdPrintnl()
|
|
cdPrintint(SC_EMAIL_GET_NUM_RETRIEVED_EMAILS())
|
|
#ENDIF
|
|
|
|
//Need to do stat posix comparison here if we have any retrieved emails.
|
|
IF SC_EMAIL_GET_NUM_RETRIEVED_EMAILS() > 0
|
|
|
|
|
|
|
|
SC_EMAIL_GET_EMAIL_AT_INDEX (0, single_Marketing_email_Received_Data)
|
|
|
|
//INT iArrayIndex = 0
|
|
|
|
//CONVERT_POSIX_TIME (single_email_Received_Data.CreatePosixTime, SingleEmailTimeStamp)
|
|
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
cdPrintstring("Marketing Subject is ")
|
|
cdPrintstring(single_Marketing_email_Received_Data.Subject[1])
|
|
cdPrintnl()
|
|
cdPrintstring(" - Sender was ")
|
|
cdPrintstring(single_Marketing_email_Received_Data.SenderName)
|
|
cdPrintstring(" at posix ")
|
|
cdPrintint(single_Marketing_email_Received_Data.CreatePosixTime)
|
|
cdPrintnl()
|
|
cdPrintstring("The grabbed posix profile stat for comparison is ")
|
|
cdPrintint(tempPosixStat)
|
|
cdPrintnl()
|
|
|
|
#endif
|
|
|
|
IF single_Marketing_email_Received_Data.CreatePosixTime <> tempPosixStat //This must be a fresh marketing email if it does not match the stat.
|
|
|
|
g_NumberOfUnreadMarketingEmailsThisSession = 1 // Set the unread emails to 1. The stat will be updated in AppMPEmail when the user reads it.
|
|
|
|
ELSE
|
|
|
|
g_NumberOfUnreadMarketingEmailsThisSession = 0 // Set the unread emails to 0. The posix stat and the posix for the newest email match.
|
|
|
|
ENDIF
|
|
|
|
|
|
ENDIF
|
|
|
|
|
|
GNMCurrentStage = GNM_RETRIEVAL_FINISHED //Don't set to dormant. We only do this once per session.
|
|
|
|
BREAK
|
|
|
|
|
|
CASE EMAIL_RETRIEVAL_PENDING
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
cdPrintnl()
|
|
cdPrintstring("Cellphone_Cont - Marketing EMAIL RETRIEVAL PENDING...")
|
|
cdPrintnl()
|
|
#ENDIF
|
|
|
|
BREAK
|
|
|
|
|
|
CASE EMAIL_RETRIEVAL_CANCELLED
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
cdPrintnl()
|
|
cdPrintstring("Cellphone_Cont - Marketing EMAIL RETRIEVAL CANCELLED!")
|
|
cdPrintnl()
|
|
#ENDIF
|
|
|
|
g_NumberOfUnreadMarketingEmailsThisSession = 0
|
|
|
|
GNMCurrentStage = GNM_RETRIEVAL_FINISHED //Don't set to dormant. We only do this once per session.
|
|
|
|
BREAK
|
|
|
|
|
|
ENDSWITCH
|
|
|
|
|
|
ENDIF
|
|
|
|
|
|
ELSE
|
|
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintnl()
|
|
cdPrintstring("Cellphone_Controller - Was trying to retrieve Marketing email but Net game no longer in progress. Aborting.")
|
|
cdPrintnl()
|
|
#endif
|
|
|
|
|
|
g_NumberOfUnreadMarketingEmailsThisSession = 0
|
|
GNMCurrentStage = GNM_DORMANT
|
|
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
IF IS_IN_VEHICLE_MOBILE_PHONE_CAMERA_RENDERING()
|
|
//DISPLAY_TEXT_WITH_LITERAL_STRING (0.40, 0.10, "STRING", "2 Veh_Cam_Rendering Test")
|
|
//REPLAY_PREVENT_RECORDING_THIS_FRAME() //Fully prevent prop editor recording for bug 2410393.
|
|
ENDIF
|
|
|
|
|
|
//DMPP
|
|
#if IS_DEBUG_BUILD
|
|
//Start of temporary Director Mode prop placement work
|
|
SWITCH eCurrentPropStage
|
|
|
|
CASE PROP_STAGE_Dormant
|
|
//DISPLAY_TEXT_WITH_LITERAL_STRING (0.40, 0.10, "STRING", "PS_Dormant")
|
|
BREAK
|
|
|
|
CASE PROP_STAGE_InitialSetUp
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING (0.40, 0.10, "STRING", "PS_Initial")
|
|
BREAK
|
|
|
|
CASE PROP_STAGE_PropCycling
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING (0.40, 0.10, "STRING", "PS_PropCycling")
|
|
BREAK
|
|
|
|
CASE PROP_STAGE_PropInHand
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING (0.40, 0.10, "STRING", "PS_PropInHand")
|
|
BREAK
|
|
|
|
CASE PROP_STAGE_PropPlacement
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING (0.40, 0.10, "STRING", "PS_PropPlace")
|
|
BREAK
|
|
|
|
CASE PROP_STAGE_PropRemoval
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING (0.40, 0.10, "STRING", "PS_LastPropRemove")
|
|
BREAK
|
|
|
|
CASE PROP_STAGE_SavingPropScene
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING (0.40, 0.10, "STRING", "PS_Saving")
|
|
BREAK
|
|
|
|
CASE PROP_STAGE_ExitAndCleanup
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING (0.40, 0.10, "STRING", "PS_Cleaning up!")
|
|
BREAK
|
|
|
|
ENDSWITCH
|
|
|
|
|
|
|
|
IF eCurrentPropStage > PROP_STAGE_DORMANT
|
|
|
|
|
|
//FIX THIS:
|
|
//Error: [script] Assertf(pEntity) FAILED: SCRIPT: Script Name = cellphone_controller : Program Counter = 39551: SET_ENTITY_COORDS - Entity doesn't exist (from Updating script cellphone_controller)
|
|
|
|
|
|
|
|
SET_INPUT_EXCLUSIVE (FRONTEND_CONTROL, INPUT_FRONTEND_LB)
|
|
SET_INPUT_EXCLUSIVE (FRONTEND_CONTROL, INPUT_FRONTEND_RB)
|
|
|
|
SET_INPUT_EXCLUSIVE (FRONTEND_CONTROL, INPUT_CREATOR_ACCEPT)
|
|
SET_INPUT_EXCLUSIVE (FRONTEND_CONTROL, INPUT_CREATOR_DELETE)
|
|
|
|
|
|
DISPLAY_TEXT_WITH_2_NUMBERS (0.60, 0.25, "DMPP_MODNUM", i_TotalNumberOfPlacedModels, i_MAX_NUMBER_OF_PROPS_ALLOWED) //Text from americanreplay.txt
|
|
|
|
IF i_InVicinityOfThisPlacedPropPosition > -99
|
|
|
|
DISPLAY_TEXT_WITH_NUMBER (0.80, 0.1, "DMPP_NEARBY", i_InVicinityOfThisPlacedPropPosition)
|
|
|
|
|
|
ELSE
|
|
|
|
DISPLAY_TEXT_WITH_FLOAT (0.80, 0.1, "CELL_500", v_InHandPropRotation.z, 3)
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
DISPLAY_TEXT (0.6, 0.35, SelectablePropArray[i_CurrentModelIndex].PropTextLabel) //Text from americancreator.txt
|
|
|
|
|
|
SWITCH SelectablePropArray[i_CurrentModelIndex].PropCategory
|
|
|
|
|
|
CASE DM_PROPCATEGORY1
|
|
|
|
DISPLAY_TEXT (0.6, 0.45, "DMPP_CAT1") //Text from americanreplay.txt
|
|
|
|
BREAK
|
|
|
|
|
|
CASE DM_PROPCATEGORY2
|
|
|
|
DISPLAY_TEXT (0.6, 0.45, "DMPP_CAT2") //Text from americanreplay.txt
|
|
|
|
BREAK
|
|
|
|
|
|
CASE DM_PROPCATEGORY3
|
|
|
|
DISPLAY_TEXT (0.6, 0.45, "DMPP_CAT3") //Text from americanreplay.txt
|
|
|
|
BREAK
|
|
|
|
|
|
ENDSWITCH
|
|
|
|
|
|
|
|
ENDIF
|
|
|
|
#endif
|
|
|
|
|
|
//DMPP
|
|
#if IS_DEBUG_BUILD
|
|
//When integrated with the Director Mode script, the prop placement routines would be woken up from the dormant state by selection of a menu option.
|
|
IF IS_KEYBOARD_KEY_JUST_PRESSED (KEY_9)
|
|
//OR Is_Phone_Control_Just_Pressed (FRONTEND_CONTROL, INT_TO_ENUM (CONTROL_ACTION, PHONE_POSITIVE_INPUT)) //For Xbox One
|
|
|
|
|
|
|
|
//SET_EXTRACTION_PRESIDENT_VECTOR (<<1.1, 7.3, 9.5>>)
|
|
|
|
|
|
|
|
//SET_EXTRACTION_BODYGUARD_VECTOR (<<4.2, 8.4, 12.6>>)
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
REQUEST_SCRIPT ("director_mode")
|
|
|
|
WHILE NOT HAS_SCRIPT_LOADED ("director_mode")
|
|
|
|
WAIT(0)
|
|
|
|
ENDWHILE
|
|
|
|
|
|
START_NEW_SCRIPT ("director_mode", MISSION_STACK_SIZE)
|
|
*/
|
|
|
|
/*
|
|
IF eCurrentPropStage = PROP_STAGE_Dormant
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SF_PropPlacementMovieIndex = REQUEST_SCALEFORM_MOVIE ("instructional_buttons")
|
|
|
|
WHILE NOT HAS_SCALEFORM_MOVIE_LOADED (SF_PropPlacementMovieIndex)
|
|
OR NOT HAS_SCALEFORM_MOVIE_LOADED (SF_PropPlacementMovieIndex)
|
|
|
|
WAIT (0)
|
|
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintnl()
|
|
cdPrintstring("Waiting on Prop Placement instructional buttons movie to load...")
|
|
cdPrintnl()
|
|
#endif
|
|
|
|
ENDWHILE
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//Use existing Creator Prop text to label props.
|
|
REQUEST_ADDITIONAL_TEXT("FMMC", ODDJOB_TEXT_SLOT)
|
|
WHILE NOT HAS_THIS_ADDITIONAL_TEXT_LOADED("FMMC", ODDJOB_TEXT_SLOT)
|
|
|
|
WAIT (0)
|
|
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintnl()
|
|
cdPrintstring("Waiting on Prop Placement information text to load test...")
|
|
cdPrintnl()
|
|
#endif
|
|
|
|
ENDWHILE
|
|
|
|
|
|
|
|
Fill_Selectable_Prop_Sheet (0, "PROP_MP_CONE_01", "FMMC_DPR_CONE", DM_PROPCATEGORY1)
|
|
Fill_Selectable_Prop_Sheet (1, "prop_bench_09", "FMMC_PR_12", DM_PROPCATEGORY2)
|
|
Fill_Selectable_Prop_Sheet (2, "PROP_MP_RAMP_01", "FMMC_PR_RMPLFR", DM_PROPCATEGORY3)
|
|
Fill_Selectable_Prop_Sheet (3, "PROP_OFFROAD_BALE01", "FMMC_PR_HBSTK", DM_PROPCATEGORY2)
|
|
|
|
|
|
|
|
//Test Props
|
|
//SelectablePropArray[0].PropModelHash = GET_HASH_KEY("PROP_MP_CONE_01")
|
|
//SelectablePropArray[0].PropTextLabel = "FMMC_DPR_CONE"
|
|
//SelectablePropArray[0].PropCategory = DM_PROPCATEGORY1
|
|
|
|
|
|
|
|
//SelectablePropArray[1].PropModelHash = GET_HASH_KEY("prop_bench_09")
|
|
//SelectablePropArray[2].PropModelHash = GET_HASH_KEY("PROP_MP_RAMP_01")
|
|
//SelectablePropArray[3].PropModelHash = GET_HASH_KEY("PROP_OFFROAD_BALE01")
|
|
|
|
|
|
|
|
i_CurrentModelIndex = 0
|
|
|
|
|
|
CurrentlySelectedPropModel = INT_TO_ENUM(MODEL_NAMES, SelectablePropArray[i_CurrentModelIndex].PropModelHash)
|
|
|
|
|
|
|
|
Set_Up_Buttons_For_Placement()
|
|
|
|
|
|
|
|
eCurrentPropStage = PROP_STAGE_InitialSetUp
|
|
|
|
ELSE
|
|
|
|
eCurrentPropStage = PROP_STAGE_ExitAndCleanUp
|
|
|
|
ENDIF
|
|
|
|
*/
|
|
|
|
|
|
ENDIF // End of debug Key_9 pressed condition check.
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
IF eCurrentPropStage > PROP_STAGE_DORMANT
|
|
|
|
|
|
DRAW_SCALEFORM_MOVIE_FULLSCREEN (SF_PropPlacementMovieIndex, 255, 255, 255,0)
|
|
|
|
|
|
IF Is_Phone_Control_Just_Pressed (FRONTEND_CONTROL, INT_TO_ENUM (CONTROL_ACTION, PHONE_NEGATIVE_INPUT))
|
|
|
|
Do_Prop_Stage_ExitAndCleanUp()
|
|
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
|
|
|
|
IF eCurrentPropStage = PROP_STAGE_ExitAndCleanUp
|
|
|
|
Do_Prop_Stage_ExitAndCleanUp()
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
|
|
//Set up placement disk and first prop model.
|
|
IF eCurrentPropStage = PROP_STAGE_InitialSetUp
|
|
|
|
Do_Prop_Stage_InitialSetUp()
|
|
|
|
ENDIF //End of eCurrentPropStage = PROP_STAGE_InitialSetUp condition check.
|
|
|
|
|
|
|
|
|
|
IF eCurrentPropStage = PROP_STAGE_PropCycling
|
|
|
|
Do_Prop_Stage_PropCycling()
|
|
|
|
ENDIF //End of eCurrentPropStage = PROP_STAGE_PropInHand condition check.
|
|
|
|
|
|
|
|
|
|
//The player is currently holding a prop and deciding where to place it. The placement disk and the prop itself update their position each
|
|
//frame until the player selects a location. We also check for the rotation of the object and the player cycling to a different object
|
|
//from the menu. All button checks temporary.
|
|
IF eCurrentPropStage = PROP_STAGE_PropInHand
|
|
|
|
//IF i_TotalNumberOfPlacedModels = i_MAX_NUMBER_OF_PROPS_ALLOWED
|
|
|
|
//Do_Prop_Stage_PropRemoval()
|
|
|
|
//ELSE
|
|
|
|
Do_Prop_Stage_PropInHand()
|
|
|
|
//ENDIF
|
|
|
|
ENDIF //End of eCurrentPropStage = PROP_STAGE_PropInHand condition check.
|
|
|
|
|
|
|
|
|
|
IF eCurrentPropStage = PROP_STAGE_PropPlacement
|
|
|
|
Do_Prop_Stage_PropPlacement()
|
|
|
|
ENDIF //End of eCurrentPropStage = PROP_STAGE_PropPlacement condition check.
|
|
|
|
|
|
|
|
|
|
|
|
IF eCurrentPropStage = PROP_STAGE_PropRemoval
|
|
|
|
Do_Prop_Stage_PropRemoval()
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
IF IS_PC_VERSION() //Only fixing on PC just now in case this impacts other platforms in an unforeseen way... 06.01.15
|
|
|
|
|
|
IF IS_STUNT_JUMP_IN_PROGRESS() //2177764
|
|
IF g_Cellphone.PhoneDS = PDS_MAXIMUM //On homescreen only. Don't abort phone on call during a stunt jump.
|
|
|
|
g_Cellphone.PhoneDS = PDS_AWAY
|
|
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintnl()
|
|
cdPrintstring("STATE ASSIGNMENT 12065. Cellphone_Controller - Phone on homescreen during stunt jump. Aborting!")
|
|
cdPrintnl()
|
|
#endif
|
|
|
|
ENDIF
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
//Opening up director mode entry from phone for 2260082 for console as well as PC.
|
|
IF IS_CALLING_CONTACT(CHAR_DIRECTOR) //2260082 - if the player is calling Los Santos Talent from the contact list rather than the cheat number 1-999_LSTALENT
|
|
//we need to handle that here by launching director mode.
|
|
|
|
#IF FEATURE_SP_DLC_DIRECTOR_MODE
|
|
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintnl()
|
|
cdPrintstring("Cellphone_Controller - dialling Los Santos Talent from contact list... Launching director mode if in SP")
|
|
cdPrintnl()
|
|
#endif
|
|
|
|
IF g_bInMultiplayer = FALSE //SP launch only.
|
|
|
|
FEATURE_BLOCK_REASON eBlockReason
|
|
eBlockReason = GET_FEATURE_BLOCKED_REASON(DEFAULT, DEFAULT, DEBUG_DIRECTOR)
|
|
IF eBlockReason != FBR_NONE
|
|
CPRINTLN(DEBUG_DIRECTOR, "Director Mode could not launch with warning screen. Block condition ", DEBUG_GET_FEATURE_BLOCK_REASON_STRING(eBlockReason,DEBUG_DIRECTOR), " triggered during the process.")
|
|
DO_DIRECTOR_MODE_WARNING_SCREEN_WAIT(eBlockReason)
|
|
ELSE
|
|
DO_DIRECTOR_MODE_ACCEPT_SCREEN_WAIT()
|
|
ENDIF
|
|
|
|
HANG_UP_AND_PUT_AWAY_PHONE()
|
|
ENDIF
|
|
|
|
#ENDIF
|
|
|
|
ENDIF
|
|
|
|
|
|
// Kenneth R - we now need this for magdemo2
|
|
|
|
// IF g_bMagdemoActive //Quit this script when magdemo runs.
|
|
//
|
|
// #if IS_DEBUG_BUILD
|
|
//
|
|
// PRINTSTRING("Cellphone Controller quitting due to magdemo TRUE")
|
|
// PRINTNL()
|
|
//
|
|
// #endif
|
|
//
|
|
// TERMINATE_THIS_THREAD()
|
|
//
|
|
// ENDIF
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//Fix for 2181545
|
|
IF MPGlobalsAmbience.bUsingTelescope = TRUE
|
|
|
|
IF g_Cellphone.PhoneDS > PDS_AWAY
|
|
|
|
g_Cellphone.PhoneDS = PDS_AWAY
|
|
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintnl()
|
|
cdPrintstring("STATE ASSIGNMENT 12015. Cellphone_Controller - MPGlobalsAmbience.bUsingTelescope = TRUE - Forcing phone to AWAY state.")
|
|
cdPrintnl()
|
|
#endif
|
|
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
/* Debug for 2181545
|
|
IF GET_NUMBER_OF_THREADS_RUNNING_THE_SCRIPT_WITH_THIS_HASH(HASH("ob_telescope")) > 0
|
|
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING (0.35, 0.54, "STRING", "Telescope")
|
|
|
|
ENDIF
|
|
|
|
|
|
IF MPGlobalsAmbience.bUsingTelescope = TRUE
|
|
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING (0.35, 0.64, "STRING", "Tele in USE")
|
|
|
|
ENDIF
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//Application Launcher for Multiplayer to prevent WAIT 0 problems. //2139576
|
|
IF g_bInMultiplayer = TRUE
|
|
IF g_Cellphone.PhoneDS = PDS_AWAY //Cellphone must be in away state to launch applications.
|
|
|
|
|
|
IF IS_BIT_SET (BitSet_CellphoneTU, g_BSTU_LAUNCH_CELLPHONE_MP_APPCAMERA) //Set by App Switch in LAUNCH_CELLPHONE_APPLICATION if in MP.
|
|
|
|
SET_BIT (BitSet_CellphoneTU, g_BSTU_SET_CELLPHONE_CONTROLLER_LAUNCH) //Specifies that LAUNCH_CELLPHONE_APPLICATION should go through actual launch route next time evben thoughh
|
|
|
|
|
|
WAIT (0)
|
|
|
|
|
|
WHILE NOT CC_INTERNAL_LAUNCH_CELLPHONE_APPLICATION(AppCamera, FALSE, TRUE, FALSE)
|
|
|
|
WAIT(0)
|
|
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintnl()
|
|
cdPrintstring("CELLPHONE_CONT - Waiting for CC_INTERNAL MP Launch of AppCamera...")
|
|
cdPrintnl()
|
|
#endif
|
|
|
|
ENDWHILE
|
|
|
|
|
|
CLEAR_BIT (BitSet_CellphoneTU, g_BSTU_SET_CELLPHONE_CONTROLLER_LAUNCH)
|
|
CLEAR_BIT (BitSet_CellphoneTU, g_BSTU_LAUNCH_CELLPHONE_MP_APPCAMERA)
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
IF IS_BIT_SET (BitSet_CellphoneTU, g_BSTU_LAUNCH_CELLPHONE_MP_APPTRACKIFY) //Set by App Switch in LAUNCH_CELLPHONE_APPLICATION if in MP.
|
|
|
|
SET_BIT (BitSet_CellphoneTU, g_BSTU_SET_CELLPHONE_CONTROLLER_LAUNCH) //Specifies that LAUNCH_CELLPHONE_APPLICATION should go through actual launch route next time even though we are in MP.
|
|
|
|
|
|
WAIT (0)
|
|
|
|
|
|
WHILE NOT CC_INTERNAL_LAUNCH_CELLPHONE_APPLICATION(AppTrackify, FALSE, TRUE, FALSE)
|
|
|
|
WAIT(0)
|
|
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintnl()
|
|
cdPrintstring("CELLPHONE_CONT - Waiting for MP CC_INTERNAL Launch of AppTrackify...")
|
|
cdPrintnl()
|
|
#endif
|
|
|
|
ENDWHILE
|
|
|
|
|
|
CLEAR_BIT (BitSet_CellphoneTU, g_BSTU_SET_CELLPHONE_CONTROLLER_LAUNCH)
|
|
CLEAR_BIT (BitSet_CellphoneTU, g_BSTU_LAUNCH_CELLPHONE_MP_APPTRACKIFY)
|
|
CLEAR_BIT (BitSet_CellphoneTU, g_BSTU_LAUNCH_CELLPHONE_MP_APPDUMMYAPP0)
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
IF IS_BIT_SET (BitSet_CellphoneTU, g_BSTU_LAUNCH_CELLPHONE_MP_APPDUMMYAPP0) //Set by App Switch in LAUNCH_CELLPHONE_APPLICATION if in MP.
|
|
|
|
SET_BIT (BitSet_CellphoneTU, g_BSTU_SET_CELLPHONE_CONTROLLER_LAUNCH) //Specifies that LAUNCH_CELLPHONE_APPLICATION should go through actual launch route next time even though we are in MP.
|
|
|
|
|
|
WAIT (0)
|
|
|
|
|
|
WHILE NOT CC_INTERNAL_LAUNCH_CELLPHONE_APPLICATION(AppDummyApp0, FALSE, TRUE, FALSE)
|
|
|
|
WAIT(0)
|
|
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintnl()
|
|
cdPrintstring("CELLPHONE_CONT - Waiting for MP CC_INTERNAL Launch of DummyApp0...")
|
|
cdPrintnl()
|
|
#endif
|
|
|
|
ENDWHILE
|
|
|
|
|
|
CLEAR_BIT (BitSet_CellphoneTU, g_BSTU_SET_CELLPHONE_CONTROLLER_LAUNCH)
|
|
CLEAR_BIT (BitSet_CellphoneTU, g_BSTU_LAUNCH_CELLPHONE_MP_APPTRACKIFY)
|
|
CLEAR_BIT (BitSet_CellphoneTU, g_BSTU_LAUNCH_CELLPHONE_MP_APPDUMMYAPP0)
|
|
|
|
ENDIF
|
|
|
|
IF IS_BIT_SET (BitSet_CellphoneTU, g_BSTU_LAUNCH_CELLPHONE_MP_APPTEXTS) //Set by App Switch in LAUNCH_CELLPHONE_APPLICATION if in MP.
|
|
|
|
SET_BIT (BitSet_CellphoneTU, g_BSTU_SET_CELLPHONE_CONTROLLER_LAUNCH) //Specifies that LAUNCH_CELLPHONE_APPLICATION should go through actual launch route next time even though we are in MP.
|
|
|
|
|
|
WAIT (0)
|
|
|
|
|
|
WHILE NOT CC_INTERNAL_LAUNCH_CELLPHONE_APPLICATION(AppTEXTS, FALSE, TRUE, FALSE)
|
|
|
|
WAIT(0)
|
|
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintnl()
|
|
cdPrintstring("CELLPHONE_CONT - Waiting for CC_INTERNAL MP Launch of AppTEXTS...")
|
|
cdPrintnl()
|
|
#endif
|
|
|
|
ENDWHILE
|
|
|
|
|
|
CLEAR_BIT (BitSet_CellphoneTU, g_BSTU_SET_CELLPHONE_CONTROLLER_LAUNCH)
|
|
CLEAR_BIT (BitSet_CellphoneTU, g_BSTU_LAUNCH_CELLPHONE_MP_APPTEXTS)
|
|
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
Reinstate this comment to disable main loop for core code phone testing.
|
|
*/
|
|
|
|
|
|
|
|
|
|
//For bug #1891329 there seems to be a chance of PROCESS_VOICE_SESSION_STARTED_EVENT() setting voiceSession.bInVoiceSession = TRUE
|
|
//when the phone is away / disabled.
|
|
|
|
//If voiceSession.bInVoiceSession is TRUE and the phone is away then we should immediately abort the session! Need to check this doesn't screwing anything up on the
|
|
//call receiver's end.
|
|
|
|
// IF voiceSession.bInVoiceSession = TRUE
|
|
//
|
|
// IF g_Cellphone.PhoneDS < PDS_TAKEOUT
|
|
//
|
|
// #if IS_DEBUG_BUILD
|
|
//
|
|
// PRINTLN("WARNING! voiceSession.bInVoiceSession = TRUE but phone is still away or disabled. Aborting via SCRIPT_END_A_VOICE_SESSION #1891329")
|
|
//
|
|
// cdPrintnl()
|
|
// cdPrintString("WARNING! voiceSession.bInVoiceSession = TRUE but phone is still away or disabled. Aborting via SCRIPT_END_A_VOICE_SESSION #1891329")
|
|
// cdPrintnl()
|
|
//
|
|
// #endif
|
|
//
|
|
// SCRIPT_END_A_VOICE_SESSION()
|
|
//
|
|
// voiceSession.bInVoiceSession = FALSE
|
|
//
|
|
// ENDIF
|
|
//
|
|
// ENDIF
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//New work to support On Call and Invite signifier checks. TODO 2042111
|
|
IF g_bInMultiplayer = FALSE //Phone's always on screen in MP and we need to display the invites in the same place.
|
|
|
|
IF IS_BIT_SET (BitSet_CellphoneTU, g_BSTU_ONCALL_SIGNIFIER_DISPLAYED)
|
|
|
|
IF (g_Cellphone.PhoneDS <> PDS_ATTEMPTING_TO_CALL_CONTACT //See 2001926. For 99 percent of calls we want to show the phone on the hud
|
|
AND g_Cellphone.PhoneDS <> PDS_ONGOING_CALL)
|
|
OR ShouldFirstPersonPhoneHudMovementBeHidden() = FALSE
|
|
|
|
CLEAR_BIT (BitSet_CellphoneTU, g_BSTU_ONCALL_SIGNIFIER_DISPLAYED)
|
|
SET_BIT (BitSet_CellphoneDisplay_Continued, g_BSC_CELLPHONE_SIGNIFIERS_NEEDS_UPDATED)
|
|
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
cdPrintString("CELLPHONE_CONT - g_BSTU_ONCALL_SIGNIFIER_DISPLAYED was set, but player no longer on call. Clearing bit, updating sig movie.")
|
|
cdPrintnl()
|
|
|
|
#endif
|
|
|
|
|
|
|
|
ENDIF
|
|
|
|
ELSE
|
|
|
|
IF g_Cellphone.PhoneDS = PDS_ATTEMPTING_TO_CALL_CONTACT //See 2001926. For 99 percent of calls we want to show the phone on the hud
|
|
OR g_Cellphone.PhoneDS = PDS_ONGOING_CALL
|
|
|
|
IF ShouldFirstPersonPhoneHudMovementBeHidden()
|
|
|
|
SET_BIT (BitSet_CellphoneTU, g_BSTU_ONCALL_SIGNIFIER_DISPLAYED)
|
|
SET_BIT (BitSet_CellphoneDisplay_Continued, g_BSC_CELLPHONE_SIGNIFIERS_NEEDS_UPDATED)
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
cdPrintString("CELLPHONE_CONT - g_BSTU_ONCALL_SIGNIFIER_DISPLAYED was clear, but player now on call. Setting bit, updating sig movie.")
|
|
cdPrintnl()
|
|
|
|
#endif
|
|
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
|
|
IF IS_BIT_SET (BitSet_CellphoneTU, g_BSTU_INVITE_SIGNIFIER_DISPLAYED) //Make sure any invites received in MP can't cross over into SP by clearing the signifier.
|
|
|
|
CLEAR_BIT (BitSet_CellphoneTU, g_BSTU_INVITE_SIGNIFIER_DISPLAYED)
|
|
SET_BIT (BitSet_CellphoneDisplay_Continued, g_BSC_CELLPHONE_SIGNIFIERS_NEEDS_UPDATED)
|
|
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
cdPrintString("CELLPHONE_CONT - g_BSTU_INVITE_SIGNIFIER_DISPLAYED was set, but player now back in SP. Clearing bit, updating sig movie.")
|
|
cdPrintnl()
|
|
|
|
#endif
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
ELSE //Handle Invites in MP only.
|
|
|
|
|
|
IF IS_BIT_SET (BitSet_CellphoneTU, g_BSTU_INVITE_SIGNIFIER_DISPLAYED)
|
|
|
|
|
|
// KGMINDICATOR
|
|
IF ((g_numNewJoblistInvites = 0) OR (g_displayPlayerInvitesIndicator = FALSE)) //2060056 - requested that we only display indicator if there are human player invites pending.
|
|
AND NOT (g_forceDisplayPlayerInvitesIndicator)
|
|
// IF g_numNewJoblistInvites = 0
|
|
// OR g_displayPlayerInvitesIndicator = FALSE //2060056 - requested that we only display indicator if there are human player invites pending.
|
|
|
|
|
|
CLEAR_BIT (BitSet_CellphoneTU, g_BSTU_INVITE_SIGNIFIER_DISPLAYED)
|
|
SET_BIT (BitSet_CellphoneDisplay_Continued, g_BSC_CELLPHONE_SIGNIFIERS_NEEDS_UPDATED)
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
cdPrintString("CELLPHONE_CONT - g_BSTU_INVITE_SIGNIFIER_DISPLAYED was set, but pending invites now at zero. Clearing bit, updating sig movie.")
|
|
cdPrintnl()
|
|
|
|
#endif
|
|
|
|
ENDIF
|
|
|
|
ELSE
|
|
|
|
|
|
// KGMINDICATOR
|
|
IF (g_forceDisplayPlayerInvitesIndicator)
|
|
OR ((g_numNewJobListInvites > 0) AND (g_displayPlayerInvitesIndicator = TRUE)) //2060056 - requested that we only display indicator if there are human player invites pending.
|
|
// IF g_numNewJobListInvites > 0
|
|
// AND g_displayPlayerInvitesIndicator = TRUE //2060056 - requested that we only display indicator if there are human player invites pending.
|
|
|
|
|
|
SET_BIT (Bitset_CellphoneTU, g_BSTU_INVITE_SIGNIFIER_DISPLAYED)
|
|
SET_BIT (Bitset_CellphoneDisplay_Continued, g_BSC_CELLPHONE_SIGNIFIERS_NEEDS_UPDATED)
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
cdPrintString("CELLPHONE_CONT - g_BSTU_INVITE_SIGNIFIER_DISPLAYED was clear, but invite now pending. Setting bit, updating sig movie.")
|
|
|
|
#endif
|
|
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
|
|
//2159597 work begins...
|
|
IF IS_PC_VERSION()
|
|
|
|
//IF IS_CONTROL_PRESSED (FRONTEND_CONTROL, INPUT_PC_PUSH_TO_TALK) //Needs updated with PC Control INPUT_PC_PUSH_TO_TALK when available.
|
|
IF NETWORK_IS_PUSH_TO_TALK_ACTIVE() //2196978 - David Yang requested we swap over to this check rather than relying on the control above to avoid state mismatches.
|
|
//OR g_DumpDisableEveryFrameCaller// - Comment in to easily test via widget.
|
|
IF NOT (IS_BIT_SET (Bitset_CellphoneTU, g_BSTU_PUSHTALK_SIGNIFIER_DISPLAYED))
|
|
|
|
SET_BIT (Bitset_CellphoneTU, g_BSTU_PUSHTALK_SIGNIFIER_DISPLAYED)
|
|
SET_BIT (Bitset_CellphoneDisplay_Continued, g_BSC_CELLPHONE_SIGNIFIERS_NEEDS_UPDATED)
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
cdPrintString("CELLPHONE_CONT - PC PUSH_TO_TALK toggled ON via NETWORK_IS_PUSH_TO_TALK_ACTIVE command.")
|
|
cdPrintnl()
|
|
|
|
#endif
|
|
|
|
ENDIF
|
|
|
|
ELSE
|
|
|
|
IF IS_BIT_SET (Bitset_CellphoneTU, g_BSTU_PUSHTALK_SIGNIFIER_DISPLAYED)
|
|
|
|
CLEAR_BIT (Bitset_CellphoneTU, g_BSTU_PUSHTALK_SIGNIFIER_DISPLAYED)
|
|
SET_BIT (Bitset_CellphoneDisplay_Continued, g_BSC_CELLPHONE_SIGNIFIERS_NEEDS_UPDATED)
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
cdPrintString("CELLPHONE_CONT - PC PUSH_TO_TALK toggled off.")
|
|
cdPrintnl()
|
|
|
|
#endif
|
|
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
ENDIF
|
|
//End of 2159597 work.
|
|
|
|
|
|
//Sleep Mode Stat Check
|
|
IF b_CheckingSleepModeDurationForStatUpdate = FALSE
|
|
|
|
IF IS_BIT_SET (BitSet_CellphoneDisplay, g_BS_DISPLAY_SLEEP_SIGNIFIER)
|
|
|
|
STAT_GET_INT (SP_CELLPHONE_SLEEP_TIME, i_ValueOfStatWhenSleepWasBegun)
|
|
|
|
i_SleepModeStartTime = GET_GAME_TIMER()
|
|
|
|
b_CheckingSleepModeDurationForStatUpdate = TRUE
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
cdPrintnl()
|
|
cdPrintString("CELLPHONE_CONT - Now in Sleep Mode. Duration logging begins. Got existing stat SP_CELLPHONE_SLEEP_TIME which is ")
|
|
cdPrintInt(i_ValueOfStatWhenSleepWasBegun)
|
|
cdPrintnl()
|
|
cdPrintnl()
|
|
|
|
#endif
|
|
|
|
ENDIF
|
|
|
|
ELSE
|
|
|
|
IF NOT (IS_BIT_SET (BitSet_CellphoneDisplay, g_BS_DISPLAY_SLEEP_SIGNIFIER))
|
|
|
|
STAT_GET_INT (SP_CELLPHONE_SLEEP_TIME, i_ValueOfStatWhenSleepWasBegun) //Safer to get this again.
|
|
|
|
i_SleepModeEndTime = GET_GAME_TIMER()
|
|
|
|
b_CheckingSleepModeDurationForStatUpdate = FALSE
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
cdPrintnl()
|
|
|
|
cdPrintString("CELLPHONE_CONT - No longer in Sleep Mode. Duration logging ended. Updating stat SP_CELLPHONE_SLEEP_TIME.")
|
|
cdPrintnl()
|
|
cdPrintString("Value of original stat was: ")
|
|
cdPrintInt(i_ValueOfStatWhenSleepWasBegun)
|
|
cdPrintnl()
|
|
cdPrintString("Value of this Sleep Duration was: ")
|
|
cdPrintInt((i_SleepModeEndTime - i_SleepModeStartTime))
|
|
cdPrintnl()
|
|
cdPrintstring("New stat value assigned: ")
|
|
cdPrintInt(i_ValueOfStatWhenSleepWasBegun + (i_SleepModeEndTime - i_SleepModeStartTime))
|
|
cdPrintnl()
|
|
cdPrintnl()
|
|
|
|
#endif
|
|
|
|
|
|
STAT_SET_INT (SP_CELLPHONE_SLEEP_TIME, i_ValueOfStatWhenSleepWasBegun + (i_SleepModeEndTime - i_SleepModeStartTime))
|
|
|
|
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Check_For_Disable_Cellphone_ThisFrameOnly()
|
|
|
|
Check_For_Disable_Camera_App_ThisFrameOnly()
|
|
|
|
Check_For_Disable_Internet_App_ThisFrameOnly()
|
|
|
|
|
|
|
|
//Signifier checks...
|
|
|
|
Check_If_Signifier_Movie_Needs_Drawn_or_Removed() //Solely used by SLEEP mode signifier now.
|
|
|
|
|
|
Check_For_PlayerSwap() //Important that this runs every frame so the cellphone owner is kept up to date.
|
|
|
|
|
|
Check_For_Read_Auto_TextLaunch_Timeout()
|
|
|
|
|
|
Check_For_CancelledMPTextData()
|
|
|
|
|
|
|
|
//Master Mobile Interference control... This bit is set in dialogye handler when the pre-ring effect is played.
|
|
IF IS_BIT_SET (BitSet_CellphoneDisplay_Continued, g_BSC_PLAY_INTERFERENCE_AUDIO)
|
|
|
|
|
|
IF NOT IS_MOBILE_INTERFERENCE_ACTIVE() //As long as the pre-ring effect is playing the phone will remain in takeout state unless the bit is cleared by a manual d-pad press.
|
|
|
|
CLEAR_BIT (BitSet_CellphoneDisplay_Continued, g_BSC_PLAY_INTERFERENCE_AUDIO)
|
|
|
|
ENDIF
|
|
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
//If a SEND_TEXT_FUNCTION... has been called, then it will set this flag.
|
|
IF IS_BIT_SET (BitSet_CellphoneDisplay, g_BS_CELLPHONE_TEXTFEED_NEEDS_UPDATED)
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
cdPrintString("CELLPHONE_CONT - Update_Feed_For_New_Text_Message requested.")
|
|
cdPrintnl()
|
|
|
|
#endif
|
|
|
|
|
|
|
|
Update_Feed_For_New_Text_Message()
|
|
|
|
CLEAR_BIT (BitSet_CellphoneDisplay, g_BS_CELLPHONE_TEXTFEED_NEEDS_UPDATED)
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
IF IS_BIT_SET (BitSet_CellphoneDisplay, g_BS_DISPLAY_NEW_CONTACT_SIGNIFIER)
|
|
|
|
Create_Contact_Feed_Entry()
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
IF IS_BIT_SET (BitSet_CellphoneTU, g_BSTU_DISPLAY_EMAIL_SIGNIFIER)
|
|
|
|
Create_Email_Feed_Entry()
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
|
|
IF IS_BIT_SET (BitSet_CellphoneDisplay_Continued, g_BSC_CELLPHONE_SIGNIFIERS_NEEDS_UPDATED)
|
|
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
cdPrintString("CELLPHONE_CONT - Updating Cellphone Signifier usage.")
|
|
cdPrintnl()
|
|
|
|
#endif
|
|
|
|
|
|
g_Current_Number_Of_Signifiers = 0 //This will force Check_If_Signifier_Movie_Needs
|
|
//to remove the cellphone alert movie next frame if NO further alerts are added immediately below.
|
|
|
|
|
|
|
|
|
|
|
|
IF IS_BIT_SET (BitSet_CellphoneDisplay, g_BS_DISPLAY_SLEEP_SIGNIFIER)
|
|
|
|
g_Current_Number_Of_Signifiers ++
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
cdPrintString("CELLPHONE_CONT - Sleep mode signifier bit has been set. Current number of signifiers incremented.")
|
|
cdPrintnl()
|
|
|
|
#endif
|
|
|
|
ENDIF
|
|
|
|
|
|
IF IS_BIT_SET (BitSet_CellphoneTU, g_BSTU_ONCALL_SIGNIFIER_DISPLAYED)
|
|
|
|
IF g_bInMultiplayer = FALSE //Only display on call signifier in SP.
|
|
|
|
g_Current_Number_Of_Signifiers ++
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
cdPrintString("CELLPHONE_CONT - On call signifier bit has been set. Current number of signifiers incremented.")
|
|
cdPrintnl()
|
|
|
|
#endif
|
|
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
|
|
//Added for 3599537 - display beacon beside radar.
|
|
IF IS_BIT_SET (BitSet_CellphoneTU, g_BSTU_BEACON_SIGNIFIER_DISPLAYED)
|
|
|
|
IF g_bInMultiplayer = TRUE //Only display the beacon signifier in MP.
|
|
|
|
g_Current_Number_Of_Signifiers ++
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
cdPrintString("CELLPHONE_CONT - BEACON_SIGNIFIER bit has been set. Current number of signifiers incremented.")
|
|
cdPrintnl()
|
|
|
|
#endif
|
|
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
|
|
IF IS_BIT_SET (BitSet_CellphoneTU, g_BSTU_INVITE_SIGNIFIER_DISPLAYED)
|
|
|
|
IF g_bInMultiplayer //Only display invite signifier in MP
|
|
// KGMINDICATOR
|
|
AND (g_displayPlayerInvitesIndicator OR g_forceDisplayPlayerInvitesIndicator)
|
|
// AND g_displayPlayerInvitesIndicator = TRUE //2060056 - requested that we only display indicator if there are human player invites pending.
|
|
|
|
|
|
g_Current_Number_Of_Signifiers ++
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
cdPrintString("CELLPHONE_CONT - Invite signifier bit has been set. Current number of signifiers incremented.")
|
|
cdPrintnl()
|
|
|
|
#endif
|
|
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
IF IS_BIT_SET (BitSet_CellphoneTU, g_BSTU_PUSHTALK_SIGNIFIER_DISPLAYED)
|
|
|
|
g_Current_Number_Of_Signifiers ++
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
cdPrintString("CELLPHONE_CONT - PUSHTALK signifier bit has been set. Current number of signifiers incremented.")
|
|
cdPrintnl()
|
|
|
|
#endif
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
//When g_Current_Number_Of_Signifiers > 0 then that means Check_If_Signifier_Movie_Needs_Drawn_or_Removed() is forced to load the scaleform movie
|
|
//if it isn't already loaded. Once loaded the b_Allow_Drawn_Or_Remove_to_Check_For_Update = TRUE flag state will allow it to create the new signifiers
|
|
//as required. The flag is required so Check_If_Signifier_Movie_Needs_Drawn_or_Removed() cannot clear the NEEDS_UPDATED without running through this section first.
|
|
|
|
|
|
|
|
IF g_Current_Number_Of_Signifiers = 0 //If we are still at zero then nothing needs to be drawn and Check_If_Signifier_Movie_Needs_Drawn_or_Removed()
|
|
//should remove the movie. This means it is safe to clear this update flag.
|
|
|
|
CLEAR_BIT (BitSet_CellphoneDisplay_Continued, g_BSC_CELLPHONE_SIGNIFIERS_NEEDS_UPDATED)
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
cdPrintString("CELLPHONE_CONT - No signifiers need drawn. Clearing Sig Update Flag 1")
|
|
cdPrintnl()
|
|
|
|
#endif
|
|
|
|
b_Allow_Drawn_Or_Remove_to_Check_For_Update = FALSE //Reset this if no signifiers need drawn.
|
|
|
|
ELSE
|
|
|
|
b_Allow_Drawn_Or_Remove_to_Check_For_Update = TRUE // Allows Check_If_Signifier_Movie_Needs_Drawn_or_Removed() to perform a clear all and add new items.
|
|
|
|
ENDIF
|
|
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//Main check for player use d-pad to bring up phone...
|
|
IF NOT IS_CELLPHONE_DISABLED_OR_DISABLED_THIS_FRAME_ONLY()
|
|
|
|
IF NOT IS_WARNING_MESSAGE_ACTIVE() //Fix for #1298444
|
|
IF g_Cellphone.PhoneDS = PDS_AWAY
|
|
IF IS_PLAYER_PLAYING (PLAYER_ID())
|
|
IF IS_PLAYER_CONTROL_ON (PLAYER_ID())
|
|
OR CAN_USE_MOBILE_PHONE_DURING_CUTSCENE()
|
|
|
|
|
|
|
|
|
|
//Put in control check here... 241184
|
|
|
|
IF NOT IS_PED_INJURED (PLAYER_PED_ID()) //Don't allow the phone to be taken out if the player is injured.
|
|
|
|
|
|
IF g_bInMultiplayer
|
|
|
|
Check_User_Altering_PhoneDisplayStatus()
|
|
|
|
ELSE
|
|
//IF NOT IS_PLAYER_CLIMBING (PLAYER_ID()) Trial Removal at the request of NY bug 843727
|
|
|
|
Check_User_Altering_PhoneDisplayStatus()
|
|
|
|
//ENDIF
|
|
ENDIF
|
|
|
|
|
|
ENDIF
|
|
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
//If the phone is playing interference, the user taking the phone out will automatically abort the interference phase and beging ringing.
|
|
IF g_Cellphone.PhoneDS = PDS_TAKEOUT
|
|
IF IS_BIT_SET (BitSet_CellphoneDisplay_Continued, g_BSC_PLAY_INTERFERENCE_AUDIO)
|
|
Check_User_Altering_PhoneDisplayStatus()
|
|
ENDIF
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
|
|
//Critical!
|
|
Cellphone_Draw_Status()
|
|
|
|
|
|
ELSE
|
|
|
|
IF Check_For_Takeout_Only()
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
PRINTSTRING ("CELLPHONE_CONTROLLER - User made attempt to take out phone but it is disabled permanently or this frame only.")
|
|
PRINTNL()
|
|
|
|
|
|
cdPrintstring ("CELLPHONE_CONTROLLER - User made attempt to take out phone but it is disabled permanently or this frame only.")
|
|
cdPrintnl()
|
|
|
|
|
|
g_DisplayNewSideTaskSignifier = TRUE //Setting this once so DISABLE_CELLPHONE_THIS_FRAME_ONLY() in cellphone_public is signalled to dump out the calling script once.
|
|
//Cellphone_public will reset this to FALSE to prevent spam. We should see one notification per user attempt.
|
|
#endif
|
|
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//Picture Taking, Saving and Loading master switch statement. Needs to be independent of the phone's state.
|
|
SWITCH g_Cell_Pic_Stage
|
|
|
|
|
|
CASE PIC_STAGE_IDLE
|
|
|
|
Check_for_Picture_Just_Taken()
|
|
|
|
IF g_b_appHasRequestedTidyUp = TRUE
|
|
|
|
Tidy_Up_Pic_Taking()
|
|
|
|
ENDIF
|
|
|
|
BREAK
|
|
|
|
|
|
CASE PIC_SHUTTER_DELAY
|
|
|
|
Shutter_Delay()
|
|
|
|
BREAK
|
|
|
|
|
|
CASE PIC_STAGE_HQ_BEGIN
|
|
|
|
Begin_Take_HQ_Pic()
|
|
|
|
BREAK
|
|
|
|
|
|
CASE PIC_STAGE_HQ_ONGOING
|
|
|
|
Taking_HQ_Pic()
|
|
|
|
BREAK
|
|
|
|
|
|
CASE PIC_STAGE_LQ_BEGIN
|
|
|
|
Begin_Take_LQ_Pic()
|
|
|
|
BREAK
|
|
|
|
|
|
CASE PIC_STAGE_LQ_ONGOING
|
|
|
|
Creating_LQ_Copy()
|
|
|
|
BREAK
|
|
|
|
|
|
CASE PIC_STAGE_TIDY_UP
|
|
|
|
Tidy_Up_Pic_Taking()
|
|
|
|
BREAK
|
|
|
|
|
|
CASE PIC_STAGE_HOLDING_LQ_COPY
|
|
|
|
IF g_b_appHasRequestedTidyUp = TRUE
|
|
|
|
Tidy_Up_Pic_Taking()
|
|
|
|
ENDIF
|
|
|
|
IF g_b_appHasRequestedSave = TRUE
|
|
|
|
/*
|
|
IF IS_XBOX360_VERSION() //Need to check storage on 360 and PC
|
|
OR IS_PC_VERSION()
|
|
OR IS_PS3_VERSION()
|
|
|
|
CLEAR_STATUS_OF_SORTED_LIST_OPERATION()
|
|
|
|
IF QUEUE_OPERATION_TO_CREATE_SORTED_LIST_OF_PHOTOS (TRUE) //The last BOOL indicates that we are checking for a SAVE. This would be false if we were loading.
|
|
|
|
g_Cell_pic_Stage = PIC_CHECK_STORAGE
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
cdPrintString("CELLPHONE_CONT - 360 PC PS3Queue Operation success")
|
|
cdPrintnl()
|
|
|
|
#endif
|
|
|
|
|
|
ELSE
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
cdPrintString("CELLPHONE_CONT - 360 PC PS3 Queue Operation failed - tidying up pic.")
|
|
cdPrintnl()
|
|
|
|
#endif
|
|
|
|
|
|
Tidy_Up_Pic_Taking()
|
|
|
|
ENDIF
|
|
|
|
|
|
ELSE
|
|
*/
|
|
|
|
g_Cell_pic_Stage = PIC_STAGE_STORE_TO_MEDIA
|
|
|
|
//ENDIF
|
|
|
|
g_b_appHasRequestedSave = FALSE
|
|
|
|
ENDIF
|
|
|
|
|
|
BREAK
|
|
|
|
|
|
|
|
|
|
CASE PIC_CHECK_STORAGE
|
|
|
|
Check_Storage()
|
|
|
|
BREAK
|
|
|
|
|
|
CASE PIC_STAGE_STORE_TO_MEDIA
|
|
|
|
Begin_Store_to_Media()
|
|
|
|
BREAK
|
|
|
|
|
|
CASE PIC_STAGE_STORE_TO_MEDIA_ONGOING
|
|
|
|
Ongoing_Store_to_Media()
|
|
|
|
BREAK
|
|
|
|
|
|
|
|
CASE PIC_STAGE_POST_SAVE_PAUSE
|
|
|
|
PostSavePause()
|
|
|
|
BREAK
|
|
|
|
|
|
CASE PIC_STAGE_LOAD_FROM_MEDIA
|
|
|
|
Load_From_Media()
|
|
|
|
BREAK
|
|
|
|
|
|
|
|
CASE PIC_STAGE_LOAD_FROM_MEDIA_ONGOING
|
|
|
|
Ongoing_Load_From_Media()
|
|
|
|
BREAK
|
|
|
|
|
|
|
|
|
|
|
|
ENDSWITCH
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//Handle reinstatement of console cinematic cam... See bug 605548
|
|
//Cinematic_Cam_Handler()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
Maintain_Cellphone_Debug()
|
|
|
|
|
|
|
|
|
|
|
|
//SET_BIT(iButtonBits, 3) //ESB_OK
|
|
//SET_BIT(iButtonBits, ENUM_TO_INT(ESB_NO))
|
|
|
|
//SET_WARNING_MESSAGE_WITH_HEADER ("CELL_CAM_ALERT", "CELL_CAM_FWARN1", iButtonBits, "CELL_CAM_FWARN2", FALSE, -1, "", "", FALSE)
|
|
|
|
|
|
|
|
|
|
|
|
//SET_BIT (iButtonBits, 3 )
|
|
//SET_WARNING_MESSAGE_WITH_HEADER ("CELL_CAM_ALERT", "CELL_CAM_SCW_1", iButtonBits, "CELL_CAM_SCW_2", FALSE, -1, "", "", FALSE)
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
IF PendingTextDataAvailable[0] = TRUE
|
|
|
|
cdPrintnl()
|
|
cdPrintstring ("Michael has pending text.")
|
|
cdPrintnl()
|
|
ENDIF
|
|
|
|
|
|
IF PendingTextDataAvailable[1] = TRUE
|
|
|
|
cdPrintnl()
|
|
cdPrintstring (" Franklin has pending text.")
|
|
cdPrintnl()
|
|
ENDIF
|
|
|
|
|
|
IF PendingTextDataAvailable[2] = TRUE
|
|
|
|
cdPrintnl()
|
|
cdPrintstring (" Trevor has pending text.")
|
|
cdPrintnl()
|
|
ENDIF
|
|
*/
|
|
|
|
|
|
//draw_debug_rectangle()
|
|
//draw_debug_screen_grid()
|
|
//debug_3dphone_pos_rot()
|
|
//draw_debug_Scaleform_Signifier_Position()
|
|
|
|
|
|
//Add bool widget that if ticked enables these two lines....
|
|
IF DebugPositionToggle
|
|
SET_MOBILE_PHONE_POSITION (<<GET_SAFE_ZONE_SIZE() * g_Test3dPhonePosVec.x, GET_SAFE_ZONE_SIZE() * g_Test3dPhonePosVec.y, g_Test3dPhonePosVec.z >>)
|
|
SET_MOBILE_PHONE_ROTATION (g_3dPhoneDebugRotVec)
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
|
|
//DISPLAY_TEXT_WITH_FLOAT (0.3, 0.5, g_txtSP_CurrentSelfie_anim, db_preview_signifier_posX, 3)
|
|
|
|
|
|
|
|
|
|
/*
|
|
IF IS_CALLING_CONTACT(CHAR_MICHAEL)
|
|
|
|
PLAYER_CALL_CHAR_CELLPHONE(MyLocalPedStruct, CHAR_MICHAEL, "MCH1AUD", "MCH1_CP01M", CONV_PRIORITY_VERY_HIGH)
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING (0.35, 0.64, "STRING", "MIKE STORY CALL")
|
|
|
|
ENDIF
|
|
|
|
|
|
IF IS_CALLING_CONTACT(CHAR_FRANKLIN)
|
|
|
|
PLAYER_CALL_CHAR_CELLPHONE(MyLocalPedStruct, CHAR_FRANKLIN, "MCH1AUD", "MCH1_CP01M", CONV_PRIORITY_VERY_HIGH)
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING (0.35, 0.64, "STRING", "FRANK STORY CALL")
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
IF IS_CALLING_CONTACT(CHAR_TREVOR)
|
|
|
|
PLAYER_CALL_CHAR_CELLPHONE(MyLocalPedStruct, CHAR_TREVOR, "MCH1AUD", "MCH1_CP01M", CONV_PRIORITY_VERY_HIGH)
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING (0.35, 0.64, "STRING", "TREV_CALL")
|
|
|
|
ENDIF
|
|
*/
|
|
|
|
|
|
/*
|
|
IF IS_PHONE_ONSCREEN (FALSE)
|
|
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING (0.35, 0.54, "STRING", "Phone onscreen")
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
IF IS_PHONE_ACTIVE_OR_OVERLAPPING_HUD_ITEMS()
|
|
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING (0.35, 0.44, "STRING", "Phone active or overlapping.")
|
|
|
|
ENDIF
|
|
*/
|
|
|
|
/*
|
|
IF Is_Phone_Control_Pressed (FRONTEND_CONTROL, INT_TO_ENUM (CONTROL_ACTION, PHONE_NAV_LEFT_INPUT))
|
|
|
|
cdPrintstring("left")
|
|
cdPrintnl()
|
|
cdPrintnl()
|
|
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING (0.35, 0.54, "STRING", "Phone nav left ")
|
|
|
|
ENDIF
|
|
*/
|
|
|
|
/*
|
|
IF HAS_DYNAMIC_BRANCH_BEEN_SET()
|
|
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING (0.35, 0.54, "STRING", "Branch Set")
|
|
ENDIF
|
|
*/
|
|
|
|
/*
|
|
IF HAS_CELLPHONE_JUST_BEEN_FORCED_AWAY()
|
|
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING (0.35, 0.54, "STRING", "Forced Away")
|
|
|
|
ENDIF
|
|
*/
|
|
|
|
/*
|
|
IF IS_CELLPHONE_CAMERA_IN_USE()
|
|
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING (0.35, 0.54, "STRING", "Cellphone Camera in use.")
|
|
|
|
ENDIF
|
|
*/
|
|
|
|
/*
|
|
IF WAS_LAST_CELLPHONE_CALL_INTERRUPTED()
|
|
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING (0.35, 0.54, "STRING", "Last call interrupted.")
|
|
|
|
ENDIF
|
|
*/
|
|
|
|
/*
|
|
IF HAS_CELLPHONE_CAM_JUST_TAKEN_PIC()
|
|
|
|
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING (0.35, 0.54, "STRING", "Taken Pic and Held Test.")
|
|
|
|
ENDIF
|
|
*/
|
|
|
|
|
|
/*
|
|
IF IS_CELLPHONE_ON_HOMESCREEN()
|
|
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING (0.35, 0.54, "STRING", "On Homescreen.")
|
|
|
|
ENDIF
|
|
*/
|
|
|
|
/*
|
|
IF IS_PAUSE_MENU_ACTIVE()
|
|
|
|
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING (0.35, 0.84, "STRING", "PAUSEMENU.")
|
|
|
|
|
|
ENDIF
|
|
*/
|
|
|
|
/*
|
|
|
|
IF WAS_LAST_PHONECALL_HUNG_UP_BY_JOYPAD()
|
|
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING (0.35, 0.84, "STRING", "Hung Up Joypad")
|
|
|
|
ENDIF
|
|
|
|
|
|
IF WAS_LAST_CELLPHONE_CALL_INTERRUPTED()
|
|
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING (0.35, 0.44, "STRING", "Interrupted")
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
IF CHECK_CELLPHONE_LAST_CALL_REJECTED()
|
|
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING (0.35, 0.64, "STRING", "Rejected")
|
|
|
|
ENDIF
|
|
|
|
*/
|
|
|
|
|
|
//testcp = GET_LAST_PASSED_STANDARD_CONVERSATION_ROOT()
|
|
|
|
//DISPLAY_TEXT_WITH_LITERAL_STRING (0.4, 0.77, "STRING", testcp)
|
|
|
|
|
|
/*
|
|
IF IS_CALLING_CONTACT (CHAR_TOW_TONYA)
|
|
|
|
PLAYER_CALL_CHAR_CELLPHONE(MyLocalPedStruct, CHAR_TOW_TONYA, "MCH1AUD", "MCH1_CP01M", CONV_PRIORITY_VERY_HIGH)
|
|
|
|
ENDIF
|
|
*/
|
|
|
|
/*
|
|
IF CHECK_CELLPHONE_LAST_CALL_REJECTED()
|
|
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING (0.35, 0.64, "STRING", "Rejected")
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
IF IS_CALLING_FRIEND_FOR_ACTIVITY_CANCELLATION (CHAR_FRANKLIN)
|
|
|
|
//SET_ACTIVITY_CANCELLED_WITH_THIS_FRIEND_FOR_PHONE (CHAR_MICHAEL, CHAR_FRANKLIN)
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING (0.35, 0.44, "STRING", "FRANK CANCEL REQ. CALL")
|
|
|
|
ENDIF
|
|
|
|
|
|
IF IS_CALLING_FRIEND_FOR_ACTIVITY (CHAR_FRANKLIN)
|
|
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING (0.35, 0.24, "STRING", "FRANK ACTIVITY CALL")
|
|
|
|
ENDIF
|
|
|
|
|
|
IF IS_CALLING_CONTACT_FOR_SECONDARY_FUNCTION (CHAR_FRANKLIN)
|
|
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING (0.35, 0.84, "STRING", "FRANK SECONDARY CALL")
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
IF IS_CALLING_CONTACT_FOR_SECONDARY_FUNCTION (CHAR_LESTER)
|
|
|
|
PLAYER_CALL_CHAR_CELLPHONE(MyLocalPedStruct, CHAR_LESTER, "MCH1AUD", "MCH1_CP01M", CONV_PRIORITY_VERY_HIGH)
|
|
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING (0.35, 0.84, "STRING", "LESTER SECONDARY CALL")
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
IF IS_CALLING_CONTACT(CHAR_MICHAEL)
|
|
|
|
PLAYER_CALL_CHAR_CELLPHONE(MyLocalPedStruct, CHAR_MICHAEL, "MCH1AUD", "MCH1_CP01M", CONV_PRIORITY_VERY_HIGH)
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING (0.35, 0.64, "STRING", "MIKE STORY CALL")
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
IF IS_CALLING_FRIEND_FOR_ACTIVITY_CANCELLATION (CHAR_MICHAEL)
|
|
|
|
//SET_ACTIVITY_CANCELLED_WITH_THIS_FRIEND_FOR_PHONE (CHAR_MICHAEL, CHAR_FRANKLIN)
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING (0.35, 0.44, "STRING", "MIKE CANCEL REQ. CALL")
|
|
|
|
ENDIF
|
|
|
|
|
|
IF IS_CALLING_FRIEND_FOR_ACTIVITY (CHAR_MICHAEL)
|
|
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING (0.35, 0.24, "STRING", "MIKE ACTIVITY CALL")
|
|
|
|
ENDIF
|
|
|
|
|
|
IF IS_CALLING_CONTACT_FOR_SECONDARY_FUNCTION (CHAR_MICHAEL)
|
|
|
|
|
|
IF TestInt = 0
|
|
|
|
ADD_PED_FOR_DIALOGUE (MyLocalPedStruct, 0, PLAYER_PED_ID(), "MICHAEL")
|
|
ADD_PED_FOR_DIALOGUE (MyLocalPedStruct, 1, NULL, "FRANKLIN")
|
|
|
|
PLAYER_CALL_CHAR_CELLPHONE(MyLocalPedStruct, CHAR_MICHAEL, "JHAUD", "JH_PLAN", CONV_PRIORITY_VERY_HIGH)
|
|
|
|
TestInt ++
|
|
|
|
ENDIF
|
|
|
|
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING (0.35, 0.84, "STRING", "MIKE SECONDARY CALL")
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
IF IS_CALLING_CONTACT (CHAR_AMANDA)
|
|
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING (0.35, 0.64, "STRING", "AMANDA STORY CALL")
|
|
|
|
ENDIF
|
|
*/
|
|
|
|
|
|
|
|
|
|
/*
|
|
IF IS_PHONE_ONSCREEN()
|
|
|
|
FORCE_SELECTION_OF_THIS_CONTACT_ONLY(CHAR_DETONATEPHONE)
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
IF HAS_CONTACT_BEEN_SELECTED_IN_CONTACTS_LIST (CHAR_DETONATEPHONE)
|
|
|
|
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING (0.15, 0.64, "STRING", "DETONATE IS CONTACT SELECTED")
|
|
|
|
|
|
ENDIF
|
|
*/
|
|
|
|
|
|
/*
|
|
IF IS_PHONE_ACTIVE_OR_OVERLAPPING_HUD_ITEMS()
|
|
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING (0.15, 0.74, "STRING", "Active and overlapping")
|
|
|
|
ENDIF
|
|
|
|
|
|
IF IS_PHONE_ONSCREEN()
|
|
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING (0.15, 0.64, "STRING", "Onscreen")
|
|
|
|
ENDIF
|
|
*/
|
|
|
|
|
|
/*
|
|
IF NETWORK_IS_CLOUD_AVAILABLE() //cloud available
|
|
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING (0.35, 0.64, "STRING", "CLOUD AVAILABLE")
|
|
|
|
ENDIF
|
|
*/
|
|
|
|
/*
|
|
IF g_ConversationData.g_AddToBriefScreen
|
|
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING (0.15, 0.64, "STRING", "Adding brief")
|
|
|
|
ELSE
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING (0.15, 0.64, "STRING", "Not Adding to brief")
|
|
|
|
|
|
ENDIF
|
|
*/
|
|
|
|
/*
|
|
IF IS_CELLPHONE_CAMERA_IN_SELFIE_MODE()
|
|
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING (0.35, 0.64, "STRING", "In Selfie Mode.")
|
|
|
|
ENDIF
|
|
*/
|
|
|
|
|
|
|
|
/*
|
|
IF IS_PAUSE_MENU_ACTIVE()
|
|
|
|
cdPrintstring("Testing pause menu....")
|
|
cdPrintnl()
|
|
cdPrintstring("active")
|
|
cdPrintnl()
|
|
|
|
ENDIF
|
|
*/
|
|
|
|
|
|
/*
|
|
IF g_Use_Prologue_Cellphone
|
|
|
|
|
|
DRAW_SCALEFORM_MOVIE_FULLSCREEN(mov, 255,255,255,255)
|
|
|
|
ENDIF
|
|
*/
|
|
|
|
|
|
|
|
/*
|
|
IF IS_CALLING_CONTACT(CHAR_CHEF)
|
|
|
|
PLAYER_CALL_CHAR_CELLPHONE(MyLocalPedStruct, CHAR_BLIMP, "MCH1AUD", "MCH1_CP01M", CONV_PRIORITY_VERY_HIGH)
|
|
|
|
ENDIF
|
|
|
|
|
|
IF IS_CALLING_CONTACT(CHAR_BLIMP)
|
|
|
|
|
|
PLAYER_CALL_CHAR_CELLPHONE_MULTIPART_WITH_2_LINES(MyLocalPedStruct, CHAR_BLIMP,"FpFLAU",
|
|
"FpFL_G1", "FpFL_G1",
|
|
"FpFL_G2", "FpFL_G2", CONV_PRIORITY_CELLPHONE)
|
|
|
|
ENDIF
|
|
|
|
|
|
IF IS_CALLING_CONTACT(CHAR_MICHAEL)
|
|
|
|
PLAYER_CALL_CHAR_CELLPHONE(MyLocalPedStruct, CHAR_MICHAEL, "MCH1AUD", "MCH1_CP01M", CONV_PRIORITY_VERY_HIGH)
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
IF IS_CALLING_CONTACT(CHAR_TREVOR)
|
|
|
|
PLAYER_CALL_CHAR_CELLPHONE(MyLocalPedStruct, CHAR_TREVOR, "MCH1AUD", "MCH1_CP01M", CONV_PRIORITY_VERY_HIGH)
|
|
|
|
ENDIF
|
|
|
|
*/
|
|
|
|
/*
|
|
IF g_ConversationStatus = CONV_STATE_PLAYING
|
|
IF IS_SCRIPTED_CONVERSATION_ONGOING()
|
|
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING (0.25, 0.84, "STRING", "conv_state_playing")
|
|
|
|
ENDIF
|
|
ENDIF
|
|
*/
|
|
|
|
|
|
/*
|
|
IF IS_CALLING_CONTACT(CHAR_LESTER)
|
|
|
|
PLAYER_CALL_CHAR_CELLPHONE(MyLocalPedStruct, CHAR_LESTER, "MCH1AUD", "MCH1_CP01M", CONV_PRIORITY_VERY_HIGH)
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING (0.35, 0.64, "STRING", "MIKE STORY CALL")
|
|
|
|
ENDIF
|
|
|
|
|
|
IF IS_CALLING_CONTACT(CHAR_TRACEY)
|
|
|
|
PLAYER_CALL_CHAR_CELLPHONE(MyLocalPedStruct, CHAR_MICHAEL, "FAM3AUD", "FAM3_MST1", CONV_PRIORITY_VERY_HIGH)
|
|
|
|
ENDIF
|
|
*/
|
|
|
|
/*
|
|
|
|
ENUM enumTxtMsgIsReplyRequired //specifies whether this text message will allow the player to reply with yes / no... a "replay mission" txt for example.
|
|
|
|
NO_REPLY_REQUIRED,
|
|
REPLY_IS_REQUIRED,
|
|
REPLIED_BARTER,
|
|
REPLIED_YES,
|
|
REPLIED_NO
|
|
|
|
ENDENUM
|
|
|
|
*/
|
|
|
|
/*
|
|
IF GET_TEXT_MESSAGE_REPLY_STATUS("CELL_2001") = REPLIED_YES
|
|
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING (0.35, 0.64, "STRING", "REPLIED YES")
|
|
|
|
ENDIF
|
|
|
|
|
|
IF GET_TEXT_MESSAGE_REPLY_STATUS("CELL_2001") = REPLIED_NO
|
|
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING (0.35, 0.64, "STRING", "REPLIED NO")
|
|
|
|
ENDIF
|
|
|
|
|
|
IF GET_TEXT_MESSAGE_REPLY_STATUS("CELL_2001") = REPLY_IS_REQUIRED
|
|
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING (0.35, 0.64, "STRING", "REPLIED PENDING")
|
|
|
|
ENDIF
|
|
*/
|
|
|
|
|
|
|
|
|
|
//IF TestBorderTexture = TRUE
|
|
/*
|
|
IF HAS_STREAMED_TEXTURE_DICT_LOADED("MPLeaderboard")
|
|
//DRAW_SPRITE("MPRankBadge", "Globe_BG", 0.5000, 0.5000, 0.5000, 0.5000, 0.0000, 255, 255, 255, 255)
|
|
DRAW_SPRITE("MPLeaderboard", "Leaderboard_SocialClub_Icon", 0.5000, 0.5000, 0.5000, 0.5000, 0.0000, 255, 255, 255, 255)
|
|
ENDIF
|
|
*/
|
|
//ENDIF
|
|
|
|
|
|
/*
|
|
IF g_Holder_ForceDLC_DialogueRequest = TRUE
|
|
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING (0.35, 0.64, "STRING", "FDR is TRUE")
|
|
|
|
ENDIF
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
IF bCreatingEmailMessage = TRUE
|
|
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING (0.35, 0.33, "STRING", "Keyboard.")
|
|
|
|
ENDIF
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
IF Is_Phone_Control_Just_Pressed (FRONTEND_CONTROL, INT_TO_ENUM (CONTROL_ACTION, PHONE_EXTRA_SPECIAL_OPTION_INPUT))
|
|
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintString("Setting Creation via JP to TRUE")
|
|
cdPrintnl()
|
|
#endif
|
|
|
|
bCreatingEmailMessage = TRUE
|
|
|
|
ENDIF
|
|
*/
|
|
|
|
/*
|
|
IF IS_BIT_SET (BitSet_CellphoneDisplay_Continued, g_BSC_CALL_IN_PROGRESS_PHONE_FULLY_VANISHED)
|
|
|
|
//DISPLAY_TEXT_WITH_LITERAL_STRING (0.35, 0.54, "STRING", "FullV bit set")
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
IF IS_BIT_SET (BitSet_CellphoneDisplay, g_BS_HAS_CELLPHONE_FULLY_MOVED_UP)
|
|
|
|
//DISPLAY_TEXT_WITH_LITERAL_STRING (0.35, 0.74, "STRING", "FMU bit set")
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
IF GET_FOLLOW_PED_CAM_VIEW_MODE() = CAM_VIEW_MODE_FIRST_PERSON
|
|
|
|
//DISPLAY_TEXT_WITH_LITERAL_STRING (0.35, 0.74, "STRING", "First Person")
|
|
|
|
ENDIF
|
|
|
|
*/
|
|
|
|
//Temp
|
|
/*
|
|
#if IS_DEBUG_BUILD
|
|
IF IS_BIT_SET (BitSet_CellphoneTU, g_BSTU_ENABLE_MP_PRES_EXTRACTION_APP )
|
|
|
|
DISPLAY_TEXT_WITH_FLOAT (0.75, 0.60, "CELL_500", g_v_ExtractionBodyguardVec.x, 1)
|
|
DISPLAY_TEXT_WITH_FLOAT (0.75, 0.68, "CELL_501", g_v_ExtractionBodyguardVec.y, 1)
|
|
DISPLAY_TEXT_WITH_FLOAT (0.75, 0.76, "CELL_502", g_v_ExtractionBodyguardVec.z, 1)
|
|
|
|
DISPLAY_TEXT_WITH_FLOAT (0.85, 0.60, "CELL_500", g_v_ExtractionPresidentVec.x, 1)
|
|
DISPLAY_TEXT_WITH_FLOAT (0.85, 0.68, "CELL_501", g_v_ExtractionPresidentVec.y, 1)
|
|
DISPLAY_TEXT_WITH_FLOAT (0.85, 0.76, "CELL_502", g_v_ExtractionPresidentVec.z, 1)
|
|
|
|
ENDIF
|
|
#endif
|
|
*/
|
|
|
|
|
|
IF IS_KEYBOARD_KEY_JUST_PRESSED (KEY_0)
|
|
|
|
|
|
IF NOT IS_PED_INJURED(PLAYER_PED_ID())
|
|
/*
|
|
IF g_b_InstructEyefindtoSendAutoLongMessage = TRUE
|
|
|
|
g_b_InstructEyefindtoSendAutoLongMessage = FALSE
|
|
|
|
ELSE
|
|
|
|
g_b_InstructEyefindtoSendAutoLongMessage = TRUE
|
|
|
|
ENDIF
|
|
*/
|
|
//v_player_pos = GET_ENTITY_COORDS(PLAYER_PED_ID())
|
|
|
|
|
|
//Fleeca Bank
|
|
//SET_ENTITY_COORDS(PLAYER_PED_ID(), <<-2964.0, 481.0, 15.7>>)
|
|
|
|
//SET_ENTITY_COORDS(PLAYER_PED_ID(), <<-169.1, -917.1, 30.0>>)
|
|
|
|
|
|
//<<2155.5, 3712.1, 38.9>>)
|
|
//<<2101.5, 4595.1, 36.0>>)
|
|
//<<3442.8, 5174.0, 7.0>>)//<<2155.5, 3712.1, 38.9>>)
|
|
//CREATE_MOBILE_PHONE (MOBILE_1)
|
|
|
|
|
|
//2. App testing block in Dummy App position for MP.
|
|
|
|
//SET_BIT (BitSet_CellphoneTU, g_BSTU_ENABLE_MP_TRACKIFY)
|
|
|
|
|
|
/*
|
|
IF IS_BIT_SET (BitSet_CellphoneTU, g_BSTU_ENABLE_MP_PRES_EXTRACTION_APP)
|
|
|
|
CLEAR_BIT (BitSet_CellphoneTU, g_BSTU_ENABLE_MP_PRES_EXTRACTION_APP)
|
|
|
|
ELSE
|
|
|
|
SET_BIT (BitSet_CellphoneTU, g_BSTU_ENABLE_MP_PRES_EXTRACTION_APP)
|
|
|
|
ENDIF
|
|
*/
|
|
|
|
|
|
|
|
|
|
/*3
|
|
IF IS_BIT_SET (BitSet_CellphoneTU, g_BSTU_ENABLE_MP_SIGHTSEER_APP)
|
|
|
|
CLEAR_BIT (BitSet_CellphoneTU, g_BSTU_ENABLE_MP_SIGHTSEER_APP)
|
|
|
|
ELSE
|
|
|
|
SET_BIT (BitSet_CellphoneTU, g_BSTU_ENABLE_MP_SIGHTSEER_APP)
|
|
|
|
ENDIF
|
|
*/
|
|
|
|
|
|
/*4
|
|
IF g_bEnableHackingApp = FALSE
|
|
g_bEnableHackingApp = TRUE
|
|
ELSE
|
|
g_bEnableHackingApp = FALSE
|
|
ENDIF
|
|
*/
|
|
|
|
//End of app testing block.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//ADD_CONTACT_TO_PHONEBOOK (CHAR_BENNYS_OMW, MULTIPLAYER_BOOK)
|
|
|
|
|
|
//IF g_FMMC_STRUCT.bRemoveUnwantedCamPhoneOptions = FALSE
|
|
//g_FMMC_STRUCT.bRemoveUnwantedCamPhoneOptions = TRUE
|
|
//ELSE
|
|
//g_FMMC_STRUCT.bRemoveUnwantedCamPhoneOptions = FALSE
|
|
//ENDIF
|
|
|
|
|
|
|
|
//PLAY_SOUND_FRONTEND (-1, "Select_Placed_Prop", "DLC_Dmod_Prop_Editor_Sounds", FALSE)
|
|
|
|
|
|
|
|
|
|
|
|
//WAIT(10000)
|
|
//DESTROY_MOBILE_PHONE()
|
|
|
|
//CLEAR_AREA_OF_VEHICLES (v_Player_pos, 100.0)
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
//LAUNCH_FINALE_CHOICE_CONTACT_LIST()
|
|
|
|
/*
|
|
MODEL_NAMES ModelToRestore
|
|
|
|
INT RestorationIndex = 1
|
|
|
|
ModelToRestore = INT_TO_ENUM(MODEL_NAMES, PlacedProps[RestorationIndex].PropModelHash)
|
|
|
|
|
|
|
|
REQUEST_MODEL(ModelToRestore)
|
|
WHILE NOT HAS_MODEL_LOADED(ModelToRestore)
|
|
WAIT(0)
|
|
REQUEST_MODEL(ModelToRestore)
|
|
ENDWHILE
|
|
|
|
//Would only save and restore those positions with PROP_POSITION_FILLED
|
|
|
|
PlacedProps[RestorationIndex].PropEntityIndex = CREATE_OBJECT(ModelToRestore, PlacedProps[RestorationIndex].PropPlacementVector)
|
|
|
|
|
|
SET_ENTITY_COLLISION (PlacedProps[RestorationIndex].PropEntityIndex, TRUE)
|
|
|
|
|
|
|
|
APPLY_FORCE_TO_ENTITY_CENTER_OF_MASS(PlacedProps[RestorationIndex].PropEntityIndex, APPLY_TYPE_FORCE, <<0,0,-60>>, 0, FALSE, TRUE) //Probably going to have to freeze objects :(
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SET_MODEL_AS_NO_LONGER_NEEDED (ModelToRestore)
|
|
*/
|
|
|
|
|
|
|
|
|
|
/*
|
|
PlacedProps[i_TotalNumberOfPlacedModels].PropModelHash = SelectablePropArray[i_CurrentModelIndex].PropModelHash
|
|
PlacedProps[i_TotalNumberOfPlacedModels].PropRotation = GET_ENTITY_ROTATION (TestPropEntity)
|
|
PlacedProps[i_TotalNumberOfPlacedModels].PropPlacementVector = GET_ENTITY_COORDS (TestPropEntity)
|
|
PlacedProps[i_TotalNumberOfPlacedModels].PositionStatus = PROP_POSITION_FILLED
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
SET_MOBILE_PHONE_DOF_STATE(FALSE)
|
|
*/
|
|
|
|
//CLEAR_BIT (BitSet_CellphoneDisplay, g_BS_DISABLE_SIGNIFIERS_FOR_CUTSCENE)
|
|
|
|
|
|
//g_FMMC_STRUCT.bDisablePhoneInstructions = FALSE
|
|
|
|
//g_bInMultiplayer = TRUE
|
|
//g_bEnableHackingApp = TRUE
|
|
|
|
|
|
//g_forceDisplayPlayerInvitesIndicator = TRUE
|
|
|
|
//g_numNewJoblistInvites --
|
|
|
|
//LAUNCH_CELLPHONE_APPLICATION(AppCamera, FALSE, TRUE, FALSE)
|
|
//BYPASS_CELLPHONE_CAMERA_DEFAULT_SAVE_ROUTINE(FALSE)
|
|
|
|
|
|
|
|
//g_3DPhoneNeedsMovedUp = TRUE
|
|
|
|
//CELL_CAM_ACTIVATE (TRUE, TRUE)
|
|
|
|
|
|
//CELL_HORIZONTAL_MODE_TOGGLE (TRUE)
|
|
//TASK_USE_MOBILE_PHONE (PLAYER_PED_ID(), FALSE)
|
|
|
|
//HIDE_PHONE_IN_FIRST_PERSON_EXPERIMENTAL()
|
|
|
|
//CELL_HORIZONTAL_MODE_TOGGLE (TRUE)
|
|
|
|
//CELL_SET_INPUT (CELL_INPUT_LEFT)
|
|
|
|
//ENABLE_MULTIPLAYER_TRACKIFY_APP (TRUE)
|
|
//SET_TRACKIFY_TARGET_VECTOR (<<-1244.1, -182.8, 39.5>>, TRUE)
|
|
|
|
|
|
/* Trackify tests for Gareth.
|
|
REMOVE_TRACKIFY_MULTIPLE_TARGET(3)
|
|
|
|
SET_TRACKIFY_MULTIPLE_TARGET_VECTOR (0, <<1850.1, 3325.0, 45.3>>) //Senora National Park.
|
|
|
|
SET_TRACKIFY_MULTIPLE_TARGET_VECTOR (1, <<1565.5, 2858.3, 54.7>>) //America Americans sign.
|
|
|
|
SET_TRACKIFY_MULTIPLE_TARGET_VECTOR (2, <<206.5, 3347.3, 42.5>>) //Blue Uranium sign.
|
|
*/
|
|
|
|
|
|
//Error: <Dependency 0> clip: Cannot retrieve a clip from a variable clip set when the clip does not exist in clip set! (clipSetVarId: default 3839837909, clipSetId: ANIM_GROUP_CELLPHONE 383648904, clipId: CELLPHONE_HORIZONTAL_INTRO 1822849418, network: TaskMobilePhone)
|
|
|
|
//SET_NIGHTVISION(TRUE)
|
|
|
|
//LAUNCH_TRACKIFY_IMMEDIATELY()
|
|
|
|
|
|
/*
|
|
SHOW_ONSCREEN_KEYBOARD_WITH_LONG_INITIAL_STRING ( "Pish",
|
|
|
|
EmailMessageSegments[0],
|
|
EmailMessageSegments[1],
|
|
EmailMessageSegments[2],
|
|
EmailMessageSegments[3]
|
|
)
|
|
*/
|
|
//#if IS_DEBUG_BUILD
|
|
//cdPrintString("Setting Creation to TRUE")
|
|
//cdPrintnl()
|
|
//#endif
|
|
|
|
//bCreatingEmailMessage = TRUE
|
|
|
|
|
|
//HANG_UP_AND_PUT_AWAY_PHONE (TRUE)
|
|
|
|
|
|
|
|
//PRINT_HELP ("HUD_AGE_C")
|
|
|
|
//REGISTER_SCRIPT_IN_COMPLETION_PERCENTAGE_TOTAL (CP_STNJMP)
|
|
|
|
//RENDER_SCRIPT_CAMS(FALSE, FALSE)
|
|
//SET_CAM_ACTIVE (TestCam, FALSE)
|
|
|
|
|
|
//DESTROY_ALL_CAMS()
|
|
|
|
//PHONEPHOTOEDITOR_TOGGLE (TRUE)
|
|
|
|
//IF HAS_ANIM_DICT_LOADED("facials@p_m_zero@base")
|
|
|
|
//SET_FACIAL_IDLE_ANIM_OVERRIDE(PLAYER_PED_ID(), "dead_1", "facials@p_m_zero@base")
|
|
|
|
|
|
//CLEAR_FACIAL_IDLE_ANIM_OVERRIDE(PLAYER_PED_ID())
|
|
|
|
/*
|
|
IF DOES_ENTITY_EXIST (PLAYER_PED_ID())
|
|
|
|
Make_Ped_Drunk(PLAYER_PED_ID(), 60000)
|
|
|
|
ENDIF
|
|
*/
|
|
|
|
|
|
//g_QuickSaveDisabledByScript = FALSE
|
|
|
|
|
|
//SET_FACIAL_IDLE_ANIM_OVERRIDE(PLAYER_PED_ID(), s_Facial[currentanim])
|
|
|
|
|
|
//currentanim ++
|
|
|
|
//IF currentanim > 11
|
|
//currentanim = 0
|
|
//ENDIF
|
|
|
|
|
|
|
|
//TASK_PLAY_ANIM(PLAYER_PED_ID(), "facials@p_m_zero@base", "dead_1", INSTANT_BLEND_IN, SLOW_BLEND_OUT, -1, AF_SECONDARY | AF_LOOPING)
|
|
|
|
//TASK_PLAY_ANIM(PLAYER_PED_ID(), "facials@p_m_zero@base", "dead_1", INSTANT_BLEND_IN, SLOW_BLEND_OUT, -1, AF_ADDITIVE | AF_SECONDARY | AF_LOOPING)
|
|
//CLEAR_FACIAL_IDLE_ANIM_OVERRIDE
|
|
|
|
//ENDIF
|
|
|
|
//SET_ENTITY_COORDS(PLAYER_PED_ID(), <<-71.3631, -527.6561, 30.8387>>) //Tunnel entrance.
|
|
|
|
//IF IS_DLC_PRESENT(HASH("mpChristmas")) //Check for DLC.. If unavailable, remove border / filter swapping.
|
|
|
|
//script_assert("Christmas is PRESENT!")
|
|
|
|
//ENDIF
|
|
//REQUEST_STREAMED_TEXTURE_DICT("MPLeaderboard")
|
|
//TestBorderTexture = TRUE
|
|
//"MPOverview", "MP_CharCard_Stats_Icons4",
|
|
|
|
|
|
//ANIMPOSTFX_PLAY("MP_Celeb_Win", 0, TRUE)
|
|
|
|
//ANIMPOSTFX_PLAY("DMT_flight", 0, TRUE)
|
|
|
|
//ANIMPOSTFX_PLAY("MinigameTransitionIn", 0, TRUE)
|
|
|
|
//ANIMPOSTFX_PLAY("MP_Celeb_Lose", 0, TRUE)
|
|
|
|
//STRING s_CurrentFilter[4]
|
|
|
|
|
|
|
|
//Temp Filter Test work
|
|
|
|
//IF i_NumberOfFiltersAvailable = 0
|
|
|
|
/*
|
|
ANIMPOSTFX_STOP (s_CurrentFilter[g_i_CurrentlySelected_SnapMaticFilter])
|
|
|
|
g_i_CurrentlySelected_SnapMaticFilter ++
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
cdPrintString("AppCamera - Filter Browse Down - g_i_CurrentlySelected_SnapMaticFilter at ")
|
|
cdPrintInt(g_i_CurrentlySelected_SnapMaticFilter)
|
|
cdPrintnl()
|
|
|
|
#endif
|
|
|
|
IF g_i_CurrentlySelected_SnapMaticFilter = i_NumberOfFiltersAvailable
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
cdPrintString("AppCamera - Filter Browse Down - g_i_CurrentlySelected_SnapMaticFilter will be set to zero as it matched i_NumberOfFiltersAvailable at ")
|
|
cdPrintInt(g_i_CurrentlySelected_SnapMaticFilter)
|
|
cdPrintnl()
|
|
|
|
#endif
|
|
|
|
g_i_CurrentlySelected_SnapMaticFilter = 0
|
|
|
|
ENDIF
|
|
|
|
|
|
PRINT_HELP("CELL_360_PRIV")
|
|
|
|
IF g_i_CurrentlySelected_SnapMaticFilter = 0 //No Filter in position 0 of filter array!
|
|
|
|
ANIMPOSTFX_STOP (s_CurrentFilter[g_i_CurrentlySelected_SnapMaticFilter])
|
|
|
|
ELSE
|
|
|
|
ANIMPOSTFX_PLAY (s_CurrentFilter[g_i_CurrentlySelected_SnapMaticFilter], 0, TRUE)
|
|
|
|
ENDIF
|
|
*/
|
|
|
|
|
|
/*
|
|
STRING fromGamertag = "Rockstar"
|
|
|
|
|
|
IF ARE_STRINGS_EQUAL (fromGamerTag, "Rockstar")
|
|
|
|
TEXT_LABEL_63 ColourAdjustedTag
|
|
|
|
ColourAdjustedTag = "~HUD_COLOUR_SOCIAL_CLUB~"
|
|
ColourAdjustedTag += fromGamerTag
|
|
|
|
PRINT_TICKER_WITH_PLAYER_NAME_STRING_AND_INT("PIM_TIGC0", ColourAdjustedTag, ROUND(99.0), HUD_COLOUR_PURE_WHITE, FALSE) // ~a~ ~s~gave you ~g~$~1~
|
|
|
|
ELSE
|
|
|
|
PRINT_TICKER_WITH_PLAYER_NAME_STRING_AND_INT("PIM_TIGC0", fromGamerTag, ROUND(45.0), HUD_COLOUR_PURE_WHITE, FALSE) // ~a~ ~s~gave you ~g~$~1~
|
|
|
|
ENDIF
|
|
*/
|
|
|
|
|
|
//SC_INBOX_SEND_AWARD_MSG (SC_Send_AllFriends, "Test Award", 599.9)
|
|
|
|
//PRINT_HELP ("CELL_HF_HIDE")
|
|
//PRINT_HELP ("CELL_HF_VIEW")
|
|
|
|
|
|
//Steve T. 1563993
|
|
//BEGIN_TEXT_COMMAND_THEFEED_POST ("SC_PLAY_FJQL")
|
|
|
|
|
|
/* Alternatively
|
|
TEXT_LABEL_63 s_MPGamerTagTempHolder
|
|
|
|
//Grab player name and apply prefix and suffix for displaying the sender name with the condensed font.
|
|
|
|
s_MPGamerTagTempHolder += "~HUD_COLOUR_SOCIAL_CLUB~"
|
|
s_MPGamerTagTempHolder += "Social Club"
|
|
s_MPGamerTagTempHolder += "~HUD_COLOUR_SOCIAL_CLUB~"
|
|
|
|
ND_TEXT_COMMAND_THEFEED_POST_MESSAGETEXT ("CHAR_SOCIAL_CLUB", "CHAR_SOCIAL_CLUB", FALSE, TEXT_ICON_BLANK, s_MPGamerTagTempHolder)
|
|
|
|
*/
|
|
|
|
|
|
//END_TEXT_COMMAND_THEFEED_POST_MESSAGETEXT ("CHAR_SOCIAL_CLUB", "CHAR_SOCIAL_CLUB", FALSE, TEXT_ICON_BLANK, "CONTENT_TICK")
|
|
|
|
|
|
|
|
//END_TEXT_COMMAND_THEFEED_POST_MPTICKER (FALSE, TRUE)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//cdPrintstring ("Testing title update AUG - NEW 21")
|
|
//cdPrintnl()
|
|
//cdPrintnl()
|
|
|
|
//NETWORK_SESSION_VOICE_HOST() causes assert! in SP!
|
|
|
|
|
|
//PRINT_TICKER_WITH_PLAYER_NAME_STRING_TIME_AND_STRING_AND_DURATION_MODIFIER ("CELL_101", "Gamertag1", 82950, "CELL_102", TRUE, 1.0)
|
|
//ADD_PED_FOR_DIALOGUE (MyLocalPedStruct, 1, NULL, "LAMAR")
|
|
|
|
//CREATE_CONVERSATION_FROM_SPECIFIC_LINE(MyLocalPedStruct,"FM_1AU","FM_RCM"," FM_RCM_3",CONV_PRIORITY_MEDIUM)
|
|
|
|
|
|
//FUNC INT PRINT_TICKER_WITH_PLAYER_NAME_STRING_TIME_AND_STRING_DURATION_MODIFIER(STRING TextLabel, STRING PlayerName, INT iTimeInMS, STRING InsertedTextLabel, BOOL bUseSocialClubColour, FLOAT DurationModifier = 1.0))
|
|
|
|
|
|
//CREATE_CONVERSATION (MyLocalPedStruct, "FAM3AUD", "FAM3_MSTfgh1", CONV_PRIORITY_MEDIUM)
|
|
//SET_TIMECYCLE_MODIFIER("drunk") //#1431423
|
|
|
|
//SET_PED_IS_DRUNK (PLAYER_PED_ID(), FALSE)
|
|
|
|
//SET_TIMECYCLE_MODIFIER("stoned_aliens")
|
|
//ANIMPOSTFX_PLAY("PhoneCameraIn", 0, FALSE)
|
|
|
|
//DISABLE_CELLPHONE (TRUE)
|
|
//BEGIN_EMAIL_THREAD_INT(ENUM_TO_INT(DRFRIEDLANDER_EMAIL_A1))
|
|
|
|
//SET_CONTACT_AS_MISSED_CALLER (CHAR_RON)
|
|
|
|
|
|
//Phone task test
|
|
/*
|
|
IF NOT (g_Use_Prologue_Cellphone) // Removed this for the prologue mission as that phone is only used as a detonator: See bug 1101927
|
|
|
|
|
|
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintstring ("CELLPHONE_PRIV - Phone put up to ear. Bit set.")
|
|
cdPrintnl()
|
|
#endif
|
|
|
|
|
|
IF g_bInMultiplayer
|
|
SET_PED_CONFIG_FLAG(PLAYER_PED_ID(), PCF_PhoneDisableCameraAnimations, FALSE)
|
|
SET_PED_CONFIG_FLAG(PLAYER_PED_ID(), PCF_PhoneDisableTalkingAnimations, FALSE)
|
|
SET_PED_CONFIG_FLAG(PLAYER_PED_ID(), PCF_PhoneDisableTextingAnimations, FALSE)
|
|
ENDIF
|
|
|
|
|
|
SET_BIT (BitSet_CellphoneDisplay, g_BS_PHONE_UP_TO_EAR)
|
|
|
|
|
|
TASK_USE_MOBILE_PHONE (PLAYER_PED_ID(), TRUE)
|
|
|
|
|
|
|
|
ENDIF
|
|
//Phone task test
|
|
*/
|
|
|
|
|
|
//REPOSITION_LANDSCAPE_PHONE_FOR_LONG_SUBTITLES (TRUE)
|
|
|
|
//BEGIN_PRELOADED_CONVERSATION()
|
|
|
|
//LAUNCH_FINALE_CHOICE_CONTACT_LIST()
|
|
|
|
//SET_BIT (BitSet_CellphoneDisplay_Third, g_BSTHIRD_PREVENT_PRELOADED_PHONECALL_START)
|
|
|
|
//PRESENCE_EVENT_UPDATESTAT_FLOAT (SP0_DIST_DRIVING_CAR, 500.0)
|
|
|
|
//REGISTER_SCRIPT_IN_COMPLETION_PERCENTAGE_TOTAL (CP_SONCOLL)
|
|
|
|
//SET_SOCIAL_CLUB_TOUR("Gallery")
|
|
//OPEN_SOCIAL_CLUB_MENU()
|
|
|
|
//BLOCK_HUD_PHONE_MOVEMENT_FOR_SWITCH_SCENE_CALL (TRUE)
|
|
|
|
|
|
//SET_BIT (BitSet_CellphoneDisplay_Third, g_BSTHIRD_DO_NOT_MOVE_PHONE_UP_ON_LAUNCH)
|
|
|
|
|
|
|
|
//BEGIN_PRELOADED_CONVERSATION()
|
|
|
|
|
|
//SET_TRACKIFY_TARGET_VECTOR (<<3424.1, 654.0, -106.0>>, TRUE, TRUE)
|
|
|
|
|
|
//FLUSH_TEXT_MESSAGE_FEED_ENTRIES()
|
|
|
|
//HANG_UP_AND_PUT_AWAY_PHONE(TRUE)
|
|
|
|
//STOP_SOUND (TestRingtone)
|
|
|
|
|
|
//RELEASE_SOUND_ID (TestRingtone)
|
|
|
|
|
|
//PRINT_HELP_FOREVER("CELL_295")
|
|
|
|
//PAUSE_FACE_TO_FACE_CONVERSATION (FALSE)
|
|
|
|
//PAUSE_CELLPHONE_CONVERSATION (FALSE)
|
|
|
|
|
|
|
|
//PRESENCE_EVENT_UPDATESTAT_INT (SP0_WATER_CANNON_DEATHS, 25, 67)
|
|
|
|
|
|
//PRESENCE_EVENT_UPDATESTAT_INT (SP0_WATER_CANNON_DEATHS, 50)
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
IF IS_PHONE_ONSCREEN()
|
|
FORCE_SELECTION_OF_THIS_CONTACT_ONLY(CHAR_RON)
|
|
ENDIF
|
|
*/
|
|
|
|
/*
|
|
mov = REQUEST_SCALEFORM_MOVIE("LETTER_SCRAPS")
|
|
WHILE (NOT HAS_SCALEFORM_MOVIE_LOADED(mov))
|
|
WAIT(0)
|
|
ENDWHILE
|
|
|
|
BEGIN_SCALEFORM_MOVIE_METHOD(mov, "SET_LETTER_TEXT")
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("CELL_121")
|
|
END_SCALEFORM_MOVIE_METHOD()
|
|
*/
|
|
|
|
|
|
|
|
|
|
ENDIF
|
|
|
|
/*
|
|
IF NETWORK_IS_CLOUD_AVAILABLE()
|
|
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING (0.35, 0.54, "STRING", "Network has Cloud.")
|
|
//PRINTSTRING ("Script Test 1. Network has Social Club Account returns TRUE.")
|
|
//PRINTNL()
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
IF NETWORK_IS_SIGNED_ONLINE()
|
|
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING (0.35, 0.84, "STRING", "Network Signed Online.")
|
|
//PRINTSTRING ("Script Test 2................Network is signed online returns TRUE")
|
|
//PRINTNL()
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
IF NETWORK_IS_SIGNED_IN()
|
|
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING (0.35, 0.34, "STRING", "Network Signed In.")
|
|
//PRINTSTRING ("Script Test 2................Network is signed online returns TRUE")
|
|
//PRINTNL()
|
|
|
|
ENDIF
|
|
*/
|
|
|
|
|
|
/*
|
|
IF IS_CELLPHONE_CONVERSATION_PLAYING()
|
|
|
|
PAUSE_CELLPHONE_CONVERSATION(TRUE)
|
|
|
|
ENDIF
|
|
*/
|
|
|
|
/*
|
|
IF IS_CONTACT_IN_PHONEBOOK (CHAR_CALL911, MULTIPLAYER_BOOK)
|
|
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING (0.35, 0.34, "STRING", "911 Listed")
|
|
|
|
ENDIF
|
|
*/
|
|
|
|
|
|
/*
|
|
IF NOT (IS_MINIMAP_RENDERING())
|
|
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING (0.35, 0.54, "STRING", "MINIMAP HIDDEN")
|
|
|
|
ELSE
|
|
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING (0.35, 0.54, "STRING", "MINIMAP RENDERED")
|
|
|
|
ENDIF
|
|
*/
|
|
|
|
|
|
|
|
|
|
/*
|
|
IF GET_MP_EMAIL_REPLY_STATUS("CELL_EMAIL1") = MPE_REPLIED_YES
|
|
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING (0.35, 0.64, "STRING", "Replied YES")
|
|
|
|
SET_MP_EMAIL_REPLY_STATUS("CELL_EMAIL1", MPE_NO_REPLY_REQUIRED)
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
|
|
IF GET_MP_EMAIL_REPLY_STATUS("CELL_EMAIL1") = MPE_REPLIED_NO
|
|
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING (0.35, 0.64, "STRING", "Replied NO")
|
|
|
|
ENDIF
|
|
|
|
|
|
IF GET_MP_EMAIL_REPLY_STATUS("CELL_EMAIL1") = MPE_REPLY_IS_REQUIRED
|
|
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING (0.35, 0.64, "STRING", "Reply PENDING")
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
IF HAS_THIS_TEXT_MESSAGE_BEEN_READ ("JOSH1_TXT")
|
|
|
|
ENDIF
|
|
|
|
|
|
IF CHECK_FOR_MP_EMAIL_PRESENCE_IN_CHARACTER_INBOX("CELL_EMAIL1")
|
|
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING (0.35, 0.34, "STRING", "Email 1 is present")
|
|
|
|
ENDIF
|
|
*/
|
|
|
|
/*
|
|
IF g_bUse_MP_DLC_Dialogue = TRUE
|
|
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING (0.35, 0.34, "STRING", "g_bUse_MP_DLC_Dial")
|
|
|
|
ENDIF
|
|
*/
|
|
|
|
/*
|
|
IF HAS_THIS_TEXT_MESSAGE_BEEN_READ ("JOSH1_TXT")
|
|
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING (0.35, 0.34, "STRING", "Josh1 has been read")
|
|
|
|
ENDIF
|
|
*/
|
|
|
|
|
|
/*
|
|
IF IS_BIT_SET (BitSet_CellphoneTU, g_BSTU_AUTOLAUNCH_NEW_EMAIL_APP)
|
|
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING (0.35, 0.34, "STRING", "TU_bit new email")
|
|
|
|
ENDIF
|
|
*/
|
|
|
|
/*
|
|
IF g_DumpDisableEveryFrameCaller
|
|
|
|
PRINTSTRING ("CELLPHONE_CONT Showing returned LAST_SHOWN_PHONE_ACTIVATABLE_FEED_ID... ")
|
|
PRINTINT(THEFEED_GET_LAST_SHOWN_PHONE_ACTIVATABLE_FEED_ID()) //For Esteban.
|
|
PRINTNL()
|
|
|
|
IF GET_IS_HIDEF()
|
|
PRINTSTRING("HIGH Definition ")
|
|
ELSE
|
|
PRINTSTRING(" STANDARD Definition ")
|
|
ENDIF
|
|
|
|
PRINTNL()
|
|
|
|
ENDIF
|
|
*/
|
|
|
|
/*
|
|
IF IS_PED_DUCKING (PLAYER_PED_ID())
|
|
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING (0.35, 0.34, "STRING", "PH_PLAYER_DUCK")
|
|
|
|
ENDIF
|
|
*/
|
|
|
|
|
|
/*
|
|
IF IS_RADAR_HIDDEN() //Useless. Doesn't check for a "This frame" hide.
|
|
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING (0.35, 0.34, "STRING", "RADAR HIDDEN")
|
|
|
|
ENDIF
|
|
*/
|
|
|
|
|
|
/* Potential fix for NG?
|
|
IF NOT (IS_MINIMAP_RENDERING())
|
|
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING (0.35, 0.54, "STRING", "MINIMAP HIDDEN")
|
|
|
|
|
|
ELSE
|
|
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING (0.35, 0.54, "STRING", "MINIMAP RENDERED")
|
|
|
|
ENDIF
|
|
*/
|
|
|
|
|
|
//IF g_i_CurrentlySelected_SnapMaticBorder > 0
|
|
|
|
//DISPLAY_TEXT_WITH_LITERAL_STRING (0.35, 0.34, "STRING", "Border Active")
|
|
|
|
//ENDIF
|
|
|
|
|
|
//v_3dDesiredPosition = <<1.5, 0.0, -17.0>>
|
|
|
|
/*
|
|
GET_MOBILE_PHONE_POSITION(g_Test3dPhonePosVec)
|
|
|
|
IF g_Test3dPhonePosVec.x = 1.5
|
|
AND g_Test3dPhonePosVec.z = -17.0
|
|
//OR g_Phone_Active_but_Hidden
|
|
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING (0.35, 0.34, "STRING", "Phone fullscreen")
|
|
cdPrintnl()
|
|
cdPrintstring ("Rowan Test")
|
|
cdPrintnl()
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
GET_MOBILE_PHONE_POSITION(g_Test3dPhonePosVec)
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
//IF IS_BIT_SET (BitSet_CellphoneDisplay, g_BS_CAMERA_READY_TO_TAKE_PHOTO)
|
|
|
|
//DISPLAY_TEXT_WITH_LITERAL_STRING (0.35, 0.34, "STRING", "Cam READY")
|
|
|
|
//ENDIF
|
|
|
|
|
|
|
|
|
|
//IF g_Cell_Pic_Stage = PIC_STAGE_HOLDING_LQ_COPY
|
|
//OR g_Cell_Pic_Stage > PIC_STAGE_HOLDING_LQ_COPY
|
|
|
|
/*
|
|
IF IS_SNAPMATIC_NOT_IN_VIEWFINDER_MODE()
|
|
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING (0.35, 0.34, "STRING", "Not in viewfinder mode")
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
IF IS_CONTROL_PRESSED(PLAYER_CONTROL, INPUT_VEH_LOOK_BEHIND)
|
|
OR IS_CONTROL_PRESSED(PLAYER_CONTROL, INPUT_LOOK_BEHIND)
|
|
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING (0.35, 0.34, "STRING", "Looking Behind.")
|
|
|
|
ENDIF
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
IF g_ConversationStatus = CONV_STATE_WAITING_ON_PLAYER_ACCREJ
|
|
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING (0.35, 0.34, "STRING", "ACC_OR_REJ")
|
|
|
|
ENDIF
|
|
*/
|
|
|
|
/*
|
|
IF IS_ENTITY_IN_WATER (PLAYER_PED_ID())
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
//cdPrintstring("Submerged level ")
|
|
//DISPLAY_TEXT_WITH_FLOAT (0.3, 0.15, "CELL_500", GET_ENTITY_SUBMERGED_LEVEL(PLAYER_PED_ID()), 3)
|
|
|
|
#endif
|
|
|
|
ENDIF
|
|
*/
|
|
|
|
|
|
/*
|
|
IF IS_CONTROL_JUST_PRESSED (PLAYER_CONTROL, INPUT_CELLPHONE_LEFT)
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
cdPrintnl()
|
|
cdPrintstring ("Cellphone LEFT pressed.")
|
|
cdPrintnl()
|
|
|
|
#endif
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
IF IS_CONTROL_JUST_PRESSED (PLAYER_CONTROL, INPUT_CELLPHONE_RIGHT)
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
cdPrintnl()
|
|
cdPrintstring ("Cellphone RIGHT pressed.")
|
|
cdPrintnl()
|
|
|
|
#endif
|
|
|
|
ENDIF
|
|
*/
|
|
|
|
|
|
|
|
|
|
/*
|
|
IF GET_PED_STEALTH_MOVEMENT (PLAYER_PED_ID())
|
|
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING (0.35, 0.34, "STRING", "PH_PLAYER_STEALTH")
|
|
|
|
IF IS_CONTROL_PRESSED(PLAYER_CONTROL, INPUT_LOOK_BEHIND)
|
|
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING (0.35, 0.54, "STRING", "Looking behind")
|
|
|
|
ENDIF
|
|
|
|
DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_LOOK_BEHIND)
|
|
|
|
|
|
ENDIF
|
|
*/
|
|
|
|
|
|
//DISPLAY_TEXT_WITH_NUMBER (0.20, 0.45, "CELL_500", g_numNewJoblistInvites)
|
|
/*
|
|
IF GET_NUMBER_OF_THREADS_RUNNING_THE_SCRIPT_WITH_THIS_HASH(HASH("ob_telescope")) > 0
|
|
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING (0.35, 0.54, "STRING", "Telescope")
|
|
|
|
ENDIF
|
|
|
|
|
|
IF MPGlobalsAmbience.bUsingTelescope = TRUE
|
|
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING (0.35, 0.64, "STRING", "Tele in USE")
|
|
|
|
ENDIF
|
|
*/
|
|
|
|
|
|
|
|
/*
|
|
IF g_DumpDisableEveryFrameCaller
|
|
IF IS_CALLING_CONTACT (CHAR_MP_MORS_MUTUAL)
|
|
|
|
//PLAYER_CALL_CHAR_CELLPHONE_USING_V_CONTENT_IN_DLC (YourPedStruct, WhichChar, answerPhoneBlock, WhichRootLabel, PassedConversationPriority, ShouldPhoneBeForcedOnScreen, ShouldDisplaySubtitles, ShouldAddToBriefScreen, IsThisInboundForCellphone)
|
|
|
|
PLAYER_CALL_CHAR_CELLPHONE_USING_V_CONTENT_IN_DLC (MyLocalPedStruct, CHAR_MP_MORS_MUTUAL, "FM_1AU", "FM_PLANETAKE", CONV_PRIORITY_VERY_HIGH)
|
|
|
|
ENDIF
|
|
ENDIF
|
|
|
|
|
|
|
|
IS_PED_IN_ANY_VEHICLE(PLAYER_PED_ID())
|
|
|
|
|
|
*/
|
|
|
|
/*
|
|
IF IS_PED_IN_ANY_VEHICLE(PLAYER_PED_ID())
|
|
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING (0.40, 0.60, "STRING", "Ped in vehicle")
|
|
|
|
ENDIF
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
IF IS_KEYBOARD_KEY_JUST_PRESSED (KEY_9)
|
|
|
|
|
|
//Director Mode Prop placement notes.
|
|
|
|
|
|
//! Data that needs to be saved for each prop:
|
|
//hash of model name
|
|
//Rotation
|
|
//Placement Vector
|
|
|
|
|
|
//! Prop Sheet that's referenced when placing props:
|
|
//hash of model name
|
|
//Label Reference
|
|
//Category enum
|
|
//Adjustment Z value for height
|
|
|
|
|
|
|
|
|
|
//Need to switch off everything! Cops, peds, vehicles, etc!
|
|
//Disable jumping?
|
|
//Need ragdoll / death checks / model quota checks.
|
|
|
|
//Entity Collision check
|
|
//Dynamic physics
|
|
//Forcing drop on the floor
|
|
//Draw placement disk
|
|
//Disable punch / jump / sprint buttons
|
|
|
|
|
|
|
|
|
|
|
|
//When object is placed. Freeze it and load collision?
|
|
|
|
|
|
//NATIVE PROC SET_ENTITY_COLLISION(ENTITY_INDEX EntityIndex, BOOL UsesCollisionsFlag, BOOL KeepDisabledSimulatingFlag = FALSE) = "0xf66f820909453b8c"
|
|
|
|
//NATIVE PROC SET_FORCE_OBJECT_THIS_FRAME(VECTOR pos, FLOAT radius) = "0xa65f6ad6aef297cf"
|
|
|
|
//FUNC BOOL IS_AREA_AROUND_CORONA_CLEAR
|
|
|
|
|
|
//Each prop needs data associated with it. Model name, label name, size type ( for placement disc purposes )
|
|
|
|
|
|
|
|
/*
|
|
PROC INIT_PLACEMENT_PARTICLE_FX(BOOL bOnWater, VECTOR vParticlePos)
|
|
|
|
if HAS_PTFX_ASSET_LOADED()
|
|
AND NOT g_FMMC_STRUCT.bParticlesOff
|
|
IF bOnWater
|
|
PRINTLN("SPLASH PARTICLE GO NOW!")
|
|
START_PARTICLE_FX_NON_LOOPED_AT_COORD("scr_mp_splash", vParticlePos, <<0,0,0>>)
|
|
ELSE
|
|
PRINTLN("DUST PARTICLE GO NOW!")
|
|
START_PARTICLE_FX_NON_LOOPED_AT_COORD("scr_mp_dust_cloud", vParticlePos, <<0,0,0>>)
|
|
ENDIF
|
|
ENDIF
|
|
ENDPROC
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
SET_MOBILE_PHONE_DOF_STATE (TRUE)
|
|
|
|
IF GET_MOBILE_PHONE_DOF_STATE() = TRUE
|
|
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING (0.40, 0.20, "STRING", "New DOF ON")
|
|
|
|
ENDIF
|
|
*/
|
|
|
|
//SET_BIT (BitSet_CellphoneDisplay, g_BS_DISABLE_SIGNIFIERS_FOR_CUTSCENE)
|
|
|
|
|
|
//g_bEnableHackingApp = TRUE
|
|
|
|
//g_FMMC_STRUCT.bDisablePhoneInstructions = TRUE
|
|
|
|
//g_forceDisplayPlayerInvitesIndicator = FALSE
|
|
//g_numNewJoblistInvites ++
|
|
|
|
|
|
//DISPLAY_TEXT_WITH_NUMBER (0.20, 0.45, "CELL_500", g_numNewJoblistInvites)
|
|
|
|
|
|
//IconTest ++
|
|
|
|
//#if IS_DEBUG_BUILD
|
|
|
|
//cdPrintstring("Icon Test is ")
|
|
//cdPrintint(IconTest)
|
|
//cdPrintnl()
|
|
|
|
//#endif
|
|
|
|
//SET_CURRENT_PED_WEAPON(PLAYER_PED_ID(), WEAPONTYPE_UNARMED, TRUE)
|
|
|
|
|
|
//g_bUse_MP_DLC_Dialogue = TRUE
|
|
|
|
//WAIT(0)
|
|
|
|
//CREATE_CONVERSATION(MyLocalPedStruct, "CT_AUD", "MPCT_MCarr", CONV_PRIORITY_MEDIUM, DISPLAY_SUBTITLES, DO_ADD_TO_BRIEF_SCREEN, TRUE)
|
|
|
|
|
|
//CREATE_MOBILE_PHONE (MOBILE_1)
|
|
|
|
//WAIT(5000)
|
|
|
|
//TASK_USE_MOBILE_PHONE (PLAYER_PED_ID(), TRUE)
|
|
|
|
//TRIGGER_CHEAT (CHEAT_TYPE_ADVANCE_WEATHER)
|
|
|
|
|
|
//SET_BIT (BitSet_CellphoneTU, g_BSTU_APPCAMERA_NEEDS_TO_UPDATE_ACTION)
|
|
|
|
//BYPASS_CELLPHONE_CAMERA_DEFAULT_SAVE_ROUTINE(TRUE)
|
|
|
|
//g_FirstPersonTransitionOngoing = TRUE
|
|
|
|
//CELL_CAM_ACTIVATE (FALSE, FALSE)
|
|
|
|
//CELL_HORIZONTAL_MODE_TOGGLE (TRUE)
|
|
/* Trackify tests for Gareth
|
|
ENABLE_MULTIPLAYER_TRACKIFY_APP(TRUE)
|
|
|
|
|
|
|
|
|
|
//g_i_NumberOfTrackifyTargets = 4
|
|
SET_NUMBER_OF_MULTIPLE_TRACKIFY_TARGETS(4)
|
|
|
|
//v_player_pos.x = -2.0
|
|
//v_player_pos.y = -3.0
|
|
|
|
//g_v_TrackifyMultipleTarget[0].x = -1275.5
|
|
//g_v_TrackifyMultipleTarget[0].y = 35.3
|
|
//g_v_TrackifyMultipleTarget[0].z = 49.7
|
|
|
|
SET_TRACKIFY_MULTIPLE_TARGET_VECTOR (0, <<1850.1, 3325.0, 45.3>>) //Senora National Park.
|
|
|
|
|
|
//g_v_TrackifyMultipleTarget[1].x = 0.5
|
|
//g_v_TrackifyMultipleTarget[1].y = 0.3
|
|
//g_v_TrackifyMultipleTarget[1].z = 49.7
|
|
|
|
SET_TRACKIFY_MULTIPLE_TARGET_VECTOR (1, <<1565.5, 2858.3, 54.7>>) //America Americans sign.
|
|
|
|
|
|
|
|
//g_v_TrackifyMultipleTarget[2].x = 1275.5
|
|
//g_v_TrackifyMultipleTarget[2].y = -1000.3
|
|
//g_v_TrackifyMultipleTarget[2].z = 49.7
|
|
|
|
//g_FirstPersonTransitionOngoing = TRUE
|
|
|
|
//HIDE_PHONE_IN_FIRST_PERSON_EXPERIMENTAL()
|
|
//SET_BIT(BitSet_CellphoneDisplay_Continued, g_BSC_BYPASS_CAMERA_APP_SAVE_ROUTINE)
|
|
|
|
SET_TRACKIFY_MULTIPLE_TARGET_VECTOR (2, <<206.5, 3347.3, 42.5>>) //Blue Uranium sign.
|
|
|
|
SET_TRACKIFY_MULTIPLE_TARGET_VECTOR (3, <<-206.5, -3347.3, 42.5>>) //Test 4
|
|
|
|
//g_v_TrackifyMultipleTarget[3].x = -4275.5
|
|
//g_v_TrackifyMultipleTarget[3].y = -1000.3
|
|
//g_v_TrackifyMultipleTarget[3].z = 49.7
|
|
|
|
//SET_TRACKIFY_MULTIPLE_TARGET_VECTOR (3, <<-4275.5, -1000.3, 49.7>>)
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//g_bUse_MP_DLC_Dialogue = TRUE
|
|
|
|
//ENABLE_MULTIPLAYER_TRACKIFY_APP (FALSE)
|
|
|
|
//LAUNCH_CELLPHONE_APPLICATION (AppCamera, TRUE, TRUE, FALSE)
|
|
//TASK_USE_MOBILE_PHONE (PLAYER_PED_ID(), TRUE)
|
|
|
|
//CELL_HORIZONTAL_MODE_TOGGLE (FALSE)
|
|
|
|
/*
|
|
IF GET_NUMBER_OF_THREADS_RUNNING_THE_SCRIPT_WITH_THIS_HASH(HASH("PI_MENU")) = 0
|
|
REQUEST_AND_LAUNCH_SCRIPT_WITH_NAME_HASH( HASH("PI_MENU") #IF IS_DEBUG_BUILD ,"PI_MENU" #ENDIF,MULTIPLAYER_MISSION_STACK_SIZE)
|
|
ENDIF
|
|
*/
|
|
|
|
//IF IS_SCRIPTED_CONVERSATION_ONGOING()//Added by Steve T to fix audio issue documented in bug 1930539
|
|
//KILL_FACE_TO_FACE_CONVERSATION_DO_NOT_FINISH_LAST_LINE()
|
|
//ENDIF
|
|
|
|
//ENABLE_MULTIPLAYER_TRACKIFY_APP (FALSE)
|
|
//PRINT_HELP ("CELL_705")
|
|
|
|
//SET_NIGHTVISION(FALSE)
|
|
|
|
//ADD_CONTACT_TO_PHONEBOOK(CHAR_CALL911, ALL_OWNERS_BOOKS, FALSE)
|
|
//g_bInMultiplayer = TRUE
|
|
|
|
//g_bUse_MP_DLC_Dialogue = TRUE
|
|
|
|
|
|
|
|
//PRINT_HELP ("CELL_705")
|
|
//Play_Invite_Received_Sound_Effect()
|
|
|
|
//SET_MP_EMAIL_REPLY_STATUS("CELL_EMAIL1", MPE_NO_REPLY_REQUIRED)
|
|
|
|
//PRINTSTRING ("Testing NG new compile")
|
|
//PRINTNL()
|
|
|
|
//SET_MP_EMAIL_REPLY_STATUS("CELL_EMAIL1", MPE_NO_REPLY_REQUIRED)
|
|
|
|
//DELETE_EMAIL_BY_LABEL_FROM_CURRENT_PLAYER ("CELL_EMAIL1")
|
|
|
|
//ADD_CONTACT_TO_PHONEBOOK(CHAR_DAVE, ALL_OWNERS_BOOKS)
|
|
|
|
|
|
//cdPrintnl()
|
|
//cdPrintString(GET_ONSCREEN_KEYBOARD_RESULT())
|
|
//cdPrintnl()
|
|
|
|
//CREATE_MOBILE_PHONE (MOBILE_1)
|
|
|
|
|
|
|
|
|
|
|
|
//IF NOT IS_ACCOUNT_OVER_17_FOR_CHAT()
|
|
//OR NOT IS_ACCOUNT_OVER_17_FOR_CHAT(m_sPlayers.plPlayers[m_sPlayers.m_selectedPlayerSlot])
|
|
//OR NETWORK_IS_PLAYER_MUTED_BY_ME(m_sPlayers.plPlayers[m_sPlayers.m_selectedPlayerSlot])
|
|
//OR NETWORK_IS_PLAYER_BLOCKED_BY_ME(m_sPlayers.plPlayers[m_sPlayers.m_selectedPlayerSlot])
|
|
//OR NETWORK_AM_I_MUTED_BY_PLAYER(m_sPlayers.plPlayers[m_sPlayers.m_selectedPlayerSlot])
|
|
//IF IS_OK_TO_PRINT_FREEMODE_HELP()
|
|
//PRINT_HELP_WITH_PLAYER_NAME("CELL_MP_1009M", GET_PLAYER_NAME(m_sPlayers.plPlayers[m_sPlayers.m_selectedPlayerSlot]), GET_PLAYER_HUD_COLOUR(m_sPlayers.plPlayers[m_sPlayers.m_selectedPlayerSlot])) //It is currently not possible to send a message to ~a~.
|
|
//ENDIF
|
|
//m_sPlayers.bConfirmedInteraction = FALSE
|
|
//PRINTLN(" ----------> APP - OPTION_SEND_MESSAGE - NO LONGER A VALID PLAYER (UNDERAGE, BLOCKED, OR MUTED) - SEND TO ", GET_PLAYER_NAME(m_sPlayers.plPlayers[m_sPlayers.m_selectedPlayerSlot]))
|
|
//EXIT
|
|
//ENDIF
|
|
|
|
//m_sPlayers.bConfirmedInteraction = FALSE
|
|
//m_sPlayers.iPlayerInteractionStage = PLAYER_INTERACTION_STAGE_SEND_MESSAGE
|
|
//PRINTLN(" ----------> APP - OPTION_SEND_MESSAGE - PiPlayerInteractionStage = PLAYER_INTERACTION_STAGE_SEND_MESSAGE - SEND TO ", GET_PLAYER_NAME(m_sPlayers.plPlayers[m_sPlayers.m_selectedPlayerSlot]))
|
|
|
|
|
|
//bCreatingEmailMessage = TRUE
|
|
|
|
|
|
|
|
|
|
//g_QuickSaveDisabledByScript = TRUE
|
|
|
|
//REMOVE_ALL_CONTACTS_FROM_ALL_PLAYER_CHARACTERS_PHONEBOOKS()
|
|
|
|
/*
|
|
IF NOT IS_PED_INJURED (PLAYER_PED_ID())
|
|
|
|
|
|
INT i_Headgear
|
|
INT i_Eyegear
|
|
|
|
i_Headgear = GET_PED_PROP_INDEX(PLAYER_PED_ID(), ANCHOR_HEAD)
|
|
|
|
cdPrintstring ("Getting headgear prop index. Index is ")
|
|
cdPrintint(i_Headgear)
|
|
cdPrintnl()
|
|
cdPrintnl()
|
|
|
|
|
|
i_Eyegear = GET_PED_PROP_INDEX(PLAYER_PED_ID(), ANCHOR_EYES)
|
|
|
|
cdPrintstring ("Getting Eyegear prop index. Index is ")
|
|
cdPrintint(i_Eyegear)
|
|
cdPrintnl()
|
|
cdPrintnl()
|
|
|
|
|
|
|
|
|
|
|
|
IF g_bInMultiplayer
|
|
|
|
IF i_Headgear = 15
|
|
OR i_Headgear = 16
|
|
OR i_Headgear = 17
|
|
OR i_Headgear = 18
|
|
OR i_Headgear = 19
|
|
OR IS_PED_WEARING_HELMET(PLAYER_PED_ID())
|
|
|
|
//b_WearingProblemHeadgear = TRUE
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
PRINTSTRING ("CELLPHONE_PRIV. Player is wearing headgear that would cause phone to clip through prop, not placing phone to ear.")
|
|
PRINTNL()
|
|
|
|
#endif
|
|
|
|
ENDIF
|
|
|
|
ELSE
|
|
|
|
IF IS_PED_WEARING_HELMET(PLAYER_PED_ID())
|
|
OR i_Headgear = 15
|
|
OR i_Headgear = 16
|
|
OR i_Headgear = 17
|
|
OR i_Headgear = 18
|
|
OR i_Headgear = 19
|
|
|
|
|
|
//b_WearingProblemHeadgear = TRUE
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
PRINTSTRING ("CELLPHONE_PRIV. Player is wearing headgear that would cause phone to clip through prop, not placing phone to ear.")
|
|
PRINTNL()
|
|
|
|
#endif
|
|
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
*/
|
|
|
|
//PHONEPHOTOEDITOR_TOGGLE(FALSE)
|
|
|
|
//PHONEPHOTOEDITOR_SET_FRAME_TXD("MPRankBadge", FALSE)
|
|
|
|
//REQUEST_ANIM_DICT("facials@p_m_zero@base")
|
|
|
|
//CLEAR_FACIAL_IDLE_ANIM_OVERRIDE(PLAYER_PED_ID())
|
|
|
|
|
|
|
|
//DESTROY_ALL_CAMS
|
|
|
|
|
|
|
|
|
|
|
|
//ANIMPOSTFX_STOP_ALL()
|
|
|
|
|
|
//LAUNCH_TRACKIFY_IMMEDIATELY()
|
|
|
|
/*
|
|
BEGIN_TEXT_COMMAND_THEFEED_POST ("SC_READ_TOS_BUTTON")
|
|
|
|
TEXT_LABEL_63 s_MPGamerTagTempHolder
|
|
|
|
//Grab player name and apply prefix and suffix for displaying the sender name with the condensed font.
|
|
|
|
s_MPGamerTagTempHolder = "<C>"
|
|
s_MPGamerTagTempHolder += "~HUD_COLOUR_SOCIAL_CLUB~"
|
|
s_MPGamerTagTempHolder += "Social Club"
|
|
s_MPGamerTagTempHolder += "</C>"
|
|
|
|
END_TEXT_COMMAND_THEFEED_POST_MESSAGETEXT ("CHAR_SOCIAL_CLUB", "CHAR_SOCIAL_CLUB", FALSE, TEXT_ICON_BLANK, s_MPGamerTagTempHolder)
|
|
*/
|
|
|
|
|
|
|
|
|
|
//PRINT_TICKER_WITH_PLAYER_NAME_STRING_TIME_AND_STRING ("CELL_103", "Gamertag2", 82950, "CELL_102", TRUE)
|
|
|
|
//SET_PED_IS_DRUNK (PLAYER_PED_ID(), TRUE)
|
|
|
|
//CREATE_CONVERSATION ( MyLocalPedStruct, "FAM3AUD", "FAM3_MST2", CONV_PRIORITY_LOW )
|
|
//KILL_ANY_CONVERSATION()
|
|
|
|
/*
|
|
//Phone task test
|
|
IF NOT (g_Use_Prologue_Cellphone) // Removed this for the prologue mission as that phone is only used as a detonator: See bug 1101927
|
|
TASK_USE_MOBILE_PHONE (PLAYER_PED_ID(), FALSE)
|
|
ENDIF
|
|
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintstring ("INCREDIBUILD TEST CELLPHONE_PRIV - Phone removed from ear - bit cleared.")
|
|
cdPrintnl()
|
|
#endif
|
|
|
|
IF g_bInMultiplayer
|
|
SET_PED_CONFIG_FLAG(PLAYER_PED_ID(), PCF_PhoneDisableCameraAnimations, TRUE)
|
|
SET_PED_CONFIG_FLAG(PLAYER_PED_ID(), PCF_PhoneDisableTalkingAnimations, TRUE)
|
|
SET_PED_CONFIG_FLAG(PLAYER_PED_ID(), PCF_PhoneDisableTextingAnimations, TRUE)
|
|
ENDIF
|
|
|
|
|
|
//SCRIPT_ASSERT("Task test")
|
|
//CLEAR_PED_TASKS_IMMEDIATELY (PLAYER_PED_ID())
|
|
|
|
CLEAR_BIT (BitSet_CellphoneDisplay, g_BS_PHONE_UP_TO_EAR)
|
|
//Phone task test
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//g_savedGlobals.sCellphoneSettingsData.This_Cellphone_Owner_Settings[CHAR_MICHAEL].g_LastMessageSentMustBeRead = TRUE
|
|
|
|
//START_PRELOADED_CONVERSATION()
|
|
|
|
//PAUSE_CELLPHONE_CONVERSATION(FALSE)
|
|
|
|
//REPOSITION_LANDSCAPE_PHONE_FOR_LONG_SUBTITLES (FALSE)
|
|
|
|
//REGISTER_SCRIPT_IN_COMPLETION_PERCENTAGE_TOTAL (CP_DLS1)
|
|
|
|
//Long conversation subtitles
|
|
//CREATE_CONVERSATION ( MyLocalPedStruct, "D1AUD", "DS1_1", CONV_PRIORITY_MEDIUM )
|
|
|
|
|
|
//SET_MISSION_COMPLETE_STATE(SP_MISSION_LESTER_1, TRUE) //For testing blurb.
|
|
|
|
//SET_MISSION_COMPLETE_STATE(SP_MISSION_ARMENIAN_3, TRUE) //Doesn't have blurb, use for score
|
|
|
|
//SET_MISSION_COMPLETE_STATE(SP_HEIST_FINALE_1, TRUE)
|
|
|
|
//SET_CELLPHONE_PROFILE_TO_SLEEP()
|
|
|
|
//PAUSE_CELLPHONE_CONVERSATION(FALSE)
|
|
|
|
//PRINTSTRING ("Signin Called")
|
|
//PRINTNL()
|
|
|
|
//DISPLAY_SYSTEM_SIGNIN_UI(TRUE)
|
|
|
|
//PRESENCE_EVENT_UPDATESTAT_INT(SP0_CROUCHED_AND_SHOT, 20)
|
|
|
|
|
|
//REGISTER_SCRIPT_IN_COMPLETION_PERCENTAGE_TOTAL (CP_HOLDUP)
|
|
|
|
//PRESENCE_EVENT_UPDATESTAT_FLOAT (SP0_DIST_DRIVING_CAR, 500.0)
|
|
|
|
//REGISTER_SCRIPT_IN_COMPLETION_PERCENTAGE_TOTAL ( CP_OJ_HUN1 )
|
|
|
|
|
|
|
|
//REGISTER_SCRIPT_IN_COMPLETION_PERCENTAGE_TOTAL (CP_RE_PLIFT1)
|
|
|
|
|
|
//SET_OUTGOING_CHAT_CALL_AS_ENGAGED(TRUE)
|
|
|
|
|
|
//KILL_ANY_CONVERSATION()
|
|
|
|
//LAUNCH_TRACKIFY_IMMEDIATELY (FALSE)
|
|
|
|
|
|
//REMOVE_MICHAEL_SECONDARY_CONTACT_LIST_FUNCTION()
|
|
|
|
//g_OnMissionState = MISSION_TYPE_OFF_MISSION
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//Test cutscene nonsense.
|
|
//REQUEST_ADDITIONAL_TEXT ("SCAUD", MISSION_DIALOGUE_TEXT_SLOT) //Load in additional text block that has been passed in by the requesting script and copied into
|
|
//WHILE NOT HAS_ADDITIONAL_TEXT_LOADED (MISSION_DIALOGUE_TEXT_SLOT) //the permanent global from the temporary holder.
|
|
//WAIT(0)
|
|
//#if IS_DEBUG_BUILD
|
|
//cdPrintstring ("MIMICKING cutscene load into mission dialogue text slot")
|
|
//cdPrintnl()
|
|
//#endif
|
|
//ENDWHILE
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//ADD_PED_FOR_DIALOGUE (MyLocalPedStruct, 0, PLAYER_PED_ID(), "MICHAEL", FALSE, TRUE)
|
|
//ADD_PED_FOR_DIALOGUE (MyLocalPedStruct, 7, NULL, "OJAHkDealer")
|
|
|
|
/*
|
|
g_iUnreadEmailsSP0 = 3
|
|
g_iUnreadEmailsSP1 = 3
|
|
g_iUnreadEmailsSP2 = 3
|
|
*/
|
|
|
|
//PLAY_AUDIO_EVENT("MOBILE_PRERING")
|
|
|
|
//IF NOT IS_ENTITY_DEAD (PLAYER_PED_ID())
|
|
|
|
//PLAY_AUDIO_EVENT ("MOBILE_PRERING")
|
|
|
|
//ENDIF
|
|
|
|
//PLAY_AUDIO_EVENT("WEAPON_PICKUP_GRENADE_LAUNCHER")
|
|
|
|
//cdPrintstring ("testing prering 3")
|
|
//cdPrintnl()
|
|
|
|
|
|
//PLAY_SINGLE_LINE_FROM_CONVERSATION (MyLocalPedStruct, "MEJ1AUD", "MEJ1_KILL", "MEJ1_KILL_2", CONV_PRIORITY_MEDIUM)
|
|
|
|
//CLEAR_AUTO_LAUNCH_TO_TEXT_MESSAGE_APP_FOR_THIS_SP_CHARACTER(CHAR_FRANKLIN)
|
|
|
|
//REMOVE_TREVOR_SECONDARY_CONTACT_LIST_FUNCTION()
|
|
//ADD_SECONDARY_OPTION_FOR_MP_CHARACTER (0, CHAR_MICHAEL, "CELL_3")
|
|
|
|
//SET_CALL_PREVENTED_FOR_CHAR_DETONATEPHONE(FALSE)
|
|
|
|
//g_b_ReplaceThisWithQSavailable = TRUE
|
|
|
|
//REGISTER_SCRIPT_IN_COMPLETION_PERCENTAGE_TOTAL (CP_COMEDY)
|
|
|
|
|
|
//SET_TRACKIFY_TARGET_VECTOR (<<1073.8, 3004.4, 56.8>>)
|
|
|
|
|
|
/*
|
|
IF IS_TEXTMESSAGE_LIST_IN_SINGLE_MESSAGE_VIEW()
|
|
|
|
AUTO_RETURN_TO_FULL_TEXT_MESSAGE_LIST_VIEW()
|
|
|
|
ENDIF
|
|
*/
|
|
|
|
|
|
|
|
|
|
//The initial part of the call...
|
|
/*
|
|
STRING TestRoots[10]
|
|
STRING TestLabels[10]
|
|
|
|
|
|
TestRoots[0] = "F3_DEAD"
|
|
TestRoots[1] = "f3_TENTER"
|
|
TestRoots[2] = "F3_DRV1"
|
|
TestRoots[3] = "F3_DRV1"
|
|
TestRoots[4] = "f3_TENTER"
|
|
TestRoots[5] = "F3_DEAD"
|
|
TestRoots[6] = "f3_TENTER"
|
|
TestRoots[7] = "F3_DRV1"
|
|
TestRoots[8] = "F3_DRV1"
|
|
TestRoots[9] = "F3_DRV1"
|
|
|
|
|
|
|
|
TestLabels[0] = "F3_DEAD_3"
|
|
TestLabels[1] = "f3_TENTER_5"
|
|
TestLabels[2] = "F3_DRV1_3"
|
|
TestLabels[3] = "F3_DRV1_4"
|
|
TestLabels[4] = "f3_TENTER"
|
|
TestLabels[5] = "F3_DEAD_3"
|
|
TestLabels[6] = "f3_TENTER_5"
|
|
TestLabels[7] = "F3_DRV1_1"
|
|
TestLabels[8] = "F3_DRV1_2"
|
|
TestLabels[9] = "F3_DRV1_1"
|
|
|
|
//The yes branch
|
|
STRING TestYesRoots[10]
|
|
STRING TestYesSpecifics[10]
|
|
|
|
TestYesRoots[0] = "F3_DEAD"
|
|
TestYesRoots[1] = "f3_TENTER"
|
|
TestYesRoots[2] = "F3_DRV1"
|
|
TestYesRoots[3] = "F3_DRV1"
|
|
TestYesRoots[4] = "f3_TENTER"
|
|
TestYesRoots[5] = "F3_DEAD"
|
|
|
|
TestYesSpecifics[0] = "F3_DEAD_3"
|
|
TestYesSpecifics[1] = "f3_TENTER_5"
|
|
TestYesSpecifics[2] = "F3_DRV1_1"
|
|
TestYesSpecifics[3] = "F3_DRV1_2"
|
|
TestYesSpecifics[4] = "f3_TENTER_5"
|
|
TestYesSpecifics[5] = "F3_DEAD_3"
|
|
|
|
|
|
|
|
//The no branch
|
|
STRING TestNoRoots[10]
|
|
STRING TestNoSpecifics[10]
|
|
|
|
TestNoRoots[0] = "F3_DEAD"
|
|
TestNoRoots[1] = "f3_TENTER"
|
|
TestNoRoots[2] = "F3_DRV1"
|
|
TestNoRoots[3] = "F3_DRV1"
|
|
TestNoRoots[4] = "f3_TENTER"
|
|
TestNoRoots[5] = "F3_DEAD"
|
|
TestNoRoots[6] = "F3_DRV1"
|
|
|
|
TestNoSpecifics[0] = "F3_DEAD_3"
|
|
TestNoSpecifics[1] = "f3_TENTER_5"
|
|
TestNoSpecifics[2] = "F3_DRV1_1"
|
|
TestNoSpecifics[3] = "F3_DRV1_2"
|
|
TestNoSpecifics[4] = "f3_TENTER_5"
|
|
TestNoSpecifics[5] = "F3_DEAD_3"
|
|
TestNoSpecifics[6] = "F3_DRV1_3"
|
|
|
|
|
|
IF PLAYER_CALL_CHAR_CELLPHONE_MULTIPART_WITH_N_LINES_REQUIRES_RESPONSE (10, MyLocalPedStruct, CHAR_DR_FRIEDLANDER, "FB3AUD", TestRoots, TestLabels, "CELL_291", CONV_PRIORITY_VERY_HIGH, TRUE, DISPLAY_SUBTITLES, DO_ADD_TO_BRIEF_SCREEN, FALSE)
|
|
|
|
SET_UP_MULTIPART_WITH_N_LINES_YES_NO_BRANCHES (6, 7, TestYesRoots, TestYesSpecifics, TestNoRoots, TestNoSpecifics)
|
|
|
|
ENDIF
|
|
*/
|
|
|
|
|
|
//SET_UP_MULTIPART_WITH_N_LINES_YES_NO_BRANCHES (3, 3, TestYesRoots, TestYesSpecifics, TestNoRoots, TestNoSpecifics)
|
|
|
|
//KILL_FACE_TO_FACE_CONVERSATION()
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//Prints out contents of test structs...
|
|
|
|
|
|
IF b_DisplayTestStructData
|
|
|
|
|
|
IF GET_NUMBER_OF_THREADS_RUNNING_THE_SCRIPT_WITH_THIS_HASH(g_AppList[AppContacts].AppScriptNameHash) > 0
|
|
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING (0.20, 0.15, "STRING", "Testing Hash Key Return")
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING (0.20, 0.35, "STRING", "MyLocalStruct")
|
|
|
|
|
|
DISPLAY_TEXT_WITH_NUMBER (0.20, 0.45, "CELL_500", 0)
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING (0.20, 0.5, "STRING", MyLocalPedStruct.PedInfo[0].VoiceId)
|
|
|
|
|
|
DISPLAY_TEXT_WITH_NUMBER (0.20, 0.58, "CELL_500", 1)
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING (0.20, 0.63, "STRING", MyLocalPedStruct.PedInfo[1].VoiceId)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING (0.55, 0.35, "STRING", "TestLocalStruct")
|
|
|
|
|
|
DISPLAY_TEXT_WITH_NUMBER (0.55, 0.45, "CELL_500", 0)
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING (0.55, 0.5, "STRING", TestLocalPedStruct.PedInfo[0].VoiceId)
|
|
|
|
|
|
DISPLAY_TEXT_WITH_NUMBER (0.55, 0.58, "CELL_500", 1)
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING (0.55, 0.63, "STRING", TestLocalPedStruct.PedInfo[1].VoiceId)
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|
|
/*
|
|
Reinstate this closing comment to disable main loop for core code phone testing.
|
|
*/
|
|
|
|
|
|
ENDWHILE
|
|
|
|
|
|
ENDSCRIPT
|
|
|
|
|