9177 lines
358 KiB
Python
Executable File
9177 lines
358 KiB
Python
Executable File
USING "rage_builtins.sch"
|
|
USING "globals.sch"
|
|
USING "commands_misc.sch"
|
|
USING "commands_script.sch"
|
|
USING "commands_pad.sch"
|
|
USING "cellphone_public.sch"
|
|
USING "cellphone_private.sch"
|
|
USING "dialogue_public.sch"
|
|
USING "player_ped_public.sch"
|
|
USING "stack_sizes.sch"
|
|
USING "friends_public.sch"
|
|
USING "randomChar_public.sch"
|
|
USING "appMPPlayerListFunctions.sch"
|
|
USING "FMMC_keyboard.sch"
|
|
USING "cheat_controller_public.sch"
|
|
USING "cellphone_movement.sch"
|
|
USING "net_cash_transactions.sch"
|
|
|
|
|
|
// *****************************************************************************************
|
|
// *****************************************************************************************
|
|
// *****************************************************************************************
|
|
//
|
|
// MISSION NAME : appContacts.sc
|
|
// AUTHOR : Steve T
|
|
// DESCRIPTION : Create contacts list by referencing information held in character
|
|
// sheet and checking phonebook presence field. If the character is
|
|
// included in a phonebook, add him/her to the contacts list.
|
|
//
|
|
//
|
|
//
|
|
// *****************************************************************************************
|
|
// *****************************************************************************************
|
|
// *****************************************************************************************
|
|
|
|
|
|
|
|
//Moved to globals so that it can be interrogated by public functions.
|
|
//INT ContactListSlot[MaxNumberOfContactSlots]
|
|
|
|
|
|
BOOL b_VoidContactSelectionDueToForce = FALSE
|
|
|
|
BOOL b_TryToPlaceContact = FALSE
|
|
|
|
FLOAT local_alphafloat, top_local_alphafloat
|
|
|
|
INT i_Number_Of_Contacts_In_List = 0
|
|
|
|
INT FriendSlot_OriginIndex = 0
|
|
INT FriendSlot_StartingIndex = 9999 //This needs to be initialised as a large number so later comparisons with slot zero cannot return true #1245546
|
|
|
|
//For Friends at top format...
|
|
INT NPCSlot_StartingIndex = 9999
|
|
|
|
|
|
INT ListCursorIndex = 0
|
|
SCALEFORM_RETURN_INDEX Choice_ReturnedSFIndex
|
|
INT i_Selected_Slot_to_Restore
|
|
|
|
|
|
INT ContactNamesToDraw = 0
|
|
|
|
INT SF_SelectedContactInt, SF_SelectedChoiceInt //stores a temp reference to the selected contact for error checking purposes.
|
|
|
|
INT Phone_Dialling_SoundID
|
|
|
|
|
|
|
|
//String handling for numpad entry
|
|
INT SelectedNumpadIndex
|
|
INT NewStringIndex = 0
|
|
|
|
STRING NewStringToAppend[1] //Greatly reduced from 20. We don't need these and I'm trying to get the stack size down for #1641893
|
|
|
|
TEXT_LABEL NumpadEntryString
|
|
INT NumpadEntryStringLength
|
|
|
|
|
|
|
|
BOOL b_DoFriend_SecondaryCallRoutine = FALSE
|
|
BOOL b_DoCancelConfirmation = FALSE
|
|
|
|
BOOL b_DoHumanFriend_Routine = FALSE
|
|
|
|
|
|
|
|
|
|
BOOL b_EngagedBypassCheck = FALSE
|
|
BOOL b_TrevorEngagedCurseSetup = FALSE
|
|
|
|
BOOL BypassGameAssociation = FALSE
|
|
|
|
BOOL b_ThisIsLastGenBonusCheat = FALSE
|
|
BOOL b_ThisCheatBlocked = FALSE
|
|
|
|
|
|
|
|
//enumPhonebookPresence PersonalPhonebookToCheck //we need to check which character we are using and store which phonebook we should base the contacts list on.
|
|
|
|
|
|
|
|
//Temp
|
|
FLOAT listOriginX = 0.82
|
|
FLOAT listOriginY = 0.42
|
|
|
|
|
|
FLOAT drawItemX = 0.0
|
|
FLOAT drawItemY = 0.0
|
|
|
|
BOOL dpad_scroll_pause_cued = FALSE
|
|
//BOOL b_ContactForCamPicSelected = FALSE
|
|
|
|
|
|
ENUM eCalling_Contact_Progress
|
|
|
|
CC_LAUNCH_TIMER_AND_CHECK_MESSAGE,
|
|
CC_CHEAT_PAUSE,
|
|
CC_CONNECTION_PAUSE,
|
|
CC_PLAY_ANSWERPHONE,
|
|
CC_ENGAGED
|
|
|
|
ENDENUM
|
|
|
|
|
|
eCalling_Contact_Progress cc_Progress = CC_LAUNCH_TIMER_AND_CHECK_MESSAGE
|
|
|
|
|
|
//Connection length and answerphone block - now moved to cellphone_globals.sch
|
|
/*
|
|
INT Connection_EngagedPauseLength = 4000
|
|
INT Connection_AnsMsgPauseLength = 7000
|
|
STRING answerPhoneBlock = "H1AUD"
|
|
*/
|
|
|
|
|
|
|
|
|
|
INT Connection_PauseLength
|
|
|
|
|
|
|
|
//Connection and Finale Choice Timers
|
|
INT Connection_AttemptStartTime, Connection_AttemptCurrentTime
|
|
INT FinaleChoice_StartTime, FinaleChoice_CurrentTime
|
|
|
|
BOOL b_DoFinaleConfirmation = FALSE
|
|
|
|
|
|
|
|
//Holder for answerphone label check
|
|
TEXT_LABEL Check_AnswerphoneLabel
|
|
|
|
|
|
structPedsForConversation AppContactPedStruct
|
|
|
|
|
|
//Holds copies for Finale Choice manipulation.
|
|
INT Master_LesterInt, Master_TrevorInt, Master_MichaelInt
|
|
|
|
|
|
|
|
|
|
//Gameworld Number temporary data storage
|
|
|
|
BOOL DialledNumberHasGameworldAssociation = FALSE
|
|
TEXT_LABEL GameworldAssociatedRoot
|
|
TEXT_LABEL_23 GameworldAssociatedVoice
|
|
|
|
|
|
|
|
|
|
TEXT_LABEL_3 singleCharacter[7] //This has to be a text label as a string address in memory can be overwritten. See Graeme.
|
|
//DecisionCharacter[2]
|
|
|
|
INT iBoolsBitSet
|
|
CONST_INT iBS_LAUNCH_STORE 0
|
|
CONST_INT iBS_STORE_ACTIVE 1
|
|
|
|
BOOL b_Secondary_Option_Available = FALSE
|
|
BOOL b_Friend_Option_Available = FALSE
|
|
INT i_Available_Option = 0
|
|
INT tempDynamicIndex = 0 //This cannot be declared in switch where it would ideally be...
|
|
|
|
INT iRandomNumber
|
|
|
|
|
|
//////// MP VARIABLES
|
|
m_structPlayerList m_sPlayers
|
|
|
|
STRUCT KEYBOARD_DATA
|
|
OSK_STATUS eStatus
|
|
INT iProfanityToken
|
|
INT iCurrentStatus
|
|
ENDSTRUCT
|
|
KEYBOARD_DATA KeyBoardData
|
|
TEXT_LABEL_63 tlSendMessage
|
|
BOOL bCreatingSendMessage
|
|
INT iStringLengthInCharacters
|
|
|
|
|
|
FUNC BOOL Is_SinglePlayer_Climbing()
|
|
|
|
IF g_bInMultiplayer
|
|
|
|
RETURN FALSE //Player does not hold phone whilst in MP. We don't need to check climbing at all here.
|
|
|
|
ELSE
|
|
|
|
IF IS_PLAYER_PLAYING (PLAYER_ID())
|
|
IF IS_PLAYER_CLIMBING(PLAYER_ID()) //See 843727 - Don't allow dial out while on ladder.
|
|
|
|
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintstring("appContacts - Singleplayer climbing - No selection action taken.")
|
|
cdPrintnl()
|
|
#endif
|
|
|
|
|
|
RETURN TRUE
|
|
|
|
ELSE
|
|
|
|
|
|
RETURN FALSE
|
|
|
|
ENDIF
|
|
|
|
ELSE
|
|
|
|
RETURN FALSE
|
|
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
|
|
ENDFUNC
|
|
|
|
|
|
|
|
|
|
FUNC BOOL IS_THIS_CHARACTER_FRIEND_OF_CURRENT_PLAYER_CHAR (enumCharacterList charToQuery)
|
|
|
|
|
|
SWITCH g_Cellphone.PhoneOwner
|
|
|
|
|
|
CASE CHAR_MICHAEL
|
|
|
|
|
|
IF ARE_CHARS_FRIENDS(CharToQuery, CHAR_MICHAEL)
|
|
|
|
RETURN TRUE
|
|
|
|
ELSE
|
|
|
|
RETURN FALSE
|
|
|
|
ENDIF
|
|
|
|
BREAK
|
|
|
|
|
|
CASE CHAR_FRANKLIN
|
|
|
|
|
|
IF ARE_CHARS_FRIENDS(CharToQuery, CHAR_FRANKLIN)
|
|
|
|
RETURN TRUE
|
|
|
|
ELSE
|
|
|
|
RETURN FALSE
|
|
|
|
ENDIF
|
|
|
|
|
|
BREAK
|
|
|
|
|
|
CASE CHAR_TREVOR
|
|
|
|
|
|
IF ARE_CHARS_FRIENDS(CharToQuery, CHAR_TREVOR)
|
|
|
|
|
|
RETURN TRUE
|
|
|
|
ELSE
|
|
|
|
RETURN FALSE
|
|
|
|
ENDIF
|
|
|
|
|
|
BREAK
|
|
|
|
|
|
DEFAULT
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
cdPrintnl()
|
|
cdPrintstring ("CELLPHONE_PRIV - Abnormal owner decision, no is_friend result available")
|
|
cdPrintnl()
|
|
|
|
#endif
|
|
|
|
RETURN FALSE
|
|
|
|
|
|
BREAK
|
|
|
|
ENDSWITCH
|
|
|
|
|
|
|
|
RETURN FALSE
|
|
|
|
|
|
ENDFUNC
|
|
|
|
|
|
|
|
|
|
|
|
|
|
PROC Set_Up_FinaleConfirmationScreen()
|
|
|
|
FinaleChoice_StartTime = GET_GAME_TIMER() //Get launch time for the purpose of creating a brief pause to prevent button mashing selecting confirmation prematurely.
|
|
|
|
|
|
//LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER (SF_MovieIndex, "DISPLAY_VIEW", 7) //Quick change of view to make sure data is flushed from view state 2.
|
|
|
|
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER(SF_MovieIndex,"SET_DATA_SLOT_EMPTY", 2)
|
|
|
|
|
|
WAIT (0)
|
|
|
|
PRINTNL()
|
|
PRINTSTRING ("TESTING FLUSH!")
|
|
PRINTNL()
|
|
|
|
|
|
|
|
SWITCH g_TheContactInvolvedinCall
|
|
|
|
|
|
CASE CHAR_TREVOR
|
|
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_DATA_SLOT", (TO_FLOAT(2)), (TO_FLOAT(0)), 0,
|
|
INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM, "CELL_7001",
|
|
|
|
//Replaced .role with .label as this is no longer displayed - Steve T. 14/11/12. Done in a effort to reduce global usage.
|
|
g_sCharacterSheetAll[g_TheContactInvolvedinCall].label,
|
|
g_sCharacterSheetAll[g_TheContactInvolvedinCall].picture)
|
|
|
|
BREAK
|
|
|
|
|
|
CASE CHAR_MICHAEL
|
|
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_DATA_SLOT", (TO_FLOAT(2)), (TO_FLOAT(0)), 0,
|
|
INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM,"CELL_7002",
|
|
|
|
//Replaced .role with .label as this is no longer displayed - Steve T. 14/11/12. Done in a effort to reduce global usage.
|
|
g_sCharacterSheetAll[g_TheContactInvolvedinCall].label,
|
|
g_sCharacterSheetAll[g_TheContactInvolvedinCall].picture)
|
|
|
|
BREAK
|
|
|
|
|
|
CASE CHAR_LESTER
|
|
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_DATA_SLOT", (TO_FLOAT(2)), (TO_FLOAT(0)), 0,
|
|
INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM, "CELL_7003",
|
|
|
|
//Replaced .role with .label as this is no longer displayed - Steve T. 14/11/12. Done in a effort to reduce global usage.
|
|
g_sCharacterSheetAll[g_TheContactInvolvedinCall].label,
|
|
|
|
"CELL_E_311")
|
|
|
|
BREAK
|
|
|
|
|
|
ENDSWITCH
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//Set up yes / no soft keys for this confirmation screen.
|
|
IF g_b_ToggleButtonLabels
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_SOFT_KEYS", BADGER_POS, 1,
|
|
13, INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM, "CELL_212") //"YES" - Positive
|
|
ELSE
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_SOFT_KEYS", BADGER_POS, 1,
|
|
13, INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM) //"YES" - Positive
|
|
ENDIF
|
|
|
|
|
|
|
|
IF g_b_ToggleButtonLabels
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_SOFT_KEYS", BADGER_NEG, 1,
|
|
14, INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM, "CELL_213") //"NO" - Negative
|
|
ELSE
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_SOFT_KEYS", BADGER_NEG, 1,
|
|
14, INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM) //"NO" - Negative
|
|
ENDIF
|
|
|
|
|
|
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_SOFT_KEYS", BADGER_OTHER, 0,
|
|
1, INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM) //"Error!" - Other
|
|
|
|
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER (SF_MovieIndex, "DISPLAY_VIEW", 2)
|
|
|
|
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_STRING (SF_MovieIndex, "SET_HEADER", "CELL_249") //"Are you sure?"
|
|
|
|
|
|
|
|
ENDPROC
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
PROC Do_FinaleConfirmation()
|
|
|
|
|
|
#if IS_DEBUG_BUILD
|
|
PRINTNL()
|
|
PRINTSTRING ("Testing finale confirmation")
|
|
PRINTNL()
|
|
PRINTNL()
|
|
#endif
|
|
|
|
IF Is_Phone_Control_Just_Pressed (FRONTEND_CONTROL, INT_TO_ENUM (CONTROL_ACTION, PHONE_POSITIVE_INPUT)) //positive action - contact selected.
|
|
|
|
|
|
CLEAR_BIT (BitSet_CellphoneDisplay_Continued, g_BSC_LAUNCH_FINALE_CONTACTS)
|
|
|
|
|
|
b_DoFinaleConfirmation = FALSE
|
|
|
|
Play_Select_Beep()
|
|
|
|
|
|
g_InputButtonJustPressed = TRUE
|
|
|
|
|
|
//Set bools to specify this is a story call here!
|
|
g_b_Is_This_An_Activity_Call = FALSE
|
|
g_b_Is_This_An_Activity_Cancellation_Call = FALSE
|
|
|
|
|
|
Do_Call()
|
|
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
|
|
|
|
IF Is_Phone_Control_Just_Pressed (FRONTEND_CONTROL, INT_TO_ENUM (CONTROL_ACTION, PHONE_GO_BACK_INPUT)) //Go back action - user opted to return to full contact list display.
|
|
|
|
|
|
b_DoFinaleConfirmation = FALSE
|
|
|
|
|
|
|
|
SET_BIT (BitSet_CellphoneDisplay_Continued, g_BSC_LAUNCH_FINALE_CONTACTS)
|
|
|
|
|
|
|
|
Play_Back_Beep()
|
|
|
|
g_InputButtonJustPressed = TRUE
|
|
|
|
|
|
Place_Names_in_ContactSlots()
|
|
|
|
WAIT(0) //make sure this JUST_PRESSED doesn't carry over by stopping for a game cycle.
|
|
|
|
|
|
IF g_CellPhone.PhoneDS > PDS_AWAY //make sure that the following state assignment cannot interfere with AWAY or DISABLED assignment.
|
|
|
|
g_Cellphone.PhoneDS = PDS_RUNNINGAPP
|
|
|
|
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintnl()
|
|
cdPrintstring("STATE ASSIGNMENT 9672. appContacts assigns PDS_RUNNINGAPP")
|
|
cdPrintnl()
|
|
#endif
|
|
|
|
ENDIF
|
|
|
|
NumpadEntryString ="" //Reset entry string.
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
|
|
ENDPROC
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
PROC Post_Aborted_String_Entry_Button_Creation() //Safer to have this completely separate and not used as a common proc with Post_placement_setup even though it's the same at present.
|
|
//This is currently only used by the routine added for TODO 1580608 and was part of the solution to the later bug 1643709
|
|
|
|
|
|
|
|
IF NOT (g_CellPhone.PhoneDS = PDS_ATTEMPTING_TO_CALL_CONTACT) //This script can be launched by "calling" text message senders. In that case we want to go directly
|
|
AND NOT (g_Cellphone.PhoneDS = PDS_ONGOING_CALL) //to the calling screen specified in appTextMessage so we bypass the initial contacts list screen setup below.
|
|
|
|
|
|
//Bug #1025518
|
|
IF IS_BIT_SET (BitSet_CellphoneDisplay, g_BS_SENDING_CELLPHONE_CAM_PIC) //Fix for flicking during photo send. Should be safe enough to have a wait in Port Heist mission.
|
|
WAIT (750)
|
|
ENDIF
|
|
|
|
|
|
IF g_CellPhone.PhoneDS > PDS_MAXIMUM //make sure we are in running app state at least here...
|
|
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER (SF_MovieIndex, "DISPLAY_VIEW", 2) //Set enum state and header to CONTACTS
|
|
|
|
|
|
|
|
IF IS_BIT_SET (BitSet_CellphoneDisplay_Continued, g_BSC_LAUNCH_FINALE_CONTACTS)
|
|
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_STRING (SF_MovieIndex, "SET_HEADER", "CELL_7000")
|
|
|
|
ELSE
|
|
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_STRING (SF_MovieIndex, "SET_HEADER", "CELL_0")
|
|
|
|
ENDIF
|
|
|
|
|
|
ClockThrottleMins = 99 //trigger clock update.
|
|
|
|
|
|
//AppContacts can be launched from the cellphone camera application. If the "about to send pic" bit is set we change the buttons accordingly
|
|
|
|
IF IS_BIT_SET (BitSet_CellphoneDisplay, g_BS_SENDING_CELLPHONE_CAM_PIC)
|
|
|
|
|
|
//Badger - Select Back combo
|
|
IF g_b_ToggleButtonLabels
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_SOFT_KEYS", BADGER_POS, 1,
|
|
2, INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM, "CELL_210") //"Select" - Positive
|
|
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_SOFT_KEYS", BADGER_NEG, 1,
|
|
4, INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM, "CELL_206") //"BACK" - Negative
|
|
|
|
ELSE
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_SOFT_KEYS", BADGER_POS, 1,
|
|
2, INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM) //"SELECT" - Positive
|
|
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_SOFT_KEYS", BADGER_NEG, 1,
|
|
4, INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM) //"BACK" - Negative
|
|
ENDIF
|
|
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_SOFT_KEYS", BADGER_OTHER, 0,
|
|
1, INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM) //"Error!" - Other
|
|
|
|
CLEAR_BIT (BitSet_CellphoneDisplay, g_BS_OTHER_OPTION_IS_DISPLAYED)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ELSE
|
|
|
|
|
|
|
|
|
|
IF IS_BIT_SET (BitSet_CellphoneDisplay_Continued, g_BSC_LAUNCH_FINALE_CONTACTS) //don't display disabled soft keys...
|
|
|
|
|
|
|
|
IF g_b_ToggleButtonLabels
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_SOFT_KEYS", BADGER_POS, 1,
|
|
2, INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM, "CELL_210") //"Select" - Positive
|
|
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_SOFT_KEYS", BADGER_NEG, 0,
|
|
4, INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM, "CELL_206") //"BACK" - Negative
|
|
|
|
ELSE
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_SOFT_KEYS", BADGER_POS, 1,
|
|
2, INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM) //"SELECT" - Positive
|
|
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_SOFT_KEYS", BADGER_NEG, 0,
|
|
4, INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM) //"BACK" - Negative
|
|
ENDIF
|
|
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_SOFT_KEYS", BADGER_OTHER, 0,
|
|
1, INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM) //"Error!" - Other
|
|
|
|
|
|
|
|
|
|
|
|
ELSE
|
|
|
|
|
|
//Badger - Call, Keypad, Back combo
|
|
IF g_b_ToggleButtonLabels //prologue Cellphone will default to displaying button labels.
|
|
|
|
IF i_Number_Of_Contacts_In_List > 0 //Only display call button if there is at least one contact.
|
|
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_SOFT_KEYS", BADGER_POS, 1,
|
|
5, INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM, "CELL_201") //"CALL" - Positive
|
|
|
|
ELSE
|
|
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_SOFT_KEYS", BADGER_POS, 0,
|
|
5, INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM, "CELL_201") //"CALL" - Positive
|
|
|
|
ENDIF
|
|
|
|
IF g_Use_Prologue_Cellphone = FALSE //only display enter no. for modern phones...
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_SOFT_KEYS", BADGER_OTHER, 1,
|
|
9, INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM, "CELL_207") //"ENTER NO." - Other
|
|
SET_BIT (BitSet_CellphoneDisplay, g_BS_OTHER_OPTION_IS_DISPLAYED)
|
|
ELSE
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_SOFT_KEYS", BADGER_OTHER, 0,
|
|
9, INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM) //"ENTER NO." - Other
|
|
SET_BIT (BitSet_CellphoneDisplay, g_BS_OTHER_OPTION_IS_DISPLAYED)
|
|
ENDIF
|
|
|
|
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_SOFT_KEYS", BADGER_NEG, 1,
|
|
4, INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM, "CELL_206") //"BACK" - Negative
|
|
|
|
ELSE
|
|
|
|
IF i_Number_Of_Contacts_In_List > 0 //Only display call button if there is at least one contact.
|
|
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_SOFT_KEYS", BADGER_POS, 1,
|
|
5, INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM) //"CALL" - Positive
|
|
|
|
ELSE
|
|
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_SOFT_KEYS", BADGER_POS, 0,
|
|
5, INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM) //"CALL" - Positive
|
|
|
|
ENDIF
|
|
|
|
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_SOFT_KEYS", BADGER_OTHER, 1,
|
|
9, INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM) //"ENTER NO." - Other
|
|
SET_BIT (BitSet_CellphoneDisplay, g_BS_OTHER_OPTION_IS_DISPLAYED)
|
|
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_SOFT_KEYS", BADGER_NEG, 1,
|
|
4, INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM) //"BACK" - Negative
|
|
ENDIF
|
|
|
|
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
ENDIF
|
|
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ENDPROC
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
PROC Post_Placement_Setup_and_Checks()
|
|
|
|
|
|
IF NOT (g_CellPhone.PhoneDS = PDS_ATTEMPTING_TO_CALL_CONTACT) //This script can be launched by "calling" text message senders. In that case we want to go directly
|
|
AND NOT (g_Cellphone.PhoneDS = PDS_ONGOING_CALL) //to the calling screen specified in appTextMessage so we bypass the initial contacts list screen setup below.
|
|
|
|
|
|
//Bug #1025518
|
|
IF IS_BIT_SET (BitSet_CellphoneDisplay, g_BS_SENDING_CELLPHONE_CAM_PIC) //Fix for flicking during photo send. Should be safe enough to have a wait in Port Heist mission.
|
|
WAIT (750)
|
|
ENDIF
|
|
|
|
|
|
IF g_CellPhone.PhoneDS > PDS_MAXIMUM //make sure we are in running app state at least here...
|
|
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER (SF_MovieIndex, "DISPLAY_VIEW", 2) //Set enum state and header to CONTACTS
|
|
|
|
|
|
|
|
IF IS_BIT_SET (BitSet_CellphoneDisplay_Continued, g_BSC_LAUNCH_FINALE_CONTACTS)
|
|
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_STRING (SF_MovieIndex, "SET_HEADER", "CELL_7000")
|
|
|
|
ELSE
|
|
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_STRING (SF_MovieIndex, "SET_HEADER", "CELL_0")
|
|
|
|
ENDIF
|
|
|
|
|
|
ClockThrottleMins = 99 //trigger clock update.
|
|
|
|
|
|
//AppContacts can be launched from the cellphone camera application. If the "about to send pic" bit is set we change the buttons accordingly
|
|
|
|
IF IS_BIT_SET (BitSet_CellphoneDisplay, g_BS_SENDING_CELLPHONE_CAM_PIC)
|
|
|
|
|
|
/*
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieButtonsIndex, "SET_SOFT_KEYS", 1, 1,
|
|
INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM, "CELL_210") //"SEND PIC" Positive
|
|
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieButtonsIndex, "SET_SOFT_KEYS", 2, 1,
|
|
INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM, "CELL_206") //"BACK" - Negative
|
|
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieButtonsIndex, "SET_SOFT_KEYS", 3, 0,
|
|
INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM, "CELL_250") //"Error!" - Other
|
|
*/
|
|
|
|
|
|
//Badger - Select Back combo
|
|
IF g_b_ToggleButtonLabels
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_SOFT_KEYS", BADGER_POS, 1,
|
|
2, INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM, "CELL_210") //"Select" - Positive
|
|
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_SOFT_KEYS", BADGER_NEG, 1,
|
|
4, INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM, "CELL_206") //"BACK" - Negative
|
|
|
|
ELSE
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_SOFT_KEYS", BADGER_POS, 1,
|
|
2, INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM) //"SELECT" - Positive
|
|
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_SOFT_KEYS", BADGER_NEG, 1,
|
|
4, INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM) //"BACK" - Negative
|
|
ENDIF
|
|
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_SOFT_KEYS", BADGER_OTHER, 0,
|
|
1, INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM) //"Error!" - Other
|
|
|
|
CLEAR_BIT (BitSet_CellphoneDisplay, g_BS_OTHER_OPTION_IS_DISPLAYED)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ELSE
|
|
|
|
//Monochrome
|
|
/*
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieButtonsIndex, "SET_SOFT_KEYS", 1, 1,
|
|
INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM, "CELL_201") //"CALL" Positive
|
|
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieButtonsIndex, "SET_SOFT_KEYS", 2, 1,
|
|
INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM, "CELL_206") //"BACK" - Negative
|
|
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieButtonsIndex, "SET_SOFT_KEYS", 3, 1,
|
|
INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM, "CELL_207") //"ENTER NO." - Other
|
|
*/
|
|
|
|
|
|
|
|
|
|
IF IS_BIT_SET (BitSet_CellphoneDisplay_Continued, g_BSC_LAUNCH_FINALE_CONTACTS) //don't display disabled soft keys...
|
|
|
|
|
|
|
|
IF g_b_ToggleButtonLabels
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_SOFT_KEYS", BADGER_POS, 1,
|
|
2, INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM, "CELL_210") //"Select" - Positive
|
|
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_SOFT_KEYS", BADGER_NEG, 0,
|
|
4, INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM, "CELL_206") //"BACK" - Negative
|
|
|
|
ELSE
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_SOFT_KEYS", BADGER_POS, 1,
|
|
2, INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM) //"SELECT" - Positive
|
|
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_SOFT_KEYS", BADGER_NEG, 0,
|
|
4, INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM) //"BACK" - Negative
|
|
ENDIF
|
|
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_SOFT_KEYS", BADGER_OTHER, 0,
|
|
1, INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM) //"Error!" - Other
|
|
|
|
|
|
|
|
|
|
|
|
ELSE
|
|
|
|
|
|
//Badger - Call, Keypad, Back combo
|
|
IF g_b_ToggleButtonLabels //prologue Cellphone will default to displaying button labels.
|
|
|
|
IF i_Number_Of_Contacts_In_List > 0 //Only display call button if there is at least one contact.
|
|
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_SOFT_KEYS", BADGER_POS, 1,
|
|
5, INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM, "CELL_201") //"CALL" - Positive
|
|
|
|
ELSE
|
|
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_SOFT_KEYS", BADGER_POS, 0,
|
|
5, INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM, "CELL_201") //"CALL" - Positive
|
|
|
|
ENDIF
|
|
|
|
IF g_Use_Prologue_Cellphone = FALSE //only display enter no. for modern phones...
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_SOFT_KEYS", BADGER_OTHER, 1,
|
|
9, INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM, "CELL_207") //"ENTER NO." - Other
|
|
SET_BIT (BitSet_CellphoneDisplay, g_BS_OTHER_OPTION_IS_DISPLAYED)
|
|
ELSE
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_SOFT_KEYS", BADGER_OTHER, 0,
|
|
9, INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM) //"ENTER NO." - Other
|
|
SET_BIT (BitSet_CellphoneDisplay, g_BS_OTHER_OPTION_IS_DISPLAYED)
|
|
ENDIF
|
|
|
|
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_SOFT_KEYS", BADGER_NEG, 1,
|
|
4, INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM, "CELL_206") //"BACK" - Negative
|
|
|
|
ELSE
|
|
|
|
IF i_Number_Of_Contacts_In_List > 0 //Only display call button if there is at least one contact.
|
|
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_SOFT_KEYS", BADGER_POS, 1,
|
|
5, INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM) //"CALL" - Positive
|
|
|
|
ELSE
|
|
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_SOFT_KEYS", BADGER_POS, 0,
|
|
5, INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM) //"CALL" - Positive
|
|
|
|
ENDIF
|
|
|
|
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_SOFT_KEYS", BADGER_OTHER, 1,
|
|
9, INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM) //"ENTER NO." - Other
|
|
SET_BIT (BitSet_CellphoneDisplay, g_BS_OTHER_OPTION_IS_DISPLAYED)
|
|
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_SOFT_KEYS", BADGER_NEG, 1,
|
|
4, INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM) //"BACK" - Negative
|
|
ENDIF
|
|
|
|
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
ENDIF
|
|
|
|
|
|
ENDIF
|
|
|
|
//Critical! Restore Master alpha ints as Finale Choice contacts list may have altered them.
|
|
|
|
GLOBAL_CHARACTER_SHEET_SET_ALPHA_INT(CHAR_LESTER, Master_LesterInt)
|
|
GLOBAL_CHARACTER_SHEET_SET_ALPHA_INT(CHAR_TREVOR, Master_TrevorInt)
|
|
GLOBAL_CHARACTER_SHEET_SET_ALPHA_INT(CHAR_MICHAEL, Master_MichaelInt)
|
|
ENDPROC
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
PROC ADD_FRIEND_TO_SLOT(STRING playerName)
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
PRINTSTRING("Populating friend slot ")
|
|
PRINTINT(FriendSlot_OriginIndex)
|
|
PRINTNL()
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// //Put a dummy friend in the first free slot after the Story Contacts have been added.
|
|
// LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_DATA_SLOT", (TO_FLOAT(2)), (TO_FLOAT(FriendSlot_OriginIndex)), 0,
|
|
// INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM,
|
|
// DummyFriend[NumberOfDummyFriends],
|
|
//
|
|
// //Replaced .role with .label as this is no longer displayed - Steve T. 14/11/12. Done in a effort to reduce global usage.
|
|
// "CELL_300",
|
|
//
|
|
// //Display temporary blank headshot.
|
|
// "CELL_300")
|
|
BEGIN_SCALEFORM_MOVIE_METHOD(SF_MovieIndex, "SET_DATA_SLOT")
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(TO_FLOAT(2))
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT((TO_FLOAT(FriendSlot_OriginIndex)))
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(0)
|
|
|
|
// The Player Name (literal string composed using the Text Commands)
|
|
BEGIN_TEXT_COMMAND_SCALEFORM_STRING("STRING")
|
|
ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME(playerName)
|
|
END_TEXT_COMMAND_SCALEFORM_STRING()
|
|
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING ("CELL_MP_999")//("CELL_MP_999") //CHAR_HUMANDEFAULT
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING ("CELL_MP_999")//("CELL_MP_999") //CHAR_HUMANDEFAULT - This one sets the headshot to the left of the name in the contacts list.
|
|
|
|
//Setting this with a null string will display no headshot at all...
|
|
//SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING ("") //This one sets the contact pic.
|
|
|
|
|
|
|
|
END_SCALEFORM_MOVIE_METHOD()
|
|
|
|
FriendSlot_OriginIndex ++
|
|
|
|
//Critical! Conor, this is needed for a navigation back up, so when something is added to the slot it needs incremented.
|
|
i_Number_Of_Contacts_In_List ++
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
PRINTSTRING("September 2014 - NumContacts in list after friend additions is ")
|
|
PRINTINT(i_Number_Of_Contacts_In_List)
|
|
PRINTNL()
|
|
|
|
#endif
|
|
ENDPROC
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
PROC ADD_MP_FRIEND_TO_SLOT(STRING playerName)
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
PRINTSTRING("Populating friend slot ")
|
|
PRINTINT(FriendSlot_OriginIndex)
|
|
PRINTNL()
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
// //Put a dummy friend in the first free slot after the Story Contacts have been added.
|
|
// LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_DATA_SLOT", (TO_FLOAT(2)), (TO_FLOAT(FriendSlot_OriginIndex)), 0,
|
|
// INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM,
|
|
// DummyFriend[NumberOfDummyFriends],
|
|
//
|
|
// //Replaced .role with .label as this is no longer displayed - Steve T. 14/11/12. Done in a effort to reduce global usage.
|
|
// "CELL_300",
|
|
//
|
|
// //Display temporary blank headshot.
|
|
// "CELL_300")
|
|
BEGIN_SCALEFORM_MOVIE_METHOD(SF_MovieIndex, "SET_DATA_SLOT")
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(TO_FLOAT(2))
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT((TO_FLOAT(FriendSlot_OriginIndex)))
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(0)
|
|
|
|
// The Player Name (literal string composed using the Text Commands)
|
|
BEGIN_TEXT_COMMAND_SCALEFORM_STRING("STRING")
|
|
ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME(playerName)
|
|
END_TEXT_COMMAND_SCALEFORM_STRING()
|
|
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING ("CELL_MP_999")
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING ("CELL_MP_999") //("CELL_MP_999") //CHAR_HUMANDEFAULT - This one sets the headshot to the left of the name in the contacts list.
|
|
|
|
//Setting this with a null string will display no headshot at all...
|
|
//SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING ("") //This one sets the contact pic.
|
|
|
|
|
|
|
|
|
|
END_SCALEFORM_MOVIE_METHOD()
|
|
|
|
FriendSlot_OriginIndex ++
|
|
|
|
//Critical! Conor, this is needed for a navigation back up, so when something is added to the slot it needs incremented.
|
|
i_Number_Of_Contacts_In_List ++
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
PRINTSTRING("September 2014 - NumContacts in list after friend additions is ")
|
|
PRINTINT(i_Number_Of_Contacts_In_List)
|
|
PRINTNL()
|
|
|
|
#endif
|
|
ENDPROC
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
PROC Place_Friends_in_ContactSlots()
|
|
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintnl()
|
|
cdPrintstring("AppContacts - 02 Sep 3038184. 18th May drastic action for bug 2828375 - Nuking any save game alphabetical ordering for male and female assistant contacts for Executive pack via Place_Friends")
|
|
cdPrintnl()
|
|
#endif
|
|
|
|
GLOBAL_CHARACTER_SHEET_SET_ALPHA_INT(CHAR_BIKER_CH1, 1320)
|
|
GLOBAL_CHARACTER_SHEET_SET_ALPHA_INT(CHAR_MP_P_ASSISTF, 180)
|
|
GLOBAL_CHARACTER_SHEET_SET_ALPHA_INT(CHAR_MP_P_ASSIST, 190)
|
|
|
|
// Gather the details for all other players (ignoring current player)
|
|
// KGM 3/8/11: For now, just create a list of players in the network game - unsorted, etc
|
|
PLAYER_INDEX thisPlayer = NULL
|
|
INT thisSlot = 0
|
|
INT tempLoop = 0
|
|
GAMER_HANDLE friendHandle
|
|
|
|
|
|
//Critical.
|
|
FriendSlot_OriginIndex = i_Number_Of_Contacts_In_List //Marks the scaleform slot where the story contacts finished and the friends should start.
|
|
|
|
|
|
//Critical, Conor, we need to keep this so we know where the friends slots start from when a slot is selected.
|
|
FriendSlot_StartingIndex = FriendSlot_OriginIndex
|
|
|
|
Clear_PlayerList_Details(m_sPlayers)
|
|
|
|
|
|
BOOL Human_Contacts_Barred_During_MP_Tutorial = FALSE
|
|
|
|
IF g_bInMultiplayer
|
|
IF ARE_ALL_INSTANCED_TUTORIALS_COMPLETE() = FALSE //#1545235 - function from #1601899
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
cdPrintnl()
|
|
cdPrintString("ST - Place_Friends_in_ContactSlots() reporting that the player is in MP but has not completed the tutorial, not placing friends or session players in list")
|
|
cdPrintnl()
|
|
|
|
#endif
|
|
|
|
Human_Contacts_Barred_During_MP_Tutorial = TRUE
|
|
|
|
ENDIF
|
|
ENDIF
|
|
|
|
|
|
|
|
REPEAT NUM_NETWORK_PLAYERS tempLoop
|
|
thisPlayer = INT_TO_PLAYERINDEX(tempLoop)
|
|
IF IS_NET_PLAYER_OK(thisPlayer,FALSE)
|
|
IF Human_Contacts_Barred_During_MP_Tutorial = FALSE //#1545235
|
|
IF NOT (thisPlayer = PLAYER_ID())
|
|
|
|
m_sPlayers.plPlayers[thisSlot] = thisPlayer
|
|
ADD_FRIEND_TO_SLOT(GET_PLAYER_NAME(thisPlayer))
|
|
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintnl()
|
|
cdPrintstring("AppContacts Place Normal - Adding Network Player:")
|
|
cdPrintstring(GET_PLAYER_NAME(thisPlayer))
|
|
cdPrintnl()
|
|
#endif
|
|
|
|
|
|
|
|
thisSlot++
|
|
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDREPEAT
|
|
|
|
m_sPlayers.plNumPlayers = thisSlot
|
|
|
|
tempLoop = 0
|
|
thisSlot = 0
|
|
INT iMaxFriends
|
|
IF IS_ACCOUNT_OVER_17_FOR_CHAT(PLAYER_ID())
|
|
|
|
iMaxFriends = NETWORK_GET_FRIEND_COUNT()
|
|
IF iMaxFriends > 100
|
|
iMaxFriends = 100
|
|
ENDIF
|
|
|
|
FOR tempLoop = 0 TO iMaxFriends - 1
|
|
IF NETWORK_IS_FRIEND_ONLINE(NETWORK_GET_FRIEND_NAME(tempLoop))
|
|
IF NETWORK_IS_FRIEND_IN_SAME_TITLE(NETWORK_GET_FRIEND_NAME(tempLoop))
|
|
friendHandle = GET_GAMER_HANDLE_FRIEND(tempLoop)
|
|
IF NOT NETWORK_IS_GAMER_IN_MY_SESSION(friendHandle)
|
|
IF Human_Contacts_Barred_During_MP_Tutorial = FALSE //#1545235
|
|
|
|
IF thisSlot < 100
|
|
m_sPlayers.plFriends[thisSlot].Handle = friendHandle
|
|
IF IS_XBOX_PLATFORM()
|
|
m_sPlayers.plFriends[thisSlot].Name = NETWORK_GET_FRIEND_DISPLAY_NAME(tempLoop)
|
|
ELSE
|
|
m_sPlayers.plFriends[thisSlot].Name = NETWORK_GET_FRIEND_NAME(tempLoop)
|
|
ENDIF
|
|
ADD_FRIEND_TO_SLOT(m_sPlayers.plFriends[thisSlot].Name)
|
|
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintnl()
|
|
cdPrintstring("AppContacts Place Normal - Adding online friend who is not in session:")
|
|
cdPrintstring(m_sPlayers.plFriends[thisSlot].Name)
|
|
cdPrintnl()
|
|
#endif
|
|
|
|
thisSlot++
|
|
|
|
ENDIF
|
|
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDFOR
|
|
ENDIF
|
|
m_sPlayers.plTotalNumContacts = m_sPlayers.plNumPlayers + thisSlot
|
|
|
|
|
|
ENDPROC
|
|
|
|
|
|
|
|
|
|
|
|
PROC Place_MP_Friends_in_ContactSlots()
|
|
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintnl()
|
|
cdPrintstring("AppContacts - 02 September. 18th May drastic action for bug 2828375 - Nuking any save game alphabetical ordering for male and female assistant contacts for Executive pack via Place_MP_Friends")
|
|
cdPrintnl()
|
|
#endif
|
|
|
|
GLOBAL_CHARACTER_SHEET_SET_ALPHA_INT(CHAR_BIKER_CH1, 1320)
|
|
GLOBAL_CHARACTER_SHEET_SET_ALPHA_INT(CHAR_MP_P_ASSISTF, 180)
|
|
GLOBAL_CHARACTER_SHEET_SET_ALPHA_INT(CHAR_MP_P_ASSIST, 190)
|
|
|
|
// Gather the details for all other players (ignoring current player)
|
|
// KGM 3/8/11: For now, just create a list of players in the network game - unsorted, etc
|
|
PLAYER_INDEX thisPlayer = NULL
|
|
INT thisSlot = 0
|
|
INT tempLoop = 0
|
|
GAMER_HANDLE friendHandle
|
|
|
|
|
|
//Critical.
|
|
FriendSlot_OriginIndex = i_Number_Of_Contacts_In_List //Marks the scaleform slot where the story contacts finished and the friends should start.
|
|
|
|
|
|
//Critical, Conor, we need to keep this so we know where the friends slots start from when a slot is selected.
|
|
FriendSlot_StartingIndex = FriendSlot_OriginIndex
|
|
|
|
Clear_PlayerList_Details(m_sPlayers)
|
|
|
|
|
|
BOOL Human_Contacts_Barred_During_MP_Tutorial = FALSE
|
|
|
|
IF g_bInMultiplayer
|
|
IF ARE_ALL_INSTANCED_TUTORIALS_COMPLETE() = FALSE //#1545235 - function from #1601899
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
cdPrintnl()
|
|
cdPrintString("ST - Place_MP_Friends_in_ContactSlots() reporting that the player is in MP but has not completed the tutorial, not placing friends or session players in list")
|
|
cdPrintnl()
|
|
|
|
#endif
|
|
|
|
Human_Contacts_Barred_During_MP_Tutorial = TRUE
|
|
|
|
ENDIF
|
|
ENDIF
|
|
|
|
|
|
|
|
REPEAT NUM_NETWORK_PLAYERS tempLoop
|
|
thisPlayer = INT_TO_PLAYERINDEX(tempLoop)
|
|
IF IS_NET_PLAYER_OK(thisPlayer,FALSE)
|
|
IF Human_Contacts_Barred_During_MP_Tutorial = FALSE //#1545235
|
|
IF NOT (thisPlayer = PLAYER_ID())
|
|
|
|
m_sPlayers.plPlayers[thisSlot] = thisPlayer
|
|
ADD_MP_FRIEND_TO_SLOT(GET_PLAYER_NAME(thisPlayer))
|
|
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintnl()
|
|
cdPrintstring("AppContacts Place MP - Adding Network Player:")
|
|
cdPrintstring(GET_PLAYER_NAME(thisPlayer))
|
|
cdPrintnl()
|
|
#endif
|
|
|
|
|
|
thisSlot++
|
|
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDREPEAT
|
|
|
|
m_sPlayers.plNumPlayers = thisSlot
|
|
|
|
|
|
thisSlot = 0
|
|
tempLoop = 0
|
|
INT iMaxFriends
|
|
IF IS_ACCOUNT_OVER_17_FOR_CHAT(PLAYER_ID())
|
|
|
|
iMaxFriends = NETWORK_GET_FRIEND_COUNT()
|
|
IF iMaxFriends > 100
|
|
iMaxFriends = 100
|
|
ENDIF
|
|
|
|
FOR tempLoop = 0 TO iMaxFriends - 1
|
|
IF NETWORK_IS_FRIEND_ONLINE(NETWORK_GET_FRIEND_NAME(tempLoop))
|
|
IF NETWORK_IS_FRIEND_IN_SAME_TITLE(NETWORK_GET_FRIEND_NAME(tempLoop))
|
|
friendHandle = GET_GAMER_HANDLE_FRIEND(tempLoop)
|
|
IF NOT NETWORK_IS_GAMER_IN_MY_SESSION(friendHandle)
|
|
IF Human_Contacts_Barred_During_MP_Tutorial = FALSE //#1545235
|
|
|
|
IF thisSlot < 100
|
|
m_sPlayers.plFriends[thisSlot].Handle = friendHandle
|
|
IF IS_XBOX_PLATFORM()
|
|
m_sPlayers.plFriends[thisSlot].Name = NETWORK_GET_FRIEND_DISPLAY_NAME(tempLoop)
|
|
ELSE
|
|
m_sPlayers.plFriends[thisSlot].Name = NETWORK_GET_FRIEND_NAME(tempLoop)
|
|
ENDIF
|
|
|
|
ADD_MP_FRIEND_TO_SLOT(m_sPlayers.plFriends[thisSlot].Name)
|
|
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintnl()
|
|
cdPrintstring("AppContacts Place MP - Adding online friend who is not in session:")
|
|
cdPrintstring(m_sPlayers.plFriends[thisSlot].Name)
|
|
cdPrintnl()
|
|
#endif
|
|
|
|
thisSlot++
|
|
|
|
ENDIF
|
|
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDFOR
|
|
ENDIF
|
|
m_sPlayers.plTotalNumContacts = m_sPlayers.plNumPlayers + thisSlot
|
|
|
|
|
|
ENDPROC
|
|
|
|
|
|
|
|
|
|
|
|
PROC Place_Names_in_ContactSlots()
|
|
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintnl()
|
|
cdPrintstring("AppContacts - 02 Sep. 18th May drastic action for bug 2828375 - Nuking any save game alphabetical ordering for male and female assistant contacts for Executive pack via Place_Names")
|
|
cdPrintnl()
|
|
#endif
|
|
|
|
GLOBAL_CHARACTER_SHEET_SET_ALPHA_INT(CHAR_BIKER_CH1, 1320)
|
|
GLOBAL_CHARACTER_SHEET_SET_ALPHA_INT(CHAR_MP_P_ASSISTF, 180)
|
|
GLOBAL_CHARACTER_SHEET_SET_ALPHA_INT(CHAR_MP_P_ASSIST, 190)
|
|
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER(SF_MovieIndex,"SET_DATA_SLOT_EMPTY", 2)
|
|
|
|
WAIT (0)
|
|
|
|
i_Number_Of_Contacts_In_List = 0 //reset number of contacts before filling list.
|
|
|
|
|
|
b_DoFinaleConfirmation = FALSE //make sure this is false each time we run this proc.
|
|
|
|
b_DoHumanFriend_Routine = FALSE
|
|
|
|
|
|
//Display "no contacts" message in slot 1 in lieu of any contacts...
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_DATA_SLOT", (TO_FLOAT(2)), (TO_FLOAT(0)), 0,
|
|
INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM, "CELL_232", "CELL_233", "CELL_393")
|
|
|
|
|
|
|
|
|
|
|
|
BOOL contact_name_in_alpha_order[MAX_CHARACTERS_PLUS_DUMMY]
|
|
|
|
INT slotIndex = 0
|
|
|
|
WHILE slotIndex < (ENUM_TO_INT(MAX_CHARACTERS_MP))
|
|
|
|
|
|
//When testing ADD_ALL_CHARS_TO_ALL_PLAYER_CHARACTERS_PHONEBOOKS() comment in this WAIT (0)
|
|
//WAIT(0) // for testing all contacts.
|
|
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
|
|
PRINTSTRING("Populating sf slot ")
|
|
PRINTINT(slotIndex)
|
|
PRINTNL()
|
|
|
|
#endif
|
|
|
|
|
|
INT comparisonIndex = 0
|
|
|
|
INT top_alpha_comparison = (ENUM_TO_INT(MAX_CHARACTERS_MP))
|
|
|
|
GLOBAL_CHARACTER_SHEET_SET_ALPHA_INT(INT_TO_ENUM(enumCharacterList, top_alpha_comparison), 5000)
|
|
|
|
//Virtual Character handled by this interndal function now.
|
|
Get_Cellphone_Owner()
|
|
|
|
WHILE comparisonIndex < (ENUM_TO_INT(MAX_CHARACTERS_MP))
|
|
|
|
/*
|
|
PRINTSTRING("comparison index =")
|
|
PRINTINT(comparisonIndex)
|
|
PRINTNL()
|
|
*/
|
|
|
|
|
|
|
|
IF IS_BIT_SET (BitSet_CellphoneDisplay_Continued, g_BSC_LAUNCH_FINALE_CONTACTS)
|
|
|
|
IF comparisonIndex = ENUM_TO_INT (CHAR_TREVOR)
|
|
OR comparisonIndex = ENUM_TO_INT (CHAR_MICHAEL)
|
|
OR comparisonIndex = ENUM_TO_INT (CHAR_LESTER)
|
|
|
|
|
|
|
|
//Critical! This alters the alphabetical order by manipulating the alphaints. Holders obtained the correct value on startup to re-establish old values at end of proc and
|
|
//before termination of this script.
|
|
|
|
//Ben, this stipulates the order in which the characters appear on the finale contact list.
|
|
|
|
GLOBAL_CHARACTER_SHEET_SET_ALPHA_INT(CHAR_LESTER, 3)
|
|
GLOBAL_CHARACTER_SHEET_SET_ALPHA_INT(CHAR_TREVOR, 1)
|
|
GLOBAL_CHARACTER_SHEET_SET_ALPHA_INT(CHAR_MICHAEL, 2)
|
|
|
|
|
|
b_TryToPlaceContact = TRUE
|
|
|
|
ELSE
|
|
|
|
b_TryToPlaceContact = FALSE
|
|
|
|
ENDIF
|
|
|
|
ELSE
|
|
|
|
IF GLOBAL_CHARACTER_SHEET_GET_PHONEBOOK_STATE(INT_TO_ENUM(enumCharacterList, comparisonIndex), ENUM_TO_INT(g_Cellphone.PhoneOwner)) = LISTED
|
|
|
|
b_TryToPlaceContact = TRUE
|
|
|
|
ELSE
|
|
|
|
b_TryToPlaceContact = FALSE
|
|
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
//This is the main SP Contact placement routine. For MP specific adjustments please see Place_MP_Names_in_ContactSlots() below.
|
|
|
|
IF b_TryToPlaceContact
|
|
IF (INT_TO_ENUM (enumCharacterList, comparisonIndex )) <> g_Cellphone.PhoneOwner //Don't let the character include a contact to himself.
|
|
IF contact_name_in_alpha_order[comparisonIndex] = FALSE
|
|
|
|
//#if IS_DEBUG_BUILD
|
|
//cdPrintstring ("TAC ")
|
|
//cdPrintint(top_alpha_comparison)
|
|
//cdPrintnl()
|
|
//#endif
|
|
|
|
|
|
//If contact has missed call status, manipulate him to the top of the list by dividing his or her alphaint by 100.
|
|
//We can also manipulate the scheduled friend activity near the top also.
|
|
|
|
IF GLOBAL_CHARACTER_SHEET_GET_MISSED_CALL_STATUS(INT_TO_ENUM(enumCharacterList, comparisonIndex), ENUM_TO_INT(g_Cellphone.PhoneOwner)) = MISSED_CALL
|
|
OR HAVE_CHARS_ARRANGED_FRIEND_ACTIVITY ((INT_TO_ENUM (enumCharacterList, comparisonIndex)), g_Cellphone.PhoneOwner)
|
|
|
|
local_alphafloat = ((TO_FLOAT (GLOBAL_CHARACTER_SHEET_GET_ALPHA_INT(INT_TO_ENUM(enumCharacterList, comparisonIndex)))) / 100.0)
|
|
|
|
ELSE
|
|
|
|
local_alphafloat = TO_FLOAT (GLOBAL_CHARACTER_SHEET_GET_ALPHA_INT(INT_TO_ENUM(enumCharacterList, comparisonIndex)))
|
|
|
|
ENDIF
|
|
|
|
|
|
IF GLOBAL_CHARACTER_SHEET_GET_MISSED_CALL_STATUS(INT_TO_ENUM(enumCharacterList, top_alpha_comparison), ENUM_TO_INT(g_Cellphone.PhoneOwner)) = MISSED_CALL
|
|
OR HAVE_CHARS_ARRANGED_FRIEND_ACTIVITY ((INT_TO_ENUM (enumCharacterList, top_alpha_comparison)), g_Cellphone.PhoneOwner)
|
|
|
|
top_local_alphafloat = ((TO_FLOAT (GLOBAL_CHARACTER_SHEET_GET_ALPHA_INT(INT_TO_ENUM(enumCharacterList, top_alpha_comparison)))) / 100.0)
|
|
|
|
ELSE
|
|
|
|
top_local_alphafloat = TO_FLOAT (GLOBAL_CHARACTER_SHEET_GET_ALPHA_INT(INT_TO_ENUM(enumCharacterList, top_alpha_comparison)))
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
IF local_alphafloat < top_local_alphafloat
|
|
|
|
|
|
top_alpha_comparison = comparisonIndex
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
IF IS_BIT_SET (BitSet_CellphoneDisplay_Continued, g_BSC_LAUNCH_FINALE_CONTACTS)
|
|
|
|
|
|
//Display Finale choice options. Kill Trevor, Kill Michael, Lester Deathwish.
|
|
|
|
|
|
IF top_alpha_comparison = ENUM_TO_INT (CHAR_TREVOR)
|
|
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_DATA_SLOT", (TO_FLOAT(2)), (TO_FLOAT(slotIndex)), 0,
|
|
INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM, "CELL_7001",
|
|
|
|
//Replaced .role with .label as this is no longer displayed - Steve T. 14/11/12. Done in a effort to reduce global usage.
|
|
g_sCharacterSheetAll[top_alpha_comparison].label,
|
|
g_sCharacterSheetAll[top_alpha_comparison].picture)
|
|
|
|
ENDIF
|
|
|
|
IF top_alpha_comparison = ENUM_TO_INT (CHAR_MICHAEL)
|
|
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_DATA_SLOT", (TO_FLOAT(2)), (TO_FLOAT(slotIndex)), 0,
|
|
INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM,"CELL_7002",
|
|
|
|
//Replaced .role with .label as this is no longer displayed - Steve T. 14/11/12. Done in a effort to reduce global usage.
|
|
g_sCharacterSheetAll[top_alpha_comparison].label,
|
|
g_sCharacterSheetAll[top_alpha_comparison].picture)
|
|
|
|
|
|
ENDIF
|
|
|
|
|
|
IF top_alpha_comparison = ENUM_TO_INT (CHAR_LESTER)
|
|
|
|
//LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_DATA_SLOT", (TO_FLOAT(2)), (TO_FLOAT(slotIndex)), 0,
|
|
|
|
|
|
|
|
//We manually replace the LESTER contact pic with the skull symbol for LESTER DEATHWISH. The call screen will still show LESTER by design.
|
|
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_DATA_SLOT", (TO_FLOAT(2)), (TO_FLOAT(slotIndex)), 0,
|
|
INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM, "CELL_7003",
|
|
|
|
//Replaced .role with .label as this is no longer displayed - Steve T. 14/11/12. Done in a effort to reduce global usage.
|
|
g_sCharacterSheetAll[top_alpha_comparison].label,
|
|
|
|
"CELL_E_311")
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
comparisonIndex ++
|
|
|
|
ENDWHILE
|
|
|
|
|
|
|
|
|
|
ContactListSlot[slotIndex] = top_alpha_comparison
|
|
contact_name_in_alpha_order[top_alpha_comparison] = TRUE
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
IF NOT (IS_BIT_SET (BitSet_CellphoneDisplay_Continued, g_BSC_LAUNCH_FINALE_CONTACTS))
|
|
IF GLOBAL_CHARACTER_SHEET_GET_PHONEBOOK_STATE(INT_TO_ENUM(enumCharacterList, top_alpha_comparison), ENUM_TO_INT(g_Cellphone.PhoneOwner)) = LISTED
|
|
//AND NOT (IS_BIT_SET (BitSet_CellphoneDisplay_Continued, g_BSC_LAUNCH_FINALE_CONTACTS))
|
|
|
|
IF (INT_TO_ENUM (enumCharacterList, comparisonIndex )) <> g_Cellphone.PhoneOwner //Don't let the character include a contact to himself.
|
|
|
|
|
|
|
|
IF GLOBAL_CHARACTER_SHEET_GET_STATUS_AS_CALLER(INT_TO_ENUM(enumCharacterList, top_alpha_comparison), ENUM_TO_INT(g_Cellphone.PhoneOwner)) = UNKNOWN_CALLER
|
|
|
|
|
|
IF GLOBAL_CHARACTER_SHEET_GET_MISSED_CALL_STATUS(INT_TO_ENUM(enumCharacterList, top_alpha_comparison), ENUM_TO_INT(g_Cellphone.PhoneOwner)) = MISSED_CALL
|
|
OR HAVE_CHARS_ARRANGED_FRIEND_ACTIVITY ((INT_TO_ENUM (enumCharacterList, top_alpha_comparison)), g_Cellphone.PhoneOwner)
|
|
|
|
|
|
//Fourth parameter set to 1 draws icon beside contact name.
|
|
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_DATA_SLOT", (TO_FLOAT(2)), (TO_FLOAT(slotIndex)), 1,
|
|
INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM, g_CharacterSheetNonSaved[top_alpha_comparison].phonebookNumberLabel, "CELL_195", "CELL_300")
|
|
|
|
ELSE
|
|
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_DATA_SLOT", (TO_FLOAT(2)), (TO_FLOAT(slotIndex)), 0,
|
|
INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM, g_CharacterSheetNonSaved[top_alpha_comparison].phonebookNumberLabel, "CELL_195", "CELL_300")
|
|
|
|
ENDIF
|
|
|
|
ELSE
|
|
|
|
|
|
IF GLOBAL_CHARACTER_SHEET_GET_MISSED_CALL_STATUS(INT_TO_ENUM(enumCharacterList, top_alpha_comparison), ENUM_TO_INT(g_Cellphone.PhoneOwner)) = MISSED_CALL
|
|
OR HAVE_CHARS_ARRANGED_FRIEND_ACTIVITY ((INT_TO_ENUM (enumCharacterList, top_alpha_comparison)), g_Cellphone.PhoneOwner)
|
|
|
|
//Fourth parameter set to 1 draws icon beside contact name.
|
|
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_DATA_SLOT", (TO_FLOAT(2)), (TO_FLOAT(slotIndex)), 1,
|
|
INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM, g_sCharacterSheetAll[top_alpha_comparison].label,
|
|
|
|
//Replaced .role with .label as this is no longer displayed - Steve T. 14/11/12. Done in a effort to reduce global usage.
|
|
g_sCharacterSheetAll[top_alpha_comparison].label,
|
|
g_sCharacterSheetAll[top_alpha_comparison].picture)
|
|
|
|
|
|
ELSE
|
|
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_DATA_SLOT", (TO_FLOAT(2)), (TO_FLOAT(slotIndex)), 0,
|
|
INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM, g_sCharacterSheetAll[top_alpha_comparison].label,
|
|
|
|
//Replaced .role with .label as this is no longer displayed - Steve T. 14/11/12. Done in a effort to reduce global usage.
|
|
g_sCharacterSheetAll[top_alpha_comparison].label,
|
|
g_sCharacterSheetAll[top_alpha_comparison].picture)
|
|
|
|
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF GLOBAL_CHARACTER_SHEET_GET_PHONEBOOK_STATE(INT_TO_ENUM(enumCharacterList, slotIndex), ENUM_TO_INT(g_Cellphone.PhoneOwner)) = LISTED
|
|
|
|
IF (INT_TO_ENUM (enumCharacterList, slotIndex )) <> g_Cellphone.PhoneOwner //don't let the phonebook holder include himself in the total number of contacts.
|
|
|
|
|
|
i_Number_Of_Contacts_In_List ++
|
|
|
|
ENDIF
|
|
|
|
|
|
PRINTSTRING("NumContacts-")
|
|
PRINTINT(i_Number_Of_Contacts_In_List)
|
|
PRINTNL()
|
|
|
|
ENDIF
|
|
|
|
slotIndex ++
|
|
ENDWHILE
|
|
|
|
|
|
IF NOT (IS_BIT_SET (BitSet_CellphoneDisplay_Continued, g_BSC_LAUNCH_FINALE_CONTACTS))
|
|
IF NETWORK_IS_SIGNED_ONLINE()
|
|
|
|
IF g_Use_Prologue_Cellphone = FALSE //Don't allow human contacts in prologue phone.
|
|
Place_Friends_in_ContactSlots() //Conor, this is your dummy proc for placing the friends in! Reinstate this please.
|
|
ENDIF
|
|
|
|
ENDIF
|
|
ENDIF
|
|
|
|
Post_Placement_Setup_and_Checks()
|
|
ENDPROC
|
|
|
|
PROC Place_MP_Names_in_ContactSlots()
|
|
|
|
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintnl()
|
|
cdPrintstring("AppContacts - 02 Sep 2016 - 18th May drastic action for bug 2828375 - Nuking any save game alphabetical ordering for male and female assistant contacts for Executive pack via Place_MP_Names")
|
|
cdPrintnl()
|
|
#endif
|
|
|
|
GLOBAL_CHARACTER_SHEET_SET_ALPHA_INT(CHAR_BIKER_CH1, 1320)
|
|
GLOBAL_CHARACTER_SHEET_SET_ALPHA_INT(CHAR_MP_P_ASSISTF, 180)
|
|
GLOBAL_CHARACTER_SHEET_SET_ALPHA_INT(CHAR_MP_P_ASSIST, 190)
|
|
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER(SF_MovieIndex,"SET_DATA_SLOT_EMPTY", 2)
|
|
|
|
WAIT (0)
|
|
|
|
|
|
|
|
//Display "no contacts" message in slot 1 in lieu of any contacts...
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_DATA_SLOT", (TO_FLOAT(2)), (TO_FLOAT(0)), 0,
|
|
INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM, "CELL_232", "CELL_233", "CELL_393")
|
|
|
|
|
|
|
|
i_Number_Of_Contacts_In_List = 0 //reset number of contacts before filling list. Critical this is done before filling the friends slots...
|
|
|
|
|
|
|
|
IF NOT (IS_BIT_SET (BitSet_CellphoneDisplay_Continued, g_BSC_LAUNCH_FINALE_CONTACTS))
|
|
IF NETWORK_IS_SIGNED_ONLINE()
|
|
|
|
IF g_Use_Prologue_Cellphone = FALSE //Don't allow human contacts in prologue phone.
|
|
#IF FEATURE_DLC_2_2022
|
|
AND IS_CONTACT_IN_FAVOURITES_LIST_BY_INDEX(ciPHONE_CONTACT_FAVOURITE_PLAYERS)
|
|
#ENDIF
|
|
Place_MP_Friends_in_ContactSlots() //Conor, this is your dummy proc for placing the friends in! Reinstate this please.
|
|
ENDIF
|
|
|
|
ENDIF
|
|
ENDIF
|
|
|
|
|
|
NPCSlot_StartingIndex = i_Number_Of_Contacts_In_List //Critical!
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
cdPrintnl()
|
|
cdPrintstring("AppContacts - Critical! NPCSlot_StartingIndex is ")
|
|
cdPrintint(NPCSlot_StartingIndex)
|
|
cdPrintnl()
|
|
|
|
#endif
|
|
|
|
|
|
|
|
b_DoFinaleConfirmation = FALSE //make sure this is false each time we run this proc.
|
|
|
|
b_DoHumanFriend_Routine = FALSE
|
|
|
|
|
|
|
|
|
|
BOOL contact_name_in_alpha_order[MAX_CHARACTERS_PLUS_DUMMY]
|
|
|
|
INT slotIndex = i_Number_Of_Contacts_In_List //Critical!
|
|
|
|
WHILE slotIndex < (ENUM_TO_INT(MAX_CHARACTERS_MP))
|
|
|
|
|
|
//When testing ADD_ALL_CHARS_TO_ALL_PLAYER_CHARACTERS_PHONEBOOKS() comment in this WAIT (0)
|
|
//WAIT(0) // for testing all contacts.
|
|
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
|
|
PRINTSTRING("Populating MP sf slot ")
|
|
PRINTINT(slotIndex)
|
|
PRINTNL()
|
|
|
|
#endif
|
|
|
|
|
|
INT comparisonIndex = 0
|
|
|
|
INT top_alpha_comparison = (ENUM_TO_INT(MAX_CHARACTERS_MP))
|
|
|
|
GLOBAL_CHARACTER_SHEET_SET_ALPHA_INT(INT_TO_ENUM(enumCharacterList, top_alpha_comparison), 5000)
|
|
|
|
/*
|
|
PRINTSTRING("top_alpha_comparison =")
|
|
PRINTINT(top_alpha_comparison)
|
|
PRINTNL()
|
|
*/
|
|
|
|
|
|
|
|
|
|
//Virtual Character handled by this interndal function now.
|
|
Get_Cellphone_Owner()
|
|
|
|
|
|
|
|
|
|
|
|
WHILE comparisonIndex < (ENUM_TO_INT(MAX_CHARACTERS_MP))
|
|
|
|
/*
|
|
PRINTSTRING("comparison index =")
|
|
PRINTINT(comparisonIndex)
|
|
PRINTNL()
|
|
*/
|
|
|
|
|
|
|
|
IF IS_BIT_SET (BitSet_CellphoneDisplay_Continued, g_BSC_LAUNCH_FINALE_CONTACTS)
|
|
|
|
IF comparisonIndex = ENUM_TO_INT (CHAR_TREVOR)
|
|
OR comparisonIndex = ENUM_TO_INT (CHAR_MICHAEL)
|
|
OR comparisonIndex = ENUM_TO_INT (CHAR_LESTER)
|
|
|
|
|
|
|
|
//Critical! This alters the alphabetical order by manipulating the alphaints. Holders obtained the correct value on startup to re-establish old values at end of proc and
|
|
//before termination of this script.
|
|
|
|
//Ben, this stipulates the order in which the characters appear on the finale contact list.
|
|
GLOBAL_CHARACTER_SHEET_SET_ALPHA_INT(CHAR_LESTER, 3)
|
|
GLOBAL_CHARACTER_SHEET_SET_ALPHA_INT(CHAR_TREVOR, 1)
|
|
GLOBAL_CHARACTER_SHEET_SET_ALPHA_INT(CHAR_MICHAEL, 2)
|
|
|
|
b_TryToPlaceContact = TRUE
|
|
|
|
ELSE
|
|
|
|
b_TryToPlaceContact = FALSE
|
|
|
|
ENDIF
|
|
|
|
ELSE
|
|
|
|
IF GLOBAL_CHARACTER_SHEET_GET_PHONEBOOK_STATE(INT_TO_ENUM(enumCharacterList, comparisonIndex), ENUM_TO_INT(g_Cellphone.PhoneOwner)) = LISTED
|
|
|
|
b_TryToPlaceContact = TRUE
|
|
|
|
ELSE
|
|
|
|
b_TryToPlaceContact = FALSE
|
|
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
//url:bugstar:7429893 - If the player is playing as Lamar in MP content, do not include himself in the contacts list.
|
|
IF IS_MP_PHONE_OWNER_PLAYING_AS_FRANKLIN_LAMAR()
|
|
IF g_bUseLamarThemeInMP = TRUE AND (INT_TO_ENUM (enumCharacterList, comparisonIndex )) = CHAR_LAMAR
|
|
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintnl()
|
|
cdPrintstring("AppContacts - Nov, 2021 - Playing as Lamar, therefore not including Lamar in MP contacts list.")
|
|
cdPrintnl()
|
|
#endif
|
|
|
|
b_TryToPlaceContact = FALSE
|
|
|
|
ENDIF
|
|
|
|
|
|
IF g_bUseFranklinThemeInMP = TRUE AND (INT_TO_ENUM (enumCharacterList, comparisonIndex )) = CHAR_FIXER_FRANKLIN
|
|
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintnl()
|
|
cdPrintstring("AppContacts - Nov, 2021 - Playing as Franklin, therefore not including Franklin in MP contacts list.")
|
|
cdPrintnl()
|
|
#endif
|
|
|
|
b_TryToPlaceContact = FALSE
|
|
|
|
ENDIF
|
|
ENDIF
|
|
|
|
#IF FEATURE_DLC_2_2022
|
|
enumCharacterList eCharTemp = INT_TO_ENUM (enumCharacterList, comparisonIndex )
|
|
|
|
IF IS_CONTACT_VALID_FOR_FAVOURITES_LIST(eCharTemp)
|
|
AND NOT IS_CONTACT_IN_FAVOURITES_LIST_BY_CHAR(eCharTemp)
|
|
AND g_AutoScrollContact != eCharTemp
|
|
|
|
PRINTLN("AppContacts - [CONTACT_FAVOURITES] - Character ", enumCharacterList_TO_STRING(eCharTemp)," is not favourited, therefore not including in MP contacts list.")
|
|
|
|
b_TryToPlaceContact = FALSE
|
|
|
|
ENDIF
|
|
#ENDIF
|
|
|
|
IF b_TryToPlaceContact
|
|
|
|
IF (INT_TO_ENUM (enumCharacterList, comparisonIndex )) <> g_Cellphone.PhoneOwner //Don't let the character include a contact to himself.
|
|
IF contact_name_in_alpha_order[comparisonIndex] = FALSE
|
|
|
|
//#if IS_DEBUG_BUILD
|
|
//cdPrintstring ("TAC ")
|
|
//cdPrintint(top_alpha_comparison)
|
|
//cdPrintnl()
|
|
//#endif
|
|
|
|
|
|
//If contact has missed call status, manipulate him to the top of the list by dividing his or her alphaint by 100.
|
|
//We can also manipulate the scheduled friend activity near the top also.
|
|
|
|
IF GLOBAL_CHARACTER_SHEET_GET_MISSED_CALL_STATUS(INT_TO_ENUM(enumCharacterList, comparisonIndex), ENUM_TO_INT(g_Cellphone.PhoneOwner)) = MISSED_CALL
|
|
OR HAVE_CHARS_ARRANGED_FRIEND_ACTIVITY ((INT_TO_ENUM (enumCharacterList, comparisonIndex)), g_Cellphone.PhoneOwner)
|
|
|
|
local_alphafloat = ((TO_FLOAT (GLOBAL_CHARACTER_SHEET_GET_ALPHA_INT(INT_TO_ENUM(enumCharacterList, comparisonIndex)))) / 100.0)
|
|
|
|
ELSE
|
|
|
|
local_alphafloat = TO_FLOAT (GLOBAL_CHARACTER_SHEET_GET_ALPHA_INT(INT_TO_ENUM(enumCharacterList, comparisonIndex)))
|
|
|
|
ENDIF
|
|
|
|
|
|
IF GLOBAL_CHARACTER_SHEET_GET_MISSED_CALL_STATUS(INT_TO_ENUM(enumCharacterList, top_alpha_comparison), ENUM_TO_INT(g_Cellphone.PhoneOwner)) = MISSED_CALL
|
|
OR HAVE_CHARS_ARRANGED_FRIEND_ACTIVITY ((INT_TO_ENUM (enumCharacterList, top_alpha_comparison)), g_Cellphone.PhoneOwner)
|
|
|
|
top_local_alphafloat = ((TO_FLOAT (GLOBAL_CHARACTER_SHEET_GET_ALPHA_INT(INT_TO_ENUM(enumCharacterList, top_alpha_comparison)))) / 100.0)
|
|
|
|
ELSE
|
|
|
|
top_local_alphafloat = TO_FLOAT (GLOBAL_CHARACTER_SHEET_GET_ALPHA_INT(INT_TO_ENUM(enumCharacterList, top_alpha_comparison)))
|
|
|
|
ENDIF
|
|
|
|
IF local_alphafloat < top_local_alphafloat
|
|
top_alpha_comparison = comparisonIndex
|
|
|
|
IF IS_BIT_SET (BitSet_CellphoneDisplay_Continued, g_BSC_LAUNCH_FINALE_CONTACTS)
|
|
|
|
|
|
//Display Finale choice options. Kill Trevor, Kill Michael, Lester Deathwish.
|
|
|
|
|
|
IF top_alpha_comparison = ENUM_TO_INT (CHAR_TREVOR)
|
|
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_DATA_SLOT", (TO_FLOAT(2)), (TO_FLOAT(slotIndex)), 0,
|
|
INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM, "CELL_7001",
|
|
|
|
//Replaced .role with .label as this is no longer displayed - Steve T. 14/11/12. Done in a effort to reduce global usage.
|
|
g_sCharacterSheetAll[top_alpha_comparison].label,
|
|
g_sCharacterSheetAll[top_alpha_comparison].picture)
|
|
|
|
ENDIF
|
|
|
|
IF top_alpha_comparison = ENUM_TO_INT (CHAR_MICHAEL)
|
|
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_DATA_SLOT", (TO_FLOAT(2)), (TO_FLOAT(slotIndex)), 0,
|
|
INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM,"CELL_7002",
|
|
|
|
//Replaced .role with .label as this is no longer displayed - Steve T. 14/11/12. Done in a effort to reduce global usage.
|
|
g_sCharacterSheetAll[top_alpha_comparison].label,
|
|
g_sCharacterSheetAll[top_alpha_comparison].picture)
|
|
|
|
|
|
ENDIF
|
|
|
|
|
|
IF top_alpha_comparison = ENUM_TO_INT (CHAR_LESTER)
|
|
//We manually replace the LESTER contact pic with the skull symbol for LESTER DEATHWISH. The call screen will still show LESTER by design.
|
|
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_DATA_SLOT", (TO_FLOAT(2)), (TO_FLOAT(slotIndex)), 0,
|
|
INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM, "CELL_7003",
|
|
|
|
//Replaced .role with .label as this is no longer displayed - Steve T. 14/11/12. Done in a effort to reduce global usage.
|
|
g_sCharacterSheetAll[top_alpha_comparison].label,
|
|
|
|
"CELL_E_311")
|
|
|
|
|
|
|
|
ENDIF
|
|
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
ENDIF
|
|
|
|
ENDIF
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
comparisonIndex ++
|
|
|
|
ENDWHILE
|
|
|
|
|
|
|
|
|
|
ContactListSlot[slotIndex] = top_alpha_comparison
|
|
contact_name_in_alpha_order[top_alpha_comparison] = TRUE
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
IF NOT (IS_BIT_SET (BitSet_CellphoneDisplay_Continued, g_BSC_LAUNCH_FINALE_CONTACTS))
|
|
IF GLOBAL_CHARACTER_SHEET_GET_PHONEBOOK_STATE(INT_TO_ENUM(enumCharacterList, top_alpha_comparison), ENUM_TO_INT(g_Cellphone.PhoneOwner)) = LISTED
|
|
//AND NOT (IS_BIT_SET (BitSet_CellphoneDisplay_Continued, g_BSC_LAUNCH_FINALE_CONTACTS))
|
|
|
|
IF (INT_TO_ENUM (enumCharacterList, comparisonIndex )) <> g_Cellphone.PhoneOwner //Don't let the character include a contact to himself.
|
|
|
|
|
|
|
|
IF GLOBAL_CHARACTER_SHEET_GET_STATUS_AS_CALLER(INT_TO_ENUM(enumCharacterList, top_alpha_comparison), ENUM_TO_INT(g_Cellphone.PhoneOwner)) = UNKNOWN_CALLER
|
|
|
|
IF GLOBAL_CHARACTER_SHEET_GET_MISSED_CALL_STATUS(INT_TO_ENUM(enumCharacterList, top_alpha_comparison), ENUM_TO_INT(g_Cellphone.PhoneOwner)) = MISSED_CALL
|
|
OR HAVE_CHARS_ARRANGED_FRIEND_ACTIVITY ((INT_TO_ENUM (enumCharacterList, top_alpha_comparison)), g_Cellphone.PhoneOwner)
|
|
|
|
|
|
//Fourth parameter set to 1 draws icon beside contact name.
|
|
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_DATA_SLOT", (TO_FLOAT(2)), (TO_FLOAT(slotIndex)), 1,
|
|
INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM, g_CharacterSheetNonSaved[top_alpha_comparison].phonebookNumberLabel, "CELL_195", "CELL_300")
|
|
|
|
ELSE
|
|
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_DATA_SLOT", (TO_FLOAT(2)), (TO_FLOAT(slotIndex)), 0,
|
|
INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM, g_CharacterSheetNonSaved[top_alpha_comparison].phonebookNumberLabel, "CELL_195", "CELL_300")
|
|
|
|
ENDIF
|
|
|
|
ELSE
|
|
|
|
|
|
IF GLOBAL_CHARACTER_SHEET_GET_MISSED_CALL_STATUS(INT_TO_ENUM(enumCharacterList, top_alpha_comparison), ENUM_TO_INT(g_Cellphone.PhoneOwner)) = MISSED_CALL
|
|
OR HAVE_CHARS_ARRANGED_FRIEND_ACTIVITY ((INT_TO_ENUM (enumCharacterList, top_alpha_comparison)), g_Cellphone.PhoneOwner)
|
|
|
|
//Fourth parameter set to 1 draws icon beside contact name.
|
|
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_DATA_SLOT", (TO_FLOAT(2)), (TO_FLOAT(slotIndex)), 1,
|
|
INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM, g_sCharacterSheetAll[top_alpha_comparison].label,
|
|
|
|
//Replaced .role with .label as this is no longer displayed - Steve T. 14/11/12. Done in a effort to reduce global usage.
|
|
g_sCharacterSheetAll[top_alpha_comparison].label,
|
|
g_sCharacterSheetAll[top_alpha_comparison].picture)
|
|
ELSE
|
|
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_DATA_SLOT", (TO_FLOAT(2)), (TO_FLOAT(slotIndex)), 0,
|
|
INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM, g_sCharacterSheetAll[top_alpha_comparison].label,
|
|
|
|
//Replaced .role with .label as this is no longer displayed - Steve T. 14/11/12. Done in a effort to reduce global usage.
|
|
g_sCharacterSheetAll[top_alpha_comparison].label,
|
|
g_sCharacterSheetAll[top_alpha_comparison].picture)
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
|
|
IF GLOBAL_CHARACTER_SHEET_GET_PHONEBOOK_STATE(INT_TO_ENUM(enumCharacterList, slotIndex), ENUM_TO_INT(g_Cellphone.PhoneOwner)) = LISTED
|
|
|
|
IF (INT_TO_ENUM (enumCharacterList, slotIndex )) <> g_Cellphone.PhoneOwner //don't let the phonebook holder include himself in the total number of contacts.
|
|
|
|
|
|
i_Number_Of_Contacts_In_List ++
|
|
|
|
ENDIF
|
|
|
|
|
|
PRINTSTRING("MP_NumContacts-")
|
|
PRINTINT(i_Number_Of_Contacts_In_List)
|
|
PRINTNL()
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
slotIndex ++
|
|
|
|
|
|
|
|
ENDWHILE
|
|
|
|
|
|
|
|
Post_Placement_Setup_and_Checks()
|
|
|
|
|
|
|
|
|
|
ENDPROC
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
PROC Pass_Decision_Characters_Into_Algorithm (INT FirstInt, INT SecondInt)
|
|
|
|
|
|
INT ResultInt
|
|
|
|
|
|
ResultInt = FirstInt + SecondInt //Minimum of 0 (0 + 0), maximum of 18 (9+9)
|
|
ResultInt = 20 - Resultint //Minium of two (20 - 18), maximum of 20 (20 - 0)
|
|
Resultint = ResultInt + 5 //Minimum of 7 (2 + 5), maximum of 25 (20 + 5)
|
|
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
cdPrintnl()
|
|
cdPrintstring("Decision characters ")
|
|
cdPrintint(FirstInt)
|
|
cdPrintint(SecondInt)
|
|
cdPrintstring(" gives algorithm result ")
|
|
cdPrintint(Resultint)
|
|
|
|
#endif
|
|
|
|
|
|
|
|
SWITCH ResultInt
|
|
|
|
|
|
CASE 7
|
|
|
|
GameworldAssociatedRoot = "ANS_RAN1"
|
|
GameworldAssociatedVoice = "ANS_M_USA1"
|
|
|
|
BREAK
|
|
|
|
|
|
CASE 8
|
|
|
|
GameworldAssociatedRoot = "ANS_RAN2"
|
|
GameworldAssociatedVoice = "ANS_F_USA1"
|
|
|
|
BREAK
|
|
|
|
|
|
CASE 9
|
|
|
|
GameworldAssociatedRoot = "ANS_RAN3"
|
|
GameworldAssociatedVoice = "ANS_M_ENG1"
|
|
|
|
BREAK
|
|
|
|
|
|
|
|
CASE 10
|
|
|
|
GameworldAssociatedRoot = "ANS_RAN4"
|
|
GameworldAssociatedVoice = "ANS_M_USA2"
|
|
|
|
BREAK
|
|
|
|
|
|
CASE 11
|
|
|
|
GameworldAssociatedRoot = "ANS_RAN5"
|
|
GameworldAssociatedVoice = "ANS_M_ASIAN"
|
|
|
|
BREAK
|
|
|
|
|
|
CASE 12
|
|
|
|
GameworldAssociatedRoot = "ANS_RAN6"
|
|
GameworldAssociatedVoice = "ANS_F_USA2"
|
|
|
|
BREAK
|
|
|
|
|
|
CASE 13
|
|
|
|
GameworldAssociatedRoot = "ANS_RAN7"
|
|
GameworldAssociatedVoice = "ANSWER_FX"
|
|
|
|
BREAK
|
|
|
|
|
|
CASE 14
|
|
|
|
GameworldAssociatedRoot = "ANS_RAN8"
|
|
GameworldAssociatedVoice = "ANSWER_FX"
|
|
|
|
BREAK
|
|
|
|
|
|
CASE 15
|
|
|
|
GameworldAssociatedRoot = "ANS_RAN9"
|
|
GameworldAssociatedVoice = "ANSWER_FX"
|
|
|
|
BREAK
|
|
|
|
|
|
CASE 16
|
|
|
|
GameworldAssociatedRoot = "ANS_RAN10"
|
|
GameworldAssociatedVoice = "ANSWER_FX"
|
|
|
|
BREAK
|
|
|
|
|
|
CASE 17
|
|
|
|
GameworldAssociatedRoot = "ANS_RAN1"
|
|
GameworldAssociatedVoice = "ANS_M_USA1"
|
|
|
|
BREAK
|
|
|
|
|
|
CASE 18
|
|
|
|
GameworldAssociatedRoot = "ANS_RAN2"
|
|
GameworldAssociatedVoice = "ANS_F_USA1"
|
|
|
|
BREAK
|
|
|
|
|
|
CASE 19
|
|
|
|
GameworldAssociatedRoot = "ANS_RAN3"
|
|
GameworldAssociatedVoice = "ANS_M_ENG1"
|
|
|
|
BREAK
|
|
|
|
|
|
|
|
CASE 20
|
|
|
|
GameworldAssociatedRoot = "ANS_RAN4"
|
|
GameworldAssociatedVoice = "ANS_M_USA2"
|
|
|
|
BREAK
|
|
|
|
|
|
CASE 21
|
|
|
|
GameworldAssociatedRoot = "ANS_RAN5"
|
|
GameworldAssociatedVoice = "ANS_M_ASIAN"
|
|
|
|
BREAK
|
|
|
|
|
|
CASE 22
|
|
|
|
GameworldAssociatedRoot = "ANS_RAN6"
|
|
GameworldAssociatedVoice = "ANS_F_USA2"
|
|
|
|
BREAK
|
|
|
|
|
|
CASE 23
|
|
|
|
GameworldAssociatedRoot = "ANS_RAN7"
|
|
GameworldAssociatedVoice = "ANSWER_FX"
|
|
|
|
BREAK
|
|
|
|
|
|
CASE 24
|
|
|
|
GameworldAssociatedRoot = "ANS_RAN8"
|
|
GameworldAssociatedVoice = "ANSWER_FX"
|
|
|
|
BREAK
|
|
|
|
|
|
CASE 25
|
|
|
|
GameworldAssociatedRoot = "ANS_RAN9"
|
|
GameworldAssociatedVoice = "ANSWER_FX"
|
|
|
|
BREAK
|
|
|
|
|
|
|
|
|
|
DEFAULT
|
|
|
|
GameworldAssociatedRoot = "ANS_RAN8"
|
|
GameworldAssociatedVoice = "ANSWER_FX"
|
|
|
|
BREAK
|
|
|
|
|
|
|
|
ENDSWITCH
|
|
|
|
|
|
ENDPROC
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
PROC Display_Contacts_List()
|
|
|
|
|
|
INT drawIndex = 0
|
|
|
|
|
|
drawItemX = ListOriginX
|
|
drawItemY = ListOriginY
|
|
|
|
|
|
|
|
ContactNamesToDraw = (i_Number_Of_Contacts_In_List)
|
|
|
|
DRAW_RECT (0.86, 0.50, 0.1, 0.2, 0, 0, 0, 165)
|
|
|
|
WHILE drawIndex < ContactNamesToDraw
|
|
|
|
|
|
format_medium_ostext (255, 255, 255, 205) //Semi transparent white
|
|
|
|
IF drawIndex = ListCursorIndex
|
|
highlight_Item()
|
|
ENDIF
|
|
|
|
|
|
|
|
IF GLOBAL_CHARACTER_SHEET_GET_PHONEBOOK_STATE(ContactListSlot[drawIndex], g_Cellphone.PhoneOwner) <> NOT_LISTED // would need to check individual owner phonebooks if this is required.
|
|
|
|
DISPLAY_TEXT (drawItemX, drawItemY, GLOBAL_CHARACTER_SHEET_GET_LABEL(ContactListSlot[drawIndex])) //draw the name of the contact by referring to the character's text label.
|
|
|
|
drawItemY = drawItemY + 0.03 //Draw the next name slightly down the y-axis
|
|
|
|
ENDIF
|
|
|
|
|
|
drawIndex ++
|
|
|
|
|
|
|
|
|
|
ENDWHILE
|
|
|
|
|
|
|
|
|
|
|
|
ENDPROC
|
|
|
|
|
|
|
|
|
|
PROC Combi_PageUp()
|
|
|
|
IF ListCursorIndex > 0
|
|
|
|
ListCursorIndex --
|
|
|
|
ELSE
|
|
|
|
ListCursorIndex = (i_Number_Of_Contacts_In_List - 1)
|
|
|
|
ENDIF
|
|
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER (SF_MovieIndex, "SET_INPUT_EVENT", (TO_FLOAT(1)))
|
|
|
|
|
|
ENDPROC
|
|
|
|
|
|
|
|
|
|
PROC Combi_PageDown()
|
|
|
|
ListCursorIndex ++
|
|
|
|
IF ListCursorIndex = i_Number_Of_Contacts_In_List
|
|
|
|
ListCursorIndex = 0
|
|
|
|
ENDIF
|
|
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER (SF_MovieIndex, "SET_INPUT_EVENT", (TO_FLOAT(3)))
|
|
|
|
|
|
ENDPROC
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//Temp - would be done in flash.
|
|
PROC Check_for_List_Navigation()
|
|
|
|
/*
|
|
DISPLAY_TEXT_WITH_NUMBER (0.20, 0.45, "CELL_500", ListCursorIndex)
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING (0.20, 0.5, "STRING", "LCI")
|
|
|
|
|
|
|
|
DISPLAY_TEXT_WITH_NUMBER (0.40, 0.45, "CELL_500", i_Number_Of_Contacts_In_List)
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING (0.40, 0.5, "STRING", "NumCon")
|
|
*/
|
|
|
|
|
|
IF dpad_scroll_pause_cued
|
|
IF TIMERA() > 150
|
|
|
|
dpad_scroll_pause_cued = FALSE
|
|
|
|
ENDIF
|
|
ENDIF
|
|
|
|
// PC Scrollwheel support
|
|
IF IS_USING_KEYBOARD_AND_MOUSE(FRONTEND_CONTROL)
|
|
|
|
IF Is_Phone_Control_Just_Pressed( FRONTEND_CONTROL, INT_TO_ENUM (CONTROL_ACTION,INPUT_CELLPHONE_SCROLL_BACKWARD))
|
|
|
|
IF ListCursorIndex > 0
|
|
|
|
ListCursorIndex --
|
|
|
|
ELSE
|
|
|
|
ListCursorIndex = (i_Number_Of_Contacts_In_List - 1)
|
|
|
|
ENDIF
|
|
|
|
Call_Scaleform_Input_Keypress_Up()
|
|
|
|
dpad_scroll_pause_cued = TRUE
|
|
SETTIMERA (0)
|
|
|
|
ENDIF
|
|
|
|
IF Is_Phone_Control_Just_Pressed( FRONTEND_CONTROL, INT_TO_ENUM (CONTROL_ACTION,INPUT_CELLPHONE_SCROLL_FORWARD))
|
|
|
|
ListCursorIndex ++
|
|
|
|
|
|
IF ListCursorIndex = i_Number_Of_Contacts_In_List
|
|
|
|
ListCursorIndex = 0
|
|
|
|
ENDIF
|
|
|
|
|
|
Call_Scaleform_Input_Keypress_Down()
|
|
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
|
|
IF dpad_scroll_pause_cued = FALSE
|
|
|
|
IF Is_Phone_Control_Just_Pressed (FRONTEND_CONTROL, INT_TO_ENUM (CONTROL_ACTION, PHONE_NAV_UP_INPUT))
|
|
|
|
IF ListCursorIndex > 0
|
|
|
|
ListCursorIndex --
|
|
|
|
ELSE
|
|
|
|
ListCursorIndex = (i_Number_Of_Contacts_In_List - 1)
|
|
|
|
ENDIF
|
|
|
|
Call_Scaleform_Input_Keypress_Up()
|
|
|
|
dpad_scroll_pause_cued = TRUE
|
|
SETTIMERA (0)
|
|
|
|
|
|
ENDIF
|
|
|
|
|
|
IF Is_Phone_Control_Just_Pressed (FRONTEND_CONTROL, INT_TO_ENUM (CONTROL_ACTION, PHONE_NAV_DOWN_INPUT))
|
|
|
|
ListCursorIndex ++
|
|
|
|
|
|
IF ListCursorIndex = i_Number_Of_Contacts_In_List
|
|
|
|
ListCursorIndex = 0
|
|
|
|
ENDIF
|
|
|
|
|
|
Call_Scaleform_Input_Keypress_Down()
|
|
|
|
dpad_scroll_pause_cued = TRUE
|
|
SETTIMERA (0)
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
IF Is_Phone_Control_Just_Pressed (FRONTEND_CONTROL, INT_TO_ENUM (CONTROL_ACTION, PHONE_NAV_RIGHT_INPUT))
|
|
|
|
Combi_PageDown()
|
|
Combi_PageDown()
|
|
Combi_PageDown()
|
|
Combi_PageDown()
|
|
Combi_PageDown()
|
|
|
|
PLAY_SOUND_FRONTEND (-1, "Menu_Navigate", g_Owner_Soundset)
|
|
|
|
dpad_scroll_pause_cued = TRUE
|
|
SETTIMERA (0)
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
IF Is_Phone_Control_Just_Pressed (FRONTEND_CONTROL, INT_TO_ENUM (CONTROL_ACTION, PHONE_NAV_LEFT_INPUT))
|
|
|
|
Combi_PageUp()
|
|
Combi_PageUp()
|
|
Combi_PageUp()
|
|
Combi_PageUp()
|
|
Combi_PageUp()
|
|
|
|
PLAY_SOUND_FRONTEND (-1, "Menu_Navigate", g_Owner_Soundset)
|
|
|
|
dpad_scroll_pause_cued = TRUE
|
|
SETTIMERA (0)
|
|
|
|
ENDIF
|
|
|
|
|
|
ENDIF
|
|
|
|
|
|
ENDPROC
|
|
|
|
|
|
|
|
|
|
|
|
PROC Auto_Scroll_to_Set_Contact()
|
|
|
|
|
|
ListCursorIndex ++
|
|
|
|
|
|
IF ListCursorIndex = i_Number_Of_Contacts_In_List
|
|
|
|
ListCursorIndex = 0
|
|
|
|
CLEAR_BIT (BitSet_CellphoneDisplay, g_BS_AUTO_SCROLL_CONTACT_ENABLED)
|
|
|
|
|
|
#if IS_DEBUG_BUILD
|
|
PRINTNL()
|
|
PRINTSTRING ("Auto scroll for contact was set but did not find contact in list. Clearing bit.")
|
|
PRINTNL()
|
|
#endif
|
|
|
|
ENDIF
|
|
|
|
|
|
Call_Scaleform_Input_Keypress_Down()
|
|
|
|
|
|
|
|
//SF_SelectedContactInt = LEGACY_SCALEFORM_MOVIE_METHOD (SF_MovieIndex, "GET_CURRENT_SELECTION")
|
|
|
|
BEGIN_SCALEFORM_MOVIE_METHOD (SF_MovieIndex, "GET_CURRENT_SELECTION")
|
|
|
|
Choice_ReturnedSFIndex = END_SCALEFORM_MOVIE_METHOD_RETURN_VALUE()
|
|
|
|
|
|
WHILE NOT IS_SCALEFORM_MOVIE_METHOD_RETURN_VALUE_READY (Choice_ReturnedSFIndex)
|
|
|
|
WAIT (0)
|
|
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintstring("appContacts - Waiting on scaleform return during autoscroll routine.")
|
|
cdPrintnl()
|
|
#endif
|
|
|
|
ENDWHILE
|
|
|
|
|
|
SF_SelectedContactInt = GET_SCALEFORM_MOVIE_METHOD_RETURN_VALUE_INT (Choice_ReturnedSFIndex)
|
|
|
|
|
|
|
|
|
|
|
|
IF SF_SelectedContactInt < 0 //Scaleform can return -1 is the contact list hasn't been filled in time and the player really quickly presses X multiple times.
|
|
|
|
SF_SelectedContactInt = 0 //Set to zero if this is the case to prevent array overrrun. See bug 65344
|
|
|
|
ENDIF
|
|
|
|
If g_bInMultiplayer
|
|
|
|
IF SF_SelectedContactInt > NPCSlot_StartingIndex //potential fix for 4209475. Disregard human players in multiplayer.
|
|
OR SF_SelectedContactInt = NPCSlot_StartingIndex
|
|
|
|
IF g_AutoScrollContact = INT_TO_ENUM (enumCharacterList, (ContactListSlot[SF_SelectedContactInt]))
|
|
|
|
CLEAR_BIT (BitSet_CellphoneDisplay, g_BS_AUTO_SCROLL_CONTACT_ENABLED)
|
|
|
|
#if IS_DEBUG_BUILD
|
|
PRINTNL()
|
|
PRINTSTRING ("Auto scroll for contact multiplayer. Match found at position:")
|
|
PRINTINT(ContactListSlot[SF_SelectedContactInt])
|
|
PRINTSTRING ("Auto scroll for contact has found desired contact. Clearing bit.")
|
|
PRINTNL()
|
|
#endif
|
|
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
ELSE
|
|
|
|
IF g_AutoScrollContact = INT_TO_ENUM (enumCharacterList, (ContactListSlot[SF_SelectedContactInt]))
|
|
|
|
CLEAR_BIT (BitSet_CellphoneDisplay, g_BS_AUTO_SCROLL_CONTACT_ENABLED)
|
|
|
|
#if IS_DEBUG_BUILD
|
|
PRINTNL()
|
|
PRINTSTRING ("Auto scroll for contact singleplayer. Match found at position:")
|
|
PRINTINT(ContactListSlot[SF_SelectedContactInt])
|
|
PRINTSTRING ("Auto scroll for contact has found desired contact. Clearing bit.")
|
|
PRINTNL()
|
|
#endif
|
|
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
ENDPROC
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
PROC Do_Call()
|
|
|
|
//Set Phone Display State to "attempting to call contact" and update the view state enum with the required data.
|
|
|
|
//See bug 316474
|
|
IF g_CellPhone.PhoneDS > PDS_AWAY //make sure that the following state assignment cannot interfere with AWAY or DISABLED assignment.
|
|
|
|
g_CellPhone.PhoneDS = PDS_ATTEMPTING_TO_CALL_CONTACT
|
|
|
|
LaunchTransitionMoveUpIfRequired()
|
|
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintnl()
|
|
cdPrintstring("STATE ASSIGNMENT 15. appContacts assigns PDS_ATTEMPTING_TO_CALL_CONTACT and LaunchTransitionMoveUpIfRequired()")
|
|
cdPrintnl()
|
|
#endif
|
|
|
|
IF IS_PLAYER_PLAYING (PLAYER_ID())
|
|
IF NOT IS_ENTITY_IN_WATER (PLAYER_PED_ID()) //Make sure player doesn't try to put the phone to his ear in SP, as the phone call gets aborted immediately in water. See bug 907295.
|
|
|
|
IF IS_PED_IN_COVER(PLAYER_PED_ID())
|
|
|
|
IF NOT IsCurrentCamFirstPerson()
|
|
|
|
Put_Cellphone_To_Ear() //Having the cellphone beside the ear in cover in first person can cause clipping problems.
|
|
|
|
ENDIF
|
|
|
|
ELSE
|
|
|
|
IF ShouldFirstPersonPhoneHudMovementBeHidden() = FALSE //Added for 2038700, this delays first person mode from putting the phone to ear immediately.
|
|
//It will go to ear on foot when the cellphone conversation starts from PlayCellphoneConversation()
|
|
Put_Cellphone_To_Ear()
|
|
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
ENDIF
|
|
ENDIF
|
|
|
|
//If the player is in sleep mode, return to normal. See TODO 338963
|
|
IF This_Cellphone_Owner_Settings_ListContents[g_Cellphone.PhoneOwner].g_SettingList[ENUM_TO_INT(SETTING_PROFILE)].Setting_Currently_Selected_Option = ENUM_TO_INT(PROFILE_SLEEP_MODE) //check if phone is in sleep mode.
|
|
|
|
SET_CELLPHONE_PROFILE_TO_NORMAL()
|
|
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER (SF_MovieIndex, "SET_SLEEP_MODE", 0)
|
|
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
IF GLOBAL_CHARACTER_SHEET_GET_STATUS_AS_CALLER(g_TheContactInvolvedinCall, ENUM_TO_INT(g_Cellphone.PhoneOwner)) = UNKNOWN_CALLER
|
|
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_DATA_SLOT", (TO_FLOAT(4)), (TO_FLOAT(0)), (TO_FLOAT(3)),
|
|
INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM,
|
|
g_CharacterSheetNonSaved[g_TheContactInvolvedinCall].phonebookNumberLabel,
|
|
"CELL_300",
|
|
"CELL_211",
|
|
"CELL_195")
|
|
|
|
ELSE
|
|
|
|
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_DATA_SLOT", (TO_FLOAT(4)), (TO_FLOAT(0)), (TO_FLOAT(3)),
|
|
INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM,
|
|
g_sCharacterSheetAll[g_TheContactInvolvedinCall].label,
|
|
g_sCharacterSheetAll[g_TheContactInvolvedinCall].picture,
|
|
"CELL_211",
|
|
|
|
//Replaced .role with .label as this is no longer displayed - Steve T. 14/11/12. Done in a effort to reduce global usage.
|
|
g_sCharacterSheetAll[g_TheContactInvolvedinCall].label)
|
|
|
|
|
|
ENDIF
|
|
|
|
|
|
Update_Scaleform_VSE ()
|
|
|
|
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
cdPrintnl()
|
|
cdPrintstring ("appCONTACTS_1 - Attempting to call contact with label: ")
|
|
cdPrintstring (g_sCharacterSheetAll[g_TheContactInvolvedinCall].label)
|
|
cdPrintstring (" which is charsheet entry ")
|
|
cdPrintint (ENUM_TO_INT(g_TheContactInvolvedInCall))
|
|
cdPrintnl()
|
|
|
|
#endif
|
|
|
|
IF g_bInMultiplayer
|
|
|
|
INCREMENT_BY_MP_INT_CHARACTER_STAT (MP_STAT_CALLS_MADE_TO_NPC, 1) //1782892
|
|
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintstring("appContacts - Incrementing MP_STAT_CALLS_MADE_TO_NPC on dialling NPC")
|
|
cdPrintnl()
|
|
#endif
|
|
|
|
ENDIF
|
|
|
|
|
|
ENDPROC
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
PROC Do_FinaleConfirmationProceed()
|
|
|
|
|
|
|
|
|
|
IF Is_Phone_Control_Just_Pressed (FRONTEND_CONTROL, INT_TO_ENUM (CONTROL_ACTION, PHONE_POSITIVE_INPUT)) //positive action - contact selected.
|
|
|
|
|
|
CLEAR_BIT (BitSet_CellphoneDisplay_Continued, g_BSC_LAUNCH_FINALE_CONTACTS)
|
|
|
|
|
|
b_DoFinaleConfirmation = FALSE
|
|
|
|
Play_Select_Beep()
|
|
|
|
|
|
g_InputButtonJustPressed = TRUE
|
|
|
|
|
|
//Set bools to specify this is a story call here!
|
|
g_b_Is_This_An_Activity_Call = FALSE
|
|
g_b_Is_This_An_Activity_Cancellation_Call = FALSE
|
|
g_b_Is_This_A_Secondary_Function_Call = FALSE
|
|
|
|
|
|
Do_Call()
|
|
|
|
|
|
ENDIF
|
|
|
|
|
|
ENDPROC
|
|
|
|
|
|
|
|
PROC Do_FinaleConfirmationGoBack()
|
|
|
|
|
|
IF Is_Phone_Control_Just_Pressed (FRONTEND_CONTROL, INT_TO_ENUM (CONTROL_ACTION, PHONE_GO_BACK_INPUT)) //Go back action - user opted to return to full contact list display.
|
|
|
|
|
|
b_DoFinaleConfirmation = FALSE
|
|
|
|
|
|
|
|
SET_BIT (BitSet_CellphoneDisplay_Continued, g_BSC_LAUNCH_FINALE_CONTACTS)
|
|
|
|
//LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER (SF_MovieIndex, "DISPLAY_VIEW", 7) //Quick change of view to make sure data is flushed from view state 2.
|
|
|
|
|
|
|
|
Play_Back_Beep()
|
|
|
|
g_InputButtonJustPressed = TRUE
|
|
|
|
|
|
|
|
IF g_bInMultiplayer
|
|
|
|
Place_MP_Names_in_ContactSlots()
|
|
|
|
ELSE
|
|
|
|
Place_Names_in_ContactSlots()
|
|
|
|
ENDIF
|
|
|
|
WAIT(0) //make sure this JUST_PRESSED doesn't carry over by stopping for a game cycle.
|
|
|
|
|
|
IF g_CellPhone.PhoneDS > PDS_AWAY //make sure that the following state assignment cannot interfere with AWAY or DISABLED assignment.
|
|
|
|
g_Cellphone.PhoneDS = PDS_RUNNINGAPP
|
|
|
|
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintnl()
|
|
cdPrintstring("STATE ASSIGNMENT 9672. appContacts assigns PDS_RUNNINGAPP")
|
|
cdPrintnl()
|
|
#endif
|
|
|
|
ENDIF
|
|
|
|
NumpadEntryString ="" //Reset entry string.
|
|
|
|
ENDIF
|
|
|
|
|
|
ENDPROC
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
PROC Set_Up_Cancellation_Confirmation_Menu()
|
|
|
|
|
|
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER(SF_MovieIndex,"SET_DATA_SLOT_EMPTY", 18)
|
|
|
|
//Badger - Select only.
|
|
IF g_b_ToggleButtonLabels
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_SOFT_KEYS", BADGER_POS, 1,
|
|
2, INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM, "CELL_210") //"Select" - Positive
|
|
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_SOFT_KEYS", BADGER_NEG, 1,
|
|
4, INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM, "CELL_206") //"BACK" - Negative
|
|
|
|
ELSE
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_SOFT_KEYS", BADGER_POS, 1,
|
|
2, INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM) //"SELECT" - Positive
|
|
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_SOFT_KEYS", BADGER_NEG, 1,
|
|
4, INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM) //"BACK" - Negative
|
|
ENDIF
|
|
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_SOFT_KEYS", BADGER_OTHER, 0,
|
|
1, INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM) //"Error!" - Other
|
|
|
|
CLEAR_BIT (BitSet_CellphoneDisplay, g_BS_OTHER_OPTION_IS_DISPLAYED)
|
|
|
|
|
|
|
|
|
|
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_DATA_SLOT", (TO_FLOAT(18)), (TO_FLOAT(0)),
|
|
(TO_FLOAT(0)),INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM, "CELL_270") //Yes
|
|
|
|
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_DATA_SLOT", (TO_FLOAT(18)), (TO_FLOAT(1)),
|
|
(TO_FLOAT(0)),INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM, "CELL_271") //No
|
|
|
|
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER (SF_MovieIndex, "DISPLAY_VIEW", 18)
|
|
|
|
|
|
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_STRING (SF_MovieIndex, "SET_HEADER", "CELL_269")
|
|
|
|
|
|
|
|
ENDPROC
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
PROC Check_For_Friend_Secondary_Call_Decision()
|
|
|
|
//Macros
|
|
IF g_InputButtonJustPressed = FALSE
|
|
IF Is_Phone_Control_Just_Pressed (FRONTEND_CONTROL, INT_TO_ENUM (CONTROL_ACTION, PHONE_POSITIVE_INPUT)) //positive action - contact selected.
|
|
|
|
|
|
CLEAR_BIT (BitSet_CellphoneDisplay_Continued, g_BSC_LAUNCH_FINALE_CONTACTS)
|
|
|
|
b_DoCancelConfirmation = FALSE
|
|
|
|
|
|
Play_Select_Beep()
|
|
|
|
|
|
g_InputButtonJustPressed = TRUE
|
|
|
|
|
|
|
|
|
|
BEGIN_SCALEFORM_MOVIE_METHOD (SF_MovieIndex, "GET_CURRENT_SELECTION")
|
|
|
|
Choice_ReturnedSFIndex = END_SCALEFORM_MOVIE_METHOD_RETURN_VALUE()
|
|
|
|
|
|
WHILE NOT IS_SCALEFORM_MOVIE_METHOD_RETURN_VALUE_READY (Choice_ReturnedSFIndex)
|
|
|
|
WAIT (0)
|
|
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintstring("appContacts - Waiting on scaleform return during Check_For_Friend_Secondary_Call_Decision")
|
|
cdPrintnl()
|
|
#endif
|
|
|
|
ENDWHILE
|
|
|
|
|
|
SF_SelectedChoiceInt = GET_SCALEFORM_MOVIE_METHOD_RETURN_VALUE_INT (Choice_ReturnedSFIndex)
|
|
|
|
//Old display order for CALL_HANGOUT/CANCEL_SECONDARY. 1142222 requested change to SECONDARY_CALL_HANGOUT...
|
|
/*
|
|
|
|
IF SF_SelectedChoiceInt = 0 //Was 0 when order was CALL_HANGOUT_SECONDARY. 1142222 requested change to SECONDARY_CALL_HANGOUT...
|
|
|
|
//Set bools to specify this is a story call here!
|
|
g_b_Is_This_An_Activity_Call = FALSE
|
|
g_b_Is_This_An_Activity_Cancellation_Call = FALSE
|
|
g_b_Is_This_A_Secondary_Function_Call = FALSE
|
|
|
|
Do_Call()
|
|
|
|
ENDIF
|
|
|
|
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintstring("AppCONTACTS - Checking second slot choice...")
|
|
cdPrintnl()
|
|
#endif
|
|
|
|
|
|
IF SF_SelectedChoiceInt = 1 //Was 1 when order was CALL_HANGOUT_SECONDARY. 1142222 requested change to SECONDARY_CALL_HANGOUT...
|
|
|
|
|
|
|
|
IF b_Friend_Option_Available //Friend option should always occupy slot 1 for just now...
|
|
|
|
//Changed at Sam's request (827347) - Section 5. If the two chars can cancel a friend activity then it's implicit
|
|
//that the second option must have been "Cancel activity" so we go to the cancel confirmation screen here.
|
|
IF CAN_CHARS_CANCEL_FRIEND_ACTIVITY (g_TheContactInvolvedInCall, g_Cellphone.PhoneOwner)
|
|
|
|
|
|
//Set up CANCEL yes or no menu here.
|
|
Set_Up_Cancellation_Confirmation_Menu()
|
|
|
|
|
|
b_DoCancelConfirmation = TRUE
|
|
|
|
|
|
ELSE //Otherwise, it must have been the "Hang out" option that was displayed.
|
|
|
|
|
|
//Set bools for friend activity hang out call...
|
|
g_b_Is_This_An_Activity_Call = TRUE
|
|
g_b_Is_This_An_Activity_Cancellation_Call = FALSE
|
|
g_b_Is_This_A_Secondary_Function_Call = FALSE
|
|
|
|
Do_Call()
|
|
|
|
|
|
ENDIF
|
|
|
|
ELSE //If the friend option is unavailable, slot 1 must be filled by a secondary option.
|
|
|
|
//Set bools for secondary function call...
|
|
g_b_Is_This_An_Activity_Call = FALSE
|
|
g_b_Is_This_An_Activity_Cancellation_Call = FALSE
|
|
g_b_Is_This_A_Secondary_Function_Call = TRUE
|
|
|
|
Do_Call()
|
|
|
|
ENDIF
|
|
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
IF SF_SelectedChoiceInt = 2 //Was 2 when order was CALL_HANGOUT_SECONDARY. 1142222 requested change to SECONDARY_CALL_HANGOUT...
|
|
|
|
//This should always hold the secondary function for just now...
|
|
|
|
//Set bools for secondary function call...
|
|
g_b_Is_This_An_Activity_Call = FALSE
|
|
g_b_Is_This_An_Activity_Cancellation_Call = FALSE
|
|
g_b_Is_This_A_Secondary_Function_Call = TRUE
|
|
|
|
Do_Call()
|
|
|
|
ENDIF
|
|
*/
|
|
//End of old order.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//Need to hook up #1033532 IS_CHAT_CALL_AVAILABLE_FOR_CHARACTER(enumCharacterList paramChar) branch here = DONE.
|
|
|
|
IF IS_CHAT_CALL_AVAILABLE_FOR_CHARACTER(g_TheContactInvolvedinCall)
|
|
//IF g_AllowUnderwaterDialogue// - swap in this for the above for easy testing.
|
|
|
|
|
|
|
|
IF SF_SelectedChoiceInt = 0
|
|
|
|
|
|
IF b_Secondary_Option_Available
|
|
|
|
//Set bools for secondary function call...
|
|
g_b_Is_This_An_Activity_Call = FALSE
|
|
g_b_Is_This_An_Activity_Cancellation_Call = FALSE
|
|
g_b_Is_This_A_Secondary_Function_Call = TRUE
|
|
|
|
Do_Call()
|
|
|
|
ELSE
|
|
|
|
|
|
//Set bools to specify this is a story call here!
|
|
g_b_Is_This_An_Activity_Call = FALSE
|
|
g_b_Is_This_An_Activity_Cancellation_Call = FALSE
|
|
g_b_Is_This_A_Secondary_Function_Call = FALSE
|
|
|
|
Do_Call()
|
|
|
|
ENDIF
|
|
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
IF SF_SelectedChoiceInt = 1
|
|
|
|
|
|
IF b_Secondary_Option_Available
|
|
|
|
//Set bools to specify this is a story call here! If the secondary option was available in slot zero, then slot 1 will hold the story call.
|
|
g_b_Is_This_An_Activity_Call = FALSE
|
|
g_b_Is_This_An_Activity_Cancellation_Call = FALSE
|
|
g_b_Is_This_A_Secondary_Function_Call = FALSE
|
|
|
|
Do_Call()
|
|
|
|
|
|
|
|
ELSE // No secondary option available mean slot zero will hold a story call, so friends actions will be in slot 1.
|
|
|
|
|
|
IF CAN_CHARS_CANCEL_FRIEND_ACTIVITY (g_TheContactInvolvedInCall, g_Cellphone.PhoneOwner)
|
|
|
|
|
|
//Set up CANCEL yes or no menu here.
|
|
Set_Up_Cancellation_Confirmation_Menu()
|
|
|
|
|
|
b_DoCancelConfirmation = TRUE
|
|
|
|
|
|
ELSE //Otherwise, it must have been the "Hang out" option that was displayed.
|
|
|
|
|
|
//Set bools for friend activity hang out call...
|
|
g_b_Is_This_An_Activity_Call = TRUE
|
|
g_b_Is_This_An_Activity_Cancellation_Call = FALSE
|
|
g_b_Is_This_A_Secondary_Function_Call = FALSE
|
|
|
|
Do_Call()
|
|
|
|
|
|
ENDIF
|
|
|
|
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
IF SF_SelectedChoiceInt = 2 //If 0 or 1 haven't returned true then it follows that something must be in slot 2 and that can only be friends actions under this ordering system.
|
|
|
|
IF CAN_CHARS_CANCEL_FRIEND_ACTIVITY (g_TheContactInvolvedInCall, g_Cellphone.PhoneOwner)
|
|
|
|
|
|
//Set up CANCEL yes or no menu here.
|
|
Set_Up_Cancellation_Confirmation_Menu()
|
|
|
|
|
|
b_DoCancelConfirmation = TRUE
|
|
|
|
|
|
ELSE //Otherwise, it must have been the "Hang out" option that was displayed.
|
|
|
|
|
|
//Set bools for friend activity hang out call...
|
|
g_b_Is_This_An_Activity_Call = TRUE
|
|
g_b_Is_This_An_Activity_Cancellation_Call = FALSE
|
|
g_b_Is_This_A_Secondary_Function_Call = FALSE
|
|
|
|
Do_Call()
|
|
|
|
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ELSE
|
|
|
|
|
|
|
|
|
|
|
|
IF SF_SelectedChoiceInt = 0
|
|
|
|
|
|
IF b_Secondary_Option_Available
|
|
|
|
//Set bools for secondary function call...
|
|
g_b_Is_This_An_Activity_Call = FALSE
|
|
g_b_Is_This_An_Activity_Cancellation_Call = FALSE
|
|
g_b_Is_This_A_Secondary_Function_Call = TRUE
|
|
|
|
Do_Call()
|
|
|
|
|
|
|
|
ELSE // No secondary option available mean slot zero will store friends actions as no story chat is available...
|
|
|
|
|
|
IF CAN_CHARS_CANCEL_FRIEND_ACTIVITY (g_TheContactInvolvedInCall, g_Cellphone.PhoneOwner)
|
|
|
|
|
|
//Set up CANCEL yes or no menu here.
|
|
Set_Up_Cancellation_Confirmation_Menu()
|
|
|
|
|
|
b_DoCancelConfirmation = TRUE
|
|
|
|
|
|
ELSE //Otherwise, it must have been the "Hang out" option that was displayed.
|
|
|
|
|
|
//Set bools for friend activity hang out call...
|
|
g_b_Is_This_An_Activity_Call = TRUE
|
|
g_b_Is_This_An_Activity_Cancellation_Call = FALSE
|
|
g_b_Is_This_A_Secondary_Function_Call = FALSE
|
|
|
|
Do_Call()
|
|
|
|
|
|
ENDIF
|
|
|
|
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
IF SF_SelectedChoiceInt = 1 //Must be a friend action if no story chat was present.
|
|
|
|
IF CAN_CHARS_CANCEL_FRIEND_ACTIVITY (g_TheContactInvolvedInCall, g_Cellphone.PhoneOwner)
|
|
|
|
|
|
//Set up CANCEL yes or no menu here.
|
|
Set_Up_Cancellation_Confirmation_Menu()
|
|
|
|
|
|
b_DoCancelConfirmation = TRUE
|
|
|
|
|
|
ELSE //Otherwise, it must have been the "Hang out" option that was displayed.
|
|
|
|
|
|
//Set bools for friend activity hang out call...
|
|
g_b_Is_This_An_Activity_Call = TRUE
|
|
g_b_Is_This_An_Activity_Cancellation_Call = FALSE
|
|
g_b_Is_This_A_Secondary_Function_Call = FALSE
|
|
|
|
Do_Call()
|
|
|
|
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
|
|
ENDIF
|
|
ENDIF
|
|
|
|
|
|
ENDPROC
|
|
|
|
|
|
|
|
PROC Set_Up_Human_Friend_Menu() //Conor, stick any other options in here.
|
|
|
|
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
cdPrintnl()
|
|
cdPrintstring("AppCONTACTS - Set_Up_Human_Friend_Menu has been called. #2105815")
|
|
cdPrintnl()
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
//See bug 832525
|
|
IF g_CellPhone.PhoneDS > PDS_AWAY //make sure that the following state assignment cannot interfere with AWAY or DISABLED assignment.
|
|
|
|
g_Cellphone.PhoneDS = PDS_COMPLEXAPP
|
|
|
|
/*
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintnl()
|
|
cdPrintstring("STATE ASSIGNMENT 171237. appContacts assigns PDS_COMPLEXAPP. This will get reassigned when dynamically updating.")
|
|
cdPrintnl()
|
|
#endif
|
|
*/
|
|
ENDIF
|
|
|
|
|
|
//Badger - Select Back combo
|
|
IF g_b_ToggleButtonLabels
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_SOFT_KEYS", BADGER_POS, 1,
|
|
2, INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM, "CELL_210") //"Select" - Positive
|
|
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_SOFT_KEYS", BADGER_NEG, 1,
|
|
4, INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM, "CELL_206") //"BACK" - Negative
|
|
|
|
ELSE
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_SOFT_KEYS", BADGER_POS, 1,
|
|
2, INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM) //"SELECT" - Positive
|
|
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_SOFT_KEYS", BADGER_NEG, 1,
|
|
4, INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM) //"BACK" - Negative
|
|
ENDIF
|
|
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_SOFT_KEYS", BADGER_OTHER, 0,
|
|
1, INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM) //"Error!" - Other
|
|
|
|
CLEAR_BIT (BitSet_CellphoneDisplay, g_BS_OTHER_OPTION_IS_DISPLAYED)
|
|
|
|
|
|
|
|
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER(SF_MovieIndex,"SET_DATA_SLOT_EMPTY", 18)
|
|
|
|
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_DATA_SLOT", (TO_FLOAT(18)), (TO_FLOAT(0)),
|
|
(TO_FLOAT(0)),INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM, "CELL_208") //Call...
|
|
|
|
|
|
|
|
|
|
|
|
Fill_PlayerInteraction_Screen_Slots(m_sPlayers)
|
|
|
|
|
|
IF g_Cellphone.PhoneDS > PDS_AWAY //If the current selection returns invalid for bug #1608514, HANG_UP_AND_PUT_AWAY_PHONE() will be called as a precaution
|
|
//from Fill_PlayerInteraction_Screen_Slots above in appMPPlayerListFunctions.sch
|
|
|
|
|
|
//If phone was not signalled to be hung up from Fill_PlayerInteraction_Screen_Slots, go ahead with header and display view assignment.
|
|
|
|
PRINTLN("Set_Up_Human_Friend_Menu: list cursor index = ",ListCursorIndex)
|
|
PRINTLN("Set_Up_Human_Friend_Menu: i_Selected_Slot_to_Restore = ",i_Selected_Slot_to_Restore)
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER (SF_MovieIndex, "DISPLAY_VIEW", 18,TO_FLOAT(i_Selected_Slot_to_Restore))
|
|
i_Selected_Slot_to_Restore = 0
|
|
//LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER (SF_MovieIndex, "DISPLAY_VIEW", 18)
|
|
|
|
// Display the Header (using the player name string)
|
|
STRING thePlayerName
|
|
IF IS_SELECTION_FROM_PLAYER_LIST(m_sPlayers)
|
|
thePlayerName = GET_PLAYER_NAME(m_sPlayers.plPlayers[m_sPlayers.m_selectedPlayerSlot])
|
|
ELSE
|
|
thePlayerName = MP_PL_TEXT_LABEL_TO_STRING(m_sPlayers.plFriends[GET_INDEX_OF_FRIEND_ARRAY(m_sPlayers.m_selectedPlayerSlot,m_sPlayers)].Name)
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
BEGIN_SCALEFORM_MOVIE_METHOD(SF_MovieIndex, "SET_HEADER")
|
|
//BEGIN_TEXT_COMMAND_SCALEFORM_STRING("STRING")
|
|
BEGIN_TEXT_COMMAND_SCALEFORM_STRING ("CELL_CONDFNH") //<c>~a~</c>
|
|
ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME(thePlayerName)
|
|
END_TEXT_COMMAND_SCALEFORM_STRING()
|
|
END_SCALEFORM_MOVIE_METHOD()
|
|
|
|
|
|
//Trial - Steve T. Reset this to prevent call quit spamming. 1602347
|
|
m_sPlayers.iPlayerInteractionStage = PLAYER_INTERACTION_STAGE_SELECT //Reset to prevent Session - 8 spamming.
|
|
|
|
|
|
b_DoHumanFriend_Routine = TRUE
|
|
|
|
ELSE
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
cdPrintnl()
|
|
cdPrintstring("AppCONTACTS - chosen contact has left the session whilst phone was up - aborting for safety.")
|
|
cdPrintnl()
|
|
|
|
#endif
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
ENDPROC
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
PROC MP_PLAYER_INTERACTION_MOVE_BACK_TO_CONTACTS()
|
|
|
|
IF g_bInMultiplayer
|
|
|
|
Place_MP_Names_in_ContactSlots()
|
|
|
|
ELSE
|
|
|
|
Place_Names_in_ContactSlots()
|
|
|
|
ENDIF
|
|
|
|
m_sPlayers.bButtonReleased = FALSE
|
|
m_sPlayers.bLocalNotOnline = FALSE
|
|
IF g_CellPhone.PhoneDS > PDS_AWAY //make sure that the following state assignment cannot interfere with AWAY or DISABLED assignment.
|
|
|
|
g_Cellphone.PhoneDS = PDS_RUNNINGAPP
|
|
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintnl()
|
|
cdPrintstring("STATE ASSIGNMENT 17123789. appContacts assigns PDS_RUNNINGAPP. This will get reassigned when dynamically updating.")
|
|
cdPrintnl()
|
|
#endif
|
|
|
|
|
|
|
|
//Added in for #1580608
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER (SF_MovieIndex, "DISPLAY_VIEW", 2) //, TO_FLOAT(SF_SelectedContactInt)) //Set enum state and header to CONTACTS
|
|
|
|
|
|
|
|
IF IS_BIT_SET (BitSet_CellphoneDisplay_Continued, g_BSC_LAUNCH_FINALE_CONTACTS)
|
|
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_STRING (SF_MovieIndex, "SET_HEADER", "CELL_7000")
|
|
|
|
ELSE
|
|
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_STRING (SF_MovieIndex, "SET_HEADER", "CELL_0")
|
|
|
|
ENDIF
|
|
|
|
|
|
STOP_SOUND (Phone_Dialling_SoundID)
|
|
cc_Progress = CC_LAUNCH_TIMER_AND_CHECK_MESSAGE
|
|
|
|
|
|
|
|
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
|
|
PROC Check_For_Human_Friend_Menu_Decision() //Conor, this is where we check for the selection the user makes in the human friend menu.
|
|
|
|
INT iScriptTransactionIndex
|
|
INT iBankAmount, iWalletAmount
|
|
INT iValidSelectionFailReason
|
|
NETWORK_CLAN_DESC clanDesc
|
|
FE_WARNING_FLAGS iFlags
|
|
GAMER_HANDLE localHandle
|
|
|
|
|
|
//1526236 Dynamic handling of the "Highlight" option that can appear in the human interaction menu.
|
|
IF IS_BIT_SET (BitSet_CellphoneDisplay_Third, g_BSTHIRD_HUMAN_CONTACT_HIGHLIGHT_AVAILABLE) //Set from appMPPlayerListFunctions
|
|
|
|
|
|
IF NOT (NETWORK_IS_GAMER_IN_MY_SESSION (m_sPlayers.selectedPlayerHandle)) //Player no longer in same session
|
|
|
|
CLEAR_BIT (BitSet_CellphoneDisplay_Third, g_BSTHIRD_HUMAN_CONTACT_HIGHLIGHT_AVAILABLE)
|
|
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
cdPrintnl()
|
|
cdPrintstring("appContacts - Human Contact Highlight bit was set but selected player no longer in session, updating menu.")
|
|
cdPrintnl()
|
|
|
|
#endif
|
|
|
|
//Can't really do this as the fellow "session player" becomes a friend and the original slot is invalid. We'd need to completely
|
|
//restore the list, then perhaps do an auto-selection by searching on a saved copy of the original PlayerHandle. A recipe for disaster.
|
|
|
|
//b_DoHumanFriend_Routine = FALSE
|
|
|
|
//Set_Up_Human_Friend_Menu() //This sets b_DoHumanFriend_Routine back to TRUE.
|
|
|
|
//EXIT
|
|
|
|
//If we really need to do this we could change m_sPlayers.plPlayers[thisSlot[ to use handles which are persistent. Player IDs are not.
|
|
|
|
//Maybe put help here? "Player has left session!"
|
|
|
|
|
|
NumpadEntryString ="" //Reset entry string.
|
|
|
|
//For safety 20.09.13
|
|
#IF IS_DEBUG_BUILD
|
|
NET_PRINT("...CDM MP: Stack size after NETWORK_IS_GAMER_IN_MY_SESSION prohibitive - closing phone.") NET_NL()
|
|
#ENDIF
|
|
|
|
g_Cellphone.PhoneDS = PDS_AWAY
|
|
|
|
|
|
|
|
/*
|
|
g_InputButtonJustPressed = TRUE
|
|
|
|
IF g_bInMultiplayer
|
|
|
|
Place_MP_Names_in_ContactSlots()
|
|
|
|
ELSE
|
|
|
|
Place_Names_in_ContactSlots()
|
|
|
|
ENDIF
|
|
|
|
WAIT(0) //make sure this JUST_PRESSED doesn't carry over by stopping for a game cycle.
|
|
|
|
|
|
IF g_CellPhone.PhoneDS > PDS_AWAY //make sure that the following state assignment cannot interfere with AWAY or DISABLED assignment.
|
|
|
|
g_Cellphone.PhoneDS = PDS_RUNNINGAPP
|
|
|
|
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintnl()
|
|
cdPrintstring("STATE ASSIGNMENT 8871. appContacts assigns PDS_RUNNINGAPP as player in session has left.")
|
|
cdPrintnl()
|
|
#endif
|
|
|
|
ENDIF
|
|
*/
|
|
|
|
|
|
ENDIF
|
|
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
IF g_Cellphone_Onscreen_State_Debug
|
|
//IF IS_NET_PLAYER_OK(m_sPlayers.plPlayers[m_sPlayers.m_selectedPlayerSlot], TRUE, FALSE) //Check the status of the last selected player.
|
|
IF NETWORK_IS_GAMER_IN_MY_SESSION (m_sPlayers.selectedPlayerHandle)
|
|
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING (0.15, 0.50, "STRING", "OK - selected player in session")
|
|
|
|
ELSE
|
|
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING (0.15, 0.50, "STRING", "Selected player NOT in session.")
|
|
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
#endif
|
|
|
|
|
|
|
|
//Was getting this using IS_NET_PLAYER_OK
|
|
//Error: [script_network] Verifyf(playerIndex>=0&&playerIndex<MAX_NUM_PHYSICAL_PLAYERS) FAILED:
|
|
//SCRIPT: Script Name = appcontacts : Program Counter = 33962: NETWORK_IS_PLAYER_ACTIVE - Invalid player index (-1) (from Updating script appcontacts)
|
|
|
|
|
|
//NETWORK_IS_GAMER_IN_MY_SESSION(GAMER_HANDLE& gamerHandle)
|
|
|
|
|
|
|
|
|
|
SWITCH m_sPlayers.iPlayerInteractionStage
|
|
CASE PLAYER_INTERACTION_STAGE_SELECT
|
|
IF IS_BIT_SET(iBoolsBitSet, iBS_STORE_ACTIVE)
|
|
IF NOT g_sShopSettings.bProcessStoreAlert
|
|
CLEAR_BIT(iBoolsBitSet, iBS_LAUNCH_STORE)
|
|
CLEAR_BIT(iBoolsBitSet, iBS_STORE_ACTIVE)
|
|
//NET_SET_PLAYER_CONTROL(PLAYER_ID(), TRUE)
|
|
PRINTLN(" --> APP CONTACTS - LAUNCH_STORE_CASH_ALERT - CLEARED")
|
|
ENDIF
|
|
EXIT
|
|
ENDIF
|
|
IF m_sPlayers.bConfirmedInteraction
|
|
IF m_sPlayers.bLocalNotOnline
|
|
iFlags = FE_WARNING_OK
|
|
SET_WARNING_MESSAGE_WITH_HEADER("HUD_CONNPROB","HUD_DISCON",iFlags)
|
|
IF m_sPlayers.bButtonReleased
|
|
IF Is_Phone_Control_Just_Pressed (FRONTEND_CONTROL, INT_TO_ENUM (CONTROL_ACTION, PHONE_POSITIVE_INPUT)) //positive action - contact selected.
|
|
OR IS_CONTROL_PRESSED(FRONTEND_CONTROL,INPUT_FRONTEND_ACCEPT)
|
|
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintnl()
|
|
cdPrintstring("MP_PLAYER_INTERACTION_MOVE_BACK_TO_CONTACTS call 1")
|
|
cdPrintnl()
|
|
#endif
|
|
|
|
//MP_PLAYER_INTERACTION_MOVE_BACK_TO_CONTACTS()
|
|
|
|
//For safety 20.09.13
|
|
#IF IS_DEBUG_BUILD
|
|
NET_PRINT("...CDM MP: Stack size after m_sPlayers.bLocalNotOnline prohibitive - closing phone.") NET_NL()
|
|
#ENDIF
|
|
|
|
g_Cellphone.PhoneDS = PDS_AWAY
|
|
|
|
|
|
|
|
ENDIF
|
|
ELSE
|
|
IF Is_Phone_Control_Just_Pressed (FRONTEND_CONTROL, INT_TO_ENUM (CONTROL_ACTION, PHONE_POSITIVE_INPUT)) //positive action - contact selected.
|
|
OR IS_CONTROL_PRESSED(FRONTEND_CONTROL,INPUT_FRONTEND_ACCEPT)
|
|
ELSE
|
|
m_sPlayers.bButtonReleased = TRUE
|
|
ENDIF
|
|
ENDIF
|
|
ELSE
|
|
//handle whatever interaction the player has just confirmed
|
|
i_Selected_Slot_to_Restore = m_sPlayers.m_selectedOptionSlot //make a copy so this can be input into DISPLAY_VIEW to reselect last highlighted slot.
|
|
SWITCH m_sPlayers.optionList[m_sPlayers.m_selectedOptionSlot]
|
|
CASE OPTION_CALL
|
|
//IF NOT NETWORK_IS_GAME_IN_PROGRESS() //Removed for #1633276
|
|
//OR GET_LOCAL_PLAYER_VC_AMOUNT(TRUE) >= g_sMPTunables.iPhoneFriendCharge...Should include this!
|
|
|
|
IF NOT voiceSession.bInVoiceSession
|
|
//put back in when
|
|
IF NOT NETWORK_SESSION_IS_VOICE_SESSION_BUSY()
|
|
AND NOT NETWORK_SESSION_IS_VOICE_SESSION_ACTIVE()
|
|
// IF NOT IS_XBOX_PLATFORM()
|
|
// OR (IS_XBOX_PLATFORM() AND GET_PLAYER_DISPLAY_NAME_FOR_PHONECALLS(m_sPlayers.selectedPlayerHandle))
|
|
m_sPlayers.bConfirmedInteraction = FALSE
|
|
|
|
SCRIPT_START_A_VOICE_SESSION()
|
|
//MPGlobalsAmbience.playerBeingCalled = m_sPlayers.selectedPlayerHandle
|
|
|
|
m_sPlayers.bCallRequestSent = FALSE
|
|
STRING thePlayerName
|
|
IF IS_SELECTION_FROM_PLAYER_LIST(m_sPlayers)
|
|
thePlayerName = GET_PLAYER_NAME(m_sPlayers.plPlayers[m_sPlayers.m_selectedPlayerSlot])
|
|
ELSE
|
|
thePlayerName = MP_PL_TEXT_LABEL_TO_STRING(m_sPlayers.plFriends[GET_INDEX_OF_FRIEND_ARRAY(m_sPlayers.m_selectedPlayerSlot,m_sPlayers)].Name)
|
|
ENDIF
|
|
//IF IS_XBOX_PLATFORM()
|
|
// LAUNCH_CALL_SCREEN_FOR_OUTGOING_CHAT_CALL_FROM_APPCONTACTS(voiceSession.displayName[0])
|
|
// ELSE
|
|
LAUNCH_CALL_SCREEN_FOR_OUTGOING_CHAT_CALL_FROM_APPCONTACTS(thePlayerName)
|
|
//ENDIF
|
|
m_sPlayers.iPlayerInteractionStage = PLAYER_INTERACTION_STAGE_IN_CALL
|
|
|
|
RESET_NET_TIMER(m_sPlayers.voiceSessionTimer) //1602347
|
|
SET_OUTGOING_CHAT_CALL_AS_ENGAGED (FALSE) //1602347
|
|
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
PRINTLN("...CDM MP: Player placing a call to : ",thePlayerName)
|
|
PRINTLN("Subtracting call charge...")
|
|
|
|
#endif
|
|
|
|
|
|
IF g_bInMultiplayer //#1626685
|
|
INT iDifference
|
|
INT iCost
|
|
iCost = g_sMPTunables.iPhoneFriendCharge
|
|
//If the player does not have the tunable amount just subtract his remaining balance... #1633276
|
|
//The fix for this ^ was just commented out... fixed *now* anyway.
|
|
IF NOT NETWORK_CAN_SPEND_MONEY2(iCost, FALSE, TRUE, FALSE, iDifference)
|
|
iCost -= iDifference
|
|
ENDIF
|
|
localHandle = GET_GAMER_HANDLE_PLAYER(PLAYER_ID())
|
|
|
|
IF iCost > 0
|
|
IF USE_SERVER_TRANSACTIONS()
|
|
TRIGGER_FIRE_AND_FORGET_SERVICE_TRANSACTION(SERVICE_SPEND_CALL_PLAYER, iCost, iScriptTransactionIndex, FALSE, TRUE)
|
|
g_cashTransactionData[iScriptTransactionIndex].eExtraData.gamerHandle = localHandle
|
|
ELSE
|
|
NETWORK_SPENT_CALL_PLAYER(iCost, localHandle, FALSE, TRUE)
|
|
ENDIF
|
|
ENDIF
|
|
INCREMENT_BY_MP_INT_CHARACTER_STAT (MP_STAT_CALLS_MADE_TO_PLAYERS, 1) //1782892
|
|
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintstring("appContacts - Incrementing MP_STAT_CALLS_MADE_TO_PLAYERS on dialling human player.")
|
|
cdPrintnl()
|
|
#endif
|
|
|
|
ENDIF
|
|
// #if IS_DEBUG_BUILD
|
|
// ELSE
|
|
// PRINTLN("...CDM MP: waiting for GET_PLAYER_DISPLAY_NAME_FOR_PHONECALLS placing call")
|
|
// #ENDIF
|
|
// ENDIF
|
|
|
|
ELSE
|
|
IF NETWORK_SESSION_IS_VOICE_SESSION_BUSY()
|
|
PRINTLN("...CDM MP: waiting for NOT NETWORK_SESSION_IS_VOICE_SESSION_BUSY")
|
|
ELIF NETWORK_SESSION_IS_VOICE_SESSION_ACTIVE()
|
|
PRINTLN("...CDM MP: waiting for NOT NETWORK_SESSION_IS_VOICE_SESSION_ACTIVE")
|
|
IF NOT voiceSession.bExitOnNewCall
|
|
voiceSession.bRequestedVoiceSession = TRUE
|
|
voiceSession.bClearVoiceSession = TRUE
|
|
voiceSession.bExitOnNewCall = TRUE
|
|
PRINTLN("...CDM MP: killing active call")
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ELSE
|
|
IF voiceSession.bAwaitingEndEvent
|
|
PRINTLN("player ending a call ingoring input")
|
|
ELSE
|
|
#IF IS_DEBUG_BUILD
|
|
NET_PRINT("...CDM MP: Player ended call- returning to player interaction screen") NET_NL()
|
|
#ENDIF
|
|
SCRIPT_END_A_VOICE_SESSION()
|
|
PLAY_SOUND_FRONTEND (-1, "Hang_Up", g_Owner_Soundset)
|
|
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintnl()
|
|
cdPrintstring("MP_PLAYER_INTERACTION_MOVE_BACK_TO_CONTACTS call 2")
|
|
cdPrintnl()
|
|
#endif
|
|
|
|
//MP_PLAYER_INTERACTION_MOVE_BACK_TO_CONTACTS()
|
|
|
|
|
|
IF voiceSession.bInVoiceSession //Potential fix for #1623996
|
|
|
|
CLEAR_VOICE_SESSION_STRUCT()
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
PRINTNL()
|
|
PRINTSTRING("TRIAL AppContacts - performing Emergency CLEAR_VOICE_SESSION_STRUCT() as player should no longer be in voice session.")
|
|
PRINTNL()
|
|
|
|
#endif
|
|
|
|
ENDIF
|
|
|
|
|
|
//For safety 20.09.13
|
|
#IF IS_DEBUG_BUILD
|
|
NET_PRINT("...CDM MP: Stack size after selecting End Call prohibitive - closing phone.") NET_NL()
|
|
#ENDIF
|
|
|
|
g_Cellphone.PhoneDS = PDS_AWAY
|
|
|
|
|
|
ENDIF
|
|
ENDIF
|
|
|
|
// ELSE //Removed for #1633276
|
|
// IF NOT IS_BIT_SET(iBoolsBitSet, iBS_STORE_ACTIVE)
|
|
// LAUNCH_STORE_CASH_ALERT(DEFAULT, DEFAULT, SPL_PHONE)
|
|
// SET_BIT(iBoolsBitSet, iBS_STORE_ACTIVE)
|
|
// NET_SET_PLAYER_CONTROL(PLAYER_ID(), FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, TRUE, FALSE)
|
|
// PRINTLN(" --> APP CONTACTS - LAUNCH_STORE_CASH_ALERT - CALLED")
|
|
// ENDIF
|
|
// IF NOT IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("CALL_PLAY_MON")
|
|
// PRINT_HELP("CALL_PLAY_MON")
|
|
// PRINTLN("AppContacts: Player can't make a call to another player they don't have enough money in account.")
|
|
// ENDIF
|
|
// ENDIF
|
|
|
|
EXIT
|
|
BREAK
|
|
|
|
CASE OPTION_SEND_MESSAGE
|
|
IF HAS_NET_TIMER_STARTED(MPGlobalsAmbience.iSendMessageToPlayerTimer[NATIVE_TO_INT(m_sPlayers.plPlayers[m_sPlayers.m_selectedPlayerSlot])])
|
|
IF NOT HAS_NET_TIMER_EXPIRED(MPGlobalsAmbience.iSendMessageToPlayerTimer[NATIVE_TO_INT(m_sPlayers.plPlayers[m_sPlayers.m_selectedPlayerSlot])], SEND_MESSAGE_COOLDOWN)
|
|
IF IS_OK_TO_PRINT_FREEMODE_HELP(FALSE, FALSE)
|
|
PRINT_HELP_WITH_PLAYER_NAME("CELL_MP_1009H", GET_PLAYER_NAME(m_sPlayers.plPlayers[m_sPlayers.m_selectedPlayerSlot]), GET_PLAYER_HUD_COLOUR(m_sPlayers.plPlayers[m_sPlayers.m_selectedPlayerSlot])) //There is a short wait before you can send another message to ~a~
|
|
ENDIF
|
|
m_sPlayers.bConfirmedInteraction = FALSE
|
|
PRINTLN(" ----------> APP - OPTION_SEND_MESSAGE - IN COOLDOWN - SEND TO ", GET_PLAYER_NAME(m_sPlayers.plPlayers[m_sPlayers.m_selectedPlayerSlot]))
|
|
EXIT
|
|
ENDIF
|
|
ENDIF
|
|
|
|
GAMER_HANDLE gamerHandle
|
|
gamerHandle = GET_GAMER_HANDLE_PLAYER(m_sPlayers.plPlayers[m_sPlayers.m_selectedPlayerSlot])
|
|
|
|
//Double Check Player is still Valid
|
|
IF NOT IS_ACCOUNT_OVER_17_FOR_CHAT(PLAYER_ID())
|
|
OR NOT IS_ACCOUNT_OVER_17_FOR_CHAT(m_sPlayers.plPlayers[m_sPlayers.m_selectedPlayerSlot])
|
|
OR NOT NETWORK_CAN_TEXT_CHAT_WITH_GAMER(gamerHandle)
|
|
// 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_BLOCKED_BY_PLAYER(m_sPlayers.plPlayers[m_sPlayers.m_selectedPlayerSlot])
|
|
// OR NETWORK_AM_I_MUTED_BY_PLAYER(m_sPlayers.plPlayers[m_sPlayers.m_selectedPlayerSlot])
|
|
|
|
|
|
|
|
#if IS_DEBUG_BUILD //extra debug added by Steve T. to help diagnose bug # 2333703
|
|
|
|
|
|
IF NOT IS_ACCOUNT_OVER_17_FOR_CHAT(PLAYER_ID())
|
|
cdPrintstring("AppContacts - Double Check reports that NULL passed account over 17 for chat has returned false. Preventing text message reply.")
|
|
cdPrintnl()
|
|
ENDIF
|
|
|
|
|
|
IF NOT IS_ACCOUNT_OVER_17_FOR_CHAT(m_sPlayers.plPlayers[m_sPlayers.m_selectedPlayerSlot])
|
|
cdPrintstring("AppContacts - Double Check reports that target contact account is not over 17 for chat. Preventing text message reply.")
|
|
cdPrintnl()
|
|
ENDIF
|
|
|
|
IF NOT NETWORK_CAN_TEXT_CHAT_WITH_GAMER(gamerHandle)
|
|
cdPrintstring("AppContacts - Double Check reports that target contact as NETWORK_CAN_TEXT_CHAT_WITH_GAMER(gamerHandle) = FALSE")
|
|
cdPrintnl()
|
|
ENDIF
|
|
|
|
// IF NETWORK_IS_PLAYER_MUTED_BY_ME(m_sPlayers.plPlayers[m_sPlayers.m_selectedPlayerSlot])
|
|
// cdPrintstring("AppContacts - Double Check reports that target contact is muted by the calling player. Preventing text message reply.")
|
|
// cdPrintnl()
|
|
// ENDIF
|
|
|
|
|
|
// IF NETWORK_IS_PLAYER_BLOCKED_BY_ME(m_sPlayers.plPlayers[m_sPlayers.m_selectedPlayerSlot])
|
|
// cdPrintstring("AppContacts - Double Check reports that target contact has been blocked by the calling player. Preventing text message reply.")
|
|
// cdPrintnl()
|
|
// ENDIF
|
|
|
|
|
|
// IF NETWORK_AM_I_MUTED_BY_PLAYER(m_sPlayers.plPlayers[m_sPlayers.m_selectedPlayerSlot])
|
|
// cdPrintstring("Appcontacts - Double Check reports that target contact has muted the calling player at the target end. Preventing text message reply.")
|
|
// cdPrintnl()
|
|
// ENDIF
|
|
|
|
|
|
IF NETWORK_AM_I_BLOCKED_BY_PLAYER(m_sPlayers.plPlayers[m_sPlayers.m_selectedPlayerSlot])
|
|
cdPrintstring("AppContacts - Double Check reports that target contact has blocked the calling player at the target end. Preventing text message reply.")
|
|
cdPrintnl()
|
|
ENDIF
|
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
IF IS_OK_TO_PRINT_FREEMODE_HELP()
|
|
IF NOT ARE_STRINGS_EQUAL(GET_PLAYER_NAME(m_sPlayers.plPlayers[m_sPlayers.m_selectedPlayerSlot]),"**Invalid**")
|
|
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~.
|
|
ELSE
|
|
PRINT_HELP("CELL_MP_1009N") //It is currently not possible to send a message.
|
|
ENDIF
|
|
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]))
|
|
bCreatingSendMessage = TRUE
|
|
EXIT
|
|
BREAK
|
|
|
|
// CASE OPTION_PARTY
|
|
// IF NOT HAS_NET_TIMER_STARTED(m_sPlayers.partyTimeOut)
|
|
// IF NOT NETWORK_IS_PARTY_STATUS_PENDING()
|
|
// IF NETWORK_IS_IN_PARTY()
|
|
// m_sPlayers.bHostingParty = TRUE
|
|
// PRINTLN("waiting for NETWORK_HOST_PARTY()")
|
|
// ENDIF
|
|
// ENDIF
|
|
// START_NET_TIMER(m_sPlayers.partyTimeOut)
|
|
// ELSE
|
|
// IF HAS_NET_TIMER_EXPIRED(m_sPlayers.partyTimeOut,10000)
|
|
// #IF IS_DEBUG_BUILD
|
|
// SCRIPT_ASSERT("OPTION_PARTY FAILED. Notify CONOR M!")
|
|
// #ENDIF
|
|
// PRINTLN("OPTION_PARTY FAILED SEE CONOR!")
|
|
// m_sPlayers.bConfirmedInteraction = FALSE
|
|
// MP_PLAYER_INTERACTION_MOVE_BACK_TO_CONTACTS()
|
|
// ENDIF
|
|
// ENDIF
|
|
// //check player is not already in party with local player
|
|
// IF NOT m_sPlayers.bHostingParty
|
|
// IF NOT NETWORK_IS_IN_PARTY()
|
|
// IF NETWORK_HOST_PARTY()
|
|
// m_sPlayers.bHostingParty = TRUE
|
|
// ELSE
|
|
// PRINTLN("waiting for NETWORK_HOST_PARTY()")
|
|
// ENDIF
|
|
// ENDIF
|
|
// EXIT
|
|
// ELSE
|
|
// IF NOT NETWORK_IS_PARTY_STATUS_PENDING()
|
|
// IF NETWORK_IS_IN_PARTY()
|
|
// IF NOT NETWORK_IS_PARTY_MEMBER(m_sPlayers.selectedPlayerHandle)
|
|
// IF NETWORK_INVITE_GAMER_TO_PARTY(m_sPlayers.selectedPlayerHandle)
|
|
// m_sPlayers.bConfirmedInteraction = FALSE
|
|
// MP_PLAYER_INTERACTION_MOVE_BACK_TO_CONTACTS()
|
|
// #IF IS_DEBUG_BUILD
|
|
// NET_PRINT("...CDM MP: player finished selected interaction moving back to interaction screen") NET_NL()
|
|
// #ENDIF
|
|
// ENDIF
|
|
// EXIT
|
|
// ENDIF
|
|
// m_sPlayers.bConfirmedInteraction = FALSE
|
|
// ELSE
|
|
// PRINTLN("waiting for NETWORK_IS_IN_PARTY()")
|
|
// ENDIF
|
|
// ELSE
|
|
// PRINTLN("waiting for NOT NETWORK_IS_PARTY_STATUS_PENDING()")
|
|
// ENDIF
|
|
// ENDIF
|
|
// BREAK
|
|
CASE OPTION_FRIEND
|
|
IF NOT NETWORK_IS_ADDING_FRIEND()
|
|
IF IS_PS3_VERSION()
|
|
AND NOT NETWORK_IS_FRIEND(m_sPlayers.selectedPlayerHandle)
|
|
NET_PRINT_TIME() NET_PRINT(" Process_Stage_Confirm_Interaction() ----------> FRIEND REQUEST - STARTED <---------- ") NET_NL()
|
|
IF NETWORK_ADD_FRIEND(m_sPlayers.selectedPlayerHandle, "")
|
|
NET_PRINT_TIME() NET_PRINT(" Process_Stage_Confirm_Interaction() ----------> FRIEND REQUEST - DONE - A <---------- ") NET_NL()
|
|
m_sPlayers.bConfirmedInteraction = FALSE
|
|
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintnl()
|
|
cdPrintstring("MP_PLAYER_INTERACTION_MOVE_BACK_TO_CONTACTS call 3")
|
|
cdPrintnl()
|
|
#endif
|
|
|
|
//MP_PLAYER_INTERACTION_MOVE_BACK_TO_CONTACTS()
|
|
//#IF IS_DEBUG_BUILD
|
|
//NET_PRINT("...CDM MP: player finished selected interaction moving back to interaction screen") NET_NL()
|
|
//#ENDIF
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
NET_PRINT("...CDM MP: Stack size after PS3 friend request prohibitive - closing phone.") NET_NL()
|
|
#ENDIF
|
|
|
|
g_Cellphone.PhoneDS = PDS_AWAY
|
|
|
|
ENDIF
|
|
ELSE
|
|
|
|
NETWORK_SHOW_PROFILE_UI(m_sPlayers.selectedPlayerHandle)
|
|
NET_PRINT_TIME() NET_PRINT(" Process_Stage_Confirm_Interaction() ----------> FRIEND REQUEST - OPEN PROFILE - DONE <---------- ") NET_NL()
|
|
m_sPlayers.bConfirmedInteraction = FALSE
|
|
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintnl()
|
|
cdPrintstring("MP_PLAYER_INTERACTION_MOVE_BACK_TO_CONTACTS call 4")
|
|
cdPrintnl()
|
|
#endif
|
|
|
|
//MP_PLAYER_INTERACTION_MOVE_BACK_TO_CONTACTS()
|
|
//#IF IS_DEBUG_BUILD
|
|
//NET_PRINT("...CDM MP: player finished selected interaction moving back to interaction screen") NET_NL()
|
|
//#ENDIF
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
NET_PRINT("...CDM MP: Stack size after OPTION FRIEND non-PS3 prohibitive - closing phone.") NET_NL()
|
|
#ENDIF
|
|
|
|
g_Cellphone.PhoneDS = PDS_AWAY
|
|
|
|
ENDIF
|
|
ENDIF
|
|
BREAK
|
|
CASE OPTION_CREW
|
|
IF NETWORK_CLAN_SERVICE_IS_VALID()
|
|
IF NETWORK_CLAN_PLAYER_IS_ACTIVE(m_sPlayers.selectedPlayerHandle)
|
|
NETWORK_CLAN_PLAYER_GET_DESC(clanDesc, SIZE_OF(clanDesc), m_sPlayers.selectedPlayerHandle)
|
|
ENDIF
|
|
ENDIF
|
|
IF clanDesc.Id != -1
|
|
IF clanDesc.IsOpenClan = 1
|
|
IF NOT IS_PLAYER_ALREADY_IN_THIS_CLAN(clanDesc.Id)
|
|
IF NETWORK_CLAN_JOIN(clanDesc.Id)
|
|
m_sPlayers.bConfirmedInteraction = FALSE
|
|
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintnl()
|
|
cdPrintstring("MP_PLAYER_INTERACTION_MOVE_BACK_TO_CONTACTS call 5")
|
|
cdPrintnl()
|
|
#endif
|
|
|
|
//1602475
|
|
BEGIN_TEXT_COMMAND_THEFEED_POST("CREW_JOIN")
|
|
ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME(clanDesc.ClanName)
|
|
END_TEXT_COMMAND_THEFEED_POST_TICKER(TRUE)
|
|
|
|
|
|
//MP_PLAYER_INTERACTION_MOVE_BACK_TO_CONTACTS()
|
|
#IF IS_DEBUG_BUILD
|
|
NET_PRINT("...CDM MP: Stack size after joining clan prohibitive - closing phone.") NET_NL()
|
|
#ENDIF
|
|
|
|
g_Cellphone.PhoneDS = PDS_AWAY
|
|
|
|
|
|
ELSE
|
|
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintnl()
|
|
cdPrintstring("MP_PLAYER_INTERACTION_MOVE_BACK_TO_CONTACTS call 6")
|
|
cdPrintnl()
|
|
#endif
|
|
|
|
g_Cellphone.PhoneDS = PDS_AWAY
|
|
//MP_PLAYER_INTERACTION_MOVE_BACK_TO_CONTACTS()
|
|
#IF IS_DEBUG_BUILD
|
|
NET_PRINT("......CDM MP: Stack size after clan operation prohibitive - closing phone.") NET_NL()
|
|
#ENDIF
|
|
m_sPlayers.bConfirmedInteraction = FALSE
|
|
|
|
g_Cellphone.PhoneDS = PDS_AWAY
|
|
|
|
|
|
ENDIF
|
|
EXIT
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
m_sPlayers.bConfirmedInteraction = FALSE
|
|
BREAK
|
|
// CASE OPTION_INVITE_CINEMA
|
|
// IF IS_NET_PLAYER_OK(PLAYER_ID())
|
|
// IF IS_NET_PLAYER_OK(m_sPlayers.plPlayers[m_sPlayers.m_selectedPlayerSlot],FALSE)
|
|
// BROADCAST_FREEMODE_INVITE_GENERAL(SPECIFIC_PLAYER(m_sPlayers.plPlayers[m_sPlayers.m_selectedPlayerSlot]),FMMC_TYPE_CINEMA,FMMC_ROCKSTAR_CREATOR_ID,0,MPGlobals.invitedPlayers.vInviteLoc)
|
|
// DISPLAY_PLAYER_INTERACTION_SCREEN()
|
|
// #IF IS_DEBUG_BUILD
|
|
// NET_PRINT("...CDM MP: sent cinema invite to player from phone ") NET_NL()
|
|
// #ENDIF
|
|
// m_sPlayers.bConfirmedInteraction = FALSE
|
|
// ENDIF
|
|
// ENDIF
|
|
// BREAK
|
|
// CASE OPTION_REQUEST_PICKUP
|
|
// IF IS_NET_PLAYER_OK(PLAYER_ID())
|
|
// IF IS_NET_PLAYER_OK(m_sPlayers.plPlayers[m_sPlayers.m_selectedPlayerSlot],FALSE)
|
|
// REINIT_NET_TIMER(MPGlobalsAmbience.requestPickupDelay[NATIVE_TO_INT(m_sPlayers.plPlayers[m_sPlayers.m_selectedPlayerSlot])])
|
|
// BROADCAST_SEND_BASIC_TEXT(SPECIFIC_PLAYER(m_sPlayers.plPlayers[m_sPlayers.m_selectedPlayerSlot]),"MP_TXT_MSG0")
|
|
// MP_PLAYER_INTERACTION_MOVE_BACK_TO_CONTACTS()
|
|
// #IF IS_DEBUG_BUILD
|
|
// NET_PRINT("...CDM MP: sent request pickup from player ") NET_NL()
|
|
// #ENDIF
|
|
// m_sPlayers.bConfirmedInteraction = FALSE
|
|
// ENDIF
|
|
// ENDIF
|
|
// BREAK
|
|
CASE OPTION_PROFILE
|
|
#IF IS_DEBUG_BUILD
|
|
NET_PRINT("...CDM MP: App Contact: showing profile for player ") NET_NL()
|
|
#ENDIF
|
|
m_sPlayers.bConfirmedInteraction = FALSE
|
|
Set_Up_Human_Friend_Menu()
|
|
NETWORK_SHOW_PROFILE_UI(m_sPlayers.selectedPlayerHandle)
|
|
BREAK
|
|
CASE OPTION_TAG_PLAYER
|
|
// IF IS_BIT_SET(MPGlobals.iTaggedPlayersBitSet, NATIVE_TO_INT(m_sPlayers.plPlayers[m_sPlayers.m_selectedPlayerSlot]))
|
|
// CLEAR_BIT(MPGlobals.iTaggedPlayersBitSet, NATIVE_TO_INT(m_sPlayers.plPlayers[m_sPlayers.m_selectedPlayerSlot]))
|
|
// ELSE
|
|
//
|
|
// ENDIF
|
|
IF IS_BIT_SET(MPGlobals.iTaggedPlayersBitSet, NATIVE_TO_INT(m_sPlayers.plPlayers[m_sPlayers.m_selectedPlayerSlot]))
|
|
CLEAR_BIT(MPGlobals.iTaggedPlayersBitSet, NATIVE_TO_INT(m_sPlayers.plPlayers[m_sPlayers.m_selectedPlayerSlot]))
|
|
ELSE
|
|
MPGlobals.iTaggedPlayersBitSet= 0
|
|
SET_BIT(MPGlobals.iTaggedPlayersBitSet, NATIVE_TO_INT(m_sPlayers.plPlayers[m_sPlayers.m_selectedPlayerSlot]))
|
|
ENDIF
|
|
Set_Up_Human_Friend_Menu()
|
|
m_sPlayers.bConfirmedInteraction = FALSE
|
|
BREAK
|
|
ENDSWITCH
|
|
ENDIF
|
|
ELSE
|
|
// Check if the player responds NO and return to Player List screen
|
|
// IF (Did_Player_Press_MP_App_Negative_Response_Button(m_sAppData))
|
|
// Place_Names_in_ContactSlots()
|
|
// #IF IS_DEBUG_BUILD
|
|
// NET_PRINT("...CDM MP: player exited confirmation moving back to interaction screen") NET_NL()
|
|
// #ENDIF
|
|
// EXIT
|
|
// ENDIF
|
|
// SWITCH m_sPlayers.optionList[m_sPlayers.m_selectedOptionSlot]
|
|
// CASE OPTION_CREW
|
|
// SET_WARNING_MESSAGE_WITH_HEADER("","CRW_JOINCONFIRM",FE_WARNING_YESNO,default,FALSE,-1,m_sPlayers.M_selectedPlayerClanName)
|
|
// BREAK
|
|
// ENDSWITCH
|
|
// // Check if the player responds YES send a Private Chat request and move on to the 'Chat Status' screen
|
|
// IF (Did_Player_Press_MP_App_Positive_Response_Button(m_sAppData))
|
|
// // The player list shouldn't update while the player is deeper into the app than the PlayerList screen to ensure player list details are preserved.
|
|
//
|
|
// /
|
|
//
|
|
//
|
|
// // // Send the Private Voice Chat request to the specific player
|
|
// // BROADCAST_GENERAL_EVENT(GENERAL_EVENT_TYPE_PRIVATE_VOICE_CHAT_REQUEST, SPECIFIC_PLAYER(m_sPlayers.plPlayers[m_sPlayers.m_selectedPlayerSlot]))
|
|
// // #IF IS_DEBUG_BUILD
|
|
// // NET_PRINT("...CDM MP: Sent request for a private chat with another player") NET_NL()
|
|
// // #ENDIF
|
|
// // // Display the Chat Status screen
|
|
// // Display_Chat_Status_Screen()
|
|
//
|
|
// EXIT
|
|
// ENDIF
|
|
//
|
|
//Macros
|
|
IF g_InputButtonJustPressed = FALSE
|
|
IF Is_Phone_Control_Just_Pressed (FRONTEND_CONTROL, INT_TO_ENUM (CONTROL_ACTION, PHONE_POSITIVE_INPUT)) //positive action - contact selected.
|
|
m_sPlayers.bButtonReleased = FALSE
|
|
m_sPlayers.bLocalNotOnline = FALSE
|
|
|
|
CLEAR_BIT (BitSet_CellphoneDisplay_Continued, g_BSC_LAUNCH_FINALE_CONTACTS)
|
|
|
|
b_DoCancelConfirmation = FALSE
|
|
|
|
|
|
Play_Select_Beep()
|
|
|
|
|
|
g_InputButtonJustPressed = TRUE
|
|
|
|
|
|
|
|
BEGIN_SCALEFORM_MOVIE_METHOD (SF_MovieIndex, "GET_CURRENT_SELECTION")
|
|
|
|
Choice_ReturnedSFIndex = END_SCALEFORM_MOVIE_METHOD_RETURN_VALUE()
|
|
|
|
|
|
WHILE NOT IS_SCALEFORM_MOVIE_METHOD_RETURN_VALUE_READY (Choice_ReturnedSFIndex)
|
|
|
|
WAIT (0)
|
|
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintstring("appContacts - Waiting on scaleform return during Check_For_Human_Friend_Menu_Decision.")
|
|
cdPrintnl()
|
|
#endif
|
|
|
|
ENDWHILE
|
|
|
|
|
|
m_sPlayers.m_selectedOptionSlot = GET_SCALEFORM_MOVIE_METHOD_RETURN_VALUE_INT (Choice_ReturnedSFIndex)
|
|
|
|
// Is the player still in the network game?
|
|
IF NOT IS_CURRENT_SELECTION_VALID(m_sPlayers,iValidSelectionFailReason)
|
|
#IF IS_DEBUG_BUILD
|
|
NET_PRINT("...CDM MP: Attempting to request interaction with player, but player is no longer in network game - returning to PlayerList screen") NET_NL()
|
|
#ENDIF
|
|
SWITCH iValidSelectionFailReason
|
|
CASE FAIL_REASON_TARGET_PLAYER_NOT_ONLINE
|
|
PRINT_NOW("PLAYER_N_ON", DEFAULT_GOD_TEXT_TIME, 1)
|
|
BREAK
|
|
|
|
CASE FAIL_REASON_TARGET_PLAYER_NOT_IN_GAME
|
|
PRINT_NOW("PLAYERLEFT", DEFAULT_GOD_TEXT_TIME, 1)
|
|
BREAK
|
|
|
|
CASE FAIL_REASON_LOCAL_PLAYER_NOT_ONLINE
|
|
voiceSession.bExitOnNewCall = FALSE
|
|
m_sPlayers.bLocalNotOnline = TRUE
|
|
m_sPlayers.bConfirmedInteraction = TRUE
|
|
EXIT
|
|
BREAK
|
|
ENDSWITCH
|
|
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintnl()
|
|
cdPrintstring("MP_PLAYER_INTERACTION_MOVE_BACK_TO_CONTACTS call 7")
|
|
cdPrintnl()
|
|
#endif
|
|
|
|
|
|
//MP_PLAYER_INTERACTION_MOVE_BACK_TO_CONTACTS()
|
|
|
|
|
|
//For safety 20.09.13
|
|
#IF IS_DEBUG_BUILD
|
|
NET_PRINT("...CDM MP: Stack size after IS_CURRENT_SELECTION_VALID returned false prohibitive - closing phone.") NET_NL()
|
|
#ENDIF
|
|
|
|
g_Cellphone.PhoneDS = PDS_AWAY
|
|
|
|
|
|
|
|
EXIT
|
|
ENDIF
|
|
// IF m_sPlayers.optionList[m_sPlayers.m_selectedOptionSlot] = OPTION_RACE_TO_POINT
|
|
// IF IS_CURRENT_SELECTION_VALID(m_sPlayers)
|
|
// IF IS_NET_PLAYER_OK(PLAYER_ID())
|
|
// IF GET_DISTANCE_BETWEEN_COORDS(GET_PLAYER_COORDS(PLAYER_ID()), GET_PLAYER_COORDS(m_sPlayers.plPlayers[m_sPlayers.m_selectedPlayerSlot])) <= R2P_INVITE_RADIUS
|
|
// m_sPlayers.bConfirmedInteraction = TRUE
|
|
// ENDIF
|
|
// ENDIF
|
|
// ENDIF
|
|
//ELSE
|
|
// RESET_NET_TIMER(m_sPlayers.partyTimeOut)
|
|
voiceSession.bExitOnNewCall = FALSE
|
|
m_sPlayers.bConfirmedInteraction = TRUE
|
|
PRINTLN("...CDM MP: App Contact setting confirmation of interaction to true")
|
|
// ENDIF
|
|
|
|
|
|
// IF m_sPlayers.optionList[m_sPlayers.m_selectedOptionSlot] = OPTION_RACE_TO_POINT
|
|
// IF IS_CURRENT_SELECTION_VALID(m_sPlayers)
|
|
// IF GET_DISTANCE_BETWEEN_COORDS(GET_PLAYER_COORDS(PLAYER_ID()), GET_PLAYER_COORDS(m_sPlayers.plPlayers[m_sPlayers.m_selectedPlayerSlot])) <= R2P_INVITE_RADIUS
|
|
// EXIT
|
|
// ENDIF
|
|
// ENDIF
|
|
// #IF IS_DEBUG_BUILD
|
|
// NET_PRINT("...CDM MP: moving back to player option screen") NET_NL()
|
|
// #ENDIF
|
|
// MP_PLAYER_INTERACTION_MOVE_BACK_TO_CONTACTS()
|
|
// EXIT
|
|
// ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
BREAK
|
|
|
|
CASE PLAYER_INTERACTION_STAGE_IN_CALL
|
|
|
|
IF NOT IS_CURRENT_SELECTION_VALID(m_sPlayers, iValidSelectionFailReason)
|
|
#IF IS_DEBUG_BUILD
|
|
PRINTLN("...CDM MP: selected player is no longer valid aborting for reason #", iValidSelectionFailReason)
|
|
#ENDIF
|
|
|
|
SET_OUTGOING_CHAT_CALL_AS_ENGAGED(TRUE)
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
NET_PRINT("...CDM MP: Call failed showing busy.") NET_NL()
|
|
#ENDIF
|
|
SCRIPT_END_A_VOICE_SESSION()
|
|
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintnl()
|
|
cdPrintstring("Script End A Voice Session - 7")
|
|
cdPrintnl()
|
|
#endif
|
|
|
|
|
|
|
|
m_sPlayers.bBusy = TRUE
|
|
m_sPlayers.bCallRequestSent = TRUE
|
|
EXIT
|
|
|
|
ELSE
|
|
|
|
IF m_sPlayers.bCallRequestSent
|
|
IF NOT m_sPlayers.bBusy
|
|
|
|
IF NOT voiceSession.bInVoiceSession
|
|
OR NOT NETWORK_SESSION_IS_IN_VOICE_SESSION()
|
|
PRINTLN("...CDM MP: voiceSession.bInVoiceSession = false while awaiting response bailing out")
|
|
/*
|
|
SCRIPT_END_A_VOICE_SESSION()
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintnl()
|
|
cdPrintstring("Script End A Voice Session - 8")
|
|
cdPrintnl()
|
|
#endif
|
|
|
|
m_sPlayers.bConfirmedInteraction = FALSE
|
|
Set_Up_Human_Friend_Menu()
|
|
EXIT
|
|
*/
|
|
|
|
SET_OUTGOING_CHAT_CALL_AS_ENGAGED(TRUE) //1602347
|
|
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
NET_PRINT("...CDM MP: Call failed showing busy because of auto-rejection by other player probably.") NET_NL()
|
|
#ENDIF
|
|
|
|
SCRIPT_END_A_VOICE_SESSION()
|
|
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintnl()
|
|
cdPrintstring("Script End A Voice Session - 8")
|
|
cdPrintnl()
|
|
#endif
|
|
|
|
|
|
|
|
m_sPlayers.bBusy = TRUE
|
|
m_sPlayers.bCallRequestSent = TRUE
|
|
EXIT
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
// Check if the player quits the private chat
|
|
// IF (Did_Player_Press_MP_App_Negative_Response_Button(m_sAppData))
|
|
IF NETWORK_IS_SIGNED_ONLINE()
|
|
IF Is_Phone_Control_Just_Pressed (FRONTEND_CONTROL, INT_TO_ENUM (CONTROL_ACTION, PHONE_NEGATIVE_INPUT))
|
|
#if IS_DEBUG_BUILD
|
|
NET_PRINT("...CDM MP: Player Quit the Private Chat - returning to player interaction screen 1") NET_NL()
|
|
|
|
cdPrintnl()
|
|
cdPrintstring("MP_PLAYER_INTERACTION_MOVE_BACK_TO_CONTACTS call 9")
|
|
cdPrintnl()
|
|
#endif
|
|
|
|
|
|
SCRIPT_END_A_VOICE_SESSION()
|
|
m_sPlayers.bConfirmedInteraction = FALSE
|
|
//Set_Up_Human_Friend_Menu()
|
|
EXIT
|
|
ENDIF
|
|
IF IS_GAMER_HANDLE_VALID(voiceSession.gamerHandle)
|
|
IF NETWORK_IS_FRIEND(voiceSession.gamerHandle)
|
|
IF NOT NETWORK_IS_FRIEND_HANDLE_ONLINE(voiceSession.gamerHandle)
|
|
PRINTLN("App contacts: killing voice call ", voiceSession.gamerName, " is not online")
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintnl()
|
|
cdPrintstring("Script End A Voice Session - 9")
|
|
cdPrintnl()
|
|
#endif
|
|
|
|
SET_OUTGOING_CHAT_CALL_AS_ENGAGED(TRUE) //1602347
|
|
|
|
SCRIPT_END_A_VOICE_SESSION()
|
|
|
|
//Set_Up_Human_Friend_Menu()
|
|
m_sPlayers.bBusy = TRUE
|
|
m_sPlayers.bCallRequestSent = TRUE
|
|
EXIT
|
|
ENDIF
|
|
ENDIF
|
|
ELSE
|
|
PRINTLN("App contacts: killing voice call gamer handle not valid")
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintnl()
|
|
cdPrintstring("Script End A Voice Session - 10")
|
|
cdPrintnl()
|
|
#endif
|
|
|
|
SET_OUTGOING_CHAT_CALL_AS_ENGAGED(TRUE) //1602347
|
|
|
|
SCRIPT_END_A_VOICE_SESSION()
|
|
|
|
//Set_Up_Human_Friend_Menu()
|
|
m_sPlayers.bBusy = TRUE
|
|
m_sPlayers.bCallRequestSent = TRUE
|
|
EXIT
|
|
ENDIF
|
|
ELSE
|
|
#if IS_DEBUG_BUILD
|
|
NET_PRINT("...CDM MP: Player Killing Private Chat NOT ONLINE! - returning to player interaction screen") NET_NL()
|
|
cdPrintnl()
|
|
cdPrintstring("Script End A Voice Session - 11")
|
|
cdPrintnl()
|
|
#endif
|
|
|
|
SCRIPT_END_A_VOICE_SESSION()
|
|
m_sPlayers.bConfirmedInteraction = FALSE
|
|
Set_Up_Human_Friend_Menu()
|
|
EXIT
|
|
ENDIF
|
|
// SET_OUTGOING_CHAT_CALL_AS_ENGAGED(TRUE)
|
|
// SCRIPT_END_A_VOICE_SESSION()
|
|
// #IF IS_DEBUG_BUILD
|
|
// NET_PRINT("...CDM MP: Call receiving player is busy displaying engaged") NET_NL()
|
|
// #ENDIF
|
|
// EXIT
|
|
IF NOT voiceSession.bConnectedCallOnGoing
|
|
IF voiceSession.iScriptResponse= -1
|
|
//IF HAS_NET_TIMER_EXPIRED(m_sPlayers.voiceSessionTimer, VOICE_SESSION_TIMEOUT, TRUE)
|
|
IF HAS_NET_TIMER_EXPIRED(m_sPlayers.voiceSessionTimer, 40000, TRUE) //Halving this...
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
NET_PRINT("...CDM MP: Call timed out - setting call to busy.") NET_NL()
|
|
#ENDIF
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintnl()
|
|
cdPrintstring("Script End A Voice Session - 12")
|
|
cdPrintnl()
|
|
#endif
|
|
|
|
|
|
SET_OUTGOING_CHAT_CALL_AS_ENGAGED(TRUE) //1602347
|
|
|
|
|
|
SCRIPT_END_A_VOICE_SESSION()
|
|
|
|
//Set_Up_Human_Friend_Menu()
|
|
m_sPlayers.bBusy = TRUE
|
|
m_sPlayers.bCallRequestSent = TRUE
|
|
|
|
|
|
EXIT
|
|
ENDIF
|
|
ELSE
|
|
SWITCH voiceSession.iScriptResponse
|
|
CASE PLY_TO_PLY_CALL_RESPONSE_ACCEPTED
|
|
#IF IS_DEBUG_BUILD
|
|
NET_PRINT("...CDM MP: Call connected ") NET_NL()
|
|
#ENDIF
|
|
SET_PLAYER_CHAT_CALL_AS_CONNECTED()
|
|
|
|
TitleUpdate_Post_Set_Player_Chat_Call_As_Connected()
|
|
|
|
IF NETWORK_IS_GAME_IN_PROGRESS()
|
|
|
|
|
|
//Commented out until I suss out 1604163
|
|
/*
|
|
IF GET_VC_CASH_SPLIT(10*g_sMPTunables.iPhoneFriendCharge, iBankAmount, iWalletAmount)
|
|
NETWORK_SPENT_CALL_PLAYER(iBankAmount, voiceSession.gamerHandle,TRUE)
|
|
ELSE
|
|
NETWORK_SPENT_CALL_PLAYER(iBankAmount, voiceSession.gamerHandle,TRUE)
|
|
NETWORK_SPENT_CALL_PLAYER(iWalletAmount, voiceSession.gamerHandle,FALSE)
|
|
ENDIF
|
|
*/
|
|
|
|
IF iBankAmount = iWalletAmount
|
|
ENDIF
|
|
|
|
ENDIF
|
|
STOP_SOUND (Phone_Dialling_SoundID)
|
|
// HANG_UP_AND_PUT_AWAY_PHONE()
|
|
// TERMINATE_APPCONTACTS_FOR_CHAT_CALL()
|
|
EXIT
|
|
BREAK
|
|
CASE PLY_TO_PLY_CALL_RESPONSE_ENGAGED
|
|
SET_OUTGOING_CHAT_CALL_AS_ENGAGED(TRUE)
|
|
#IF IS_DEBUG_BUILD
|
|
NET_PRINT("...CDM MP: Call receiving player is busy displaying engaged") NET_NL()
|
|
#ENDIF
|
|
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintnl()
|
|
cdPrintstring("Script End A Voice Session - 13")
|
|
cdPrintnl()
|
|
#endif
|
|
|
|
SCRIPT_END_A_VOICE_SESSION()
|
|
m_sPlayers.bBusy = TRUE
|
|
EXIT
|
|
BREAK
|
|
|
|
DEFAULT
|
|
#IF IS_DEBUG_BUILD
|
|
PRINTLN("...CDM MP: Call over for reason ", voiceSession.iScriptResponse, " - returning to player interaction screen") NET_NL()
|
|
#ENDIF
|
|
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintnl()
|
|
cdPrintstring("Script End A Voice Session - 14")
|
|
cdPrintnl()
|
|
#endif
|
|
|
|
SET_OUTGOING_CHAT_CALL_AS_ENGAGED(TRUE) //1596679
|
|
|
|
|
|
SCRIPT_END_A_VOICE_SESSION()
|
|
m_sPlayers.bBusy = TRUE
|
|
|
|
|
|
//HANG_UP_AND_PUT_AWAY_PHONE()
|
|
//TERMINATE_APPCONTACTS_FOR_CHAT_CALL()
|
|
EXIT
|
|
|
|
|
|
BREAK
|
|
ENDSWITCH
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
// IF voiceSession.iCallResponse = -1
|
|
// IF HAS_NET_TIMER_EXPIRED(m_sPlayers.voiceSessionTimer, VOICE_SESSION_TIMEOUT)
|
|
// #IF IS_DEBUG_BUILD
|
|
// NET_PRINT("...CDM MP: Call timed out - returning to player interaction screen") NET_NL()
|
|
// #ENDIF
|
|
// SCRIPT_END_A_VOICE_SESSION()
|
|
// Set_Up_Human_Friend_Menu()
|
|
// EXIT
|
|
// ENDIF
|
|
// ELSE
|
|
// IF voiceSession.iCallResponse != ENUM_TO_INT(RESPONSE_ACCEPTED)
|
|
// #IF IS_DEBUG_BUILD
|
|
// PRINTLN("...CDM MP: Call over response was ",voiceSession.iCallResponse, " - returning to player interaction screen")
|
|
// #ENDIF
|
|
// SCRIPT_END_A_VOICE_SESSION()
|
|
// HANG_UP_AND_PUT_AWAY_PHONE()
|
|
// TERMINATE_APPCONTACTS_FOR_CHAT_CALL()
|
|
//
|
|
// EXIT
|
|
// ELSE
|
|
// #IF IS_DEBUG_BUILD
|
|
// NET_PRINT("...CDM MP: Call connected - returning to player interaction screen") NET_NL()
|
|
// #ENDIF
|
|
// HANG_UP_AND_PUT_AWAY_PHONE()
|
|
// TERMINATE_APPCONTACTS_FOR_CHAT_CALL()
|
|
//
|
|
// EXIT
|
|
// ENDIF
|
|
// ENDIF
|
|
ELSE
|
|
|
|
IF NOT HAS_NET_TIMER_STARTED(m_sPlayers.voiceSessionTimer)
|
|
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintnl()
|
|
cdPrintstring("Resetting and starting Chat Caller timer.")
|
|
cdPrintnl()
|
|
#endif
|
|
|
|
|
|
|
|
RESET_NET_TIMER(m_sPlayers.voiceSessionTimer) //1602347
|
|
|
|
START_NET_TIMER(m_sPlayers.voiceSessionTimer, TRUE)
|
|
|
|
ELSE
|
|
|
|
|
|
//This fires a lot! 1602347
|
|
IF HAS_NET_TIMER_EXPIRED(m_sPlayers.voiceSessionTimer, 15000, TRUE)
|
|
|
|
|
|
// Possibly replace this section with engaged routine below for #1596679?
|
|
#IF IS_DEBUG_BUILD
|
|
NET_PRINT("...CDM MP: Call timed out (before ever starting voice session ) - returning to player interaction screen") NET_NL()
|
|
#ENDIF
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintnl()
|
|
cdPrintstring("Script End A Voice Session - 15")
|
|
cdPrintnl()
|
|
#endif
|
|
|
|
SCRIPT_END_A_VOICE_SESSION()
|
|
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintnl()
|
|
cdPrintstring("MP_PLAYER_INTERACTION_MOVE_BACK_TO_CONTACTS call 8")
|
|
cdPrintnl()
|
|
#endif
|
|
|
|
|
|
//MP_PLAYER_INTERACTION_MOVE_BACK_TO_CONTACTS()
|
|
|
|
|
|
Play_Back_Beep() //1602347
|
|
|
|
|
|
|
|
Remove_Cellphone_From_Ear() //1602347
|
|
|
|
|
|
|
|
SCRIPT_ASSERT("Didn't receive VOICE_SESSION_STARTED_EVENT after 15 seconds. Pass logs to Conor M.")
|
|
|
|
|
|
//For safety 20.09.13
|
|
#IF IS_DEBUG_BUILD
|
|
NET_PRINT("...CDM MP: Stack size after VOICE_SESSION_STARTED_EVENT wasn't received prohibitive - closing phone.") NET_NL()
|
|
#ENDIF
|
|
|
|
g_Cellphone.PhoneDS = PDS_AWAY
|
|
|
|
|
|
|
|
|
|
EXIT
|
|
|
|
|
|
|
|
/*
|
|
SET_OUTGOING_CHAT_CALL_AS_ENGAGED(TRUE) //1596679
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
NET_PRINT("...CDM MP: ...CDM MP: Call timed out (before ever starting voice session ) - setting as busy as a failsafe.") NET_NL()
|
|
#ENDIF
|
|
|
|
SCRIPT_END_A_VOICE_SESSION()
|
|
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintnl()
|
|
cdPrintstring("Script End A Voice Session - 18")
|
|
cdPrintnl()
|
|
#endif
|
|
|
|
|
|
|
|
m_sPlayers.bBusy = TRUE
|
|
m_sPlayers.bCallRequestSent = TRUE
|
|
|
|
|
|
SCRIPT_ASSERT("Didn't receive VOICE_SESSION_STARTED_EVENT after 10 seconds. Pass logs to Conor M.")
|
|
|
|
|
|
EXIT
|
|
*/
|
|
|
|
ENDIF
|
|
|
|
|
|
// Check if the player quits the private chat
|
|
IF voiceSession.bInVoiceSession //Adding this on a trial basis to prevent quitting before PROCESS_VOICE_SESSION_STARTED_EVENT() has fired.
|
|
OR IS_BIT_SET (BitSet_CellphoneDisplay_Continued, g_BSC_SET_CHAT_CALL_AS_ENGAGED)
|
|
IF Is_Phone_Control_Just_Pressed (FRONTEND_CONTROL, INT_TO_ENUM (CONTROL_ACTION, PHONE_NEGATIVE_INPUT))
|
|
#if IS_DEBUG_BUILD
|
|
NET_PRINT("...CDM MP: Player Quit the Private Chat - returning to player interaction screen 2") NET_NL()
|
|
|
|
cdPrintnl()
|
|
cdPrintstring("MP_PLAYER_INTERACTION_MOVE_BACK_TO_CONTACTS call 9")
|
|
cdPrintnl()
|
|
#endif
|
|
|
|
SCRIPT_END_A_VOICE_SESSION()
|
|
|
|
//MP_PLAYER_INTERACTION_MOVE_BACK_TO_CONTACTS()
|
|
|
|
//For safety 20.09.13
|
|
#IF IS_DEBUG_BUILD
|
|
NET_PRINT("...CDM MP: Stack size after inVoiceSession quit prohibitive - closing phone.") NET_NL()
|
|
#ENDIF
|
|
|
|
g_Cellphone.PhoneDS = PDS_AWAY
|
|
|
|
EXIT
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF voiceSession.bInVoiceSession
|
|
|
|
IF IS_INITIAL_CALL_PROCESSING_COMPLETE(m_sPlayers,m_sPlayers.selectedPlayerName)
|
|
|
|
REINIT_NET_TIMER(m_sPlayers.voiceSessionTimer, TRUE)
|
|
|
|
PRINTLN("...CDM MP: Sent phone call event to player ")
|
|
m_sPlayers.bBusy = FALSE
|
|
m_sPlayers.bCallRequestSent = TRUE
|
|
IF g_bInMultiplayer
|
|
SET_MP_BOOL_CHARACTER_STAT(MP_STAT_CL_CALL_FRIEND, TRUE)
|
|
ENDIF
|
|
|
|
ELSE
|
|
|
|
PRINTLN("...CDM MP: voiceSession.bInVoiceSession TRUE in call false killing call ")
|
|
// SCRIPT_END_A_VOICE_SESSION()
|
|
// MP_PLAYER_INTERACTION_MOVE_BACK_TO_CONTACTS()
|
|
|
|
SET_OUTGOING_CHAT_CALL_AS_ENGAGED(TRUE)
|
|
|
|
|
|
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
NET_PRINT("...CDM MP: Call failed for some reason (started voice session but not in one??) showing busy.") NET_NL()
|
|
#ENDIF
|
|
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintnl()
|
|
cdPrintstring("Script End A Voice Session - 16")
|
|
cdPrintnl()
|
|
#endif
|
|
|
|
SCRIPT_END_A_VOICE_SESSION()
|
|
m_sPlayers.bBusy = TRUE
|
|
m_sPlayers.bCallRequestSent = TRUE
|
|
|
|
EXIT
|
|
ENDIF
|
|
ELSE
|
|
PRINTLN("...CDM MP: waiting for voiceSession.bInVoiceSession")
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
BREAK
|
|
|
|
CASE PLAYER_INTERACTION_STAGE_SEND_MESSAGE
|
|
|
|
//Maintain Keyboard Use
|
|
IF bCreatingSendMessage = TRUE
|
|
IF RUN_ON_SCREEN_KEYBOARD(KeyBoardData.eStatus, KeyBoardData.iProfanityToken, KeyBoardData.iCurrentStatus, FALSE, FALSE, tlSendMessage, FALSE, 0, TRUE)
|
|
tlSendMessage = GET_ONSCREEN_KEYBOARD_RESULT()
|
|
NET_PRINT_TIME() NET_PRINT(" ----------> APP - MAINTAIN_PERSISTENT_CHECKS - KEYBOARD RESULT = ") NET_PRINT(tlSendMessage) NET_NL()
|
|
KeyBoardData.eStatus = OSK_PENDING
|
|
KeyBoardData.iCurrentstatus = OSK_STAGE_SET_UP
|
|
KeyBoardData.iProfanityToken = 0
|
|
bCreatingSendMessage = FALSE
|
|
|
|
iStringLengthInCharacters = GET_LENGTH_OF_LITERAL_STRING(tlSendMessage)
|
|
tlSendMessage = GET_CHARACTER_FROM_AUDIO_CONVERSATION_FILENAME_WITH_BYTE_LIMIT(tlSendMessage, 0, iStringLengthInCharacters, 63)
|
|
|
|
REINIT_NET_TIMER(MPGlobalsAmbience.iSendMessageToPlayerTimer[NATIVE_TO_INT(m_sPlayers.plPlayers[m_sPlayers.m_selectedPlayerSlot])])
|
|
|
|
|
|
|
|
IF IS_STRING_NULL_OR_EMPTY (CONVERT_TEXT_LABEL_TO_STRING(tlSendMessage))
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
cdPrintstring ("AppContacts - NULL OR empty message from OPTION_SEND_MESSAGE keyboard result. Not sending. #1896032")
|
|
cdPrintnl()
|
|
|
|
PRINTLN("AppContacts - NULL OR empty message from OPTION_SEND_MESSAGE keyboard result. Not sending. #1896032")
|
|
|
|
#endif
|
|
|
|
ELSE
|
|
|
|
GAMER_HANDLE thisHandle
|
|
thisHandle = GET_GAMER_HANDLE_PLAYER(m_sPlayers.plPlayers[m_sPlayers.m_selectedPlayerSlot])
|
|
|
|
//Send the Message to the Player
|
|
//REINIT_NET_TIMER(MPGlobalsAmbience.iSendMessageToPlayerTimer[NATIVE_TO_INT(m_sPlayers.plPlayers[m_sPlayers.m_selectedPlayerSlot])])
|
|
NETWORK_SEND_TEXT_MESSAGE(tlSendMessage, thisHandle) //BROADCAST_TEXT_MESSAGE_USING_LITERAL(tlSendMessage, SPECIFIC_PLAYER(m_sPlayers.plPlayers[m_sPlayers.m_selectedPlayerSlot]))
|
|
NET_PRINT_TIME() NET_PRINT(" ----------> APP - ciPI_SUB_MENU_SM_PLAYER_LIST - MESSAGE SENT TO ") NET_PRINT(GET_PLAYER_NAME(m_sPlayers.plPlayers[m_sPlayers.m_selectedPlayerSlot])) NET_NL()
|
|
NET_PRINT_TIME() NET_PRINT(" ----------> APP - ciPI_SUB_MENU_SM_PLAYER_LIST - MESSAGE = ") NET_PRINT(tlSendMessage) NET_NL()
|
|
|
|
PRINT_TICKER_WITH_PLAYER_NAME("CP_TM_SENT", m_sPlayers.plPlayers[m_sPlayers.m_selectedPlayerSlot]) //Your message has been sent to ~a~
|
|
|
|
INCREMENT_BY_MP_INT_CHARACTER_STAT (MP_STAT_TEXTS_SENT_TO_PLAYERS, 1) //1782892
|
|
|
|
ENDIF
|
|
|
|
m_sPlayers.iPlayerInteractionStage = PLAYER_INTERACTION_STAGE_SELECT
|
|
PRINTLN(" ----------> APP - PLAYER_INTERACTION_STAGE_SEND_MESSAGE - PiPlayerInteractionStage = PLAYER_INTERACTION_STAGE_SELECT - B")
|
|
ENDIF
|
|
|
|
IF KeyBoardData.eStatus = OSK_CANCELLED
|
|
NET_PRINT_TIME() NET_PRINT(" ----------> APP - MAINTAIN_PERSISTENT_CHECKS - KEYBOARD CLOSED - oskStatus = ") NET_PRINT_INT(ENUM_TO_INT(KeyBoardData.eStatus)) NET_NL()
|
|
KeyBoardData.eStatus = OSK_PENDING
|
|
KeyBoardData.iCurrentstatus = OSK_STAGE_SET_UP
|
|
KeyBoardData.iProfanityToken = 0
|
|
bCreatingSendMessage = FALSE
|
|
|
|
m_sPlayers.iPlayerInteractionStage = PLAYER_INTERACTION_STAGE_SELECT
|
|
PRINTLN(" ----------> APP - PLAYER_INTERACTION_STAGE_SEND_MESSAGE - PiPlayerInteractionStage = PLAYER_INTERACTION_STAGE_SELECT - B")
|
|
ENDIF
|
|
ENDIF
|
|
|
|
|
|
BREAK
|
|
ENDSWITCH
|
|
|
|
ENDPROC
|
|
|
|
|
|
|
|
|
|
PROC Set_Up_Call_Hangout_Secondary_Cancel_Menu()
|
|
|
|
|
|
SETTIMERA(0) //This will be SP only, so safe to use that single timer rather than net time paradigm.
|
|
|
|
|
|
//See bug 832525
|
|
IF g_CellPhone.PhoneDS > PDS_AWAY //make sure that the following state assignment cannot interfere with AWAY or DISABLED assignment.
|
|
|
|
g_Cellphone.PhoneDS = PDS_COMPLEXAPP
|
|
|
|
/*
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintnl()
|
|
cdPrintstring("STATE ASSIGNMENT 171237. appContacts assigns PDS_COMPLEXAPP. This will get reassigned when dynamically updating.")
|
|
cdPrintnl()
|
|
#endif
|
|
*/
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//Badger - Select Back combo
|
|
IF g_b_ToggleButtonLabels
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_SOFT_KEYS", BADGER_POS, 1,
|
|
2, INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM, "CELL_210") //"Select" - Positive
|
|
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_SOFT_KEYS", BADGER_NEG, 1,
|
|
4, INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM, "CELL_206") //"BACK" - Negative
|
|
|
|
ELSE
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_SOFT_KEYS", BADGER_POS, 1,
|
|
2, INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM) //"SELECT" - Positive
|
|
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_SOFT_KEYS", BADGER_NEG, 1,
|
|
4, INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM) //"BACK" - Negative
|
|
ENDIF
|
|
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_SOFT_KEYS", BADGER_OTHER, 0,
|
|
1, INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM) //"Error!" - Other
|
|
|
|
CLEAR_BIT (BitSet_CellphoneDisplay, g_BS_OTHER_OPTION_IS_DISPLAYED)
|
|
|
|
|
|
|
|
|
|
|
|
b_DoFriend_SecondaryCallRoutine = TRUE
|
|
|
|
|
|
|
|
|
|
//Set up menu and bool to do friend contact selection
|
|
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER(SF_MovieIndex,"SET_DATA_SLOT_EMPTY", 18)
|
|
|
|
|
|
|
|
|
|
|
|
//Old display order for CALL_HANGOUT/CANCEL_SECONDARY. 1142222 requested change to SECONDARY_CALL_HANGOUT...
|
|
/*
|
|
//Changed at Sam's request (827347) - Section 4. Checks Friend functions to decide which additional menu option, if any, to display in Scaleform slot 1.
|
|
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_DATA_SLOT", (TO_FLOAT(18)), (TO_FLOAT(0)),
|
|
(TO_FLOAT(0)),INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM, "CELL_208")
|
|
|
|
|
|
|
|
IF CAN_CHARS_ARRANGE_FRIEND_ACTIVITY (g_TheContactInvolvedinCall, g_Cellphone.PhoneOwner) //Yes, can arrange actvity.
|
|
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_DATA_SLOT", (TO_FLOAT(18)), (TO_FLOAT(1)),
|
|
(TO_FLOAT(0)),INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM, "CELL_209") //Display Hang out option.
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
cdPrintstring ("AppCONTACTS - Can ARRANGE activity with Friend, displaying Hang Out option in SF Slot 1.")
|
|
cdPrintnl()
|
|
|
|
#endif
|
|
|
|
ENDIF
|
|
|
|
|
|
//Deliberately not using an ELSE here, a consecutive debug print will highlight a problem in the decision making of CAN_CHARS_ARRANGE or CAN_CHARS_CANCEL...
|
|
IF CAN_CHARS_CANCEL_FRIEND_ACTIVITY (g_TheContactInvolvedinCall, g_Cellphone.PhoneOwner) //Yes, can arrange actvity.
|
|
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_DATA_SLOT", (TO_FLOAT(18)), (TO_FLOAT(1)),
|
|
(TO_FLOAT(0)),INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM, "CELL_222") //Display Cancel option.
|
|
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
cdPrintstring ("AppCONTACTS - Can CANCEL activity with this Friend, displaying Cancel option in SF Slot 1.")
|
|
cdPrintnl()
|
|
|
|
#endif
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
IF b_Secondary_Option_Available
|
|
|
|
IF b_Friend_Option_Available //Decide which slot to use based on the presence of a friend option.
|
|
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_DATA_SLOT", (TO_FLOAT(18)), (TO_FLOAT(2)),
|
|
(TO_FLOAT(0)),INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM, g_SpecialSPCharacters[i_Available_Option].SecondaryFunctionLabel_1)
|
|
|
|
|
|
ELSE
|
|
|
|
|
|
IF g_bInMultiplayer
|
|
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_DATA_SLOT", (TO_FLOAT(18)), (TO_FLOAT(1)),
|
|
(TO_FLOAT(0)),INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM, g_SpecialMPCharacters[i_Available_Option].SecondaryFunctionLabel_1)
|
|
|
|
ELSE
|
|
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_DATA_SLOT", (TO_FLOAT(18)), (TO_FLOAT(1)),
|
|
(TO_FLOAT(0)),INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM, g_SpecialSPCharacters[i_Available_Option].SecondaryFunctionLabel_1)
|
|
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
cdPrintstring ("AppCONTACTS - b_Friend_Option unavailable. Placing secondary option in slot 1.")
|
|
cdPrintnl()
|
|
|
|
#endif
|
|
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
ENDIF
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//Need to hook up #1033532 IS_CHAT_CALL_AVAILABLE_FOR_CHARACTER(enumCharacterList paramChar) branch here - DONE.
|
|
|
|
IF IS_CHAT_CALL_AVAILABLE_FOR_CHARACTER(g_TheContactInvolvedinCall)
|
|
//IF g_AllowUnderwaterDialogue// - swap in this for the above for easy testing.
|
|
|
|
|
|
|
|
|
|
|
|
//New order SECONDARY_CALL_HANGOUT/CANCEL for bug 1142222
|
|
IF b_Secondary_Option_Available
|
|
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_DATA_SLOT", (TO_FLOAT(18)), (TO_FLOAT(0)),
|
|
(TO_FLOAT(0)),INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM, g_SpecialSPCharacters[i_Available_Option].SecondaryFunctionLabel_1)
|
|
|
|
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_DATA_SLOT", (TO_FLOAT(18)), (TO_FLOAT(1)),
|
|
(TO_FLOAT(0)),INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM, "CELL_208") //Normal Story Call...
|
|
|
|
|
|
IF b_Friend_Option_Available
|
|
|
|
|
|
IF CAN_CHARS_ARRANGE_FRIEND_ACTIVITY (g_TheContactInvolvedinCall, g_Cellphone.PhoneOwner) //Yes, can arrange actvity.
|
|
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_DATA_SLOT", (TO_FLOAT(18)), (TO_FLOAT(2)),
|
|
(TO_FLOAT(0)),INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM, "CELL_209") //Display Hang out option.
|
|
|
|
/*
|
|
#if IS_DEBUG_BUILD
|
|
|
|
cdPrintstring ("AppCONTACTS - Can ARRANGE activity with Friend, displaying Hang Out option in SF Slot 1.")
|
|
cdPrintnl()
|
|
|
|
#endif
|
|
*/
|
|
|
|
ENDIF
|
|
|
|
|
|
//Deliberately not using an ELSE here, a consecutive debug print will highlight a problem in the decision making of CAN_CHARS_ARRANGE or CAN_CHARS_CANCEL...
|
|
IF CAN_CHARS_CANCEL_FRIEND_ACTIVITY (g_TheContactInvolvedinCall, g_Cellphone.PhoneOwner) //Yes, can arrange actvity.
|
|
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_DATA_SLOT", (TO_FLOAT(18)), (TO_FLOAT(2)),
|
|
(TO_FLOAT(0)),INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM, "CELL_222") //Display Cancel option.
|
|
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
cdPrintstring ("AppCONTACTS - Can CANCEL activity with this Friend, displaying Cancel option in SF Slot 1.")
|
|
cdPrintnl()
|
|
|
|
#endif
|
|
|
|
ENDIF
|
|
|
|
|
|
ENDIF
|
|
|
|
|
|
ELSE //Slot zero will be free, so Normal story call and friend option all move up one slot.
|
|
|
|
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_DATA_SLOT", (TO_FLOAT(18)), (TO_FLOAT(0)),
|
|
(TO_FLOAT(0)),INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM, "CELL_208") //Normal Story Call...
|
|
|
|
|
|
|
|
IF b_Friend_Option_Available
|
|
|
|
|
|
IF CAN_CHARS_ARRANGE_FRIEND_ACTIVITY (g_TheContactInvolvedinCall, g_Cellphone.PhoneOwner) //Yes, can arrange actvity.
|
|
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_DATA_SLOT", (TO_FLOAT(18)), (TO_FLOAT(1)),
|
|
(TO_FLOAT(0)),INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM, "CELL_209") //Display Hang out option.
|
|
/*
|
|
#if IS_DEBUG_BUILD
|
|
|
|
cdPrintstring ("AppCONTACTS - Can ARRANGE activity with Friend, displaying Hang Out option in SF Slot 1.")
|
|
cdPrintnl()
|
|
|
|
#endif
|
|
*/
|
|
|
|
ENDIF
|
|
|
|
|
|
//Deliberately not using an ELSE here, a consecutive debug print will highlight a problem in the decision making of CAN_CHARS_ARRANGE or CAN_CHARS_CANCEL...
|
|
IF CAN_CHARS_CANCEL_FRIEND_ACTIVITY (g_TheContactInvolvedinCall, g_Cellphone.PhoneOwner) //Yes, can arrange actvity.
|
|
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_DATA_SLOT", (TO_FLOAT(18)), (TO_FLOAT(1)),
|
|
(TO_FLOAT(0)),INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM, "CELL_222") //Display Cancel option.
|
|
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
cdPrintstring ("AppCONTACTS - Can CANCEL activity with this Friend, displaying Cancel option in SF Slot 1.")
|
|
cdPrintnl()
|
|
|
|
#endif
|
|
|
|
ENDIF
|
|
|
|
|
|
ENDIF
|
|
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ELSE
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//New order SECONDARY_CALL_HANGOUT/CANCEL for bug 1142222
|
|
IF b_Secondary_Option_Available
|
|
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_DATA_SLOT", (TO_FLOAT(18)), (TO_FLOAT(0)),
|
|
(TO_FLOAT(0)),INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM, g_SpecialSPCharacters[i_Available_Option].SecondaryFunctionLabel_1)
|
|
|
|
|
|
|
|
IF b_Friend_Option_Available
|
|
|
|
|
|
IF CAN_CHARS_ARRANGE_FRIEND_ACTIVITY (g_TheContactInvolvedinCall, g_Cellphone.PhoneOwner) //Yes, can arrange actvity.
|
|
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_DATA_SLOT", (TO_FLOAT(18)), (TO_FLOAT(1)),
|
|
(TO_FLOAT(0)),INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM, "CELL_209") //Display Hang out option.
|
|
|
|
/*
|
|
#if IS_DEBUG_BUILD
|
|
|
|
cdPrintstring ("AppCONTACTS - Can ARRANGE activity with Friend, displaying Hang Out option in SF Slot 1.")
|
|
cdPrintnl()
|
|
|
|
#endif
|
|
*/
|
|
|
|
ENDIF
|
|
|
|
|
|
//Deliberately not using an ELSE here, a consecutive debug print will highlight a problem in the decision making of CAN_CHARS_ARRANGE or CAN_CHARS_CANCEL...
|
|
IF CAN_CHARS_CANCEL_FRIEND_ACTIVITY (g_TheContactInvolvedinCall, g_Cellphone.PhoneOwner) //Yes, can arrange actvity.
|
|
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_DATA_SLOT", (TO_FLOAT(18)), (TO_FLOAT(1)),
|
|
(TO_FLOAT(0)),INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM, "CELL_222") //Display Cancel option.
|
|
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
cdPrintstring ("AppCONTACTS - Can CANCEL activity with this Friend, displaying Cancel option in SF Slot 1.")
|
|
cdPrintnl()
|
|
|
|
#endif
|
|
|
|
ENDIF
|
|
|
|
|
|
ENDIF
|
|
|
|
|
|
ELSE //Slot zero will be free, so Normal story call and friend option all move up one slot.
|
|
|
|
|
|
|
|
|
|
|
|
IF b_Friend_Option_Available
|
|
|
|
|
|
IF CAN_CHARS_ARRANGE_FRIEND_ACTIVITY (g_TheContactInvolvedinCall, g_Cellphone.PhoneOwner) //Yes, can arrange actvity.
|
|
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_DATA_SLOT", (TO_FLOAT(18)), (TO_FLOAT(0)),
|
|
(TO_FLOAT(0)),INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM, "CELL_209") //Display Hang out option.
|
|
/*
|
|
#if IS_DEBUG_BUILD
|
|
|
|
cdPrintstring ("AppCONTACTS - Can ARRANGE activity with Friend, displaying Hang Out option in SF Slot 1.")
|
|
cdPrintnl()
|
|
|
|
#endif
|
|
*/
|
|
|
|
ENDIF
|
|
|
|
|
|
//Deliberately not using an ELSE here, a consecutive debug print will highlight a problem in the decision making of CAN_CHARS_ARRANGE or CAN_CHARS_CANCEL...
|
|
IF CAN_CHARS_CANCEL_FRIEND_ACTIVITY (g_TheContactInvolvedinCall, g_Cellphone.PhoneOwner) //Yes, can arrange actvity.
|
|
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_DATA_SLOT", (TO_FLOAT(18)), (TO_FLOAT(0)),
|
|
(TO_FLOAT(0)),INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM, "CELL_222") //Display Cancel option.
|
|
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
cdPrintstring ("AppCONTACTS - Can CANCEL activity with this Friend, displaying Cancel option in SF Slot 1.")
|
|
cdPrintnl()
|
|
|
|
#endif
|
|
|
|
ENDIF
|
|
|
|
|
|
ENDIF
|
|
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
|
|
ENDIF
|
|
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER (SF_MovieIndex, "DISPLAY_VIEW", 18, TO_FLOAT(i_Selected_Slot_to_Restore))
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_STRING (SF_MovieIndex, "SET_HEADER", g_sCharacterSheetAll[g_TheContactInvolvedinCall].label)
|
|
ENDPROC
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
PROC CancellationConfirmation()
|
|
|
|
|
|
|
|
IF g_InputButtonJustPressed = FALSE
|
|
IF Is_Phone_Control_Just_Pressed (FRONTEND_CONTROL, INT_TO_ENUM (CONTROL_ACTION, PHONE_POSITIVE_INPUT)) //positive action - contact selected.
|
|
|
|
|
|
CLEAR_BIT (BitSet_CellphoneDisplay_Continued, g_BSC_LAUNCH_FINALE_CONTACTS)
|
|
|
|
|
|
Play_Select_Beep()
|
|
|
|
|
|
g_InputButtonJustPressed = TRUE
|
|
|
|
|
|
|
|
|
|
BEGIN_SCALEFORM_MOVIE_METHOD (SF_MovieIndex, "GET_CURRENT_SELECTION")
|
|
|
|
Choice_ReturnedSFIndex = END_SCALEFORM_MOVIE_METHOD_RETURN_VALUE()
|
|
|
|
|
|
WHILE NOT IS_SCALEFORM_MOVIE_METHOD_RETURN_VALUE_READY (Choice_ReturnedSFIndex)
|
|
|
|
WAIT (0)
|
|
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintstring("appContacts - Waiting on scaleform return during Check_For_Contact_Selection.")
|
|
cdPrintnl()
|
|
#endif
|
|
|
|
ENDWHILE
|
|
|
|
|
|
SF_SelectedChoiceInt = GET_SCALEFORM_MOVIE_METHOD_RETURN_VALUE_INT (Choice_ReturnedSFIndex)
|
|
|
|
|
|
IF SF_SelectedChoiceInt = 0 //Selected YES - cancellation confirmed.
|
|
|
|
|
|
This_Player_Request_Cancellation[g_Cellphone.PhoneOwner] = TRUE
|
|
|
|
|
|
b_DoFriend_SecondaryCallRoutine = FALSE
|
|
|
|
g_b_Is_This_An_Activity_Call = FALSE
|
|
g_b_Is_This_An_Activity_Cancellation_Call = TRUE
|
|
g_b_Is_This_A_Secondary_Function_Call = FALSE
|
|
|
|
|
|
Do_Call()
|
|
|
|
|
|
ELSE
|
|
|
|
// Selected NO - Go back to previous screen
|
|
|
|
b_DoCancelConfirmation = FALSE
|
|
|
|
Set_Up_Call_Hangout_Secondary_Cancel_Menu()
|
|
|
|
ENDIF
|
|
|
|
|
|
ENDIF
|
|
ENDIF
|
|
|
|
|
|
|
|
ENDPROC
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
PROC Check_For_Contact_Selection() //Again, could pass stuff in here for context checking depending on screen. Will check all flash stuff.
|
|
|
|
//Macros
|
|
IF g_InputButtonJustPressed = FALSE
|
|
IF Is_Phone_Control_Just_Pressed (FRONTEND_CONTROL, INT_TO_ENUM (CONTROL_ACTION, PHONE_POSITIVE_INPUT)) //positive action - contact selected.
|
|
|
|
IF NOT Is_SinglePlayer_Climbing()
|
|
|
|
|
|
//See bug 823426 - Removed as this was causing hangout menu to launch and will interfere with confirmation screen.
|
|
//CLEAR_BIT (BitSet_CellphoneDisplay_Continued, g_BSC_LAUNCH_FINALE_CONTACTS)
|
|
|
|
g_b_Is_This_An_Activity_Call = FALSE //reset as a failsafe.
|
|
g_b_Is_This_An_Activity_Cancellation_Call = FALSE
|
|
g_b_Is_This_A_Secondary_Function_Call = FALSE
|
|
|
|
|
|
DialledNumberHasGameworldAssociation = FALSE
|
|
|
|
|
|
Play_Select_Beep()
|
|
|
|
|
|
g_InputButtonJustPressed = TRUE
|
|
|
|
|
|
//Start
|
|
IF i_Number_Of_Contacts_In_List > 0 //don't let the player call the "no contacts" entry! This means that to choose the Finale contact in debug, you need to make sure
|
|
//the player character has a normal contact in their list.
|
|
|
|
|
|
//g_TheContactInvolvedinCall = ContactListSlot[ListCursorIndex] // Point to contents of array rather than just the cursor index itself.
|
|
|
|
|
|
|
|
|
|
//SF_SelectedContactInt = LEGACY_SCALEFORM_MOVIE_METHOD (SF_MovieIndex, "GET_CURRENT_SELECTION")
|
|
|
|
BEGIN_SCALEFORM_MOVIE_METHOD (SF_MovieIndex, "GET_CURRENT_SELECTION")
|
|
|
|
Choice_ReturnedSFIndex = END_SCALEFORM_MOVIE_METHOD_RETURN_VALUE()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
WHILE NOT IS_SCALEFORM_MOVIE_METHOD_RETURN_VALUE_READY (Choice_ReturnedSFIndex)
|
|
|
|
WAIT (0)
|
|
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintstring("appContacts - Waiting on scaleform return during Check_For_Contact_Selection.")
|
|
cdPrintnl()
|
|
#endif
|
|
|
|
ENDWHILE
|
|
|
|
|
|
SF_SelectedContactInt = GET_SCALEFORM_MOVIE_METHOD_RETURN_VALUE_INT (Choice_ReturnedSFIndex)
|
|
|
|
|
|
|
|
BOOL b_ShouldLaunchHumanFriendMenu = FALSE //Have a nice, clear check rather than ANDs , ORs.
|
|
|
|
IF NETWORK_IS_SIGNED_ONLINE()
|
|
|
|
//CL_TOP
|
|
IF g_bInMultiplayer //This caters for having the friends above the NPC contacts.
|
|
|
|
IF SF_SelectedContactInt < NPCSlot_StartingIndex
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
cdPrintnl()
|
|
cdPrintstring("AppContacts - Launching human friend menu as selected contact int is lower than NPCSlot_StartingIndex")
|
|
cdPrintnl()
|
|
|
|
#endif
|
|
|
|
b_ShouldLaunchHumanFriendMenu = TRUE
|
|
|
|
ENDIF
|
|
|
|
ELSE
|
|
|
|
IF SF_SelectedContactInt = FriendSlot_StartingIndex //Story / Human delimiter check.
|
|
OR SF_SelectedContactInt > FriendSlot_StartingIndex
|
|
|
|
b_ShouldLaunchHumanFriendMenu = TRUE
|
|
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
|
|
IF IS_BIT_SET (BitSet_CellphoneDisplay_Continued, g_BSC_LAUNCH_FINALE_CONTACTS)
|
|
|
|
b_ShouldLaunchHumanFriendMenu = FALSE //Critical! Make sure we completely ignore human friends in finale list.
|
|
|
|
ENDIF
|
|
|
|
|
|
IF b_ShouldLaunchHumanFriendMenu
|
|
|
|
//CL_TOP - MP list would just be normal....
|
|
m_sPlayers.m_selectedPlayerSlot = SF_SelectedContactInt - FriendSlot_StartingIndex
|
|
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintstring("appContacts - Human friend slot selected")
|
|
cdPrintnl()
|
|
PRINTLN("SF_SelectedContactInt: ", SF_SelectedContactInt)
|
|
PRINTLN("FriendSlot_StartingIndex: ", SF_SelectedContactInt)
|
|
PRINTLN("m_sPlayers.m_selectedPlayerSlot: ", m_sPlayers.m_selectedPlayerSlot)
|
|
#endif
|
|
|
|
|
|
Set_Up_Human_Friend_Menu()
|
|
|
|
ELSE
|
|
|
|
|
|
|
|
|
|
IF SF_SelectedContactInt < 0 //Scaleform can return -1 is the contact list hasn't been filled in time and the player really quickly presses X multiple times.
|
|
|
|
SF_SelectedContactInt = 0 //Set to zero if this is the case to prevent array overrrun. See bug 65344
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
|
|
|
|
g_TheContactInvolvedinCall = INT_TO_ENUM (enumCharacterList, (ContactListSlot[SF_SelectedContactInt]))
|
|
|
|
|
|
IF g_ForcedContactSelection <> NO_CHARACTER //A force is in place, that means no other contact bar the forced character can be selected...
|
|
|
|
#if IS_DEBUG_BUILD
|
|
PRINTNL()
|
|
PRINTSTRING ("AppContacts - A force selection of a contact is in place, will not take any action if selected contact does not match force.")
|
|
PRINTNL()
|
|
#endif
|
|
|
|
|
|
IF g_TheContactInvolvedinCall <> g_ForcedContactSelection
|
|
|
|
b_VoidContactSelectionDueToForce = TRUE //Selected character does not match force. Void further action.
|
|
|
|
ELSE
|
|
|
|
b_VoidContactSelectionDueToForce = FALSE
|
|
|
|
ENDIF
|
|
|
|
ELSE
|
|
|
|
b_VoidContactSelectionDueToForce = FALSE
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
IF b_VoidContactSelectionDueToForce = FALSE
|
|
IF IS_BIT_SET (BitSet_CellphoneDisplay, g_BS_SENDING_CELLPHONE_CAM_PIC)
|
|
|
|
|
|
IF NOT IS_BIT_SET (BitSet_CellphoneDisplay, g_BS_SENDPIC_CONTACT_SELECTED)
|
|
|
|
#if IS_DEBUG_BUILD
|
|
PRINTNL()
|
|
PRINTSTRING ("AppContacts - Fudge sending pic to chosen contact")
|
|
PRINTNL()
|
|
#endif
|
|
|
|
GLOBAL_CHARACTER_SHEET_SET_PICTURE_MESSAGE_STATUS(g_TheContactInvolvedinCall, HAS_PICMSG_STORED)
|
|
|
|
IF GLOBAL_CHARACTER_SHEET_GET_STATUS_AS_CALLER(g_TheContactInvolvedinCall, ENUM_TO_INT(g_Cellphone.PhoneOwner)) = UNKNOWN_CALLER
|
|
|
|
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_DATA_SLOT", (TO_FLOAT(4)), (TO_FLOAT(0)), (TO_FLOAT(1)),
|
|
INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM, "CELL_288",
|
|
"CELL_300",
|
|
g_CharacterSheetNonSaved[g_TheContactInvolvedinCall].phoneBookNumberLabel,
|
|
"CELL_195" )
|
|
|
|
|
|
ELSE
|
|
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_DATA_SLOT", (TO_FLOAT(4)), (TO_FLOAT(0)), (TO_FLOAT(1)),
|
|
INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM, "CELL_288",
|
|
g_sCharacterSheetAll[g_TheContactInvolvedinCall].picture,
|
|
g_sCharacterSheetAll[g_TheContactInvolvedinCall].label,
|
|
|
|
//Replaced .role with .label as this is no longer displayed - Steve T. 14/11/12. Done in a effort to reduce global usage.
|
|
g_sCharacterSheetAll[g_TheContactInvolvedinCall].label )
|
|
|
|
ENDIF
|
|
|
|
//Get rid of "send to" button
|
|
//LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieButtonsIndex, "SET_SOFT_KEYS", 1, 0,
|
|
//INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM, "CELL_250") //"Error!" - Other
|
|
|
|
|
|
|
|
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_SOFT_KEYS", BADGER_POS, 0,
|
|
1, INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM) //"Error!" - Other
|
|
|
|
|
|
|
|
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER (SF_MovieIndex, "DISPLAY_VIEW", 4) //Set enum state to call screen which can we use as a sending screen for just now...
|
|
|
|
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
cdPrintstring ("Display View 4 - appContacts 1")
|
|
cdPrintnl()
|
|
|
|
#endif
|
|
|
|
|
|
SET_BIT (BitSet_CellphoneDisplay, g_BS_SENDPIC_CONTACT_SELECTED)
|
|
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
|
|
ELSE
|
|
|
|
|
|
|
|
|
|
|
|
//Decide if we should display any friend, secondary or tertiary function besides call or hangout.
|
|
|
|
b_Secondary_Option_Available = FALSE
|
|
b_Friend_Option_Available = FALSE
|
|
|
|
|
|
IF g_bInMultiplayer
|
|
|
|
INT tempIndex = 0
|
|
|
|
|
|
WHILE tempIndex < MAX_SPECIAL_MP_CHARACTERS
|
|
|
|
|
|
IF ARE_STRINGS_EQUAL (g_sCharacterSheetAll[g_TheContactInvolvedinCall].label, g_SpecialMPCharacters[tempIndex].Name_TextLabel)
|
|
|
|
#if IS_DEBUG_BUILD
|
|
PRINTNL()
|
|
PRINTSTRING("Found special MP character at index ")
|
|
PRINTINT (tempIndex)
|
|
PRINTNL()
|
|
#endif
|
|
|
|
IF NOT ARE_STRINGS_EQUAL (g_SpecialMPCharacters[tempIndex].SecondaryFunctionLabel_1, "CELL_SFUN_NULL") //A secondary function must have been defined if the contents are no longer the predefined null.
|
|
|
|
b_Secondary_Option_Available = TRUE //If we need to support a tertiary option add an extra int so we can distinguish between
|
|
//secondary or tertiary calls.
|
|
|
|
i_Available_Option = tempIndex //Get a copy so we can extract the text label when constructing the menu.
|
|
|
|
ENDIF
|
|
|
|
|
|
//Set up call by using a global int to specify if the secondary option label is zero, 1 or 2 before do call.
|
|
//When Keith checks IS_CALLING_CONTACT (CHAR_EXAMPLE)
|
|
//He can interrogate the global to see if it's a function call or a normal call (i.e the global int is zero)
|
|
|
|
|
|
|
|
ENDIF
|
|
|
|
tempIndex ++
|
|
|
|
ENDWHILE
|
|
|
|
ELSE //SP
|
|
|
|
INT tempIndex = 0
|
|
|
|
|
|
WHILE tempIndex < MAX_SPECIAL_SP_CHARACTERS
|
|
|
|
|
|
IF ARE_STRINGS_EQUAL (g_sCharacterSheetAll[g_TheContactInvolvedinCall].label, g_SpecialSPCharacters[tempIndex].Name_TextLabel)
|
|
|
|
#if IS_DEBUG_BUILD
|
|
PRINTNL()
|
|
PRINTSTRING("Found special SP character at index ")
|
|
PRINTINT (tempIndex)
|
|
PRINTNL()
|
|
#endif
|
|
|
|
IF NOT ARE_STRINGS_EQUAL (g_SpecialSPCharacters[tempIndex].SecondaryFunctionLabel_1, "CELL_SFUN_NULL") //A secondary function must have been defined if the contents are no longer the predefined null.
|
|
|
|
b_Secondary_Option_Available = TRUE
|
|
|
|
i_Available_Option = tempIndex //Get a copy so we can extract the text label when constructing the menu.
|
|
|
|
|
|
//quick unref hack.
|
|
IF i_Available_Option = i_Available_Option
|
|
|
|
//do nothing.
|
|
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
|
|
ENDIF
|
|
|
|
tempIndex ++
|
|
|
|
ENDWHILE
|
|
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
|
|
IF IS_THIS_CHARACTER_FRIEND_OF_CURRENT_PLAYER_CHAR (g_TheContactInvolvedinCall)
|
|
AND (IS_BIT_SET (BitSet_CellphoneDisplay_Continued, g_BSC_LAUNCH_FINALE_CONTACTS) = FALSE) //See bug 823426 - No hangout option during finale choice list.
|
|
|
|
IF (CAN_CHARS_ARRANGE_FRIEND_ACTIVITY (g_TheContactInvolvedinCall, g_Cellphone.PhoneOwner) = FALSE)
|
|
AND (CAN_CHARS_CANCEL_FRIEND_ACTIVITY (g_TheContactInvolvedinCall, g_Cellphone.PhoneOwner) = FALSE)
|
|
|
|
b_Friend_Option_Available = FALSE
|
|
|
|
ELSE
|
|
|
|
b_Friend_Option_Available = TRUE
|
|
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
|
|
|
|
IF IS_BIT_SET (BitSet_CellphoneDisplay_Continued, g_BSC_LAUNCH_FINALE_CONTACTS)
|
|
|
|
Set_Up_FinaleConfirmationScreen()
|
|
|
|
b_DoFinaleConfirmation = TRUE
|
|
|
|
ELSE
|
|
|
|
IF b_Friend_Option_Available = FALSE
|
|
AND b_Secondary_Option_Available = FALSE
|
|
|
|
//No other option available, just make the standard call.
|
|
g_b_Is_This_An_Activity_Call = FALSE
|
|
g_b_Is_This_An_Activity_Cancellation_Call = FALSE
|
|
g_b_Is_This_A_Secondary_Function_Call = FALSE
|
|
|
|
|
|
IF IS_BIT_SET (BitSet_CellphoneDisplay_Continued, g_BSC_PREVENT_CALL_FOR_CHAR_DETONATEPHONE)
|
|
AND g_TheContactInvolvedinCall = CHAR_DETONATEPHONE // See bug 942408
|
|
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintnl()
|
|
cdPrintstring("AppCONTACTS - CHAR_DETONATEPHONE selected but further action blocked by bit set.")
|
|
cdPrintnl()
|
|
#endif
|
|
|
|
ELSE
|
|
|
|
Do_Call()
|
|
|
|
ENDIF
|
|
|
|
ELSE //Hitting this clause means either a friend option or a secondary option is available.
|
|
|
|
Set_Up_Call_Hangout_Secondary_Cancel_Menu()
|
|
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
|
|
/*Commented out 11.12.12 - simplifying this section as the finale contact list is currently not needed but secondary functions now need support in list.
|
|
IF IS_THIS_CHARACTER_FRIEND_OF_CURRENT_PLAYER_CHAR (g_TheContactInvolvedinCall)
|
|
AND (IS_BIT_SET (BitSet_CellphoneDisplay_Continued, g_BSC_LAUNCH_FINALE_CONTACTS) = FALSE) //See bug 823426 - No hangout option during finale choice list.
|
|
|
|
|
|
|
|
|
|
//IF (HAVE_CHARS_ARRANGED_FRIEND_ACTIVITY (g_TheContactInvolvedinCall, g_Cellphone.PhoneOwner) = FALSE)
|
|
//AND (HAS_CHAR_ARRANGED_FRIEND_ACTIVITY (g_Cellphone.PhoneOwner) = TRUE)
|
|
|
|
//Changed at Sam's request (827347) - Section 1. If a current friend is selected and we can't arrange an activity and cannot cancel an activity either
|
|
//then we go to a normal call.
|
|
IF (CAN_CHARS_ARRANGE_FRIEND_ACTIVITY (g_TheContactInvolvedinCall, g_Cellphone.PhoneOwner) = FALSE)
|
|
AND (CAN_CHARS_CANCEL_FRIEND_ACTIVITY (g_TheContactInvolvedinCall, g_Cellphone.PhoneOwner) = FALSE)
|
|
|
|
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintstring("AppCONTACTS - Unable to ARRANGE and unable to CANCEL activity. Proceeding with normal story call.")
|
|
cdPrintnl()
|
|
#endif
|
|
|
|
g_b_Is_This_An_Activity_Call = FALSE
|
|
g_b_Is_This_An_Activity_Cancellation_Call = FALSE
|
|
|
|
|
|
|
|
Do_Call()
|
|
|
|
ELSE
|
|
|
|
//Changed at Sam's request (827347) - Section 2.
|
|
//Commented section here was used to prevent any hangout or cancel menu appearing if the player was on a mission.
|
|
//This will be handled by Friend public function checks in Set_Up_Call_Hangout_Secondary_Cancel_Menu procedure .
|
|
//IF IS_CURRENTLY_ON_MISSION_TO_TYPE() = FALSE
|
|
|
|
|
|
Set_Up_Call_Hangout_Secondary_Cancel_Menu()
|
|
|
|
|
|
//ELSE
|
|
|
|
//g_b_Is_This_An_Activity_Call = FALSE
|
|
//g_b_Is_This_An_Activity_Cancellation_Call = FALSE
|
|
|
|
|
|
//Do_Call()
|
|
|
|
//ENDIF
|
|
|
|
ENDIF
|
|
|
|
ELSE
|
|
|
|
|
|
|
|
|
|
//Finale Choice Confirmation cued if necessary...
|
|
|
|
IF IS_BIT_SET (BitSet_CellphoneDisplay_Continued, g_BSC_LAUNCH_FINALE_CONTACTS)
|
|
|
|
|
|
Set_Up_FinaleConfirmationScreen()
|
|
|
|
b_DoFinaleConfirmation = TRUE
|
|
|
|
|
|
ELSE
|
|
|
|
|
|
|
|
//Set bools to specify this is a story call here!
|
|
g_b_Is_This_An_Activity_Call = FALSE
|
|
g_b_Is_This_An_Activity_Cancellation_Call = FALSE
|
|
|
|
Do_Call()
|
|
|
|
ENDIF
|
|
|
|
|
|
ENDIF
|
|
End of comment out 11.12.12 */
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ENDIF
|
|
ENDIF
|
|
|
|
|
|
ENDIF //Story / Human delimiter check.
|
|
|
|
ENDIF //End.
|
|
|
|
ENDIF
|
|
|
|
ENDIF
|
|
ENDIF
|
|
|
|
|
|
ENDPROC
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
PROC Check_For_Numpad_Selection()
|
|
|
|
|
|
|
|
|
|
IF NOT IS_PED_INJURED (PLAYER_PED_ID())
|
|
|
|
//DISABLE_JUMP (PLAYER_ID()) //disable jump every frame so we can use PS3 square button.
|
|
DISABLE_CONTROL_ACTION (PLAYER_CONTROL, INPUT_JUMP)
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
IF Is_Phone_Control_Just_Pressed (FRONTEND_CONTROL, INT_TO_ENUM (CONTROL_ACTION, PHONE_POSITIVE_INPUT))
|
|
|
|
|
|
Play_Select_Beep()
|
|
|
|
|
|
g_InputButtonJustPressed = TRUE
|
|
|
|
|
|
|
|
INT testReturnedSFInt
|
|
|
|
//testReturnedSFInt = LEGACY_SCALEFORM_MOVIE_METHOD (SF_MovieIndex, "GET_CURRENT_SELECTION")
|
|
|
|
BEGIN_SCALEFORM_MOVIE_METHOD (SF_MovieIndex, "GET_CURRENT_SELECTION")
|
|
|
|
Choice_ReturnedSFIndex = END_SCALEFORM_MOVIE_METHOD_RETURN_VALUE()
|
|
|
|
WHILE NOT IS_SCALEFORM_MOVIE_METHOD_RETURN_VALUE_READY (Choice_ReturnedSFIndex)
|
|
|
|
WAIT (0)
|
|
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintstring("appContacts - Waiting on scaleform return during numpad selection.")
|
|
cdPrintnl()
|
|
#endif
|
|
|
|
ENDWHILE
|
|
|
|
|
|
|
|
|
|
testReturnedSFInt = GET_SCALEFORM_MOVIE_METHOD_RETURN_VALUE_INT (Choice_ReturnedSFIndex)
|
|
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintstring("RETURNED INT IS ")
|
|
cdPrintint (testReturnedSFInt)
|
|
cdPrintnl()
|
|
#endif
|
|
|
|
|
|
|
|
|
|
SelectedNumpadIndex = NumpadSlot[testReturnedSFInt]
|
|
|
|
|
|
//NewStringToAppend[NewStringIndex] = GET_STRING_FROM_TEXT_FILE (NumpadList[SelectedNumpadIndex].NumpadLabel)
|
|
|
|
|
|
|
|
NewStringToAppend[0] = GET_FILENAME_FOR_AUDIO_CONVERSATION (NumpadList[SelectedNumpadIndex].NumpadLabel)
|
|
|
|
|
|
|
|
|
|
IF ARE_STRINGS_EQUAL (NewStringToAppend[0], "*") //Redial button has been pressed.
|
|
|
|
NumpadEntryString = g_Redial_NumpadEntryString[g_Cellphone.PhoneOwner] //Numpad entry string now becomes whatever was previously stored the last time a manual call was made.
|
|
|
|
NewStringIndex = GET_LENGTH_OF_LITERAL_STRING (NumpadEntryString) //Update length of current working string to reflect that of newly copied contents.
|
|
|
|
|
|
ELSE
|
|
|
|
IF GET_LENGTH_OF_LITERAL_STRING (NumpadEntryString) < 14 //Maximum phone number length set to 12 digits - will change to a defined constant.
|
|
|
|
NumpadEntryString += NewStringToAppend[0]
|
|
|
|
NewStringIndex ++
|
|
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
|
|
//LEGACY_SCALEFORM_MOVIE_METHOD_WITH_LITERAL_STRING (SF_MovieIndex, "SET_HEADER", NumpadEntryString)
|
|
|
|
BEGIN_SCALEFORM_MOVIE_METHOD(SF_MovieIndex, "SET_HEADER")
|
|
BEGIN_TEXT_COMMAND_SCALEFORM_STRING("STRING")
|
|
ADD_TEXT_COMPONENT_SUBSTRING_PHONE_NUMBER(NumpadEntryString)
|
|
END_TEXT_COMMAND_SCALEFORM_STRING()
|
|
END_SCALEFORM_MOVIE_METHOD()
|
|
|
|
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
|
|
IF Is_Phone_Control_Just_Pressed (FRONTEND_CONTROL, INT_TO_ENUM (CONTROL_ACTION, INPUT_CELLPHONE_OPTION)) //Delete character from number string
|
|
//Potential conflict with car exit but as this is undocumented worthwhile leaving in for just now...
|
|
|
|
Play_Back_Beep()
|
|
|
|
|
|
g_InputButtonJustPressed = TRUE
|
|
|
|
|
|
IF GET_LENGTH_OF_LITERAL_STRING (NumpadEntryString) > 0 //Don't truncate a string that's already of zero length...
|
|
|
|
//NumpadEntryString = GET_FIRST_N_CHARACTERS_OF_LITERAL_STRING (NumpadEntryString, (NewStringIndex - 1))
|
|
|
|
NumpadEntryString = GET_CHARACTER_FROM_AUDIO_CONVERSATION_FILENAME (NumpadEntryString, 0, (NewStringIndex - 1))
|
|
|
|
NewStringIndex --
|
|
|
|
ENDIF
|
|
|
|
//Graeme says fix!
|
|
//LEGACY_SCALEFORM_MOVIE_METHOD_WITH_LITERAL_STRING (SF_MovieIndex, "SET_HEADER", NumpadEntryString)
|
|
|
|
BEGIN_SCALEFORM_MOVIE_METHOD(SF_MovieIndex, "SET_HEADER")
|
|
BEGIN_TEXT_COMMAND_SCALEFORM_STRING("STRING")
|
|
ADD_TEXT_COMPONENT_SUBSTRING_PHONE_NUMBER(NumpadEntryString)
|
|
END_TEXT_COMMAND_SCALEFORM_STRING()
|
|
END_SCALEFORM_MOVIE_METHOD()
|
|
|
|
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
|
|
IF Is_Phone_Control_Just_Pressed (FRONTEND_CONTROL, INT_TO_ENUM (CONTROL_ACTION, PHONE_SPECIAL_OPTION_INPUT)) //Call entered number...
|
|
|
|
IF NOT Is_SinglePlayer_Climbing() //See 843727 - Don't allow dial out while on ladder.
|
|
|
|
|
|
|
|
Play_Select_Beep()
|
|
|
|
|
|
//Copy newly entered string into redial var...
|
|
g_Redial_NumpadEntryString[g_Cellphone.PhoneOwner] = NumpadEntryString
|
|
|
|
|
|
//Assign TheContactInvolvedInCall to a dummy character in case no match is found to the entered number in the next section...
|
|
//Do this before assigning state to prevent inadvertent return of residual contact. See bug 375586
|
|
g_TheContactInvolvedinCall = CHAR_BLANK_ENTRY
|
|
|
|
DialledNumberHasGameworldAssociation = FALSE
|
|
|
|
|
|
//Set Phone Display State to "attempting to call contact" and update the view state enum with the required data.
|
|
|
|
IF g_CellPhone.PhoneDS > PDS_AWAY //make sure that the following state assignment cannot interfere with AWAY or DISABLED assignment.
|
|
|
|
g_CellPhone.PhoneDS = PDS_ATTEMPTING_TO_CALL_CONTACT
|
|
|
|
LaunchTransitionMoveUpIfRequired()
|
|
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintnl()
|
|
cdPrintstring("STATE ASSIGNMENT 16. appContacts assigns PDS_ATTEMPTING_TO_CALL_CONTACT and LaunchTransitionMoveUpIfRequired()")
|
|
cdPrintnl()
|
|
#endif
|
|
|
|
|
|
|
|
IF IS_PLAYER_PLAYING (PLAYER_ID())
|
|
IF NOT IS_ENTITY_IN_WATER (PLAYER_PED_ID()) //Make sure player doesn't try to put the phone to his ear in SP, as the phone call gets aborted immediately in water. See bug 907295.
|
|
IF IS_PED_IN_COVER(PLAYER_PED_ID())
|
|
|
|
IF NOT IsCurrentCamFirstPerson()
|
|
|
|
Put_Cellphone_To_Ear() //Having the cellphone beside the ear in cover in first person can cause clipping problems.
|
|
|
|
ENDIF
|
|
|
|
ELSE
|
|
|
|
IF ShouldFirstPersonPhoneHudMovementBeHidden() = FALSE //Added for 2038700, this delays first person mode from putting the phone to ear immediately.
|
|
//It will go to ear on foot when the cellphone conversation starts from PlayCellphoneConversation()
|
|
|
|
Put_Cellphone_To_Ear()
|
|
|
|
|
|
ENDIF
|
|
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
//Need to go through list of contacts currently in phonebook and assigned contact involved in call to that contact...
|
|
INT contactListIndex = 0
|
|
|
|
BypassGameAssociation = FALSE
|
|
|
|
STRING TempComparisonString
|
|
|
|
INT iMaxCharacter = ENUM_TO_INT(GLOBAL_CHARACTER_SHEET_GET_MAX_CHARACTERS_FOR_GAMEMODE())
|
|
WHILE contactListIndex < iMaxCharacter
|
|
enumCharacterList eContactListCharacter = INT_TO_ENUM (enumCharacterList, contactListIndex)
|
|
IF (eContactListCharacter) <> CHAR_DIRECTOR //For 2260082, we need to stop the manually dialled phone number picking up the associated contact.
|
|
//It needs to go through the DialledNumberHasGameworldAssociation branch to work correctly.
|
|
|
|
TempComparisonString = GET_FILENAME_FOR_AUDIO_CONVERSATION (g_CharacterSheetNonSaved[contactListIndex].phonebookNumberLabel)
|
|
|
|
IF ARE_STRINGS_EQUAL (TempComparisonString, NumpadEntryString)
|
|
|
|
|
|
IF GLOBAL_CHARACTER_SHEET_GET_PHONEBOOK_STATE(eContactListCharacter, ENUM_TO_INT (g_Cellphone.PhoneOwner)) = LISTED //make sure that we only search for contacts in a phonebook, not the entire character sheet.
|
|
OR GLOBAL_CHARACTER_SHEET_GET_PHONEBOOK_STATE(eContactListCharacter, ENUM_TO_INT (g_Cellphone.PhoneOwner)) = SPECIAL_NUMBERS
|
|
OR ARE_STRINGS_EQUAL (TempComparisonString, GET_FILENAME_FOR_AUDIO_CONVERSATION (g_CharacterSheetNonSaved[CHAR_CALL911].phonebookNumberLabel))
|
|
|
|
g_TheContactInvolvedinCall = (eContactListCharacter)
|
|
|
|
ELSE
|
|
|
|
BypassGameAssociation = TRUE //This contact had a matching number to the entry string but is not listed. It may have an acceptable
|
|
//gameworld format, but we don't want to play any generic answerphone, just engaged.
|
|
|
|
ENDIF
|
|
|
|
|
|
ENDIF
|
|
|
|
|
|
ENDIF
|
|
|
|
|
|
//ENDIF
|
|
|
|
contactListIndex ++
|
|
|
|
|
|
ENDWHILE
|
|
|
|
|
|
//If number not found... keep contact as blank.
|
|
|
|
|
|
IF g_TheContactInvolvedinCall = CHAR_BLANK_ENTRY //CHAR_BLANK_ENTRY persists, we didn't find a match.
|
|
AND DialledNumberHasGameworldAssociation = FALSE
|
|
AND BypassGameAssociation = FALSE
|
|
|
|
//Bug 207898
|
|
BEGIN_SCALEFORM_MOVIE_METHOD(SF_MovieIndex, "SET_DATA_SLOT")
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(4)
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(0)
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(3)//(1)
|
|
|
|
BEGIN_TEXT_COMMAND_SCALEFORM_STRING("STRING")
|
|
ADD_TEXT_COMPONENT_SUBSTRING_PHONE_NUMBER(NumpadEntryString)
|
|
END_TEXT_COMMAND_SCALEFORM_STRING()
|
|
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("CELL_300")
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("CELL_211")
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("CELL_195")
|
|
|
|
END_SCALEFORM_MOVIE_METHOD()
|
|
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER (SF_MovieIndex, "DISPLAY_VIEW", 4) //Set enum state to call screen which can we use as a sending screen for just now...
|
|
|
|
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
cdPrintstring ("Display View 4 - appContacts 2")
|
|
cdPrintnl()
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
//Check for gameworld answerphone message.
|
|
DialledNumberHasGameworldAssociation = FALSE
|
|
|
|
|
|
INT gwNumIndex = 0
|
|
|
|
WHILE gwNumIndex < (ENUM_TO_INT(MAX_GAMEWORLD_NUMBERS))
|
|
|
|
STRING TempGWComparisonString
|
|
|
|
TempGWComparisonString = GET_FILENAME_FOR_AUDIO_CONVERSATION (g_GameworldNumber[gwNumIndex].Gameworld_DialledNumberLabel)
|
|
|
|
IF ARE_STRINGS_EQUAL (TempGWComparisonString, NumpadEntryString)
|
|
|
|
DialledNumberHasGameworldAssociation = TRUE
|
|
GameworldAssociatedRoot = g_GameworldNumber[gwNumIndex].Gameworld_AnsphoneLabelRoot
|
|
GameworldAssociatedVoice = g_GameworldNumber[gwNumIndex].Gameworld_VoiceID
|
|
|
|
ENDIF
|
|
|
|
|
|
gwNumIndex ++
|
|
|
|
ENDWHILE
|
|
|
|
|
|
|
|
//Also check for Numpad entry string formats here to play random messages if no gameworld asssociation has been found. See bug 913635.
|
|
IF DialledNumberHasGameworldAssociation = FALSE
|
|
|
|
NumpadEntryStringLength = GET_LENGTH_OF_LITERAL_STRING (NumpadEntryString)
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
PRINTSTRING("AppCONTACTS - Numpad Entry string length was...")
|
|
PRINTINT(NumpadEntryStringLength)
|
|
PRINTNL()
|
|
PRINTSTRING(NumpadEntryString)
|
|
PRINTNL()
|
|
|
|
#endif
|
|
|
|
IF NumpadEntryStringLength > 6 //only check for number format if string is seven characters or more...
|
|
|
|
|
|
|
|
|
|
singleCharacter[0] = GET_CHARACTER_FROM_AUDIO_CONVERSATION_FILENAME (NumpadEntryString, 0, 1)
|
|
singleCharacter[1] = GET_CHARACTER_FROM_AUDIO_CONVERSATION_FILENAME (NumpadEntryString, 1, 2)
|
|
singleCharacter[2] = GET_CHARACTER_FROM_AUDIO_CONVERSATION_FILENAME (NumpadEntryString, 2, 3)
|
|
singleCharacter[3] = GET_CHARACTER_FROM_AUDIO_CONVERSATION_FILENAME (NumpadEntryString, 3, 4)
|
|
|
|
singleCharacter[4] = GET_CHARACTER_FROM_AUDIO_CONVERSATION_FILENAME (NumpadEntryString, 4, 5)
|
|
singleCharacter[5] = GET_CHARACTER_FROM_AUDIO_CONVERSATION_FILENAME (NumpadEntryString, 5, 6)
|
|
|
|
|
|
//Check for 1-999 format.
|
|
IF ARE_STRINGS_EQUAL (singleCharacter[0], "1")
|
|
AND ARE_STRINGS_EQUAL (singleCharacter[1], "9")
|
|
AND ARE_STRINGS_EQUAL (singleCharacter[2], "9")
|
|
AND ARE_STRINGS_EQUAL (singleCharacter[3], "9")
|
|
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
|
|
PRINTSTRING ("1-999 format identified. Grabbed two decision characters that occur after 9.")
|
|
PRINTNL()
|
|
PRINTSTRING (singleCharacter[4])
|
|
PRINTNL()
|
|
PRINTSTRING (singleCharacter[5])
|
|
PRINTNL()
|
|
|
|
#endif
|
|
|
|
|
|
INT DecisionInt1, DecisionInt2
|
|
|
|
|
|
//Converts the text labels into an by returnin an int from large string comparison lookup table.
|
|
DecisionInt1 = ConvertSingleCharacter(singleCharacter[4])
|
|
DecisionInt2 = ConvertSingleCharacter(singleCharacter[5])
|
|
|
|
|
|
//Root and voices assigned via this.
|
|
Pass_Decision_Characters_Into_Algorithm (DecisionInt1, DecisionInt2)
|
|
|
|
DialledNumberHasGameworldAssociation = TRUE
|
|
|
|
|
|
|
|
ENDIF //End of Check for 1-999
|
|
|
|
|
|
|
|
|
|
|
|
IF DialledNumberHasGameworldAssociation = FALSE //No 1999 number was found above...
|
|
|
|
//Check for format xxx_555_01xx
|
|
|
|
IF NumpadEntryStringLength = 10
|
|
OR NumpadEntryStringLength = 7
|
|
|
|
|
|
|
|
|
|
IF NumpadEntryStringLength = 10
|
|
|
|
singleCharacter[0] = GET_CHARACTER_FROM_AUDIO_CONVERSATION_FILENAME (NumpadEntryString, 3, 4)
|
|
singleCharacter[1] = GET_CHARACTER_FROM_AUDIO_CONVERSATION_FILENAME (NumpadEntryString, 4, 5)
|
|
singleCharacter[2] = GET_CHARACTER_FROM_AUDIO_CONVERSATION_FILENAME (NumpadEntryString, 5, 6)
|
|
singleCharacter[3] = GET_CHARACTER_FROM_AUDIO_CONVERSATION_FILENAME (NumpadEntryString, 6, 7)
|
|
singleCharacter[4] = GET_CHARACTER_FROM_AUDIO_CONVERSATION_FILENAME (NumpadEntryString, 7, 8)
|
|
|
|
singleCharacter[5] = GET_CHARACTER_FROM_AUDIO_CONVERSATION_FILENAME (NumpadEntryString, 8, 9)
|
|
singleCharacter[6] = GET_CHARACTER_FROM_AUDIO_CONVERSATION_FILENAME (NumpadEntryString, 9, 10)
|
|
|
|
ELSE //Must be 7.
|
|
|
|
singleCharacter[0] = GET_CHARACTER_FROM_AUDIO_CONVERSATION_FILENAME (NumpadEntryString, 0, 1)
|
|
singleCharacter[1] = GET_CHARACTER_FROM_AUDIO_CONVERSATION_FILENAME (NumpadEntryString, 1, 2)
|
|
singleCharacter[2] = GET_CHARACTER_FROM_AUDIO_CONVERSATION_FILENAME (NumpadEntryString, 2, 3)
|
|
singleCharacter[3] = GET_CHARACTER_FROM_AUDIO_CONVERSATION_FILENAME (NumpadEntryString, 3, 4)
|
|
singleCharacter[4] = GET_CHARACTER_FROM_AUDIO_CONVERSATION_FILENAME (NumpadEntryString, 4, 5)
|
|
|
|
singleCharacter[5] = GET_CHARACTER_FROM_AUDIO_CONVERSATION_FILENAME (NumpadEntryString, 5, 6)
|
|
singleCharacter[6] = GET_CHARACTER_FROM_AUDIO_CONVERSATION_FILENAME (NumpadEntryString, 6, 7)
|
|
|
|
ENDIF
|
|
|
|
|
|
#if IS_DEBUG_BUILD
|
|
PRINTNL()
|
|
PRINTSTRING (singleCharacter[0])
|
|
PRINTNL()
|
|
PRINTSTRING (singleCharacter[1])
|
|
PRINTNL()
|
|
PRINTSTRING (singleCharacter[2])
|
|
PRINTNL()
|
|
PRINTSTRING (singleCharacter[3])
|
|
PRINTNL()
|
|
PRINTSTRING (singleCharacter[4])
|
|
PRINTNL()
|
|
#endif
|
|
|
|
|
|
IF ARE_STRINGS_EQUAL (singleCharacter[0], "5")
|
|
AND ARE_STRINGS_EQUAL (singleCharacter[1], "5")
|
|
AND ARE_STRINGS_EQUAL (singleCharacter[2], "5")
|
|
AND ARE_STRINGS_EQUAL (singleCharacter[3], "0")
|
|
AND ARE_STRINGS_EQUAL (singleCharacter[4], "1")
|
|
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
IF NumpadEntryStringLength = 10
|
|
PRINTNL()
|
|
PRINTSTRING ("xxx_555_01xx area code format identified. Grabbed last two decision characters")
|
|
ELSE
|
|
PRINTSTRING ("555_01xx no area code format identified. Grabbed last two decision characters")
|
|
ENDIF
|
|
PRINTNL()
|
|
PRINTSTRING (singleCharacter[5])
|
|
PRINTNL()
|
|
PRINTSTRING (singleCharacter[6])
|
|
PRINTNL()
|
|
|
|
#endif
|
|
|
|
|
|
INT DecisionInt1, DecisionInt2
|
|
|
|
|
|
//Converts the text labels into an by returnin an int from large string comparison lookup table.
|
|
DecisionInt1 = ConvertSingleCharacter(singleCharacter[5])
|
|
DecisionInt2 = ConvertSingleCharacter(singleCharacter[6])
|
|
|
|
|
|
//Root and voices assigned via this.
|
|
Pass_Decision_Characters_Into_Algorithm (DecisionInt1, DecisionInt2)
|
|
|
|
DialledNumberHasGameworldAssociation = TRUE
|
|
|
|
|
|
|
|
ENDIF //End of Check for format xxx_555_01xx, 555_01xx
|
|
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ENDIF
|
|
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ELSE
|
|
|
|
//We must have found a match for the number in the contacts list.
|
|
|
|
|
|
|
|
//If the chosen contact is a special number, e.g 911, classify it as a known caller so as to display the full information nn the phone calling screen.
|
|
IF GLOBAL_CHARACTER_SHEET_GET_PHONEBOOK_STATE(g_TheContactInvolvedinCall, ENUM_TO_INT (g_Cellphone.PhoneOwner))= SPECIAL_NUMBERS
|
|
OR g_TheContactInvolvedinCall = CHAR_CALL911
|
|
|
|
GLOBAL_CHARACTER_SHEET_SET_STATUS_AS_CALLER(g_TheContactInvolvedinCall, ENUM_TO_INT(g_Cellphone.PhoneOwner), KNOWN_CALLER)
|
|
|
|
IF g_TheContactInvolvedinCall = CHAR_CALL911
|
|
|
|
IF NOT (GLOBAL_CHARACTER_SHEET_GET_PHONEBOOK_STATE(CHAR_CALL911, 0) = LISTED) //If 911 is already listed for Michael then it has been added once already
|
|
|
|
//IF g_bInMultiplayer
|
|
|
|
//ADD_CONTACT_TO_PHONEBOOK (CHAR_CALL911, ALL_OWNERS_BOOKS, FALSE) //Once you get through to 911, add this contact as Emergency Services # 1409265
|
|
|
|
//ADD_CONTACT_TO_PHONEBOOK (CHAR_CALL911, MULTIPLAYER_BOOK, TRUE)
|
|
|
|
//ELSE
|
|
|
|
ADD_CONTACT_TO_PHONEBOOK (CHAR_CALL911, ALL_OWNERS_BOOKS) //Once you get through to 911, add this contact as Emergency Services # 1409265
|
|
|
|
ADD_CONTACT_TO_PHONEBOOK (CHAR_CALL911, MULTIPLAYER_BOOK, FALSE)
|
|
|
|
//ENDIF
|
|
|
|
|
|
ENDIF
|
|
|
|
|
|
IF g_bInMultiplayer
|
|
|
|
IF NOT IS_CONTACT_IN_PHONEBOOK (CHAR_CALL911, MULTIPLAYER_BOOK)
|
|
|
|
ADD_CONTACT_TO_PHONEBOOK (CHAR_CALL911, MULTIPLAYER_BOOK, TRUE)
|
|
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
IF GLOBAL_CHARACTER_SHEET_GET_STATUS_AS_CALLER(g_TheContactInvolvedinCall, ENUM_TO_INT(g_Cellphone.PhoneOwner)) = UNKNOWN_CALLER
|
|
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_DATA_SLOT", (TO_FLOAT(4)), (TO_FLOAT(0)), (TO_FLOAT(3)),
|
|
INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM,
|
|
g_CharacterSheetNonSaved[g_TheContactInvolvedinCall].phonebookNumberLabel,
|
|
"CELL_300",
|
|
"CELL_211",
|
|
"CELL_195")
|
|
|
|
ELSE
|
|
|
|
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_DATA_SLOT", (TO_FLOAT(4)), (TO_FLOAT(0)), (TO_FLOAT(3)),
|
|
INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM,
|
|
g_sCharacterSheetAll[g_TheContactInvolvedinCall].label,
|
|
g_sCharacterSheetAll[g_TheContactInvolvedinCall].picture,
|
|
"CELL_211",
|
|
|
|
//Replaced .role with .label as this is no longer displayed - Steve T. 14/11/12. Done in a effort to reduce global usage.
|
|
g_sCharacterSheetAll[g_TheContactInvolvedinCall].label)
|
|
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
Update_Scaleform_VSE ()
|
|
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
cdPrintnl()
|
|
cdPrintstring ("appCONTACTS_2 - Attempting to call contact with label: ")
|
|
cdPrintstring (g_sCharacterSheetAll[g_TheContactInvolvedinCall].label)
|
|
cdPrintstring (" which is charsheet entry ")
|
|
cdPrintint (ENUM_TO_INT(g_TheContactInvolvedInCall))
|
|
cdPrintnl()
|
|
|
|
#endif
|
|
|
|
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
ENDPROC
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
PROC PLAYER_CALL_CHAR_CELLPHONE_DECISION (structPedsForConversation &YourPedStruct, enumCharacterList WhichChar, STRING WhichBlockOfTextToLoad, STRING WhichRootLabel, enumConversationPriority PassedConversationPriority,
|
|
BOOL ShouldPhoneBeForcedOnScreen = TRUE,
|
|
enumSubtitlesState ShouldDisplaySubtitles = DISPLAY_SUBTITLES, enumBriefScreenState ShouldAddToBriefScreen = DO_ADD_TO_BRIEF_SCREEN,
|
|
BOOL IsThisInboundForCellphone = FALSE)
|
|
|
|
|
|
// IF IS_CURRENT_MISSION_DLC()
|
|
//
|
|
// #if IS_DEBUG_BUILD
|
|
//
|
|
// cdPrintnl()
|
|
// cdPrintstring ("AppContacts - making decision on which answerphone PLAYER_CALL routine to use... Ongoing DLC mission detected. Using V Content in DLC variant.")
|
|
// cdPrintnl()
|
|
//
|
|
// #endif
|
|
//
|
|
// //If a dlc mission is ongoing we need to make sure that the answerphone still points to legacy contact dialogue in american.rpf rather americanDLC.rpf
|
|
// PLAYER_CALL_CHAR_CELLPHONE_USING_V_CONTENT_IN_DLC (YourPedStruct, WhichChar, WhichBlockOfTextToLoad, WhichRootLabel, PassedConversationPriority, ShouldPhoneBeForcedOnScreen, ShouldDisplaySubtitles, ShouldAddToBriefScreen, IsThisInboundForCellphone)
|
|
//
|
|
// ELSE
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
IF g_bInMultiplayer
|
|
OR IS_FAKE_MULTIPLAYER_MODE_SET()
|
|
|
|
|
|
IF g_TheContactInvolvedinCall = CHAR_BENNYS_OMW //Lowrider Benny Answerphone message 2547521
|
|
|
|
|
|
IF g_bUse_MP_DLC_Dialogue = FALSE
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
cdPrintnl()
|
|
cdPrintstring ("AppContacts - ANSWERPHONE g_TheContactInvolvedinCall 2 = CHAR_BENNYS_OMW but g_bUse_MP_DLC_Dialogue was FALSE. Setting to TRUE. It probably should be.")
|
|
cdPrintnl()
|
|
|
|
#endif
|
|
|
|
g_bUse_MP_DLC_Dialogue = TRUE //This needs to be true to point the dialogue handler to americanDLC.rpf
|
|
|
|
ENDIF
|
|
|
|
//Note that WhichBlockOfTextToLoad is used here as Benny does not use the standard answerphone block.
|
|
PLAYER_CALL_CHAR_CELLPHONE (YourPedStruct, WhichChar, WhichBlockOfTextToLoad, WhichRootLabel, PassedConversationPriority, ShouldPhoneBeForcedOnScreen, ShouldDisplaySubtitles, ShouldAddToBriefScreen, IsThisInboundForCellphone)
|
|
|
|
|
|
ELSE
|
|
|
|
|
|
IF g_bUse_MP_DLC_Dialogue = TRUE
|
|
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
cdPrintnl()
|
|
cdPrintstring ("AppContacts - making decision on which answerphone PLAYER_CALL routine to use... Ongoing MP DLC mission detected. Using V Content in DLC variant in order to play legacy answerphone message.")
|
|
cdPrintnl()
|
|
|
|
#endif
|
|
|
|
|
|
UNUSED_PARAMETER(WhichBlockOfTextToLoad)
|
|
|
|
//If a dlc mission is ongoing we need to make sure that the answerphone still points to legacy contact dialogue in american.rpf rather americanDLC.rpf
|
|
PLAYER_CALL_CHAR_CELLPHONE_USING_V_CONTENT_IN_DLC (YourPedStruct, WhichChar, answerPhoneBlock, WhichRootLabel, PassedConversationPriority, ShouldPhoneBeForcedOnScreen, ShouldDisplaySubtitles, ShouldAddToBriefScreen, IsThisInboundForCellphone)
|
|
|
|
|
|
ELSE
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
cdPrintnl()
|
|
cdPrintstring ("AppContacts - making decision on which MP answerphone PLAYER_CALL routine to use... Using legacy V Content.")
|
|
cdPrintnl()
|
|
|
|
#endif
|
|
|
|
UNUSED_PARAMETER(WhichBlockOfTextToLoad)
|
|
|
|
PLAYER_CALL_CHAR_CELLPHONE (YourPedStruct, WhichChar, answerPhoneBlock, WhichRootLabel, PassedConversationPriority, ShouldPhoneBeForcedOnScreen, ShouldDisplaySubtitles, ShouldAddToBriefScreen, IsThisInboundForCellphone)
|
|
|
|
ENDIF
|
|
|
|
|
|
ENDIF
|
|
|
|
ELSE
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
cdPrintnl()
|
|
cdPrintstring ("AppContacts - making decision on which answerphone PLAYER_CALL routine to use... Using legacy V Content.")
|
|
cdPrintnl()
|
|
|
|
#endif
|
|
|
|
UNUSED_PARAMETER(WhichBlockOfTextToLoad)
|
|
|
|
PLAYER_CALL_CHAR_CELLPHONE (YourPedStruct, WhichChar, answerPhoneBlock, WhichRootLabel, PassedConversationPriority, ShouldPhoneBeForcedOnScreen, ShouldDisplaySubtitles, ShouldAddToBriefScreen, IsThisInboundForCellphone)
|
|
|
|
|
|
ENDIF
|
|
|
|
|
|
// ENDIF
|
|
|
|
ENDPROC
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
PROC Check_For_Answerphone_Timeout()
|
|
|
|
|
|
SWITCH cc_Progress
|
|
|
|
|
|
CASE CC_LAUNCH_TIMER_AND_CHECK_MESSAGE
|
|
|
|
//check for answerphone message availability here...
|
|
|
|
//launch timer and set pause length depending on whether or not an ans message is available.
|
|
|
|
//If gameworld answerphone label existed, get that root data in here otherwise do below. Also need to get voice id for answerphone message in there too.
|
|
|
|
|
|
|
|
IF g_TheContactInvolvedinCall = CHAR_BENNYS_OMW //Lowrider Benny Answerphone message 2547521
|
|
|
|
//Lowrider Benny Answerphone message 2547521
|
|
/*
|
|
[LOWCA_CALL10_1:LOWCAAU]
|
|
~z~This is Benny. You want something, come see me at the shop.
|
|
[LOWCA_CALL10_3:LOWCAAU]
|
|
~z~You don't want something, then why you calling?
|
|
*/
|
|
|
|
IF g_bUse_MP_DLC_Dialogue = FALSE
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
cdPrintnl()
|
|
cdPrintstring ("AppContacts - ANSWERPHONE g_TheContactInvolvedinCall 1 = CHAR_BENNYS_OMW but g_bUse_MP_DLC_Dialogue was FALSE. Setting to TRUE. It probably should be.")
|
|
cdPrintnl()
|
|
|
|
#endif
|
|
|
|
g_bUse_MP_DLC_Dialogue = TRUE //This needs to be true to point the dialogue handler to americanDLC.rpf
|
|
|
|
ENDIF
|
|
|
|
IF DOES_TEXT_BLOCK_EXIST ("LOWCAAU")
|
|
|
|
REQUEST_ADDITIONAL_TEXT_FOR_DLC ("LOWCAAU", DLC_AMBIENT_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 (DLC_AMBIENT_DIALOGUE_TEXT_SLOT) //the permanent global from the temporary holder.
|
|
WAIT(0)
|
|
ENDWHILE
|
|
|
|
ENDIF
|
|
|
|
Check_AnswerphoneLabel = "LOWCA_CALL10_1" //Benny's answerphone message from the Lowrider pack's americanNetDialogue.txt which is constructed into an americandlc.rpf
|
|
|
|
ELSE
|
|
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintnl()
|
|
cdPrintstring("AppCONTACTS - Check_For_Answerphone_Timeout() - Requesting standard answerPhoneBlock.")
|
|
cdPrintnl()
|
|
#endif
|
|
|
|
IF DOES_TEXT_BLOCK_EXIST (answerPhoneBlock)
|
|
|
|
REQUEST_ADDITIONAL_TEXT (answerPhoneBlock, PHONE_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 (PHONE_TEXT_SLOT) //the permanent global from the temporary holder.
|
|
WAIT(0)
|
|
ENDWHILE
|
|
|
|
ENDIF
|
|
|
|
Check_AnswerphoneLabel = g_CharacterSheetNonSaved[g_TheContactInvolvedinCall].ansphone_labelroot
|
|
Check_AnswerphoneLabel += "_1"
|
|
|
|
ENDIF
|
|
|
|
|
|
IF DOES_TEXT_LABEL_EXIST (Check_AnswerPhoneLabel)
|
|
OR DialledNumberHasGameworldAssociation = TRUE
|
|
|
|
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintnl()
|
|
cdPrintstring("AppCONTACTS - Check_For_Answerphone_Timeout() - Found Answerphone text label or DialledNumber has GW association.")
|
|
cdPrintnl()
|
|
#endif
|
|
|
|
|
|
|
|
|
|
Connection_PauseLength = Connection_AnsMsgPauseLength //Answerphone message does exist so we set the pause length to be whatever the AnsMsgPauseLength is.
|
|
|
|
IF IS_CALLING_CONTACT (CHAR_DETONATEPHONE) //Special Case for Brenda's TVBankIntro.sc
|
|
|
|
Connection_PauseLength = g_TVStockMarketIntro_CellphoneTimer //Brenda specifies this in singleplayer/include/globals/mission_globals.sch
|
|
|
|
ENDIF
|
|
|
|
|
|
ELSE
|
|
|
|
//It's possible to alter the pause between ringing and engaged here if need be..
|
|
//Connection_EngagedPauseLength = 10000
|
|
|
|
Connection_PauseLength = Connection_EngagedPauseLength //No answerphone available so we will elect to play the engaged tone after the defined pause if no flow script grabs the attempt to call the contact.
|
|
|
|
ENDIF
|
|
|
|
IF DialledNumberHasGameworldAssociation = TRUE
|
|
AND ARE_STRINGS_EQUAL (GameworldAssociatedRoot, "CELLPHONE_CHEAT")
|
|
AND g_bInMultiPlayer = FALSE
|
|
|
|
|
|
//We need to check if this cheat is a PS3 to PS4 / X360 to XBONE bonus.
|
|
|
|
//Look up list, previously defined in charsheet_public.sch
|
|
IF ARE_STRINGS_EQUAL (GameworldAssociatedVoice, "CHEAT_SEAPLANE")
|
|
OR ARE_STRINGS_EQUAL (GameworldAssociatedVoice, "CHEAT_DUELC")
|
|
OR ARE_STRINGS_EQUAL (GameworldAssociatedVoice, "CHEAT_BUBBLE")
|
|
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintnl()
|
|
cdPrintstring("AppCONTACTS - b_ThisIsLastGenBonusCheat now TRUE - matched CHEAT type to list.")
|
|
cdPrintnl()
|
|
#endif
|
|
|
|
b_ThisIsLastGenBonusCheat = TRUE
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
IF b_ThisIsLastGenBonusCheat
|
|
|
|
IF IS_LAST_GEN_PLAYER()
|
|
//AND g_DumpDisableEveryFrameCaller = FALSE // - Comment in to test.
|
|
|
|
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintnl()
|
|
cdPrintstring("AppCONTACTS - b_ThisIsLastGenBonusCheat is TRUE - player has last gen privileges. Proceeding.")
|
|
cdPrintnl()
|
|
#endif
|
|
|
|
b_ThisCheatBlocked = FALSE
|
|
|
|
ELSE
|
|
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintnl()
|
|
cdPrintstring("AppCONTACTS - b_ThisIsLastGenBonusCheat is TRUE but this player does not have last gen privileges. Blocking cheat.")
|
|
cdPrintnl()
|
|
#endif
|
|
|
|
b_ThisCheatBlocked = TRUE
|
|
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
IF b_ThisCheatBlocked = FALSE
|
|
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintnl()
|
|
cdPrintstring("AppCONTACTS - SP Initial check says GameworldAssociatedRoot was CELLPHONE_CHEAT - no block in place.")
|
|
cdPrintnl()
|
|
#endif
|
|
|
|
Connection_AttemptStartTime = GET_GAME_TIMER()
|
|
|
|
|
|
BEGIN_SCALEFORM_MOVIE_METHOD(SF_MovieIndex, "SET_DATA_SLOT")
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(4)
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(0)
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(3)//(1)
|
|
|
|
BEGIN_TEXT_COMMAND_SCALEFORM_STRING("STRING")
|
|
ADD_TEXT_COMPONENT_SUBSTRING_PHONE_NUMBER(NumpadEntryString)
|
|
END_TEXT_COMMAND_SCALEFORM_STRING()
|
|
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("CELL_300")
|
|
|
|
IF ARE_STRINGS_EQUAL (GameworldAssociatedVoice, "CHEAT_MONOC")
|
|
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("CELL_MONOSIGNAL")
|
|
|
|
ELSE
|
|
|
|
IF ARE_STRINGS_EQUAL (GameworldAssociatedVoice, "CHEAT_DIRECTOR") //2172238 - Display "Director Mode" on cellphone call screen when 1-999-LSTALENT is entered.
|
|
//IF IS_PC_VERSION() //Opening up director mode entry from phone for 2260082
|
|
|
|
#IF FEATURE_SP_DLC_DIRECTOR_MODE
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("CELL_DRCT") //Will display "Unknown" on other platforms if the cheat number is entered.
|
|
#ENDIF
|
|
|
|
#IF NOT FEATURE_SP_DLC_DIRECTOR_MODE
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("CELL_CHEAT")
|
|
#ENDIF
|
|
|
|
//ENDIF
|
|
ELSE
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("CELL_CHEAT") //Display "Cheat Processing" on cellphone call screen.
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("CELL_195")
|
|
|
|
END_SCALEFORM_MOVIE_METHOD()
|
|
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER (SF_MovieIndex, "DISPLAY_VIEW", 4)
|
|
|
|
|
|
cc_PROGRESS = CC_CHEAT_PAUSE
|
|
|
|
|
|
|
|
ELSE
|
|
|
|
|
|
cc_Progress = CC_CONNECTION_PAUSE
|
|
|
|
Connection_AttemptStartTime = GET_GAME_TIMER()
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
cdPrintnl()
|
|
cdPrintstring("AppCONTACTS - Aborting Cheat as cheat if blocked. Last gen privileges probably.")
|
|
cdPrintnl()
|
|
PRINTSTRING("Last gen privilege fail. Waiting for call connection...")
|
|
PRINTNL()
|
|
|
|
#endif
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
ELSE
|
|
|
|
cc_Progress = CC_CONNECTION_PAUSE
|
|
|
|
Connection_AttemptStartTime = GET_GAME_TIMER()
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
cdPrintnl()
|
|
cdPrintstring("AppCONTACTS - Waiting for call connection...")
|
|
cdPrintnl()
|
|
PRINTSTRING("Waiting for call connection...")
|
|
PRINTNL()
|
|
|
|
#endif
|
|
|
|
ENDIF
|
|
|
|
BREAK
|
|
|
|
|
|
|
|
CASE CC_CHEAT_PAUSE
|
|
|
|
|
|
Connection_AttemptCurrentTime = GET_GAME_TIMER()
|
|
|
|
|
|
IF Connection_AttemptCurrentTime - Connection_AttemptStartTime > 1500 //
|
|
|
|
cc_Progress = CC_PLAY_ANSWERPHONE //Skip any connection delays and go straight to processing...
|
|
|
|
ENDIF
|
|
|
|
|
|
BREAK
|
|
|
|
|
|
|
|
CASE CC_CONNECTION_PAUSE
|
|
|
|
Connection_AttemptCurrentTime = GET_GAME_TIMER()
|
|
|
|
//Loop remote connection tone...
|
|
|
|
|
|
IF Connection_PauseLength <> Connection_EngagedPauseLength
|
|
|
|
IF HAS_SOUND_FINISHED (Phone_Dialling_SoundID)
|
|
IF voiceSession.bConnectedCallOnGoing = FALSE
|
|
IF g_Use_Prologue_Cellphone
|
|
|
|
PLAY_SOUND_FRONTEND (Phone_Dialling_SoundID, "Dial_and_Remote_Ring", g_Owner_Soundset)
|
|
ELSE
|
|
|
|
//PLAY_SOUND_FRONTEND (Phone_Dialling_SoundID, "PHONE_GENERIC_REMOTE_RING_01")
|
|
|
|
IF Connection_AttemptCurrentTime - Connection_AttemptStartTime > 1700 //#1543287
|
|
PLAY_SOUND_FRONTEND (Phone_Dialling_SoundID, "Remote_Ring", g_Owner_Soundset)
|
|
ENDIF
|
|
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
ELSE
|
|
|
|
IF IS_CALLING_CONTACT (CHAR_CALL911) //Need to play the remote ring for the 911 call as a special case. It may be a few seconds before it is grabbed, so there's a danger of silence until a grab is made.
|
|
OR IS_CALLING_CONTACT (CHAR_CHAT_CALL) //Same as above for a human to human chat call. The remote ring will never trigger as it isn't truly grabbed.
|
|
OR IS_CALLING_CONTACT (CHAR_DETONATEBOMB)
|
|
|
|
IF HAS_SOUND_FINISHED (Phone_Dialling_SoundID)
|
|
IF voiceSession.bConnectedCallOnGoing = FALSE
|
|
IF g_Use_Prologue_Cellphone
|
|
|
|
PLAY_SOUND_FRONTEND (Phone_Dialling_SoundID, "Dial_and_Remote_Ring", g_Owner_Soundset)
|
|
ELSE
|
|
|
|
//PLAY_SOUND_FRONTEND (Phone_Dialling_SoundID, "PHONE_GENERIC_REMOTE_RING_01")
|
|
IF Connection_AttemptCurrentTime - Connection_AttemptStartTime > 1700 //#1543287
|
|
PLAY_SOUND_FRONTEND (Phone_Dialling_SoundID, "Remote_Ring", g_Owner_Soundset)
|
|
ENDIF
|
|
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
|
|
IF (Connection_AttemptCurrentTime - Connection_AttemptStartTime) > Connection_PauseLength
|
|
|
|
|
|
IF Connection_PauseLength = Connection_EngagedPauseLength //as the connection pause was equal to the defined engaged pause length then we know that it's an engaged tone we
|
|
//want to play if the "grab time" runs out. We didn't find an answerphone message above.
|
|
|
|
|
|
b_EngagedBypassCheck = FALSE
|
|
|
|
IF g_TheContactInvolvedinCall = CHAR_CALL911
|
|
OR g_TheContactInvolvedinCall = CHAR_CHAT_CALL
|
|
OR g_TheContactInvolvedinCall = CHAR_DETONATEBOMB
|
|
|
|
IF NOT (IS_BIT_SET (BitSet_CellphoneDisplay_Continued, g_BSC_SET_CHAT_CALL_AS_ENGAGED))
|
|
|
|
b_EngagedBypassCheck = TRUE
|
|
|
|
//Trial addition 29.03.13 to make #1136714 bomb out after ten seconds if emergencycall script hasn't picked up the call.
|
|
IF ((Connection_AttemptCurrentTime - Connection_AttemptStartTime) > ( Connection_PauseLength + 10000 ))
|
|
|
|
IF g_Cellphone.PhoneDS = PDS_ATTEMPTING_TO_CALL_CONTACT
|
|
IF g_TheContactInvolvedinCall = CHAR_CALL911
|
|
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintstring("appContacts - STATE_ASSIGNMENT 78777 - Was in attempting to call contact state for 911 but timed out!")
|
|
cdPrintstring("appContacts - STATE_ASSIGNMENT 78777 - Setting phone to PDS_AWAY.")
|
|
cdPrintnl()
|
|
#endif
|
|
|
|
|
|
g_Cellphone.PhoneDS = PDS_AWAY
|
|
|
|
ENDIF
|
|
ENDIF
|
|
|
|
ENDIF //end of trial addition.
|
|
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
|
|
IF NOT b_EngagedBypassCheck //Gives the 911 call and the MP chat call unlimited time to grab. It doesn't have an answerphone message, but we don't want it to be engaged.
|
|
|
|
cc_Progress = CC_ENGAGED
|
|
|
|
STOP_SOUND (Phone_Dialling_SoundID)
|
|
|
|
b_TrevorEngagedCurseSetup = FALSE
|
|
|
|
SETTIMERB(0) //Initialise pause for Trevor curse to cue.
|
|
|
|
IF GLOBAL_CHARACTER_SHEET_GET_STATUS_AS_CALLER(g_TheContactInvolvedinCall, ENUM_TO_INT(g_Cellphone.PhoneOwner)) = UNKNOWN_CALLER
|
|
|
|
IF g_TheContactInvolvedinCall = CHAR_CHAT_CALL
|
|
|
|
|
|
BEGIN_SCALEFORM_MOVIE_METHOD (SF_MovieIndex, "SET_DATA_SLOT")
|
|
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(4)
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(0)
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(2)
|
|
|
|
BEGIN_TEXT_COMMAND_SCALEFORM_STRING ("CELL_CONDFON") //~a~
|
|
|
|
ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME (g_ChatCallerString)
|
|
|
|
END_TEXT_COMMAND_SCALEFORM_STRING()
|
|
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("CELL_300") //Point to CHAR_DEFAULT headshot for just now...
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("CELL_220") //"BUSY"
|
|
|
|
|
|
|
|
|
|
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("CELL_219") //This field is invisible, so feel free to duplicate with previous text label.
|
|
|
|
|
|
END_SCALEFORM_MOVIE_METHOD ()
|
|
|
|
ELSE
|
|
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_DATA_SLOT", (TO_FLOAT(4)), (TO_FLOAT(0)), (TO_FLOAT(5)),
|
|
INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM,
|
|
g_CharacterSheetNonSaved[g_TheContactInvolvedinCall].phonebookNumberLabel,
|
|
"CELL_300",
|
|
"CELL_220",
|
|
"CELL_195")
|
|
|
|
ENDIF
|
|
|
|
|
|
ELSE
|
|
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_DATA_SLOT", (TO_FLOAT(4)), (TO_FLOAT(0)), (TO_FLOAT(5)),
|
|
INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM,
|
|
g_sCharacterSheetAll[g_TheContactInvolvedinCall].label,
|
|
g_sCharacterSheetAll[g_TheContactInvolvedinCall].picture,
|
|
"CELL_220",
|
|
|
|
//Replaced .role with .label as this is no longer displayed - Steve T. 14/11/12. Done in a effort to reduce global usage.
|
|
g_sCharacterSheetAll[g_TheContactInvolvedinCall].label)
|
|
|
|
|
|
ENDIF
|
|
|
|
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER (SF_MovieIndex, "DISPLAY_VIEW", 4) //Set enum state to call screen and update any changes
|
|
|
|
|
|
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
PRINTSTRING ("Connection time elapsed. No grab from flow. No ansphone msg. Phone set to engaged...")
|
|
PRINTNL()
|
|
cdPrintstring ("Display View 4 - appContacts 3")
|
|
cdPrintnl()
|
|
|
|
#endif
|
|
|
|
ENDIF
|
|
|
|
|
|
ELSE
|
|
|
|
cc_Progress = CC_PLAY_ANSWERPHONE //not equal to the engaged pause length so we must have found a answerphone message in the above segment.
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
|
|
PRINTSTRING ("Playing answerphone call...")
|
|
PRINTNL()
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
|
|
BREAK
|
|
|
|
|
|
CASE CC_PLAY_ANSWERPHONE
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
cdPRINTSTRING ("Cue answerphone message via dialogue handler. Terminating appContacts after call starts")
|
|
cdPRINTNL()
|
|
PRINTSTRING ("Cue answerphone message via dialogue handler. Terminating appContacts after call starts")
|
|
PRINTNL()
|
|
|
|
#endif
|
|
|
|
//We need to get the correct label to display so we get the enum of the selected contact and pass that in along with the audio block and a reference to the
|
|
//answerphone message for that contact defined in charsheet_initial.sc
|
|
//NB! Note that I'm not forcing the phone into hand. I'm altering the default behaviour since the player must already have the phone in hand as he has proactively called a contact.
|
|
|
|
|
|
|
|
//Check if this a gameworld number answerphone message or a contact.
|
|
|
|
IF DialledNumberHasGameworldAssociation = TRUE
|
|
|
|
|
|
IF ARE_STRINGS_EQUAL (GameworldAssociatedRoot, "CELLPHONE_CHEAT") //Check if this is a cheat type association that has been recognised from the number entry string.
|
|
AND g_bInMultiPlayer = FALSE //No cellphone cheats in MP!
|
|
|
|
//These are set up in Fill_Gameworld_Numbers within charsheet_public.
|
|
//For cellphone_cheats, the root should always be set up as "CELLPHONE_CHEAT", then the voice as unique to that cheat.
|
|
|
|
IF ARE_STRINGS_EQUAL (GameworldAssociatedVoice, "CHEAT_MONOC")
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
cdPrintnl()
|
|
cdPrintstring("Monochrome Test 1 recognised!")
|
|
cdPrintnl()
|
|
|
|
#endif
|
|
|
|
|
|
IF g_IsMonochromeCheatActive = FALSE
|
|
|
|
g_IsMonochromeCheatActive = TRUE
|
|
|
|
//Set theme to grey, can be overridden by the user simply selecting a new theme from settings.
|
|
g_savedGlobals.sCellphoneSettingsData.This_Cellphone_Owner_Settings[CHAR_MICHAEL].ThemeForThisPlayer = 5 //grey
|
|
g_savedGlobals.sCellphoneSettingsData.This_Cellphone_Owner_Settings[CHAR_TREVOR].ThemeForThisPlayer = 5 //grey
|
|
g_savedGlobals.sCellphoneSettingsData.This_Cellphone_Owner_Settings[CHAR_FRANKLIN].ThemeForThisPlayer = 5 //grey
|
|
|
|
|
|
IF IS_PLAYER_PLAYING (PLAYER_ID())
|
|
|
|
IF NOT (IS_PED_IN_ANY_VEHICLE (PLAYER_PED_ID(), TRUE))
|
|
IF NOT IS_EXPLOSION_IN_SPHERE(EXP_TAG_ROCKET, GET_ENTITY_COORDS(PLAYER_PED_ID()), 40.0)
|
|
|
|
ADD_EXPLOSION(GET_ENTITY_COORDS(PLAYER_PED_ID()) + <<0.0, 0.0, 2.0>>, EXP_TAG_ROCKET, 0.1)
|
|
|
|
ENDIF
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
|
|
ELSE
|
|
|
|
g_IsMonochromeCheatActive = FALSE
|
|
|
|
ENDIF
|
|
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
IF ARE_STRINGS_EQUAL (GameworldAssociatedVoice, "CHEAT_SUPJUM")
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintnl()
|
|
cdPrintstring("CHEAT_SUPJUM phone cheat recognised!")
|
|
cdPrintnl()
|
|
#endif
|
|
//From cheat_controller_public.sch
|
|
TRIGGER_CHEAT (CHEAT_TYPE_SUPER_JUMP)
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
IF ARE_STRINGS_EQUAL (GameworldAssociatedVoice, "CHEAT_HEALA")
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintnl()
|
|
cdPrintstring("CHEAT_HEALA phone cheat recognised!")
|
|
cdPrintnl()
|
|
#endif
|
|
//From cheat_controller_public.sch
|
|
TRIGGER_CHEAT (CHEAT_TYPE_GIVE_HEALTH_ARMOR)
|
|
ENDIF
|
|
|
|
|
|
|
|
IF ARE_STRINGS_EQUAL (GameworldAssociatedVoice, "CHEAT_SLIDEYC")
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintnl()
|
|
cdPrintstring("CHEAT_SLIDEYC phone cheat recognised!")
|
|
cdPrintnl()
|
|
#endif
|
|
//From cheat_controller_public.sch
|
|
TRIGGER_CHEAT (CHEAT_TYPE_SLIDEY_CARS)
|
|
ENDIF
|
|
|
|
|
|
|
|
IF ARE_STRINGS_EQUAL (GameworldAssociatedVoice, "CHEAT_FASTR")
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintnl()
|
|
cdPrintstring("CHEAT_FASTR phone cheat recognised!")
|
|
cdPrintnl()
|
|
#endif
|
|
//From cheat_controller_public.sch
|
|
TRIGGER_CHEAT (CHEAT_TYPE_FAST_RUN)
|
|
ENDIF
|
|
|
|
|
|
|
|
IF ARE_STRINGS_EQUAL (GameworldAssociatedVoice, "CHEAT_WANTDN")
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintnl()
|
|
cdPrintstring("CHEAT_WANTDN phone cheat recognised!")
|
|
cdPrintnl()
|
|
#endif
|
|
//From cheat_controller_public.sch
|
|
TRIGGER_CHEAT (CHEAT_TYPE_WANTED_LEVEL_DOWN)
|
|
ENDIF
|
|
|
|
|
|
|
|
IF ARE_STRINGS_EQUAL (GameworldAssociatedVoice, "CHEAT_WANTUP")
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintnl()
|
|
cdPrintstring("CHEAT_WANTUP phone cheat recognised!")
|
|
cdPrintnl()
|
|
#endif
|
|
//From cheat_controller_public.sch
|
|
TRIGGER_CHEAT (CHEAT_TYPE_WANTED_LEVEL_UP)
|
|
ENDIF
|
|
|
|
|
|
|
|
IF ARE_STRINGS_EQUAL (GameworldAssociatedVoice, "CHEAT_WEATHER")
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintnl()
|
|
cdPrintstring("CHEAT_WEATHER phone cheat recognised!")
|
|
cdPrintnl()
|
|
#endif
|
|
//From cheat_controller_public.sch
|
|
TRIGGER_CHEAT (CHEAT_TYPE_ADVANCE_WEATHER)
|
|
ENDIF
|
|
|
|
|
|
|
|
IF ARE_STRINGS_EQUAL (GameworldAssociatedVoice, "CHEAT_FASTS")
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintnl()
|
|
cdPrintstring("CHEAT_FASTS phone cheat recognised!")
|
|
cdPrintnl()
|
|
#endif
|
|
//From cheat_controller_public.sch
|
|
TRIGGER_CHEAT (CHEAT_TYPE_FAST_SWIM)
|
|
ENDIF
|
|
|
|
|
|
|
|
IF ARE_STRINGS_EQUAL (GameworldAssociatedVoice, "CHEAT_POWER")
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintnl()
|
|
cdPrintstring("CHEAT_POWER phone cheat recognised!")
|
|
cdPrintnl()
|
|
#endif
|
|
//From cheat_controller_public.sch
|
|
TRIGGER_CHEAT (CHEAT_TYPE_SPECIAL_ABILITY_RECHARGE)
|
|
ENDIF
|
|
|
|
|
|
|
|
IF ARE_STRINGS_EQUAL (GameworldAssociatedVoice, "CHEAT_CHUTE")
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintnl()
|
|
cdPrintstring("CHEAT_CHUTE phone cheat recognised!")
|
|
cdPrintnl()
|
|
#endif
|
|
//From cheat_controller_public.sch
|
|
TRIGGER_CHEAT (CHEAT_TYPE_GIVE_PARACHUTE)
|
|
ENDIF
|
|
|
|
|
|
|
|
IF ARE_STRINGS_EQUAL (GameworldAssociatedVoice, "CHEAT_BANG")
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintnl()
|
|
cdPrintstring("CHEAT_BANG phone cheat recognised!")
|
|
cdPrintnl()
|
|
#endif
|
|
//From cheat_controller_public.sch
|
|
TRIGGER_CHEAT (CHEAT_TYPE_BANG_BANG)
|
|
ENDIF
|
|
|
|
|
|
|
|
IF ARE_STRINGS_EQUAL (GameworldAssociatedVoice, "CHEAT_FLAMB")
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintnl()
|
|
cdPrintstring("CHEAT_FLAMB phone cheat recognised!")
|
|
cdPrintnl()
|
|
#endif
|
|
//From cheat_controller_public.sch
|
|
TRIGGER_CHEAT (CHEAT_TYPE_FLAMING_BULLETS)
|
|
ENDIF
|
|
|
|
|
|
|
|
IF ARE_STRINGS_EQUAL (GameworldAssociatedVoice, "CHEAT_EXPMEL")
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintnl()
|
|
cdPrintstring("CHEAT_EXPMEL phone cheat recognised!")
|
|
cdPrintnl()
|
|
#endif
|
|
//From cheat_controller_public.sch
|
|
TRIGGER_CHEAT (CHEAT_TYPE_EXPLOSIVE_MELEE)
|
|
ENDIF
|
|
|
|
|
|
|
|
IF ARE_STRINGS_EQUAL (GameworldAssociatedVoice, "CHEAT_ZEROG")
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintnl()
|
|
cdPrintstring("CHEAT_ZEROG phone cheat recognised!")
|
|
cdPrintnl()
|
|
#endif
|
|
//From cheat_controller_public.sch
|
|
TRIGGER_CHEAT (CHEAT_TYPE_0_GRAVITY)
|
|
ENDIF
|
|
|
|
|
|
|
|
IF ARE_STRINGS_EQUAL (GameworldAssociatedVoice, "CHEAT_INVINC")
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintnl()
|
|
cdPrintstring("CHEAT_INVINC phone cheat recognised!")
|
|
cdPrintnl()
|
|
#endif
|
|
//From cheat_controller_public.sch
|
|
TRIGGER_CHEAT (CHEAT_TYPE_INVINCIBILITY)
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
IF ARE_STRINGS_EQUAL (GameworldAssociatedVoice, "CHEAT_SLOWMO")
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintnl()
|
|
cdPrintstring("CHEAT_SLOWMO phone cheat recognised!")
|
|
cdPrintnl()
|
|
#endif
|
|
//From cheat_controller_public.sch
|
|
TRIGGER_CHEAT (CHEAT_TYPE_SLOWMO)
|
|
ENDIF
|
|
|
|
|
|
|
|
IF ARE_STRINGS_EQUAL (GameworldAssociatedVoice, "CHEAT_SKYFA")
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintnl()
|
|
cdPrintstring("CHEAT_SKYFA phone cheat recognised!")
|
|
cdPrintnl()
|
|
#endif
|
|
//From cheat_controller_public.sch
|
|
TRIGGER_CHEAT (CHEAT_TYPE_SKYFALL)
|
|
ENDIF
|
|
|
|
|
|
|
|
IF ARE_STRINGS_EQUAL (GameworldAssociatedVoice, "CHEAT_DRUNK")
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintnl()
|
|
cdPrintstring("CHEAT_DRUNK phone cheat recognised!")
|
|
cdPrintnl()
|
|
#endif
|
|
//From cheat_controller_public.sch
|
|
TRIGGER_CHEAT (CHEAT_TYPE_DRUNK)
|
|
ENDIF
|
|
|
|
|
|
|
|
IF ARE_STRINGS_EQUAL (GameworldAssociatedVoice, "CHEAT_DEADEYE")
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintnl()
|
|
cdPrintstring("CHEAT_DEADEYE phone cheat recognised!")
|
|
cdPrintnl()
|
|
#endif
|
|
//From cheat_controller_public.sch
|
|
TRIGGER_CHEAT (CHEAT_TYPE_AIM_SLOWMO)
|
|
ENDIF
|
|
|
|
|
|
|
|
//Added for 2066607
|
|
IF ARE_STRINGS_EQUAL (GameworldAssociatedVoice, "CHEAT_WEAPONS")
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintnl()
|
|
cdPrintstring("CHEAT_WEAPONS phone cheat recognised!")
|
|
cdPrintnl()
|
|
#endif
|
|
//From cheat_controller_public.sch
|
|
TRIGGER_CHEAT (CHEAT_TYPE_GIVE_WEAPONS)
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
|
|
//Vehicle Spawning section.
|
|
|
|
IF ARE_STRINGS_EQUAL (GameworldAssociatedVoice, "CHEAT_BUZZARD")
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintnl()
|
|
cdPrintstring("CHEAT_BUZZARD phone cheat recognised!")
|
|
cdPrintnl()
|
|
#endif
|
|
//From cheat_controller_public.sch
|
|
TRIGGER_CHEAT (CHEAT_TYPE_SPAWN_VEHICLE, BUZZARD)
|
|
ENDIF
|
|
|
|
|
|
|
|
IF ARE_STRINGS_EQUAL (GameworldAssociatedVoice, "CHEAT_COMET2")
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintnl()
|
|
cdPrintstring("CHEAT_COMET2 phone cheat recognised!")
|
|
cdPrintnl()
|
|
#endif
|
|
//From cheat_controller_public.sch
|
|
TRIGGER_CHEAT (CHEAT_TYPE_SPAWN_VEHICLE, COMET2)
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
IF ARE_STRINGS_EQUAL (GameworldAssociatedVoice, "CHEAT_BMX")
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintnl()
|
|
cdPrintstring("CHEAT_BMX phone cheat recognised!")
|
|
cdPrintnl()
|
|
#endif
|
|
//From cheat_controller_public.sch
|
|
TRIGGER_CHEAT (CHEAT_TYPE_SPAWN_VEHICLE, BMX)
|
|
ENDIF
|
|
|
|
|
|
|
|
IF ARE_STRINGS_EQUAL (GameworldAssociatedVoice, "CHEAT_CADDY")
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintnl()
|
|
cdPrintstring("CHEAT_CADDY phone cheat recognised!")
|
|
cdPrintnl()
|
|
#endif
|
|
//From cheat_controller_public.sch
|
|
TRIGGER_CHEAT (CHEAT_TYPE_SPAWN_VEHICLE, CADDY)
|
|
ENDIF
|
|
|
|
|
|
|
|
IF ARE_STRINGS_EQUAL (GameworldAssociatedVoice, "CHEAT_DUSTER")
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintnl()
|
|
cdPrintstring("CHEAT_DUSTER phone cheat recognised!")
|
|
cdPrintnl()
|
|
#endif
|
|
//From cheat_controller_public.sch
|
|
TRIGGER_CHEAT (CHEAT_TYPE_SPAWN_VEHICLE, DUSTER)
|
|
ENDIF
|
|
|
|
|
|
|
|
IF ARE_STRINGS_EQUAL (GameworldAssociatedVoice, "CHEAT_PCJ")
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintnl()
|
|
cdPrintstring("CHEAT_PCJ phone cheat recognised!")
|
|
cdPrintnl()
|
|
#endif
|
|
//From cheat_controller_public.sch
|
|
TRIGGER_CHEAT (CHEAT_TYPE_SPAWN_VEHICLE, PCJ)
|
|
ENDIF
|
|
|
|
|
|
|
|
IF ARE_STRINGS_EQUAL (GameworldAssociatedVoice, "CHEAT_RAPIDGT")
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintnl()
|
|
cdPrintstring("CHEAT_RAPIDGT phone cheat recognised!")
|
|
cdPrintnl()
|
|
#endif
|
|
//From cheat_controller_public.sch
|
|
TRIGGER_CHEAT (CHEAT_TYPE_SPAWN_VEHICLE, RAPIDGT)
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
IF ARE_STRINGS_EQUAL (GameworldAssociatedVoice, "CHEAT_STRETCH")
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintnl()
|
|
cdPrintstring("CHEAT_STRETCH phone cheat recognised!")
|
|
cdPrintnl()
|
|
#endif
|
|
//From cheat_controller_public.sch
|
|
TRIGGER_CHEAT (CHEAT_TYPE_SPAWN_VEHICLE, STRETCH)
|
|
ENDIF
|
|
|
|
|
|
|
|
IF ARE_STRINGS_EQUAL (GameworldAssociatedVoice, "CHEAT_STUNT")
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintnl()
|
|
cdPrintstring("CHEAT_STUNT phone cheat recognised!")
|
|
cdPrintnl()
|
|
#endif
|
|
//From cheat_controller_public.sch
|
|
TRIGGER_CHEAT (CHEAT_TYPE_SPAWN_VEHICLE, STUNT)
|
|
ENDIF
|
|
|
|
|
|
|
|
IF ARE_STRINGS_EQUAL (GameworldAssociatedVoice, "CHEAT_TRASH")
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintnl()
|
|
cdPrintstring("CHEAT_TRASH phone cheat recognised!")
|
|
cdPrintnl()
|
|
#endif
|
|
//From cheat_controller_public.sch
|
|
TRIGGER_CHEAT (CHEAT_TYPE_SPAWN_VEHICLE, TRASH)
|
|
ENDIF
|
|
|
|
|
|
IF ARE_STRINGS_EQUAL (GameworldAssociatedVoice, "CHEAT_SANCHEZ")
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintnl()
|
|
cdPrintstring("CHEAT_SANCHEZ phone cheat recognised!")
|
|
cdPrintnl()
|
|
#endif
|
|
//From cheat_controller_public.sch
|
|
TRIGGER_CHEAT (CHEAT_TYPE_SPAWN_VEHICLE, SANCHEZ)
|
|
ENDIF
|
|
|
|
//Current Gen to Next Gen bonus vehicle Spawning section.
|
|
|
|
IF IS_LAST_GEN_PLAYER() //
|
|
//AND g_DumpDisableEveryFrameCaller = FALSE // - Comment in to test.
|
|
|
|
IF ARE_STRINGS_EQUAL (GameworldAssociatedVoice, "CHEAT_SEAPLANE")
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintnl()
|
|
cdPrintstring("Last Gen Player CHEAT_SEAPLANE phone cheat recognised!")
|
|
cdPrintnl()
|
|
#endif
|
|
//From cheat_controller_public.sch
|
|
TRIGGER_CHEAT (CHEAT_TYPE_SPAWN_VEHICLE, DODO)
|
|
ENDIF
|
|
|
|
|
|
|
|
IF ARE_STRINGS_EQUAL (GameworldAssociatedVoice, "CHEAT_DUELC")
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintnl()
|
|
cdPrintstring("Last Gen Player CHEAT_DUELC phone cheat recognised!")
|
|
cdPrintnl()
|
|
#endif
|
|
//From cheat_controller_public.sch
|
|
TRIGGER_CHEAT (CHEAT_TYPE_SPAWN_VEHICLE, DUKES2)
|
|
ENDIF
|
|
|
|
|
|
|
|
IF ARE_STRINGS_EQUAL (GameworldAssociatedVoice, "CHEAT_BUBBLE")
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintnl()
|
|
cdPrintstring("Last Gen Player CHEAT_BUBBLE phone cheat recognised!")
|
|
cdPrintnl()
|
|
#endif
|
|
//From cheat_controller_public.sch
|
|
TRIGGER_CHEAT (CHEAT_TYPE_SPAWN_VEHICLE, SUBMERSIBLE2)
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
|
|
//2172238 - Enter Director Mode. Was PC only...
|
|
//IF IS_PC_VERSION() //Opening up director mode entry from phone for 2260082
|
|
|
|
IF ARE_STRINGS_EQUAL (GameworldAssociatedVoice, "CHEAT_DIRECTOR")
|
|
|
|
#IF FEATURE_SP_DLC_DIRECTOR_MODE
|
|
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintnl()
|
|
cdPrintstring("CHEAT_DIRECTOR phone cheat recognised on PC and Console. Entering director mode...")
|
|
cdPrintnl()
|
|
#endif
|
|
|
|
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
|
|
|
|
#ENDIF
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
//ENDIF
|
|
|
|
|
|
//Critical! Force the phone away after activating the cheat! Do not remove! Submit check 37 kookoko
|
|
|
|
HANG_UP_AND_PUT_AWAY_PHONE()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ELSE
|
|
|
|
IF ARE_STRINGS_EQUAL (GameworldAssociatedRoot, "CELLPHONE_CHEAT")
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
cdPrintnl()
|
|
cdPrintstring("AppContacts - Cellpone Cheats are inactive in MP - hanging up phone as a precaution.")
|
|
cdPrintnl()
|
|
|
|
#endif
|
|
|
|
|
|
HANG_UP_AND_PUT_AWAY_PHONE()
|
|
|
|
|
|
ELSE
|
|
|
|
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
cdPrintnl()
|
|
cdPrintstring("AppContacts - DialledNumberHasGameworldAssociation = TRUE answerphone message commencing.")
|
|
cdPrintnl()
|
|
|
|
#endif
|
|
|
|
|
|
ADD_PED_FOR_DIALOGUE (AppContactPedStruct, 1, NULL, GameworldAssociatedVoice)
|
|
|
|
|
|
//Pause answering time needs set to zero here as we've already waited a believable time for the answerphone to "pick up"...
|
|
g_Outgoing_Call_Pause_Answering_Time = 0
|
|
|
|
|
|
// IF IS_CURRENT_MISSION_DLC()
|
|
//
|
|
// PLAYER_CALL_CHAR_CELLPHONE_USING_V_CONTENT_IN_DLC (AppContactPedStruct, (INT_TO_ENUM(enumCharacterList, g_TheContactInvolvedinCall)), answerPhoneBlock, GameworldAssociatedRoot, CONV_PRIORITY_NON_CRITICAL_CALL, FALSE, DISPLAY_SUBTITLES, DO_ADD_TO_BRIEF_SCREEN)
|
|
//
|
|
// ELSE
|
|
|
|
PLAYER_CALL_CHAR_CELLPHONE_USING_V_CONTENT_IN_DLC (AppContactPedStruct, (INT_TO_ENUM(enumCharacterList, g_TheContactInvolvedinCall)), answerPhoneBlock, GameworldAssociatedRoot, CONV_PRIORITY_NON_CRITICAL_CALL, FALSE, DISPLAY_SUBTITLES, DO_ADD_TO_BRIEF_SCREEN)
|
|
|
|
// ENDIF
|
|
|
|
|
|
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
|
|
ELSE
|
|
|
|
|
|
|
|
|
|
|
|
TEXT_LABEL_23 VoiceID_Decision
|
|
|
|
|
|
//Lowrider Benny Answerphone message 2547521
|
|
/*
|
|
[LOWCA_CALL10_1:LOWCAAU]
|
|
~z~This is Benny. You want something, come see me at the shop.
|
|
[LOWCA_CALL10_3:LOWCAAU]
|
|
~z~You don't want something, then why you calling?
|
|
*/
|
|
|
|
|
|
|
|
|
|
SWITCH g_TheContactInvolvedinCall
|
|
|
|
|
|
//Lowrider Benny Answerphone message 2547521
|
|
CASE CHAR_BENNYS_OMW
|
|
VoiceID_Decision = "BENNY"
|
|
BREAK
|
|
|
|
|
|
CASE CHAR_MICHAEL
|
|
VoiceID_Decision = "MICHAEL"
|
|
BREAK
|
|
|
|
|
|
CASE CHAR_TREVOR
|
|
VoiceID_Decision = "TREVOR"
|
|
BREAK
|
|
|
|
|
|
CASE CHAR_FRANKLIN
|
|
VoiceID_Decision = "FRANKLIN"
|
|
BREAK
|
|
|
|
|
|
CASE CHAR_LESTER
|
|
VoiceID_Decision = "LESTER"
|
|
BREAK
|
|
|
|
|
|
CASE CHAR_LESTER_DEATHWISH //2023337 - Doesn't look like it's recorded.
|
|
VoiceID_Decision = "LESTER"
|
|
BREAK
|
|
|
|
|
|
CASE CHAR_TRACEY
|
|
VoiceID_Decision = "TRACEY"
|
|
BREAK
|
|
|
|
|
|
CASE CHAR_LAMAR
|
|
VoiceID_Decision = "LAMAR"
|
|
BREAK
|
|
|
|
|
|
CASE CHAR_AMANDA
|
|
VoiceID_Decision = "AMANDA"
|
|
BREAK
|
|
|
|
|
|
CASE CHAR_MOLLY
|
|
VoiceID_Decision = "MALEEXECASSIST"
|
|
BREAK
|
|
|
|
|
|
CASE CHAR_DEVIN
|
|
VoiceID_Decision = "FEMEXECASSIST"
|
|
BREAK
|
|
|
|
|
|
|
|
|
|
CASE CHAR_CHENGSR
|
|
VoiceID_Decision = "CHENGSR"
|
|
BREAK
|
|
|
|
|
|
CASE CHAR_JIMMY
|
|
VoiceID_Decision = "JIMMY"
|
|
BREAK
|
|
|
|
|
|
CASE CHAR_TOW_TONYA
|
|
VoiceID_Decision = "TONYA"
|
|
BREAK
|
|
|
|
|
|
CASE CHAR_BEVERLY
|
|
VoiceID_Decision = "BEVERLY"
|
|
BREAK
|
|
|
|
|
|
CASE CHAR_NIGEL
|
|
VoiceID_Decision = "NIGEL"
|
|
BREAK
|
|
|
|
|
|
CASE CHAR_OSCAR
|
|
VoiceID_Decision = "OSCAR"
|
|
BREAK
|
|
|
|
|
|
CASE CHAR_BARRY
|
|
VoiceID_Decision = "BARRY"
|
|
BREAK
|
|
|
|
|
|
CASE CHAR_GAYMILITARY
|
|
VoiceID_Decision = "GAYMILITARY"
|
|
BREAK
|
|
|
|
|
|
CASE CHAR_RON
|
|
VoiceID_Decision = "NervousRon"
|
|
BREAK
|
|
|
|
|
|
CASE CHAR_WADE
|
|
VoiceID_Decision = "Wade"
|
|
BREAK
|
|
|
|
|
|
CASE CHAR_OMEGA
|
|
VoiceID_Decision = "OMEGA"
|
|
BREAK
|
|
|
|
|
|
CASE CHAR_MARNIE
|
|
VoiceID_Decision = "MARNIE"
|
|
BREAK
|
|
|
|
|
|
CASE CHAR_STRETCH
|
|
VoiceID_Decision = "STRETCH"
|
|
BREAK
|
|
|
|
|
|
CASE CHAR_STEVE
|
|
VoiceID_Decision = "STEVE"
|
|
BREAK
|
|
|
|
|
|
CASE CHAR_CRIS
|
|
VoiceID_Decision = "CRIS"
|
|
BREAK
|
|
|
|
|
|
CASE CHAR_DAVE
|
|
VoiceID_Decision = "Dave"
|
|
BREAK
|
|
|
|
|
|
CASE CHAR_JOSH
|
|
VoiceID_Decision = "JOSH"
|
|
BREAK
|
|
|
|
|
|
CASE CHAR_DR_FRIEDLANDER
|
|
VoiceID_Decision = "FRIEDLANDER"
|
|
BREAK
|
|
|
|
|
|
CASE CHAR_MAUDE
|
|
VoiceID_Decision = "MAUDE"
|
|
BREAK
|
|
|
|
|
|
CASE CHAR_JIMMY_BOSTON
|
|
VoiceID_Decision = "JIMMYBOSTON"
|
|
BREAK
|
|
|
|
|
|
CASE CHAR_JOE
|
|
VoiceID_Decision = "JOE"
|
|
BREAK
|
|
|
|
|
|
CASE CHAR_SOLOMON
|
|
VoiceID_Decision = "SOLOMON"
|
|
BREAK
|
|
|
|
|
|
CASE CHAR_HUNTER
|
|
VoiceID_Decision = "CLETUS"
|
|
BREAK
|
|
|
|
|
|
CASE CHAR_TANISHA
|
|
VoiceID_Decision = "TANISHA"
|
|
BREAK
|
|
|
|
|
|
CASE CHAR_ABIGAIL
|
|
VoiceID_Decision = "ABIGAIL"
|
|
BREAK
|
|
|
|
|
|
CASE CHAR_DENISE
|
|
VoiceID_Decision = "DENISE"
|
|
BREAK
|
|
|
|
//CDM- Added 19/6/13
|
|
CASE CHAR_MP_BRUCIE
|
|
VoiceID_Decision = "BRUCIE"
|
|
BREAK
|
|
|
|
CASE CHAR_MP_BIKER_BOSS
|
|
VoiceID_Decision = "BikerBoss"
|
|
BREAK
|
|
|
|
CASE CHAR_MP_MEX_BOSS
|
|
VoiceID_Decision = "MexicanBoss"
|
|
BREAK
|
|
|
|
CASE CHAR_MP_MECHANIC
|
|
VoiceID_Decision = "MECHANIC"
|
|
BREAK
|
|
|
|
|
|
CASE CHAR_MP_MORS_MUTUAL
|
|
VoiceID_Decision = "MorsMutual"
|
|
BREAK
|
|
|
|
CASE CHAR_MP_MERRYWEATHER
|
|
VoiceID_Decision = "FM_MERRYWEATHER"
|
|
BREAK
|
|
|
|
CASE CHAR_PEGASUS_DELIVERY
|
|
VoiceID_Decision = "PEGASUS"
|
|
BREAK
|
|
|
|
CASE CHAR_SIMEON
|
|
VoiceID_Decision = "SIMEON"
|
|
BREAK
|
|
|
|
CASE CHAR_MARTIN
|
|
VoiceID_Decision = "MARTIN"
|
|
BREAK
|
|
|
|
CASE CHAR_DOM
|
|
VoiceID_Decision = "DOM"
|
|
BREAK
|
|
|
|
/* Stub for Tom, the Epsilon guy, doesn't appear to get added to the phone.
|
|
CHAR_TOM
|
|
VoiceID_Decision = "TOM"
|
|
BREAK
|
|
*/
|
|
|
|
CASE CHAR_MP_GERALD
|
|
VoiceID_Decision = "GERALD"
|
|
BREAK
|
|
|
|
DEFAULT
|
|
|
|
//Get generic answer tone for here...
|
|
VoiceID_Decision = "MICHAEL"
|
|
|
|
BREAK
|
|
|
|
|
|
ENDSWITCH
|
|
|
|
|
|
ADD_PED_FOR_DIALOGUE (AppContactPedStruct, 1, NULL, VoiceID_Decision)
|
|
|
|
|
|
//Pause answering time needs set to zero here as we've already waited a believable time for the answerphone to "pick up"...
|
|
g_Outgoing_Call_Pause_Answering_Time = 0
|
|
|
|
|
|
|
|
|
|
SWITCH g_TheContactInvolvedInCall
|
|
|
|
|
|
|
|
//Lowrider Benny Answerphone message 2547521
|
|
CASE CHAR_BENNYS_OMW
|
|
//Need to make sure that PLAYER_CALL_CHAR_CELLPHONE_DECISION points to the DLC dialogue rpf for this particular answerphone message by use of the MP dialogue flag.
|
|
PLAYER_CALL_CHAR_CELLPHONE_DECISION (AppContactPedStruct, CHAR_BENNYS_OMW, "LOWCAAU", "LOWCA_CALL10", CONV_PRIORITY_NON_CRITICAL_CALL, FALSE, DISPLAY_SUBTITLES, DO_ADD_TO_BRIEF_SCREEN)
|
|
BREAK
|
|
|
|
|
|
|
|
CASE CHAR_LESTER_DEATHWISH //2023337 - Default Lester Deathwish unique number to his normal answerphone messsage.
|
|
|
|
PLAYER_CALL_CHAR_CELLPHONE_DECISION (AppContactPedStruct, CHAR_LESTER, answerPhoneBlock, "LES_APH2", CONV_PRIORITY_NON_CRITICAL_CALL, FALSE, DISPLAY_SUBTITLES, DO_ADD_TO_BRIEF_SCREEN)
|
|
|
|
BREAK
|
|
|
|
|
|
|
|
CASE CHAR_DR_FRIEDLANDER
|
|
|
|
INT i_tempClockHours
|
|
|
|
i_tempClockHours = GET_CLOCK_HOURS()
|
|
|
|
IF i_tempClockHours > 17 // office closed from 6pm to 9am.
|
|
OR i_tempClockHours < 9
|
|
|
|
PLAYER_CALL_CHAR_CELLPHONE_DECISION (AppContactPedStruct, (INT_TO_ENUM(enumCharacterList, g_TheContactInvolvedinCall)), answerPhoneBlock, "SHR_APH3", CONV_PRIORITY_NON_CRITICAL_CALL, FALSE, DISPLAY_SUBTITLES, DO_ADD_TO_BRIEF_SCREEN)
|
|
|
|
ENDIF
|
|
|
|
|
|
IF i_tempClockHours > 8 //open, morning 9am - 1pm
|
|
AND i_tempClockHours < 13
|
|
|
|
PLAYER_CALL_CHAR_CELLPHONE_DECISION (AppContactPedStruct, (INT_TO_ENUM(enumCharacterList, g_TheContactInvolvedinCall)), answerPhoneBlock, "SHR_APH1", CONV_PRIORITY_NON_CRITICAL_CALL, FALSE, DISPLAY_SUBTITLES, DO_ADD_TO_BRIEF_SCREEN)
|
|
|
|
ENDIF
|
|
|
|
|
|
IF i_tempClockHours > 12 //open, afternoon 1pm - 6pm
|
|
AND i_tempClockHours < 18
|
|
|
|
PLAYER_CALL_CHAR_CELLPHONE_DECISION (AppContactPedStruct, (INT_TO_ENUM(enumCharacterList, g_TheContactInvolvedinCall)), answerPhoneBlock, "SHR_APH2", CONV_PRIORITY_NON_CRITICAL_CALL, FALSE, DISPLAY_SUBTITLES, DO_ADD_TO_BRIEF_SCREEN)
|
|
|
|
ENDIF
|
|
|
|
BREAK
|
|
|
|
|
|
|
|
|
|
|
|
CASE CHAR_AMANDA
|
|
|
|
IF GET_MISSION_COMPLETE_STATE(SP_MISSION_FAMILY_5)
|
|
AND (NOT GET_MISSION_COMPLETE_STATE(SP_MISSION_FAMILY_6))
|
|
|
|
//Play "angry" message.
|
|
PLAYER_CALL_CHAR_CELLPHONE_DECISION (AppContactPedStruct, (INT_TO_ENUM(enumCharacterList, g_TheContactInvolvedinCall)), answerPhoneBlock, "AMA_APH2", CONV_PRIORITY_NON_CRITICAL_CALL, FALSE, DISPLAY_SUBTITLES, DO_ADD_TO_BRIEF_SCREEN)
|
|
|
|
ELSE //Default Amanda answerphone message.
|
|
|
|
PLAYER_CALL_CHAR_CELLPHONE_DECISION (AppContactPedStruct, (INT_TO_ENUM(enumCharacterList, g_TheContactInvolvedinCall)), answerPhoneBlock, g_CharacterSheetNonSaved[g_TheContactInvolvedinCall].ansphone_labelroot, CONV_PRIORITY_NON_CRITICAL_CALL, FALSE, DISPLAY_SUBTITLES, DO_ADD_TO_BRIEF_SCREEN)
|
|
|
|
ENDIF
|
|
|
|
|
|
BREAK
|
|
|
|
|
|
|
|
CASE CHAR_RON
|
|
|
|
IF g_bInMultiplayer
|
|
|
|
PLAYER_CALL_CHAR_CELLPHONE_DECISION (AppContactPedStruct, (INT_TO_ENUM(enumCharacterList, g_TheContactInvolvedinCall)), answerPhoneBlock, "ANS_RBusy", CONV_PRIORITY_NON_CRITICAL_CALL, FALSE, DISPLAY_SUBTITLES, DO_ADD_TO_BRIEF_SCREEN)
|
|
|
|
ELSE
|
|
|
|
PLAYER_CALL_CHAR_CELLPHONE_DECISION (AppContactPedStruct, (INT_TO_ENUM(enumCharacterList, g_TheContactInvolvedinCall)), answerPhoneBlock, g_CharacterSheetNonSaved[g_TheContactInvolvedinCall].ansphone_labelroot, CONV_PRIORITY_NON_CRITICAL_CALL, FALSE, DISPLAY_SUBTITLES, DO_ADD_TO_BRIEF_SCREEN)
|
|
|
|
ENDIF
|
|
|
|
BREAK
|
|
|
|
|
|
|
|
|
|
CASE CHAR_DENISE
|
|
|
|
IF GET_MISSION_FLOW_FLAG_STATE (FLOWFLAG_FRANKLIN_MOVED_TO_HILLS_APARTMENT) //Franklin has his new house
|
|
|
|
//Play "Center for the arts" message.
|
|
PLAYER_CALL_CHAR_CELLPHONE_DECISION (AppContactPedStruct, (INT_TO_ENUM(enumCharacterList, g_TheContactInvolvedinCall)), answerPhoneBlock, "DEN_APH3", CONV_PRIORITY_NON_CRITICAL_CALL, FALSE, DISPLAY_SUBTITLES, DO_ADD_TO_BRIEF_SCREEN)
|
|
|
|
ELSE //Default Denise answerphone message.
|
|
|
|
|
|
PLAYER_CALL_CHAR_CELLPHONE_DECISION (AppContactPedStruct, (INT_TO_ENUM(enumCharacterList, g_TheContactInvolvedinCall)), answerPhoneBlock, g_CharacterSheetNonSaved[g_TheContactInvolvedinCall].ansphone_labelroot, CONV_PRIORITY_NON_CRITICAL_CALL, FALSE, DISPLAY_SUBTITLES, DO_ADD_TO_BRIEF_SCREEN)
|
|
|
|
ENDIF
|
|
|
|
|
|
BREAK
|
|
|
|
|
|
|
|
CASE CHAR_TRACEY
|
|
|
|
IF NOT GET_MISSION_COMPLETE_STATE(SP_MISSION_FAMILY_3)
|
|
//Use TRA_APH1
|
|
PLAYER_CALL_CHAR_CELLPHONE_DECISION (AppContactPedStruct, (INT_TO_ENUM(enumCharacterList, g_TheContactInvolvedinCall)), answerPhoneBlock, "TRA_APH1", CONV_PRIORITY_NON_CRITICAL_CALL, FALSE, DISPLAY_SUBTITLES, DO_ADD_TO_BRIEF_SCREEN)
|
|
|
|
ELIF NOT GET_MISSION_COMPLETE_STATE(SP_MISSION_FAMILY_4)
|
|
//Use TRA_APH2
|
|
PLAYER_CALL_CHAR_CELLPHONE_DECISION (AppContactPedStruct, (INT_TO_ENUM(enumCharacterList, g_TheContactInvolvedinCall)), answerPhoneBlock, "TRA_APH2", CONV_PRIORITY_NON_CRITICAL_CALL, FALSE, DISPLAY_SUBTITLES, DO_ADD_TO_BRIEF_SCREEN)
|
|
|
|
ELIF NOT GET_MISSION_COMPLETE_STATE(SP_MISSION_FAMILY_6)
|
|
//Use TRA_APH3
|
|
PLAYER_CALL_CHAR_CELLPHONE_DECISION (AppContactPedStruct, (INT_TO_ENUM(enumCharacterList, g_TheContactInvolvedinCall)), answerPhoneBlock, "TRA_APH3", CONV_PRIORITY_NON_CRITICAL_CALL, FALSE, DISPLAY_SUBTITLES, DO_ADD_TO_BRIEF_SCREEN)
|
|
|
|
ELSE
|
|
|
|
PLAYER_CALL_CHAR_CELLPHONE_DECISION (AppContactPedStruct, (INT_TO_ENUM(enumCharacterList, g_TheContactInvolvedinCall)), answerPhoneBlock, "TRA_APH4", CONV_PRIORITY_NON_CRITICAL_CALL, FALSE, DISPLAY_SUBTITLES, DO_ADD_TO_BRIEF_SCREEN)
|
|
|
|
ENDIF
|
|
|
|
BREAK
|
|
|
|
|
|
|
|
CASE CHAR_LAMAR
|
|
|
|
|
|
IF NOT GET_MISSION_COMPLETE_STATE(SP_MISSION_FAMILY_3)
|
|
|
|
PLAYER_CALL_CHAR_CELLPHONE_DECISION (AppContactPedStruct, (INT_TO_ENUM(enumCharacterList, g_TheContactInvolvedinCall)), answerPhoneBlock, "LAM_APH1", CONV_PRIORITY_NON_CRITICAL_CALL, FALSE, DISPLAY_SUBTITLES, DO_ADD_TO_BRIEF_SCREEN)
|
|
|
|
ELIF NOT GET_MISSION_COMPLETE_STATE(SP_MISSION_FAMILY_4)
|
|
|
|
PLAYER_CALL_CHAR_CELLPHONE_DECISION (AppContactPedStruct, (INT_TO_ENUM(enumCharacterList, g_TheContactInvolvedinCall)), answerPhoneBlock, "LAM_APH2", CONV_PRIORITY_NON_CRITICAL_CALL, FALSE, DISPLAY_SUBTITLES, DO_ADD_TO_BRIEF_SCREEN)
|
|
|
|
ELSE
|
|
|
|
PLAYER_CALL_CHAR_CELLPHONE_DECISION (AppContactPedStruct, (INT_TO_ENUM(enumCharacterList, g_TheContactInvolvedinCall)), answerPhoneBlock, "LAM_APH3", CONV_PRIORITY_NON_CRITICAL_CALL, FALSE, DISPLAY_SUBTITLES, DO_ADD_TO_BRIEF_SCREEN)
|
|
|
|
ENDIF
|
|
|
|
BREAK
|
|
|
|
|
|
|
|
|
|
|
|
CASE CHAR_JIMMY
|
|
|
|
IF NOT GET_MISSION_COMPLETE_STATE(SP_MISSION_FAMILY_3)
|
|
//Use TRA_APH1
|
|
PLAYER_CALL_CHAR_CELLPHONE_DECISION (AppContactPedStruct, (INT_TO_ENUM(enumCharacterList, g_TheContactInvolvedinCall)), answerPhoneBlock, "JIM_APH1", CONV_PRIORITY_NON_CRITICAL_CALL, FALSE, DISPLAY_SUBTITLES, DO_ADD_TO_BRIEF_SCREEN)
|
|
|
|
ELIF NOT GET_MISSION_COMPLETE_STATE(SP_MISSION_FAMILY_5)
|
|
//Use TRA_APH2
|
|
PLAYER_CALL_CHAR_CELLPHONE_DECISION (AppContactPedStruct, (INT_TO_ENUM(enumCharacterList, g_TheContactInvolvedinCall)), answerPhoneBlock, "JIM_APH3", CONV_PRIORITY_NON_CRITICAL_CALL, FALSE, DISPLAY_SUBTITLES, DO_ADD_TO_BRIEF_SCREEN)
|
|
|
|
ELIF NOT GET_MISSION_COMPLETE_STATE(SP_MISSION_FAMILY_6)
|
|
//Use TRA_APH3
|
|
PLAYER_CALL_CHAR_CELLPHONE_DECISION (AppContactPedStruct, (INT_TO_ENUM(enumCharacterList, g_TheContactInvolvedinCall)), answerPhoneBlock, "JIM_APH2", CONV_PRIORITY_NON_CRITICAL_CALL, FALSE, DISPLAY_SUBTITLES, DO_ADD_TO_BRIEF_SCREEN)
|
|
|
|
ELSE
|
|
|
|
PLAYER_CALL_CHAR_CELLPHONE_DECISION (AppContactPedStruct, (INT_TO_ENUM(enumCharacterList, g_TheContactInvolvedinCall)), answerPhoneBlock, "JIM_APH4", CONV_PRIORITY_NON_CRITICAL_CALL, FALSE, DISPLAY_SUBTITLES, DO_ADD_TO_BRIEF_SCREEN)
|
|
|
|
ENDIF
|
|
|
|
BREAK
|
|
|
|
|
|
|
|
CASE CHAR_BARRY
|
|
|
|
IF IS_THIS_RANDOM_CHARACTER_MISSION_COMPLETED(RC_BARRY_4) //After the strand is completed, Barry becomes paranoid.
|
|
|
|
PLAYER_CALL_CHAR_CELLPHONE_DECISION (AppContactPedStruct, (INT_TO_ENUM(enumCharacterList, g_TheContactInvolvedinCall)), answerPhoneBlock, "BAR_APH2", CONV_PRIORITY_NON_CRITICAL_CALL, FALSE, DISPLAY_SUBTITLES, DO_ADD_TO_BRIEF_SCREEN)
|
|
|
|
ELSE //Play pre-completion stoned answerphone.
|
|
|
|
PLAYER_CALL_CHAR_CELLPHONE_DECISION (AppContactPedStruct, (INT_TO_ENUM(enumCharacterList, g_TheContactInvolvedinCall)), answerPhoneBlock, "BAR_APH1", CONV_PRIORITY_NON_CRITICAL_CALL, FALSE, DISPLAY_SUBTITLES, DO_ADD_TO_BRIEF_SCREEN)
|
|
|
|
ENDIF
|
|
|
|
BREAK
|
|
|
|
CASE CHAR_MP_MERRYWEATHER
|
|
iRandomNumber = GET_RANDOM_INT_IN_RANGE(0,100)
|
|
IF iRandomNumber <= 50
|
|
PLAYER_CALL_CHAR_CELLPHONE_DECISION (AppContactPedStruct, (INT_TO_ENUM(enumCharacterList, g_TheContactInvolvedinCall)), answerPhoneBlock, "ANS_MWBusy", CONV_PRIORITY_NON_CRITICAL_CALL, FALSE, DISPLAY_SUBTITLES, DO_ADD_TO_BRIEF_SCREEN)
|
|
ELSE
|
|
PLAYER_CALL_CHAR_CELLPHONE_DECISION (AppContactPedStruct, (INT_TO_ENUM(enumCharacterList, g_TheContactInvolvedinCall)), answerPhoneBlock, "ANS_MWBusy2" , CONV_PRIORITY_NON_CRITICAL_CALL, FALSE, DISPLAY_SUBTITLES, DO_ADD_TO_BRIEF_SCREEN)
|
|
ENDIF
|
|
BREAK
|
|
|
|
CASE CHAR_PEGASUS_DELIVERY
|
|
iRandomNumber = GET_RANDOM_INT_IN_RANGE(0,100)
|
|
IF iRandomNumber <= 50
|
|
PLAYER_CALL_CHAR_CELLPHONE_DECISION (AppContactPedStruct, (INT_TO_ENUM(enumCharacterList, g_TheContactInvolvedinCall)), answerPhoneBlock, "ANS_PGbusy", CONV_PRIORITY_NON_CRITICAL_CALL, FALSE, DISPLAY_SUBTITLES, DO_ADD_TO_BRIEF_SCREEN)
|
|
ELSE
|
|
PLAYER_CALL_CHAR_CELLPHONE_DECISION (AppContactPedStruct, (INT_TO_ENUM(enumCharacterList, g_TheContactInvolvedinCall)), answerPhoneBlock, "ANS_PGbusy2" , CONV_PRIORITY_NON_CRITICAL_CALL, FALSE, DISPLAY_SUBTITLES, DO_ADD_TO_BRIEF_SCREEN)
|
|
ENDIF
|
|
BREAK
|
|
|
|
CASE CHAR_MP_MORS_MUTUAL
|
|
iRandomNumber = GET_RANDOM_INT_IN_RANGE(0,100)
|
|
IF iRandomNumber <= 50
|
|
PLAYER_CALL_CHAR_CELLPHONE_DECISION (AppContactPedStruct, (INT_TO_ENUM(enumCharacterList, g_TheContactInvolvedinCall)), answerPhoneBlock, "ANS_INSbusy", CONV_PRIORITY_NON_CRITICAL_CALL, FALSE, DISPLAY_SUBTITLES, DO_ADD_TO_BRIEF_SCREEN)
|
|
ELSE
|
|
PLAYER_CALL_CHAR_CELLPHONE_DECISION (AppContactPedStruct, (INT_TO_ENUM(enumCharacterList, g_TheContactInvolvedinCall)), answerPhoneBlock, "ANS_INSbusy2" , CONV_PRIORITY_NON_CRITICAL_CALL, FALSE, DISPLAY_SUBTITLES, DO_ADD_TO_BRIEF_SCREEN)
|
|
ENDIF
|
|
BREAK
|
|
|
|
CASE CHAR_MP_GERALD
|
|
//ADD_PED_FOR_DIALOGUE (AppContactPedStruct, 0, PLAYER_PED_ID(),"")
|
|
PLAYER_CALL_CHAR_CELLPHONE_DECISION (AppContactPedStruct, (INT_TO_ENUM(enumCharacterList, g_TheContactInvolvedinCall)), answerPhoneBlock, "ANS_GBusy", CONV_PRIORITY_NON_CRITICAL_CALL, FALSE, DISPLAY_SUBTITLES, DO_ADD_TO_BRIEF_SCREEN)
|
|
BREAK
|
|
|
|
DEFAULT //Use this for characters who only have one standard, unchanging answerphone message.
|
|
|
|
//Play the default answerphone message tied to this contact as attached via charsheet_public.
|
|
PLAYER_CALL_CHAR_CELLPHONE_DECISION (AppContactPedStruct, (INT_TO_ENUM(enumCharacterList, g_TheContactInvolvedinCall)), answerPhoneBlock, g_CharacterSheetNonSaved[g_TheContactInvolvedinCall].ansphone_labelroot, CONV_PRIORITY_NON_CRITICAL_CALL, FALSE, DISPLAY_SUBTITLES, DO_ADD_TO_BRIEF_SCREEN)
|
|
|
|
ENDSWITCH
|
|
|
|
|
|
|
|
//Critical! #1171319
|
|
//Make sure the "is answerphone" message flag is set so that dialogue handler knows not to auto-hide the phone after it becomes connected.
|
|
SET_BIT (BitSet_CellphoneDisplay_Continued, g_BSC_THIS_IS_AN_ANSWERPHONE_CALL)
|
|
|
|
|
|
|
|
ENDIF
|
|
|
|
BREAK
|
|
|
|
|
|
CASE CC_ENGAGED
|
|
|
|
|
|
//Loop engaged tone...
|
|
|
|
IF HAS_SOUND_FINISHED (Phone_Dialling_SoundID)
|
|
|
|
//PLAY_SOUND_FRONTEND (Phone_Dialling_SoundID, "PHONE_GENERIC_ENGAGED")
|
|
PLAY_SOUND_FRONTEND (Phone_Dialling_SoundID, "Remote_Engaged", g_Owner_Soundset)
|
|
|
|
ENDIF
|
|
|
|
IF TIMERB() > 1500
|
|
IF b_TrevorEngagedCurseSetup = FALSE
|
|
IF g_Cellphone.PhoneOwner = CHAR_TREVOR
|
|
|
|
IF NOT IS_PED_INJURED (PLAYER_PED_ID())
|
|
|
|
//ADD_PED_FOR_DIALOGUE (AppContactPedStruct, 1, PLAYER_PED_ID(), "TREVOR")
|
|
|
|
|
|
|
|
//CREATE_CONVERSATION (AppContactPedStruct, "ENGAUD", "TRE_EG1", CONV_PRIORITY_MEDIUM)
|
|
|
|
PLAY_PED_AMBIENT_SPEECH (PLAYER_PED_ID(), "PHONE_CALL_NOT_CONNECTED") //See bug 787566
|
|
|
|
//PLAY_PED_AMBIENT_SPEECH (PLAYER_PED_ID(), "GENERIC_FUCK_YOU")
|
|
|
|
|
|
b_TrevorEngagedCurseSetup = TRUE
|
|
|
|
ENDIF
|
|
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
|
|
//This will repeat until the player hangs up...
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
//PRINTSTRING ("phone engaged...")
|
|
//PRINTNL()
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
BREAK
|
|
|
|
|
|
|
|
ENDSWITCH
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ENDPROC
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
PROC Cleanup_and_Terminate()
|
|
|
|
|
|
STOP_SOUND (Phone_Dialling_SoundID)
|
|
|
|
RELEASE_SOUND_ID (Phone_Dialling_SoundID)
|
|
|
|
m_sPlayers.bBusy = FALSE
|
|
//May need to reset rendertarget...
|
|
|
|
|
|
//Can't have update_VSE or PDS_MAXIMUM set here due to calls...
|
|
|
|
CLEAR_BIT (BitSet_CellphoneDisplay, g_BS_AUTO_SCROLL_CONTACT_ENABLED)
|
|
|
|
CLEAR_BIT (BitSet_CellphoneDisplay, g_BS_SENDING_CELLPHONE_CAM_PIC)
|
|
|
|
CLEAR_BIT (BitSet_CellphoneDisplay, g_BS_SENDPIC_CONTACT_SELECTED)
|
|
|
|
CLEAR_BIT (BitSet_CellphoneDisplay_Continued, g_BSC_SET_CHAT_CALL_AS_ENGAGED)
|
|
|
|
//Clear finale contact list choice. Bit is set by flow calling specific LAUNCH FINALE public function.
|
|
CLEAR_BIT (BitSet_CellphoneDisplay_Continued, g_BSC_LAUNCH_FINALE_CONTACTS)
|
|
|
|
|
|
CLEAR_BIT (BitSet_CellphoneDisplay_Continued, g_BSC_TERMINATE_APPCONTACTS_FOR_CHAT_CALL)
|
|
|
|
|
|
//Critical! Restore Master alpha ints after Finale Choice contacts list may have altered them.
|
|
GLOBAL_CHARACTER_SHEET_SET_ALPHA_INT(CHAR_LESTER, Master_LesterInt)
|
|
GLOBAL_CHARACTER_SHEET_SET_ALPHA_INT(CHAR_TREVOR, Master_TrevorInt)
|
|
GLOBAL_CHARACTER_SHEET_SET_ALPHA_INT(CHAR_MICHAEL, Master_MichaelInt)
|
|
|
|
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintstring("appContacts - TERMINATING thread.")
|
|
cdPrintnl()
|
|
#endif
|
|
IF m_sPlayers.iPlayerInteractionStage = PLAYER_INTERACTION_STAGE_IN_CALL
|
|
IF NETWORK_IS_SIGNED_ONLINE()
|
|
IF voiceSession.iScriptResponse = -1
|
|
PRINTLN("appContacts - TERMINATING thread. and ending voice session")
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintnl()
|
|
cdPrintstring("Script End A Voice Session - 18")
|
|
cdPrintnl()
|
|
#endif
|
|
|
|
SCRIPT_END_A_VOICE_SESSION()
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
|
|
|
|
TERMINATE_THIS_THREAD()
|
|
|
|
|
|
ENDPROC
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SCRIPT
|
|
|
|
|
|
//Numpad Entry tests.
|
|
//g_NumpadEntryString = "teststring"
|
|
|
|
|
|
|
|
//Ensure this script persists during network game
|
|
NETWORK_SET_SCRIPT_IS_SAFE_FOR_NETWORK_GAME()
|
|
|
|
|
|
//Call this immediately to make sure "exit vehicle" action is disabled in cellphone flashhand right away.
|
|
SET_BIT (BitSet_CellphoneDisplay, g_BS_OTHER_OPTION_IS_DISPLAYED)
|
|
|
|
|
|
//Make sure any rogue call to these aren't hanging around...
|
|
CLEAR_BIT (BitSet_CellphoneDisplay_Continued, g_BSC_TERMINATE_APPCONTACTS_FOR_CHAT_CALL)
|
|
|
|
CLEAR_BIT (BitSet_CellphoneDisplay_Continued, g_BSC_SET_CHAT_CALL_AS_ENGAGED)
|
|
|
|
|
|
//Get a copy of proper alphaInts before manipulating each character to specify order they appear on finale choice contacts list.
|
|
|
|
Master_LesterInt = GLOBAL_CHARACTER_SHEET_GET_ALPHA_INT(CHAR_LESTER)
|
|
Master_TrevorInt = GLOBAL_CHARACTER_SHEET_GET_ALPHA_INT(CHAR_TREVOR)
|
|
Master_MichaelInt = GLOBAL_CHARACTER_SHEET_GET_ALPHA_INT(CHAR_MICHAEL)
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
IF IS_BIT_SET (BitSet_CellphoneDisplay_Continued, g_BSC_LAUNCH_FINALE_CONTACTS)
|
|
|
|
cdPrintstring ("AppCONTACTS - Launching Finale Contacts List.")
|
|
cdPrintnl()
|
|
|
|
ENDIF
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
//LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER (SF_MovieButtonsIndex, "SET_BACKGROUND_VISIBILITY", 0) //transparent
|
|
|
|
|
|
|
|
Phone_Dialling_SoundID = GET_SOUND_ID()
|
|
|
|
|
|
IF g_bInMultiplayer
|
|
|
|
Place_MP_Names_in_ContactSlots()
|
|
|
|
ELSE
|
|
|
|
Place_Names_in_ContactSlots()
|
|
|
|
ENDIF
|
|
|
|
IF NOT ((ENUM_TO_INT (g_Cellphone.PhoneDS)) = ENUM_TO_INT (PDS_ATTEMPTING_TO_CALL_CONTACT)) //if any other app has launched appContacts in order to access the call system, leave the state as is.
|
|
|
|
IF g_CellPhone.PhoneDS > PDS_AWAY //make sure that the following state assignment cannot interfere with AWAY or DISABLED assignment.
|
|
|
|
|
|
//See bug 375586
|
|
IF g_Cellphone.PhoneDS <> PDS_ONGOING_CALL //Prevent slow framerate opening up a window of opportunity when calling text sender during appContacts launch.
|
|
|
|
|
|
g_Cellphone.PhoneDS = PDS_RUNNINGAPP //Failsafe - makes sure that the cellphone is initialised into running state where applicable.
|
|
|
|
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintnl()
|
|
cdPrintstring("STATE ASSIGNMENT 1647. appContacts assigns PDS_RUNNINGAPP")
|
|
cdPrintnl()
|
|
#endif
|
|
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
FinaleChoice_StartTime = GET_GAME_TIMER() //Get launch time for the purpose of creating a brief pause to prevent button mashing selecting Finale Choice prematurely.
|
|
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintnl()
|
|
cdPrintstring("AppContacts - 2nd Sept 16th May Sanity check for bug 2828375 - Update alphabetical ordering for male and female assistant contacts for Executive pack.")
|
|
cdPrintnl()
|
|
#endif
|
|
|
|
GLOBAL_CHARACTER_SHEET_SET_ALPHA_INT(CHAR_BIKER_CH1, 1320)
|
|
GLOBAL_CHARACTER_SHEET_SET_ALPHA_INT(CHAR_MP_P_ASSISTF, 180)
|
|
GLOBAL_CHARACTER_SHEET_SET_ALPHA_INT(CHAR_MP_P_ASSIST, 190)
|
|
|
|
WHILE TRUE
|
|
|
|
|
|
|
|
|
|
WAIT(0)
|
|
|
|
|
|
IF IS_BIT_SET (BitSet_CellphoneDisplay_Continued, g_BSC_TERMINATE_APPCONTACTS_FOR_CHAT_CALL)
|
|
|
|
|
|
Remove_Cellphone_From_Ear()
|
|
|
|
IF g_CellPhone.PhoneDS > PDS_AWAY //make sure that the following state assignment cannot interfere with AWAY or DISABLED assignment.
|
|
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
cdPrintstring ("AppCONTACTS - appContacts has been requested to terminate by TERMINATE_APPCONTACTS_FOR_CHAT_CALL()")
|
|
cdPrintstring("STATE ASSIGNMENT 2337. appContacts assigns PDS_COMPLEXAPP - was in attempting to call state")
|
|
cdPrintnl()
|
|
|
|
#endif
|
|
|
|
|
|
|
|
//This should be the state that Conor's player list app was in before it launched the outgoing chat call procedure.
|
|
|
|
g_Cellphone.PhoneDS = PDS_COMPLEXAPP
|
|
|
|
|
|
ENDIF
|
|
|
|
|
|
CLEAR_BIT (BitSet_CellphoneDisplay_Continued, g_BSC_TERMINATE_APPCONTACTS_FOR_CHAT_CALL)
|
|
|
|
Cleanup_and_Terminate()
|
|
|
|
ENDIF
|
|
|
|
IF b_DoHumanFriend_Routine = TRUE
|
|
AND g_CellPhone.PhoneDS = PDS_ATTEMPTING_TO_CALL_CONTACT
|
|
AND m_sPlayers.iPlayerInteractionStage = PLAYER_INTERACTION_STAGE_IN_CALL
|
|
|
|
|
|
Check_For_Human_Friend_Menu_Decision()
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
|
|
IF g_Cellphone.PhoneDS <> PDS_ONGOING_CALL //i.e a phonecall is not attempting to get through to the player.
|
|
|
|
SWITCH g_Cellphone.PhoneDS
|
|
|
|
|
|
|
|
|
|
CASE PDS_RUNNINGAPP
|
|
|
|
|
|
|
|
IF IS_BIT_SET (BitSet_CellphoneDisplay, g_BS_AUTO_SCROLL_CONTACT_ENABLED)
|
|
|
|
Auto_Scroll_To_Set_Contact()
|
|
|
|
ELSE
|
|
|
|
Check_for_List_Navigation()
|
|
|
|
|
|
|
|
//Brief pause during finale choice filter to prevent button mashing selecting Finale Choice prematurely.
|
|
IF IS_BIT_SET (BitSet_CellphoneDisplay_Continued, g_BSC_LAUNCH_FINALE_CONTACTS)
|
|
|
|
FinaleChoice_CurrentTime = GET_GAME_TIMER()
|
|
|
|
IF (FinaleChoice_CurrentTime - FinaleChoice_StartTime) > 1000
|
|
|
|
|
|
IF b_DoFinaleConfirmation
|
|
|
|
Do_FinaleConfirmationProceed()
|
|
|
|
ELSE
|
|
|
|
Check_For_Contact_Selection()
|
|
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
IF b_DoFinaleConfirmation //Separated go back routine from Finale confirmation proceed to allow user to go back to triple choice immediately. #1204849
|
|
|
|
Do_FinaleConfirmationGoBack()
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
ELSE
|
|
|
|
Check_For_Contact_Selection()
|
|
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
IF NOT IS_BIT_SET (BitSet_CellphoneDisplay, g_BS_SENDING_CELLPHONE_CAM_PIC) //don't check for this button if we are sending a cellphone pic.
|
|
|
|
|
|
|
|
IF Is_Phone_Control_Just_Pressed (FRONTEND_CONTROL, INT_TO_ENUM (CONTROL_ACTION, PHONE_SPECIAL_OPTION_INPUT)) //Enter new number
|
|
|
|
|
|
|
|
|
|
IF IS_BIT_SET (BitSet_CellphoneDisplay_Continued, g_BSC_LAUNCH_FINALE_CONTACTS)
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
PRINTSTRING("AppContacts in Finale Choice mode, won't launch number entry!")
|
|
PRINTNL()
|
|
|
|
#endif
|
|
|
|
ELSE
|
|
|
|
IF g_Use_Prologue_Cellphone = FALSE //No enter number for prologue mission!
|
|
|
|
IF NOT (IS_BIT_SET (BitSet_CellphoneDisplay_Continued, g_BSC_PREVENT_CALL_FOR_CHAR_DETONATEPHONE)) //No enter number during Lester 1B
|
|
//This bit is cleared in CELLPHONE_FLASHHAND's terminate routine as a precaution.
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
PRINTSTRING("AppContacts detecting special option button input")
|
|
PRINTNL()
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
Play_Select_Beep()
|
|
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER(SF_MovieIndex,"SET_DATA_SLOT_EMPTY", 11)
|
|
|
|
|
|
NewStringIndex = 0 //Potential fix for bug 771768
|
|
|
|
|
|
NumpadEntryString ="" //Potential fix for 1589265
|
|
|
|
|
|
Scaleform_Setup_and_Fill_Numpad()
|
|
|
|
AppCursorIndex = 0 // Reset the app cursor to slot 0 for scrollwheel - cursor is automatically changed to key 1
|
|
|
|
|
|
|
|
b_DoHumanFriend_Routine = FALSE //Test fix for 2105815. This should make sure that full left and right navigation is restored.
|
|
|
|
|
|
|
|
//Set methods and have new state that says we are in entry mode...
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER (SF_MovieIndex, "DISPLAY_VIEW", 11) //Set enum state to NUMPAD_SCREEN
|
|
|
|
|
|
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_STRING (SF_MovieIndex, "SET_HEADER", "CELL_221") //Should be replace by black or contents of literal string
|
|
|
|
|
|
//Monochrome
|
|
/*
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieButtonsIndex, "SET_SOFT_KEYS", 1, 1,
|
|
INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM, "CELL_205") //"SELECT" Positive
|
|
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieButtonsIndex, "SET_SOFT_KEYS", 2, 1,
|
|
INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM, "CELL_206") //"BACK" - Negative
|
|
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieButtonsIndex, "SET_SOFT_KEYS", 3, 1,
|
|
INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM, "CELL_201") //"CALL" - Other
|
|
*/
|
|
|
|
|
|
|
|
//Badger - Select, Call, Back keypad screen combo
|
|
IF g_b_ToggleButtonLabels
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_SOFT_KEYS", BADGER_POS, 1,
|
|
2, INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM, "CELL_205") //"SELECT" - Positive
|
|
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_SOFT_KEYS", BADGER_OTHER, 1,
|
|
5, INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM, "CELL_201") //"CALL" - Other
|
|
SET_BIT (BitSet_CellphoneDisplay, g_BS_OTHER_OPTION_IS_DISPLAYED)
|
|
|
|
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_SOFT_KEYS", BADGER_NEG, 1,
|
|
4, INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM, "CELL_206") //"BACK" - Negative
|
|
|
|
ELSE
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_SOFT_KEYS", BADGER_POS, 1,
|
|
2, INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM) //"SELECT" - Positive
|
|
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_SOFT_KEYS", BADGER_OTHER, 1,
|
|
5, INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM) //"CALL" - Other
|
|
SET_BIT (BitSet_CellphoneDisplay, g_BS_OTHER_OPTION_IS_DISPLAYED)
|
|
|
|
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING (SF_MovieIndex, "SET_SOFT_KEYS", BADGER_NEG, 1,
|
|
4, INVALID_SCALEFORM_PARAM, INVALID_SCALEFORM_PARAM) //"BACK" - Negative
|
|
ENDIF
|
|
|
|
//See bug 316474
|
|
IF g_CellPhone.PhoneDS > PDS_AWAY //make sure that the following state assignment cannot interfere with AWAY or DISABLED assignment.
|
|
|
|
g_Cellphone.PhoneDS = PDS_COMPLEXAPP
|
|
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintnl()
|
|
cdPrintstring("STATE ASSIGNMENT 17. appContacts assigns PDS_COMPLEXAPP")
|
|
cdPrintnl()
|
|
#endif
|
|
|
|
ENDIF
|
|
|
|
ELSE
|
|
|
|
PRINTSTRING("AppCONTACTS - Cannot open numpad as g_BSC_PREVENT_CALL_FOR_CHAR_DETONATEPHONE bit is set.")
|
|
PRINTNL()
|
|
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
|
|
BREAK
|
|
|
|
|
|
|
|
|
|
CASE PDS_COMPLEXAPP
|
|
|
|
IF b_DoHumanFriend_Routine = TRUE //Conor, stick anything in here you need to.
|
|
|
|
|
|
Check_for_List_Navigation() //Critical.
|
|
|
|
Check_For_Human_Friend_Menu_Decision() //Critical.
|
|
|
|
|
|
ELSE
|
|
|
|
|
|
IF b_DoFriend_SecondaryCallRoutine = FALSE
|
|
|
|
|
|
Check_For_Navigation() //from cellphone_private.sch.
|
|
|
|
Check_For_Numpad_Selection()
|
|
|
|
|
|
ELSE
|
|
|
|
|
|
//Dynamically Update List here based on timer:
|
|
IF TIMERA() > 1500
|
|
|
|
tempDynamicIndex = 0
|
|
|
|
WHILE tempDynamicIndex < MAX_SPECIAL_SP_CHARACTERS
|
|
|
|
|
|
IF ARE_STRINGS_EQUAL (g_sCharacterSheetAll[g_TheContactInvolvedinCall].label , g_SpecialSPCharacters[tempDynamicIndex].Name_TextLabel)
|
|
|
|
|
|
IF NOT ARE_STRINGS_EQUAL (g_SpecialSPCharacters[tempDynamicIndex].SecondaryFunctionLabel_1, "CELL_SFUN_NULL") //A secondary function must have been defined if the contents are no longer the predefined null.
|
|
|
|
b_Secondary_Option_Available = TRUE
|
|
|
|
i_Available_Option = tempDynamicIndex //Get a copy so we can extract the text label when constructing the menu.
|
|
|
|
ELSE
|
|
|
|
b_Secondary_Option_Available = FALSE
|
|
|
|
|
|
ENDIF
|
|
|
|
|
|
ENDIF
|
|
|
|
tempDynamicIndex ++
|
|
|
|
ENDWHILE
|
|
|
|
IF b_DoCancelConfirmation = FALSE
|
|
|
|
|
|
BEGIN_SCALEFORM_MOVIE_METHOD (SF_MovieIndex, "GET_CURRENT_SELECTION")
|
|
|
|
Choice_ReturnedSFIndex = END_SCALEFORM_MOVIE_METHOD_RETURN_VALUE()
|
|
|
|
|
|
|
|
WHILE NOT IS_SCALEFORM_MOVIE_METHOD_RETURN_VALUE_READY (Choice_ReturnedSFIndex)
|
|
|
|
WAIT (0)
|
|
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintstring("appContacts - Waiting on return value from scaleform before menu refresh. 301")
|
|
cdPrintnl()
|
|
#endif
|
|
|
|
ENDWHILE
|
|
|
|
|
|
i_Selected_Slot_to_Restore = GET_SCALEFORM_MOVIE_METHOD_RETURN_VALUE_INT (Choice_ReturnedSFIndex) //make a copy so this can be input into DISPLAY_VIEW to reselect last highlighted slot.
|
|
|
|
|
|
|
|
|
|
Set_Up_Call_Hangout_Secondary_Cancel_Menu()
|
|
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
Check_for_List_Navigation()
|
|
|
|
// Using one time help display system instead as this is needed with other checks #bug:1472650
|
|
IF b_Friend_Option_Available = TRUE
|
|
IF NOT g_savedGlobals.sFriendsData.g_bHelpDoneCanPhoneFriend
|
|
IF NOT (CAN_CHARS_ARRANGE_BATTLE_BUDDY (g_Cellphone.PhoneOwner, g_TheContactInvolvedinCall))
|
|
g_savedGlobals.sFriendsData.g_bHelpDoneCanPhoneFriend = TRUE
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
|
|
IF (CAN_CHARS_ARRANGE_BATTLE_BUDDY (g_Cellphone.PhoneOwner, g_TheContactInvolvedinCall))
|
|
|
|
IF NOT g_savedGlobals.sFriendsData.g_bHelpDoneCanPhoneBBuddy
|
|
IF b_Secondary_Option_Available = TRUE
|
|
|
|
IF CAN_MISSION_ARRANGE_MULTIPLE_BATTLE_BUDDIES(g_eFriendMissionZoneID)
|
|
|
|
SWITCH GET_FLOW_HELP_MESSAGE_STATUS("AM_H_BBUDDY") // #1143018 - Battle Buddy help text. (plural)
|
|
|
|
CASE FHS_EXPIRED
|
|
|
|
ADD_HELP_TO_FLOW_QUEUE("AM_H_BBUDDY", FHP_HIGH, 500, DEFAULT_HELP_TEXT_TIME)
|
|
|
|
BREAK
|
|
|
|
CASE FHS_DISPLAYED
|
|
|
|
g_savedGlobals.sFriendsData.g_bHelpDoneCanPhoneBBuddy = TRUE
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
cdPrintstring("appCONTACTS - Cellphone Battle Buddy help has been displayed. Saved global set.")
|
|
cdPrintnl()
|
|
|
|
#endif
|
|
|
|
BREAK
|
|
|
|
ENDSWITCH
|
|
|
|
IF GET_FLOW_HELP_MESSAGE_STATUS("AM_H_BBUDDY1") = FHS_QUEUED // (remove singular)
|
|
REMOVE_HELP_FROM_FLOW_QUEUE("AM_H_BBUDDY1")
|
|
ENDIF
|
|
|
|
ELSE
|
|
|
|
SWITCH GET_FLOW_HELP_MESSAGE_STATUS("AM_H_BBUDDY1") // #1143018 - Battle Buddy help text. (singular)
|
|
|
|
CASE FHS_EXPIRED
|
|
|
|
ADD_HELP_TO_FLOW_QUEUE("AM_H_BBUDDY1", FHP_HIGH, 500, DEFAULT_HELP_TEXT_TIME)
|
|
|
|
BREAK
|
|
|
|
CASE FHS_DISPLAYED
|
|
|
|
g_savedGlobals.sFriendsData.g_bHelpDoneCanPhoneBBuddy = TRUE
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
cdPrintstring("appCONTACTS - Cellphone Battle Buddy help has been displayed. Saved global set.")
|
|
cdPrintnl()
|
|
|
|
#endif
|
|
|
|
BREAK
|
|
|
|
ENDSWITCH
|
|
|
|
IF GET_FLOW_HELP_MESSAGE_STATUS("AM_H_BBUDDY") = FHS_QUEUED // (remove plural)
|
|
REMOVE_HELP_FROM_FLOW_QUEUE("AM_H_BBUDDY")
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
ENDIF
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
|
|
IF b_DoCancelConfirmation
|
|
|
|
CancellationConfirmation()
|
|
|
|
ELSE
|
|
|
|
Check_For_Friend_Secondary_Call_Decision()
|
|
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
IF Is_Phone_Control_Just_Pressed (FRONTEND_CONTROL, INT_TO_ENUM (CONTROL_ACTION, PHONE_GO_BACK_INPUT)) //Go back action - user opted to return to full contact list display.
|
|
|
|
//IF b_DoCancelConfirmation = FALSE
|
|
|
|
Play_Back_Beep()
|
|
|
|
g_InputButtonJustPressed = TRUE
|
|
|
|
|
|
IF g_bInMultiplayer
|
|
|
|
Place_MP_Names_in_ContactSlots()
|
|
|
|
ELSE
|
|
|
|
Place_Names_in_ContactSlots()
|
|
|
|
ENDIF
|
|
|
|
WAIT(0) //make sure this JUST_PRESSED doesn't carry over by stopping for a game cycle.
|
|
|
|
|
|
IF g_CellPhone.PhoneDS > PDS_AWAY //make sure that the following state assignment cannot interfere with AWAY or DISABLED assignment.
|
|
|
|
g_Cellphone.PhoneDS = PDS_RUNNINGAPP
|
|
|
|
|
|
#if IS_DEBUG_BUILD
|
|
cdPrintnl()
|
|
cdPrintstring("STATE ASSIGNMENT 18. appContacts assigns PDS_RUNNINGAPP")
|
|
cdPrintnl()
|
|
#endif
|
|
|
|
ENDIF
|
|
|
|
NumpadEntryString ="" //Reset entry string.
|
|
|
|
|
|
IF b_DoFriend_SecondaryCallRoutine = TRUE
|
|
|
|
b_DoFriend_SecondaryCallRoutine = FALSE
|
|
|
|
ENDIF
|
|
|
|
IF b_DoCancelConfirmation = TRUE
|
|
|
|
b_DoCancelConfirmation = FALSE
|
|
|
|
ENDIF
|
|
|
|
b_DoHumanFriend_Routine = FALSE
|
|
|
|
|
|
//ENDIF
|
|
|
|
ENDIF
|
|
|
|
|
|
BREAK
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
CASE PDS_ATTEMPTING_TO_CALL_CONTACT //Keith could check for this in his flow stuff if we want to stop other calls getting to the player's phone when he is
|
|
//actively trying to call another contact.
|
|
|
|
|
|
//Check connection progress. If it has reached "engaged" display signifier...
|
|
IF cc_Progress = CC_ENGAGED
|
|
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
IF g_DoDebugTempDraw_Phone = TRUE
|
|
|
|
format_medium_ostext (255, 128, 64, 255) //Orange
|
|
DISPLAY_TEXT ((g_SF_PhonePosX - 0.05), (g_SF_PhonePosY + 0.08), "CELL_220")
|
|
|
|
ENDIF
|
|
|
|
#endif
|
|
|
|
ENDIF
|
|
|
|
|
|
Check_For_Answerphone_Timeout()
|
|
|
|
|
|
BREAK
|
|
|
|
|
|
|
|
|
|
|
|
|
|
CASE PDS_MAXIMUM
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
|
|
PRINTSTRING("Appcontacts aborting...PDS set to Maximum from flashhandler")
|
|
PRINTNL()
|
|
|
|
#endif
|
|
|
|
Cleanup_and_Terminate() //Failsafe in case checks below are not picked up...
|
|
|
|
BREAK
|
|
|
|
|
|
|
|
|
|
|
|
|
|
DEFAULT
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
|
|
PRINTSTRING("AppContacts in default state. Should terminate if exit check in place.")
|
|
PRINTNL()
|
|
|
|
#endif
|
|
|
|
BREAK
|
|
|
|
|
|
|
|
|
|
ENDSWITCH
|
|
|
|
|
|
|
|
|
|
//CRITICAL! It might seem that this could be put in the PDS_RUNNINGAPP switch clause. It can't because cellphone_flashhand resets the state to PDS_MAXIMUM
|
|
//because of the call system, so this segment needs to run and check for a button press in MAXIMUM or RUNNINGAPP state. We can check that this script is
|
|
//not in COMPLEXAPP state as an alternative.
|
|
|
|
|
|
//CHECK_FOR_APPLICATION_EXIT() //can't use this as appContacts requires special case treatment for the player proactively calling a contact from the phonebook.
|
|
//Well, it did but this is not currently the case as we are returning to PDS_MAXIMUM from the calling screen at the moment. Leaving this segment in as it causes no ill effects.
|
|
//STATE ASSIGNMENT 53 from flashhand will take care of this exit beforehand usually, so this routine is more of a safety measure now.
|
|
|
|
|
|
IF NOT (g_Cellphone.PhoneDS = PDS_COMPLEXAPP)
|
|
IF (g_App_Elapsed_SafetyBuffer - g_App_SafetyBuffer_StartTime) > g_App_Required_SafetyBuffer_Duration //make sure app has had a chance to launch correctly before exiting. See bug 25815.
|
|
|
|
|
|
IF IS_PLAYER_PLAYING (PLAYER_ID())
|
|
IF IS_PLAYER_CONTROL_ON (PLAYER_ID())
|
|
|
|
|
|
//This BACK_INPUT section won't get run as long as I'm returning to PDS_MAXIMUM via flashhand and using the terminate check above...
|
|
//It might have to go back in if "back" is to return us to some other state.
|
|
IF Is_Phone_Control_Just_Pressed (FRONTEND_CONTROL, INT_TO_ENUM (CONTROL_ACTION, PHONE_GO_BACK_INPUT)) //Go back - quit this application
|
|
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
PRINTSTRING("AppContacts detecting back button input.")
|
|
PRINTNL()
|
|
|
|
#endif
|
|
|
|
|
|
IF IS_BIT_SET (BitSet_CellphoneDisplay_Continued, g_BSC_LAUNCH_FINALE_CONTACTS)
|
|
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
PRINTSTRING("Not allowing Contacts exit as this is the Finale Choice list!")
|
|
PRINTNL()
|
|
|
|
#endif
|
|
|
|
|
|
Play_Back_Beep()
|
|
|
|
|
|
ELSE
|
|
|
|
|
|
Play_Back_Beep()
|
|
|
|
|
|
IF NOT (g_CellPhone.PhoneDS = PDS_ATTEMPTING_TO_CALL_CONTACT) //#1580608
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
PRINTSTRING("g_CellPhone.PhoneDS wasn't PDS_ATTEMPTING_TO_CALL_CONTACT so allowing appContacts to terminate")
|
|
PRINTNL()
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
Cleanup_and_Terminate() //Quit appContacts. Could change this so the contacts thread doesn't completely terminate and swaps back to contact list.
|
|
|
|
|
|
ELSE
|
|
|
|
//Big new clause change for #1580608
|
|
|
|
//Adding this on a trial basis to prevent quitting before PROCESS_VOICE_SESSION_STARTED_EVENT() has fired. 1602347
|
|
|
|
IF g_TheContactInvolvedinCall = CHAR_CHAT_CALL
|
|
|
|
IF voiceSession.bInVoiceSession
|
|
OR IS_BIT_SET (BitSet_CellphoneDisplay_Continued, g_BSC_SET_CHAT_CALL_AS_ENGAGED)
|
|
|
|
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
PRINTSTRING("g_CellPhone.PhoneDS was in PDS_ATTEMPTING_TO_CALL_CONTACT for chat call - allowing manual exit as InVoiceSession is returning true.")
|
|
PRINTNL()
|
|
|
|
#endif
|
|
|
|
|
|
g_Cellphone.PhoneDS = PDS_RUNNINGAPP
|
|
|
|
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER (SF_MovieIndex, "DISPLAY_VIEW", 2) //, TO_FLOAT(SF_SelectedContactInt)) //Set enum state and header to CONTACTS
|
|
|
|
|
|
|
|
IF IS_BIT_SET (BitSet_CellphoneDisplay_Continued, g_BSC_LAUNCH_FINALE_CONTACTS)
|
|
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_STRING (SF_MovieIndex, "SET_HEADER", "CELL_7000")
|
|
|
|
ELSE
|
|
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_STRING (SF_MovieIndex, "SET_HEADER", "CELL_0")
|
|
|
|
ENDIF
|
|
|
|
|
|
STOP_SOUND (Phone_Dialling_SoundID)
|
|
cc_Progress = CC_LAUNCH_TIMER_AND_CHECK_MESSAGE
|
|
|
|
|
|
ELSE
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
PRINTSTRING("g_CellPhone.PhoneDS was in PDS_ATTEMPTING_TO_CALL_CONTACT for chat call - but not allowing manual exit as primary voice session event has yet to fire after request.")
|
|
PRINTNL()
|
|
|
|
#endif
|
|
|
|
|
|
ENDIF
|
|
|
|
ELSE
|
|
|
|
#if IS_DEBUG_BUILD
|
|
//New for 2023083 - Hunting failsafe.
|
|
cdPRINTSTRING("g_CellPhone.PhoneDS was in PDS_ATTEMPTING_TO_CALL_CONTACT - setting to RUNNING APP and re-establishing view #1580608")
|
|
cdPRINTNL()
|
|
|
|
|
|
cdPRINTSTRING("STATE_ASSIGNMENT - app Contacts RUNNING APP #1580608")
|
|
cdPRINTNL()
|
|
|
|
#endif
|
|
|
|
|
|
Remove_Cellphone_From_Ear() //New for 2023083 - Hunting failsafe.
|
|
|
|
|
|
g_Cellphone.PhoneDS = PDS_RUNNINGAPP
|
|
|
|
|
|
Post_Aborted_String_Entry_Button_Creation() //added to resolve bug 1643709
|
|
|
|
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_NUMBER (SF_MovieIndex, "DISPLAY_VIEW", 2) //, TO_FLOAT(SF_SelectedContactInt)) //Set enum state and header to CONTACTS
|
|
|
|
|
|
|
|
IF IS_BIT_SET (BitSet_CellphoneDisplay_Continued, g_BSC_LAUNCH_FINALE_CONTACTS)
|
|
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_STRING (SF_MovieIndex, "SET_HEADER", "CELL_7000")
|
|
|
|
ELSE
|
|
|
|
LEGACY_SCALEFORM_MOVIE_METHOD_WITH_STRING (SF_MovieIndex, "SET_HEADER", "CELL_0")
|
|
|
|
ENDIF
|
|
|
|
|
|
STOP_SOUND (Phone_Dialling_SoundID)
|
|
cc_Progress = CC_LAUNCH_TIMER_AND_CHECK_MESSAGE
|
|
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
ENDIF
|
|
|
|
ENDIF
|
|
ENDIF
|
|
|
|
ENDIF
|
|
ENDIF
|
|
|
|
|
|
|
|
ELSE
|
|
|
|
|
|
|
|
//IMPORTANT:
|
|
//Even though calls cannot come through to running apps now, appContacts needs this check because a call can be made from within it. It therefore needs to
|
|
//exit when a call connects.
|
|
|
|
//This is an important section! It tells this script what to do when a call, be it answerphone or other phonecall, comes through.
|
|
//It is important to look at how appTextMessage interacts with any change to this section as it relies upon this script to make a call to any message sender.
|
|
|
|
BeforeCallPhoneDS = PDS_MAXIMUM //After a call has finished the phone display state usually alters to whatever it was before the call came through.
|
|
//We don't really want to go back to the "calling contact" screen after an answerphone message so we set it to PDS_MAXIMUM
|
|
//here. We could just as easily put the phone completely away if need be.
|
|
//NB - This also means that when browsing the contacts list, if a calls comes through and it terminates then we default
|
|
//back to MAXIMUM mode not browsing the contacts list.
|
|
|
|
|
|
//N.B BeforeCallPhoneDS state above, now superseded by BeforeCallStateHandler cued from dialogue handler.
|
|
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
PRINTNL()
|
|
PRINTSTRING ("APP_CONTACTS - AppContacts terminating due to status changing to ongoing call")
|
|
PRINTNL()
|
|
|
|
#endif
|
|
|
|
|
|
|
|
Cleanup_and_Terminate() //Likewise, having this here will make sure this script is terminated should any call come through...
|
|
|
|
|
|
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
IF CHECK_FOR_ABNORMAL_EXIT()
|
|
|
|
Cleanup_and_Terminate()
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
IF g_TerminateApp = TRUE
|
|
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
PRINTNL()
|
|
PRINTSTRING ("APP_CONTACTS - AppContacts terminating due to g_TerminateApp = TRUE")
|
|
PRINTNL()
|
|
|
|
#endif
|
|
|
|
|
|
|
|
Cleanup_and_Terminate()
|
|
|
|
ENDIF
|
|
*/
|
|
|
|
|
|
|
|
|
|
#if IS_DEBUG_BUILD
|
|
|
|
/*
|
|
IF IS_KEYBOARD_KEY_JUST_PRESSED (KEY_7)
|
|
NETWORK_MUTE_GAMER(m_sPlayers.selectedPlayerHandle, TRUE)
|
|
ENDIF
|
|
|
|
IF IS_KEYBOARD_KEY_JUST_PRESSED (KEY_8)
|
|
NETWORK_MUTE_GAMER(m_sPlayers.selectedPlayerHandle, FALSE)
|
|
ENDIF
|
|
*/
|
|
|
|
//Show Graeme this issue.
|
|
/*
|
|
IF NOT IS_STRING_NULL_OR_EMPTY(singlecharacter[0])
|
|
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING (0.35, 0.84, "STRING", singlecharacter[0])
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING (0.4, 0.84, "STRING", singlecharacter[1])
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING (0.45, 0.84, "STRING", singlecharacter[2])
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING (0.5, 0.84, "STRING", singlecharacter[3])
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING (0.55, 0.84, "STRING", singlecharacter[4])
|
|
|
|
ENDIF
|
|
*/
|
|
|
|
/*
|
|
|
|
IF NOT IS_STRING_NULL_OR_EMPTY(NewStringToAppend[4])
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING (0.35, 0.84, "STRING", NewStringToAppend[4])
|
|
ENDIF
|
|
|
|
IF NOT IS_STRING_NULL_OR_EMPTY(NewStringToAppend[5])
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING (0.4, 0.84, "STRING", NewStringToAppend[5])
|
|
ENDIF
|
|
|
|
IF NOT IS_STRING_NULL_OR_EMPTY(NewStringToAppend[6])
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING (0.45, 0.84, "STRING", NewStringToAppend[6])
|
|
ENDIF
|
|
|
|
IF NOT IS_STRING_NULL_OR_EMPTY(NewStringToAppend[7])
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING (0.5, 0.84, "STRING", NewStringToAppend[7])
|
|
ENDIF
|
|
|
|
IF NOT IS_STRING_NULL_OR_EMPTY(NewStringToAppend[8])
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING (0.55, 0.84, "STRING", NewStringToAppend[8])
|
|
ENDIF
|
|
|
|
|
|
|
|
IF ARE_STRINGS_EQUAL(NewStringtoAppend[4], "4")
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING (0.55, 0.64, "STRING", "Four")
|
|
ENDIF
|
|
|
|
*/
|
|
|
|
//draw_debug_screen_grid()
|
|
|
|
//This command should be okay to use in release mode.
|
|
//IF GET_LENGTH_OF_LITERAL_STRING (NumpadEntryString) > 5
|
|
// DISPLAY_TEXT_WITH_LITERAL_STRING (0.05, 0.5, "STRING", "TEST!")
|
|
//ENDIF
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
ENDWHILE
|
|
|
|
|
|
ENDSCRIPT
|
|
|
|
|