// ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** // // SCRIPT NAME : cellphone_globals.sch // AUTHOR : Steven Taylor ( main user ). // DESCRIPTION : Enums and structs for use with the cellphone and accessible from // other scripts. Also includes dialogue handling vars and consts. // // // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** USING "types.sch" // Keith 26/9/12: To get PEDHEADSHOT_ID USING "charsheet_global_definitions.sch" //Needs to be here so we can reference the character list enum. USING "commands_pad.sch" //________________________________________________________________________________________________________________________________________________________________________________ // // Cellphone Phone Bit Set 1. // //________________________________________________________________________________________________________________________________________________________________________________ //Add more to this if need be... 0, 1, 2... to 31. Linked to BitSet_CellphoneDisplay CONST_INT g_BS_DISPLAY_NEW_CONTACT_SIGNIFIER 0 CONST_INT g_BS_DISPLAY_NEW_TXTMSG_SIGNIFIER 1 CONST_INT g_BS_DISPLAY_NEW_SIDETASK_SIGNIFIER 2 CONST_INT g_BS_DISPLAY_NEW_EMAIL_SIGNIFIER 3 CONST_INT g_BS_DISPLAY_NEW_APPOINTMENT_SIGNIFIER 4 CONST_INT g_BS_DISPLAY_NEW_JOBLIST_SIGNIFIER 5 CONST_INT g_BS_HAS_SIGNIFIER_MOVIE_LOADED 6 CONST_INT g_BS_CELLPHONE_TEXTFEED_NEEDS_UPDATED 7 CONST_INT g_BS_LAUNCH_PHONE_TO_HOMESCREEN 8 CONST_INT g_BS_SENDING_CELLPHONE_CAM_PIC 9 CONST_INT g_BS_SENDING_TXTMSG_TO_ALL_PLAYERS 10 CONST_INT g_BS_PHONE_UP_TO_EAR 11 CONST_INT g_BS_REMOVE_ALL_PENDING_TXTMSG_DATA 12 CONST_INT g_BS_DISABLE_SIGNIFIERS_FOR_CUTSCENE 13 CONST_INT g_BS_HAS_CELLPHONE_FULLY_MOVED_UP 14 CONST_INT g_BS_DOCKS_SETUP_TUTORIAL_ONGOING 15 CONST_INT g_BS_AUTO_SCROLL_CONTACT_ENABLED 16 CONST_INT g_BS_OTHER_OPTION_IS_DISPLAYED 17 CONST_INT g_BS_CAMERA_READY_TO_TAKE_PHOTO 18 CONST_INT g_BS_MP_REQUESTS_RESET_OF_TXT_SIG 19 CONST_INT g_BS_DISABLE_INCOMING_OR_OUTGOING_CALL_HANGUP 20 CONST_INT g_BS_PICTURE_TAKE_BUTTON_PRESSED 21 CONST_INT g_BS_FORCE_CELLPHONE_CAM_AUTO_CONTINUE 22 CONST_INT g_BS_WAITING_ON_APP_TO_LOAD 23 CONST_INT g_BS_FORCE_CALL_WITH_REPLIES_NEGATIVE 24 CONST_INT g_BS_DISPLAY_SLEEP_SIGNIFIER 25 CONST_INT g_BS_SNIPER_APP_SELECTED 26 CONST_INT g_BS_PROMPT_FLASHHAND_TO_PLAY_REMOTE_RING 27 CONST_INT g_BS_DISPLAY_SEND_IN_CAMERA_HELP_TEXT 28 CONST_INT g_BS_SENDPIC_CONTACT_SELECTED 29 CONST_INT g_BS_MOVE_PHONE_DOWN_INSTANTLY 30 CONST_INT g_BS_DO_TEXT_MESSAGE_PREVIEW 31 INT BitSet_CellphoneDisplay = 0 //clear all bits. //________________________________________________________________________________________________________________________________________________________________________________ // // Cellphone Phone Bit Set 2. Be careful when setting or clearing these! All BSCs should use Continued. // //________________________________________________________________________________________________________________________________________________________________________________ CONST_INT g_BSC_LAUNCH_FINALE_CONTACTS 0 CONST_INT g_BSC_UPDATE_NEG_BUTTON_PRESENCE 1 CONST_INT g_BSC_REQUESTED_DISABLE_CELLPHONE_THIS_FRAME 2 CONST_INT g_BSC_SHOULD_DISABLE_CAMERA_APP_THIS_FRAME 3 CONST_INT g_BSC_REQUESTED_DISABLE_CAMERA_APP_THIS_FRAME 4 CONST_INT g_BSC_FINISHED_CALL_RETURNS_TO_HOMESCREEN 5 CONST_INT g_BSC_SHOULD_DISABLE_INTERNET_APP_THIS_FRAME 6 CONST_INT g_BSC_REQUESTED_DISABLE_INTERNET_APP_THIS_FRAME 7 CONST_INT g_BSC_CELLPHONE_THREEQUARTERS_UP 8 CONST_INT g_BSC_UNIVERSAL_REPLIES_FOR_N_LINES_HAS_BEEN_SET 9 CONST_INT g_BSC_LAUNCH_APPINTERNET_ON_RETURN_TO_PDS_MAXIMUM 10 CONST_INT g_BSC_CELLPHONE_SIGNIFIERS_NEEDS_UPDATED 11 CONST_INT g_BSC_AUTO_BACK_TEXTS_SINGLEMESSAGE_VIEW 12 CONST_INT g_BSC_LOW_QUALITY_CREATE_FAILED 14 CONST_INT g_BSC_LOAD_FROM_MEDIA_FAILED 15 CONST_INT g_BSC_LAST_CALL_ABORTED_DUE_TO_SCRIPT_HANGUP 16 CONST_INT g_BSC_PREVENT_CELLPHONE_LINESKIP 17 CONST_INT g_BSC_TERMINATE_APPCONTACTS_FOR_CHAT_CALL 18 CONST_INT g_BSC_PREVENT_CALL_FOR_CHAR_DETONATEPHONE 19 CONST_INT g_BSC_SET_CHAT_CALL_AS_ENGAGED 20 CONST_INT g_BSC_PLAY_INTERFERENCE_AUDIO 21 CONST_INT g_BSC_SKIP_TRACKIFY_LOADING_SCREEN 22 CONST_INT g_BSC_CELLPHONE_WITH_REPLIES_WAITING_ON_USER_INPUT 23 CONST_INT g_BSC_CALL_IN_PROGRESS_VANISH_PHONE 24 CONST_INT g_BSC_CALL_IN_PROGRESS_REINSTATE_PHONE 25 CONST_INT g_BSC_CALL_IN_PROGRESS_PHONE_FULLY_VANISHED 26 CONST_INT g_BSC_CALL_IN_PROGRESS_PHONE_ALREADY_SIGNALLED_TO_VANISH_BY_DH 27 CONST_INT g_BSC_BYPASS_CAMERA_APP_SAVE_ROUTINE 28 CONST_INT g_BSC_HIDE_TRACKIFY_TARGET_ARROW 29 CONST_INT g_BSC_REMOVE_TRACKIFY_TARGET 30 CONST_INT g_BSC_THIS_IS_AN_ANSWERPHONE_CALL 31 INT BitSet_CellphoneDisplay_Continued = 0 //clear all bits. //______________________________________________________________________________________________________________________________________________________________________________________ // // Cellphone - Third and final bitset. Be careful when setting or clearing these! Make sure to designate as third // //______________________________________________________________________________________________________________________________________________________________________________________ CONST_INT g_BSTHIRD_KEEP_MP_CALL_ACTIVE_ON_PAUSE_MENU 0 CONST_INT g_BSTHIRD_DISPLAY_TRACKIFY_RELATIVE_HEIGHT 1 CONST_INT g_BSTHIRD_DO_NOT_MOVE_PHONE_UP_ON_LAUNCH 2 CONST_INT g_BSTHIRD_IS_CAMERA_IN_SELFIE_MODE 3 CONST_INT g_BSTHIRD_REPOSITION_SUBS_FOR_LANDSCAPE_PHONE 4 CONST_INT g_BSTHIRD_PREVENT_PRELOADED_PHONECALL_START 5 CONST_INT g_BSTHIRD_HUMAN_CONTACT_HIGHLIGHT_AVAILABLE 6 CONST_INT g_BSTHIRD_HUMAN_HIDE_FOR_HANDS_FREE_HELP_DONE 7 CONST_INT g_BSTHIRD_HUMAN_TAKEOUT_FOR_HANDS_FREE_HELP_DONE 8 //6417795 - April 2020 //Adding new bit to specify when the MP Cellphone homescreen has been switched and is operating in secondary mode. CONST_INT g_BSTHIRD_MP_CELLPHONE_IN_SECONDARY_MODE 9 //CONST_INT g_CELLPHONE_MOVIE_STREAMING_IN 10 //Comment in for resolution of 1135663 INT BitSet_CellphoneDisplay_Third = 0 //Used to throttle the cellphone's clock display to prevent scaleform method repetition every frame. //Needs to be a global as this is used by appContacts and cellphone flashhand.sc INT ClockThrottleMins //________________________________________________________________________________________________________________________________________________________________________________ // // Cellphone Quicksave // //________________________________________________________________________________________________________________________________________________________________________________ BOOL g_HasCellphoneRequestedSave BOOL g_QuickSaveDisabledByScript INT g_HomescreenIcon_AlphaValue = 255 CONST_INT i_HomescreenIcon_FullAlpha 255 CONST_INT i_HomescreenIcon_GreyedOut 42 //________________________________________________________________________________________________________________________________________________________________________________ // // Phone Application Enums // //________________________________________________________________________________________________________________________________________________________________________________ //Cellphone Application List ENUM enumApplicationList AppCONTACTS, AppTEXTS, AppINTERNET, AppCAMERA, AppCHECKLIST, AppSIDETASK, AppREPEATPLAY, AppEMAIL, AppORGANISER, AppBAWSAQ, AppSETTINGS, AppPAGE2APPS, AppDEDICATEDSLEEP, AppMPCOPBACKUP, // KGM 6/9/11: 'Cop Backup' app for cops only AppMPJOBLIST, // KGM 5/9/11: Replaced with new app AppPAUSEMAP, AppSNIPER, AppTRACKIFY, AppZIT, AppMEDIA, AppQUICKSAVE, AppJIPMP, AppBroadcast, // AppMPPLAYERLIST, //Necessary dummies to fill out empty slots. Add more for every tributary homescreen that is added. AppDummyApp0, AppDummyApp1, AppDummyApp2, AppDummyApp3, AppDummyApp4, AppDummyApp5, AppDummyApp6, AppDummyApp7, AppDummyApp8, AppDummyApp9, AppDummyApp10, //Don't remove MAX_APPLICATIONS, MAX_APPLICATIONS_PLUS_DUMMY ENDENUM ENUM enumAppAvailabilityOWNER1 App_O1_LOCKED, App_O1_UNLOCKED ENDENUM ENUM enumAppAvailabilityOWNER2 App_O2_LOCKED, App_O2_UNLOCKED ENDENUM ENUM enumAppAvailabilityOWNER3 App_O3_LOCKED, App_O3_UNLOCKED ENDENUM //Will need to be a saved global so we can keep tack of each apps availability for each owner. STRUCT structAppList TEXT_LABEL AppName //the name of the app for displaying on the phone INT ThisAppPosition //the position this app should occupy in the flash master position list. TEXT_LABEL AppScriptName //the name of the script to be launched when this app is selected. INT AppScriptNameHash //stores the hash key for this selected app. INT SF_IconEnum //specifies which icon should be displayed with this app on the home menu. INT Homescreen_Page_Precedence //defines which homescreen this app should appear on. 1 is the first, 2 would mean it would appear in the first screen of "more apps", //3 would be "even more apps" if need be. This is necessary so I can make sure that I don't try to populate the 3 x 3 grid or whatever //with two or more apps in the same slot ( they can share the same slot number ) as I work through the slot placement routine. //This has the added advantage of "0" not appearing in the list. //Icon name here? enumAppAvailabilityOWNER1 O1_Availability enumAppAvailabilityOWNER2 O2_Availability enumAppAvailabilityOWNER3 O3_Availability //Perhaps have the ringtones and wallpaper stored here for each OWNER also? ENDSTRUCT //The main list of cellphone apps //Will need to be saved globals... structAppList g_AppList[MAX_APPLICATIONS_PLUS_DUMMY] //Temp: This would be the flash array of empty positions. //Need to fill application list. INT AppSlot[MAX_APPLICATIONS_PLUS_DUMMY] BOOL Has_this_AppSlot_Been_Assigned[MAX_APPLICATIONS_PLUS_DUMMY] INT g_LastUsed_Homescreen_Page_Precedence //Store the last homescreen precedence stipulated so that we can return to it from an application exit. BOOL g_TerminateApp //bool flag used to let Check_Application_Exit() public proc know that it should terminate. INT g_App_SafetyBuffer_StartTime INT g_App_Elapsed_SafetyBuffer = 0 //stores how long the safety buffer has been in operation for comparison with the required duration. Should be reset to zero at app launch. INT g_App_Required_SafetyBuffer_Duration = 300 //determines the length of the safety buffer. During the safety buffer timezone, apps won't check for the exit button - see bug 25815 //________________________________________________________________________________________________________________________________________________________________________________ // // Phone Signifiers // //________________________________________________________________________________________________________________________________________________________________________________ ENUM eSignifierType SIG_EMPTY, SIG_CONTACT1, SIG_CONTACT2, //will be used for adding more than contact at once. SIG_TEXT, SIG_EMAIL, SIG_JOB, SIG_APPOINT, SIG_SIDETASK, MAX_SIGNIFIERS ENDENUM ENUM eSignifierStatus SIG_OFFSCREEN, SIG_ONSCREEN, SIG_MULTIPLE ENDENUM STRUCT structSignifierSlot //INT SignifierIcon TEXT_LABEL SignifierPrimaryText //enumCharacterList SignifierCharacter //TEXT_LABEL SignifierSecondaryText eSignifierStatus SignifierStatus //INT SignifierDuration enumPhoneBookPresence SignifierPhoneBook ENDSTRUCT structSignifierSlot SignifierData[MAX_SIGNIFIERS] TEXT_LABEL BufferedContactSignifierText[4] //Used to hold a copy of any new contact label that should be buffered for a player character. BOOL BufferedContactAvailable[4] //Set when necessary by cellphone_public's add_contact routine and checked by cellphone controller on a player swap. enumCharacterlist BufferedHeadshotRef[4] enumCharacterList g_Temp_ContactHeadshotRef enumCharacterList g_Temp_MP_PassedCharacterListRef TEXT_LABEL_63 g_Temp_MP_SenderString INT g_Current_Number_Of_Signifiers = 0 //We use this to keep track of when we need to request or remove the scaleform signifier movie loaded in cellphone_controller.sc //If it's greater than zero we request and load the movie, and once it returns to zero, we remove the movie. BOOL g_UseContactSignifierNewType = FALSE ENUM eLastTextSentTo WAS_SENT_TO_MICHAEL, WAS_SENT_TO_FRANKLIN, WAS_SENT_TO_TREVOR, WAS_SENT_TO_MULTIPLAYER, WAS_SENT_TO_EVERY_SP_CHARACTER ENDENUM eLastTextSentTo g_LastTextSentTo //When a text message is sent, the global g_TextMessageIconStyle is used within CREATE_ALERT to display the desired signifier... ENUM eTextMessageIconStyle ICON_STANDARD_TEXTMSG, ICON_REPLAY_TEXTMSG, ICON_SHITSKIP_TEXTMSG ENDENUM // eTextMessageIconStyle g_TextMessageIconStyle ENUM enumRecipientList SILENT_MICHAEL, SILENT_FRANKLIN, SILENT_TREVOR, NO_SILENT_RECIPIENT ENDENUM //________________________________________________________________________________________________________________________________________________________________________________ // // Phone Numpad // //________________________________________________________________________________________________________________________________________________________________________________ ENUM enumNumpadList NUM_0, NUM_1, NUM_2, NUM_3, NUM_4, NUM_5, NUM_6, NUM_7, NUM_8, NUM_9, NUM_10_ASTERISK, NUM_11_HASH, //Don't remove MAX_NUMPAD_ENTRIES, MAX_NUMPAD_ENTRIES_PLUS_DUMMY ENDENUM STRUCT structNumpadList TEXT_LABEL NumpadLabel //reference to a text label containing the number or special character to be displayed. We might not need this when literals can be displayed. INT ThisNumpadPosition //the position this num should occupy in the flash master position list. ENDSTRUCT structNumpadList NumpadList[MAX_NUMPAD_ENTRIES_PLUS_DUMMY] TEXT_LABEL g_Redial_NumpadEntryString[4] //used to store any entered number for redial purposes. Now needs one for each character. See bug INT NumpadSlot[MAX_NUMPAD_ENTRIES] //________________________________________________________________________________________________________________________________________________________________________________ // // Phone Settings Sheet // //________________________________________________________________________________________________________________________________________________________________________________ ENUM enumSettingList // SETTING_PROFILE, //0 SETTING_RINGTONE, //1 SETTING_THEME, //2 SETTING_VIBRATE, SETTING_WALLPAPER, SETTING_MISC_A, //Now used for Invite Sound in MP. SETTING_MISC_B, //Extra settings for any DLC use. Free. SETTING_MISC_C, //Free SETTING_MISC_D, //Free MAX_SETTINGS, MAX_SETTINGS_PLUS_DUMMY, NO_SETTING ENDENUM ENUM enumPhoneGuiPresence UNAVAILABLE_IN_GUI, AVAILABLE_IN_GUI ENDENUM // Setting List structure CONST_INT Max_Settings_Secondary_Options 19 STRUCT structSettingList INT Setting_orderint //int used for alphabetical order. This can be altered on the fly, so that a priority setting can be stipulated and sent to the top of the settings list. INT Setting_original_orderint //int used to keep a copy of the original alpha int for all settings so they can be reordered after a priority setting routine. TEXT_LABEL Setting_Primary_label //text label of setting name as it would be displayed on the phone's setting list INT Setting_Icon_Int //icon_int TEXT_LABEL Setting_Secondary_Option_labels[Max_Settings_Secondary_Options] INT Setting_Secondary_Order[Max_Settings_Secondary_Options] INT Setting_Secondary_Icon_Int[Max_Settings_Secondary_Options] BOOL Setting_Secondary_Option_available[Max_Settings_Secondary_Options] TEXT_LABEL_23 Setting_Secondary_Option_filename_label[Max_Settings_Secondary_Options] //needs to be a pointer to a label so it can be easily changed by someone else. INT Setting_Currently_Selected_Option //Stores which secondary option has been stored for this particular setting, defaults to zero. //INT Setting_Linked_Wallpaper[Max_Settings_Secondary_Options] //Removed to save globals 15.03.13 INT Setting_Linked_SF_Reference[Max_Settings_Secondary_Options] enumPhoneGuiPresence phoneGuiPresence //allows us to specify if this particular setting should be available in the settings menu. ENDSTRUCT //Needs to be saved globals... STRUCT structThis_Cellphone_Owner_Settings //Moved this into a separate structure to prevent savegame size mismatch. //structSettingList g_SettingList[MAX_SETTINGS_PLUS_DUMMY] TEXT_LABEL_23 ScaleformOS_Movie_Name //the filename of the cellphone scaleform movie that this owner should load. INT ThemeForThisPlayer INT OSTypeForThisPlayer INT ProviderForThisPlayer INT WallpaperForThisPlayer //This is unlikely to be a saved global... //INT ProfileForThisPlayer INT VibrateForThisPlayer TEXT_LABEL_23 RingtoneForThisPlayer BOOL g_LastMessageSentMustBeRead BOOL g_LaunchToTextMessageScreen BOOL Is_This_Player_On_Scheduled_Activity ENDSTRUCT BOOL g_IsMonochromeCheatActive = FALSE CONST_INT Max_Setting_Profiles 4 STRUCT g_CellphoneSettingsSavedData structThis_Cellphone_Owner_Settings This_Cellphone_Owner_Settings[Max_Setting_Profiles] BOOL b_HasSettingsHelpBeenDisplayed //Now used for Focus Lock help. BOOL b_HasSleepWarningBeenDisplayed BOOL b_HasSleepIconHelpBeenDisplayed BOOL b_HasSleepReminderBeenDisplayed BOOL b_HasQuickSaveHelpBeenDisplayed BOOL b_HasTranslucentIconHelpBeenDisplayed BOOL b_MP_HasTranslucentIconHelpBeenDisplayed BOOL b_IsSniperAppAvailable BOOL b_IsTrackifyAppAvailable ENDSTRUCT STRUCT structThis_Cellphone_Owner_Settings_ListContents structSettingList g_SettingList[MAX_SETTINGS_PLUS_DUMMY] ENDSTRUCT structThis_Cellphone_Owner_Settings_ListContents This_Cellphone_Owner_Settings_ListContents[Max_Setting_Profiles] //Profile Enum for improved clarity of functionality when used in other scripts. ENUM PhoneProfileEnum PROFILE_NORMAL_MODE, //0 PROFILE_QUIET_MODE, //1 PROFILE_SLEEP_MODE //2 ENDENUM //________________________________________________________________________________________________________________________________________________________________________________ // // Physical Phone Display, Navigation and Status // //________________________________________________________________________________________________________________________________________________________________________________ //Primary Scaleform drawing screen position and size. //Notes: //Prescribed phone width - height ratio from Gareth 0.316 x 0.755 FLOAT g_SF_PhonePosX = 0.1 FLOAT g_SF_PhonePosY = 0.179 FLOAT g_SF_PhoneSizeX = 0.2 FLOAT g_SF_PhoneSizeY = 0.356 FLOAT g_SF_ButtonsPosX = 0.1 FLOAT g_SF_ButtonsPosY = 0.325//Proper 0.325 - 0.350 is a placeholder until we get transparency for the button bar. FLOAT g_SF_ButtonsSizeX = 0.19//0.2 FLOAT g_SF_ButtonsSizeY = 0.060 VECTOR g_3dPhonePosVec = <<-30.0, 3.0, -90.0>> //Pocket work. VECTOR g_3dPhoneRotVec = <<0.0, 0.0, 0.0>> VECTOR g_3dPhoneDebugRotVec = <<-89.8, -14.7, 0.0>>//Second angle <<-93.3, -23.4, 0.0>> // Old nice jaunty angle for testing <<-90.0, 0.0, 0.0>> VECTOR g_TempCamPosvec BOOL g_3dPhoneNeedsMovedUp, g_3dPhoneNeedsMovedDown BOOL g_Cellphone_FullScreen_Mode = FALSE BOOL g_Use_Prologue_Cellphone = FALSE BOOL g_Cellphone_FH_Needs_To_Exit = FALSE //Use these to determine where the 3d phone model should initially be positioned before moving it up onto the screen and where it should finish drawing. //The declarations and screen type is ascertained in cellphone_controller.sc ENUM Screen_Display_Type DISPLAY_16_9, DISPLAY_4_3 ENDENUM Screen_Display_Type g_Chosen_Ratio //These are initialised at runtime in cellphone controller when the screen ratio is determined. VECTOR g_This_Screen_3dPhoneStartVec[2] VECTOR g_This_Screen_3dPhoneEndVec[2] //Rotation at start... This is the default starting rotation of the phone. VECTOR g_3dPhoneStartRotVec = <<-90.0, 0.0, 0.0>>//<<-90.00, 2.7, -0.0>> //Old RHS<<-89.8, -14.7, 0.0>> VECTOR g_3dPhonePocketRotVec = <<-90.0, -100.4, 0.0>>//<<-90.00, 2.7, -0.0>> //Old RHS<<-89.8, -14.7, 0.0>> //When the phone is moving down screen, it is temporarily blocked... BOOL g_Phone_Blocked_While_Moving_Down = FALSE //Temporary macro for the action to take the phone from a pocket into min mode. A subsequent press will maximise the phone. //Important! DPAD / CIRCLE / SQUARE should be replaced by whatever INPUT enum entry is eventually provided for this from commands_pad.sch //Update 15.02.12 Instructed to use frontend controls by Adam F. May cause issues with any Japanese build due to frontend switchover, so need to consider this. //CONTROL_ACTION INT PHONE_TAKEOUT_INPUT = ENUM_TO_INT (INPUT_PHONE)//Changed at request of Stephen R. //(INPUT_CELLPHONE_UP) //(INPUT_FRONTEND_UP) //(DPADUP) // INT PHONE_GO_BACK_INPUT = ENUM_TO_INT (INPUT_CELLPHONE_CANCEL) //(INPUT_FRONTEND_CANCEL) //(CIRCLE) INT PHONE_POSITIVE_INPUT = ENUM_TO_INT (INPUT_CELLPHONE_SELECT) //(INPUT_FRONTEND_ACCEPT) //(CROSS) INT PHONE_NEGATIVE_INPUT = ENUM_TO_INT (INPUT_CELLPHONE_CANCEL) //(INPUT_FRONTEND_CANCEL) //(CIRCLE) //May need to change these frontend control assignments. INT PHONE_DELETE_OPTION_INPUT = ENUM_TO_INT (INPUT_CELLPHONE_EXTRA_OPTION) //(INPUT_CELLPHONE_OPTION) //ENUM_TO_INT //(INPUT_FRONTEND_Y) //(TRIANGLE) INT PHONE_SPECIAL_OPTION_INPUT = ENUM_TO_INT (INPUT_CELLPHONE_EXTRA_OPTION) //(INPUT_CELLPHONE_OPTION) //ENUM_TO_INT //(INPUT_FRONTEND_Y) //(TRIANGLE) INT PHONE_EXTRA_SPECIAL_OPTION_INPUT = ENUM_TO_INT (INPUT_CELLPHONE_OPTION) //(INPUT_CELLPHONE_EXTRA_OPTION) //(SQUARE) INT PHONE_NAV_LEFT_INPUT = ENUM_TO_INT (INPUT_CELLPHONE_LEFT) //(INPUT_FRONTEND_LEFT) //(DPADLEFT) INT PHONE_NAV_RIGHT_INPUT = ENUM_TO_INT (INPUT_CELLPHONE_RIGHT) //(INPUT_FRONTEND_RIGHT) //(DPADRIGHT) INT PHONE_NAV_UP_INPUT = ENUM_TO_INT (INPUT_CELLPHONE_UP) //(INPUT_FRONTEND_UP) //(DPADUP) INT PHONE_NAV_DOWN_INPUT = ENUM_TO_INT (INPUT_CELLPHONE_DOWN) //(INPUT_FRONTEND_DOWN) //(DPADDOWN) /* INPUT_CELLPHONE_UP, INPUT_CELLPHONE_DOWN, INPUT_CELLPHONE_LEFT, INPUT_CELLPHONE_RIGHT, INPUT_CELLPHONE_SELECT, INPUT_CELLPHONE_CANCEL, INPUT_CELLPHONE_OPTION, INPUT_CELLPHONE_SCROLL_FORWARD, INPUT_CELLPHONE_SCROLL_BACKWARD, */ //Usage example: // IF IS_BUTTON_PRESSED (PAD1, INT_TO_ENUM(PAD_BUTTON_NUMBER, PHONE_TAKEOUT_INPUT)) etc. BOOL g_InputButtonJustPressed = FALSE //used to prevent button presses following through screen modes - can't use wait with scaleform at certain points. //Temp - will be handled by flash navigation... BOOL dpad_pause_cued = FALSE //might not be! INT AppCursorIndex = 0 /*See bug 605548 for removal reasons. ENUM e_DelayCinematicCamReinstatement NO_DELAY_REQUIRED, INITIALISE_DELAY, ONGOING_DELAY ENDENUM e_DelayCinematicCamReinstatement g_DelayCinematicCamReinstatement = NO_DELAY_REQUIRED */ //Scaleform index global for storing Scaleform Movie ID SCALEFORM_INDEX SF_MovieIndex //SF_MovieButtonsIndex BOOL g_B_Scaleform_Movies_Loaded = FALSE //boolean to prevent double loading of scaleform movies assets. BOOL g_B_External_Interrupt_Autoplay_MovieFail_Flag = FALSE BOOL g_Attempted_Call_Aborted = FALSE BOOL g_B_ForcedAway = FALSE BOOL g_PhoneGuiRender_Enabled = TRUE BOOL g_MainGui_RendertargetNeedsReset = FALSE //Button constants. Old order. /* CONST_INT BADGER_POS 1 CONST_INT BADGER_OTHER 2 CONST_INT BADGER_NEG 3 */ //Test order CONST_INT BADGER_OTHER 1 CONST_INT BADGER_POS 2 CONST_INT BADGER_NEG 3 BOOL g_b_ToggleButtonLabels //Audio Sound IDS for playing keytones / ringtones //INT g_Phone_Ringtone_SoundID TEXT_LABEL_23 g_Owner_Soundset //Sorting method for Repeat Play list. INT g_RepeatPlaySortingMethod = 0 INT g_CheckListSortingMethod = 0 //Cellphone ThreadID. THREADID Cellphone_FlashResponseThread, Application_Thread // Enum to signify whether the phone should be absent from the screen, drawn minimal so that only common functions // are present or fully drawn on screen in a number of various states. // DO NOT ALTER THIS! CRITICAL PHONE STUFF! ENUM enumPhoneDisplayStatus PDS_DISABLED_THIS_FRAME_ONLY, //0 PDS_DISABLED, //1 PDS_SLEEPING, //2 PDS_AWAY, //3 PDS_TAKEOUT, //4 PDS_MINIMAL, //5 PDS_MAXIMUM, //6 PDS_RUNNINGAPP, //7 PDS_COMPLEXAPP, //8 PDS_ONGOING_CALL, //9 PDS_ATTEMPTING_TO_CALL_CONTACT //10 ENDENUM ENUM enumInboundCallStatus CALL_NONE_WAITING, CALL_WAITING_TO_BE_ANSWERED, CALL_ACCEPTED, CALL_REJECTED ENDENUM enumInboundCallStatus g_InboundCallWaitAccRej STRUCT structCellphone enumCharacterList PhoneOwner enumPhoneDisplayStatus PhoneDS //Perhaps have call status in here... ENDSTRUCT //The main cellphone struct. StructCellPhone g_Cellphone //Phone Operating System and Provider Constants //They have to be in this order so they match up with a scaleform method for selecting the appropriate web browser skin. CONST_INT OS_BADGER 0 CONST_INT OS_BITTERSWEET 0 CONST_INT OS_POLICE 1 CONST_INT OS_FACADE 2 CONST_INT OS_IFRUIT 3 CONST_INT PROVIDER_DEFAULT 0 //Will default to badger in scaleform. CONST_INT PROVIDER_BADGER 1 CONST_INT PROVIDER_WHIZ 2 CONST_INT PROVIDER_TINKLE 3 CONST_INT WALLPAPER_DEFAULT 0 CONST_INT WALLPAPER_BADGER 1 CONST_INT WALLPAPER_WHIZ 2 CONST_INT WALLPAPER_TINKLE 3 //Inner workings. enumPhoneDisplayStatus BeforeCallPhoneDS //used to store whatever the phone display state was before a call was made. If a call is accepted, then finished or hung up, the phone will //return to whatever state it was in before... //Stores selected index values after player navigates phone menus which are array based. INT SelectedAppIndex INT Previous_SelectedAppCursorPos_PageOne, Previous_SelectedAppCursorPos_PageTwo //stores a copy of the last selectedAppIndex cursor position so that it can be restored on a return to the homescreen. //INT g_SelectedContactIndex //Moved here so that it can be interrogated by public functions used in phone tutorial. //CONST_INT MaxNumberOfContactSlots 40 INT ContactListSlot[MAX_CHARACTERS_PLUS_DUMMY] //up for deletion. appContacts can now be cutdown post scaleform. Will check debug overlays. enumCharacterList g_ForcedContactSelection = NO_CHARACTER //Global to hold whether or not the phone was brought up by the player or launched from a script command. BOOL g_Cellphone_Launched_by_Button_Press = FALSE //Misc cellphone functionality used by cellphone_public.sch //Alert signifiers - these specify which alerts should display on the hud. If TRUE they will be shown. BOOL g_DisplayNewSideTaskSignifier //BOOL g_DisplayNewEmailSignifier, g_DisplayNewAppointmentSignifier, g_DisplayJobListMsgSignifier BOOL g_Phone_Active_but_Hidden = FALSE BOOL g_Homescreen_In_Secondary_Mode, g_b_Secondary_Screen_Available BOOL g_b_QuickSaveGreyedOut = FALSE BOOL g_b_CameraGreyedOut = FALSE BOOL Movement_Exception = FALSE //lets the 1st person animations and scaleform movement homescreen routines know if they should swap. Set from cellphone_flashhand's navigation processes. BOOL g_b_ReplaceThisWithQSavailable = TRUE //This can be removed at a later date when a function is used to check for quick save availability. This is merely a test var to //allow a test run of dynamic homescreen icon replacement. //Other references in cellphone_private.sch, cellphone_flashhand.sc and for testing, cellphone_controller. //________________________________________________________________________________________________________________________________________________________________________________ // // Conversation Buffer // //________________________________________________________________________________________________________________________________________________________________________________ CONST_INT g_BS_STANDARD_CONVERSATION_BUFFER_ACTIVE 0 CONST_INT g_BS_STANDARD_CONVERSATION_BUFFER_TIMER_BEGUN 1 INT BitSet_DialogueHandler = 0 //clear all bits. //________________________________________________________________________________________________________________________________________________________________________________ // // Dialogue Handling Globals. // //________________________________________________________________________________________________________________________________________________________________________________ CONST_INT constConversationLabels 70 //There are conversations of approximately 70 lines long already - including SFX pauses. CONST_INT constMaxNum_Conversers 16 //This could be increased up to 36, 0-9 plus A to Z which populate array indices 10 to 36. //If voice IDs were still passed by script at that point, we would need to swap over to an enum based look up table to avoid stack limits. //e.g Voice ID of VOICE_MICHAEL would then be cross referenced with an array of strings in dialogue handler or elsewhere to grab and //pass into the native commands. BOOL g_b_PreloadOngoing = FALSE //Critical preload bool which has to be hacked in at two minutes to midnight. Risky to use bit here. TEXT_LABEL_23 g_ConversationLabels[constConversationLabels] //the maximum amount of labels we can have in any one conversation. //Structs for peds in conversation and the associated textblock. I'm deliberately keeping these two structs separate rather than combining the peds within the conversation data //in an effort to minimize bugs by keeping the text block fairly isolated from the ped array. STRUCT StructIndividualPedInfo PED_INDEX Index TEXT_LABEL_23 VoiceID //decreased from 31 as MaxNum_Conversers has just been upped to 14. If this becomes an actual issue, then enum system comes into play. BOOL ActiveInConversation BOOL PlayAmbientAnims BOOL CanUseAutoLookAt //Specifies whether the ped will use the automatic "look at" code system during scripted conversations. ENDSTRUCT STRUCT structPedsForConversation structIndividualPedInfo PedInfo[constMaxNum_Conversers] INT NullPed_Number_for_VoicePlacement VECTOR NullPed_Vector_for_VoicePlacement ENDSTRUCT CONST_INT constMaxMultiparts 30 //Upped from 10 to facilitate "Shrink" conversations. STRUCT structConversationData TEXT_LABEL_23 ConversationSegmentToGrab TEXT_LABEL_23 MultipartSegmentToGrab[constMaxMultiparts] TEXT_LABEL_23 MultipartSpecificLabel[constMaxMultiparts] BOOL g_DisplaySubtitles BOOL g_AddToBriefScreen BOOL g_CloneConversation ENDSTRUCT //Global instance of array of conversation ped structure and holder. structPedsForConversation g_ConversationPedsStruct, g_ConversationPedsHolderStruct //Global instance of conversation structure structConversationData g_ConversationData TEXT_LABEL_23 g_BufferSegmentToGrab //Global ints to hold number of parts in multipart conversation INT g_TotalMultiparts = 0 INT g_TotalMultipartsHolder = 0 INT g_TotalReplyMultiparts = 0 INT g_TotalReplyMultipartsHolder = 0 ENUM enumConversationStatus CONV_STATE_FREE, CONV_STATE_BUILDING, CONV_STATE_WAITING_ON_PLAYER_ACCREJ, CONV_STATE_PAUSE_ANSWERING_TIME, CONV_STATE_PLAYING, CONV_STATE_HANGUPAWAY, //special case for player hanging up phone. CONV_STATE_FINISHED ENDENUM enumConversationStatus g_ConversationStatus ENUM enumConversationPriority // no priority - nothing is playing CONV_PRIORITY_NONE, CONV_PRIORITY_AMBIENT_LOW, CONV_PRIORITY_NON_CRITICAL_CALL, CONV_PRIORITY_AMBIENT_MEDIUM, CONV_PRIORITY_AMBIENT_HIGH, CONV_PRIORITY_VERY_LOW, CONV_PRIORITY_LOW, CONV_PRIORITY_MEDIUM, CONV_PRIORITY_HIGH, CONV_PRIORITY_VERY_HIGH, CONV_PRIORITY_MP_SPECIAL, //Put cellphone calls at top priority so that any other scripted conversations cannot interrupt. CONV_PRIORITY_CELLPHONE, CONV_PRIORITY_FLOW_ONLY_USE_AMBIENT_SLOT, //Special use by flow phonecalls only. This will force this priority to load into the ambient dialogue slot //in dialogue handler even though the conversation is very high priority and will not be overwritten //by face-to-face or other ambient conversations. This addresses pre-loaded cutscenes hogging / overwriting //the mission dialogue text slot. See #1242086 CONV_PRIORITY_FLOW_ONLY_USE_AMBIENT_SLOT_BYPASS_SLEEPMODE, //As above but these are even more important in that they can bypass sleep mode. FLOW USE ONLY! CONV_MISSION_CALL //Highest priority for end of mission calls? ENDENUM BOOL g_Non_Essential_Call_Aborted_and_CS_Already_Free = FALSE enumConversationPriority g_CurrentlyPlayingConvPriority //stores the priority of the current conversation so that it can be interrogated by any other conversation attempting //to cue which may be of a higher priority and can therefore cancel the currently playing conversation. enumConversationPriority g_BufferConvPriority BOOL g_IsConferenceCall, g_IsConferenceCallHolder //lets cellphone_flashhand.sc know if the call is a conference call and as such, whether to display multiple names on the "calling" screen. BOOL g_IsThisConversationForPhone, g_IsThisConversationForPhoneHolder //lets my systems know whether this conversation is intended for the phone or a face to face conversation. BOOL g_IsThisAnMPJobOffer, g_IsThisAnMpJobOfferHolder BOOL g_UpcomingConversationInboundForCellphone //holds whether the call is inbound to the player's cellphone from another char as opposed to the player calling out proactively. BOOL g_ShouldPhoneBeForcedOnScreen, g_ShouldPhoneBeForcedOnScreenHolder //should the phone be automatically brought up on screen when this call is cued? BOOL g_IsThisAnMPChatCall, g_IsThisAnMPChatCallHolder //this is a special call state that will go through the phonecall graphic system and dialogue handler but not initiate any dialogue as such. TEXT_LABEL_63 g_ChatCallerString, g_ChatCallerStringHolder BOOL g_ForcePlayerAnswer = FALSE //should the player be forced to answer the phone? Any forced answer call means the player is unable to reject any incoming call. BOOL g_ForcePlayerAnswerHolder = FALSE BOOL g_LastCellphoneCallInterrupted = FALSE //if the last phonecall did not conclude naturally at the end of the final line of the conversation, this will be set to true. BOOL g_LastCallHungupDuringCallViaJoypad = FALSE //if the last phonecall was concluded after answering by the user actively hanging up via the joypad during //PlayCellphoneConversation then this will also be set to true. BOOL g_HasStateBeenPreserved = FALSE //has the phone's display state been stored so that it can be reverted back to after any incoming call has concluded. //Globals to handle yes / no responses and phonecall segment labels to conversations that offer branching choices. Need holders to avoid public functions overwriting data. BOOL g_CallRequiringPlayerResponseHolder, g_CallRequiringPlayerResponse BOOL g_IsEmergencyServicesCallHolder, g_IsEmergencyServicesCall BOOL g_AllowUnderwaterDialogue //Under normal circumstances, conversations are terminated when the player enters water. //There are some occasions when this restriction needs to be circumvented. FBI5a for example. //Dynamic phone calls BOOL g_PrepareCallForDynamicBranch //This lets dialogue handler know that the next time a phone call terminates or is interrupted via script, it should not auto-hang up or change view state. TEXT_LABEL_23 g_DynamicBranch_Root, g_DynamicBlockToLoad //The new conversation root and block //Conversation and phonecall labels TEXT_LABEL_23 g_BlockToLoadHolder, g_BlockToLoad //Conceivably, these segment labels could just be replaced by an array of a single holder but that makes it less transparent as to what's going on in some functions. //This may however be adopted if we have more special case question response calls outwith YES / NO and AMBULANCE/FIRE/POLICE TEXT_LABEL_23 g_YesSegmentLabelHolder, g_NoSegmentLabelHolder TEXT_LABEL_23 g_YesSegmentLabel, g_NoSegmentLabel TEXT_LABEL_23 g_AmbulanceSegmentLabelHolder, g_FireSegmentLabelHolder, g_PoliceSegmentLabelHolder TEXT_LABEL_23 g_AmbulanceSegmentLabel, g_FireSegmentLabel, g_PoliceSegmentLabel TEXT_LABEL_23 g_QuestionGodLabel, g_QuestionGodLabelHolder //Special case for Alwyn's friend activity calls which only require a maximum of a two-line multipart reply. May optimise this to use upper limits of standard multipart array. //Will consolidate into universal processing below when convenient. TEXT_LABEL_23 g_Multipart_YesSegmentLabel[2] TEXT_LABEL_23 g_Multipart_NoSegmentLabel[2] TEXT_LABEL_23 g_Multipart_YesSegmentLabelHolder[2] TEXT_LABEL_23 g_Multipart_NoSegmentLabelHolder[2] TEXT_LABEL_23 g_Multipart_YesSpecificLabel[2] TEXT_LABEL_23 g_Multipart_NoSpecificLabel[2] TEXT_LABEL_23 g_Multipart_YesSpecificLabelHolder[2] TEXT_LABEL_23 g_Multipart_NoSpecificLabelHolder[2] BOOL g_b_Is_MultipartRepliesInProgress = FALSE //New methodology to negate holder to save globals. Used in conjunction with a bit and proper checking by polling scripts, i.e checking for a return of TRUE, //this should be safe enough as the system uses a locking bit. TEXT_LABEL_23 g_Multipart_Universal_YesRoots[constMaxMultiparts] TEXT_LABEL_23 g_Multipart_Universal_NoRoots[constMaxMultiparts] TEXT_LABEL_23 g_Multipart_Universal_YesSpecifics[constMaxMultiparts] TEXT_LABEL_23 g_Multipart_Universal_NoSpecifics[constMaxMultiparts] INT g_i_Total_UniversalNoReplies = 0 INT g_i_Total_UniversalYesReplies = 0 //Miscellaneous ENUM enumSubtitlesState DISPLAY_SUBTITLES, DO_NOT_DISPLAY_SUBTITLES ENDENUM ENUM enumBriefScreenState DO_ADD_TO_BRIEF_SCREEN, DO_NOT_ADD_TO_BRIEF_SCREEN ENDENUM enumSubtitlesState g_AssignDisplaySubtitlesBuffer enumBriefScreenState g_AssignAddtoBriefScreenBuffer BOOL g_DisplaySubtitlesHolder, g_AddToBriefScreenHolder, g_CloneConversationHolder BOOL g_PlayingSingleLine, g_PlayingSingleLineHolder BOOL g_IsThisFaceToFacePreloaded, g_IsThisFaceToFacePreloadedHolder INT g_i_PreloadAutoPlayTime = 0 INT g_i_PreloadAutoPlayTimeHolder = 0 BOOL g_PlayingFromLine, g_PlayingFromLineHolder TEXT_LABEL_23 g_SpecificLabel, g_SpecificLabelHolder INT g_DialogueAdjustment //used for adjusting the value returned by getting the currently playing conversation line. BOOL g_ConversationPaused = FALSE BOOL g_PauseRestartHasComeFromDedicatedCellphoneFunction = FALSE BOOL g_TellFlashHandToDisplayYN, g_b_RadarWasAlreadyHidden BOOL g_TellFlashHandToDisplayEmergencyServices BOOL g_LastInboundCallRejected = FALSE //Used in cellphone when a phonecall requires a response. ENUM enumCellphonePromptResponse RESPONSE_STORE_EMPTY, RESPONDED_YES, RESPONDED_NO, RESPONDED_AMBULANCE, RESPONDED_FIRE, RESPONDED_POLICE, RESPONSE_DYNAMIC_BRANCH ENDENUM enumCellphonePromptResponse g_CellphonePromptResponse, g_CellphoneJobOfferResponse //Answerphone and engaged tone handling. INT Connection_EngagedPauseLength = 1521 //specifies the length of time an attempted call to a contact without an answerphone msg will have to be grabbed by the flow //before returning an engaged tone. Keep this as a relatively unique number so to avoid false comparison results. INT Connection_AnsMsgPauseLength = 9000 //specifies the length of time an attempted call to a contact with an answerphone msg will have to be grabbed by the flow //before playing the answerphone message. CONST_INT g_Const_Outgoing_Call_Pause_Answering_Time 5000 //Standard of 5 seconds pause when player makes outgoing call and the cellphone conversation begins. //This simulates the other character's answering time. INT g_Outgoing_Call_Pause_Answering_Time = g_Const_Outgoing_Call_Pause_Answering_Time INT g_Timestamp_of_last_ConvStateFree = 0 TEXT_LABEL_31 answerPhoneBlock = "ANAUD" //Any answerphone messages for any contact should be stored in this block in dialoguestar, enumCharacterList g_AutoScrollContact //Hold the character enum of a contact which we desire to scroll to when the contacts list is selected. BOOL g_b_AllowHidePhoneDuringCallTrial = FALSE //________________________________________________________________________________________________________________________________________________________________________________ // // Cellphone_Camera operations. // //________________________________________________________________________________________________________________________________________________________________________________ //Rotation globals BOOL g_b_Rotate3dPhonePortrait = FALSE BOOL g_b_Rotate3dPhoneLandscape = FALSE ENUM eCellphonePicProcessStage PIC_STAGE_IDLE, PIC_SHUTTER_DELAY, PIC_STAGE_HQ_BEGIN, PIC_STAGE_HQ_ONGOING, //PIC_STAGE_HQ_SUCCEEDED, PIC_STAGE_LQ_BEGIN, PIC_STAGE_LQ_ONGOING, //PIC_STAGE_LQ_SUCCEEDED, PIC_STAGE_HOLDING_LQ_COPY, PIC_STAGE_HQ_SAVE, PIC_CHECK_STORAGE, PIC_STAGE_STORE_TO_MEDIA, PIC_STAGE_STORE_TO_MEDIA_ONGOING, PIC_STAGE_POST_SAVE_PAUSE, PIC_STAGE_LOAD_FROM_MEDIA, PIC_STAGE_LOAD_FROM_MEDIA_ONGOING, PIC_STAGE_TIDY_UP ENDENUM eCellphonePicProcessStage g_Cell_Pic_Stage BOOL Cellphone_Pic_Just_Taken BOOL g_b_appHasRequestedTidyUp = FALSE BOOL g_b_appHasRequestedSave = FALSE INT g_LoadFromSlot, g_i_PhotoSlot //________________________________________________________________________________________________________________________________________________________________________________ // // Text Messaging // //________________________________________________________________________________________________________________________________________________________________________________ ENUM enumTxtMsgLockedStatus //will specify whether or not this message can be freely deleted from the list if the text message array nears capacity. TXTMSG_EMPTY, TXTMSG_UNLOCKED, TXTMSG_LOCKED ENDENUM ENUM enumTxtMsgMissionCritical //additional specifier for mission critical text message that could be used to display a message at the top of the display list. TXTMSG_NOT_CRITICAL, TXTMSG_CRITICAL ENDENUM ENUM enumTxtMsgAutoUnlockAfterRead //If a message has been locked on sending, i.e it can't be deleted by the user via the phone interface, this specifies if it will auto unlock on reading. TXTMSG_AUTO_UNLOCK_AFTER_READ, TXTMSG_DO_NOT_AUTO_UNLOCK ENDENUM ENUM enumTxtMsgIsReplyRequired //specifies whether this text message will allow the player to reply with yes / no... a "replay mission" txt for example. NO_REPLY_REQUIRED, REPLY_IS_REQUIRED, REPLIED_BARTER, REPLIED_YES, REPLIED_NO ENDENUM ENUM enumTxtMsgCanCallSender CANNOT_CALL_SENDER, CAN_CALL_SENDER ENDENUM ENUM enumTxtMsgIsBarterRequired NO_BARTER_REQUIRED, BARTER_IS_REQUIRED ENDENUM ENUM enumTxtMsgDeletionMode DELETE_FROM_THIS_CHAR, DELETE_FROM_ALL_CHARACTERS ENDENUM ENUM enumTxtMsgReadStatus UNREAD_TXTMSG, READ_TXTMSG ENDENUM ENUM enumTxtMsgSpecialComponents NO_SPECIAL_COMPONENTS, STRING_COMPONENT, NUMBER_COMPONENT, STRING_AND_NUMBER_COMPONENT, CAR_LIST_COMPONENT, SUPERAUTOS_LIST_COMPONENT, LEGENDARY_LIST_COMPONENT, PEDALMETAL_LIST_COMPONENT, WARSTOCK_LIST_COMPONENT, ELITAS_LIST_COMPONENT, DOCKTEASE_LIST_COMPONENT, DAILYOBJ_LIST_COMPONENT, //Added to support Martin's g_DailyObjectivesList[3] #2018068 DAILY_CHALKBOARD_VEHICLE_LIST_COMPONENT // url:bugstar:7188269 ENDENUM STRUCT structTxtMsgTimeSent INT TxtMsgSecs INT TxtMsgMins INT TxtMsgHours INT TxtMsgDay INT TxtMsgMonth // The native command uses an enum to hold the return value from the current month - will enum-to-int for uniformity's sake. INT TxtMsgYear ENDSTRUCT STRUCT structTextMessage //Removed on trial basis. Text messages are using global text rather than a text block in the interim. //TEXT_LABEL TxtBlockToLoad TEXT_LABEL_63 TxtMsgLabel INT TxtMsgFeedEntryId enumCharacterList TxtMsgSender structTxtMsgTimeSent TxtMsgTimeSent enumTxtMsgLockedStatus TxtMsgLockStatus enumTxtMsgMissionCritical TxtMsgCritical enumTxtMsgAutoUnlockAfterRead TxtMsgAutoUnlockStatus enumTxtMsgDeletionMode TxtMsgDeletionMode enumTxtMsgReadStatus TxtMsgReadStatus enumTxtMsgIsReplyRequired TxtMsgReplyStatus enumTxtMsgCanCallSender TxtMsgCanCallSenderStatus enumTxtMsgIsBarterRequired TxtMsgBarterStatus enumTxtMsgSpecialComponents TxtMsgSpecialComponents TEXT_LABEL_63 TxtMsgStringComponent INT TxtMsgNumberComponent //Upped this to a TL_63 for 2024559 TEXT_LABEL_63 TxtMsgSenderStringComponent INT TxtMsgNumberOfAdditionalStrings TEXT_LABEL_63 TxtMsgSecondStringComponent TEXT_LABEL_63 TxtMsgThirdStringComponent BOOL PhonePresence[4] //specifies whether this message should be included in each player character filter. ENDSTRUCT //When moving to single message view, if the chosen text message is found to have an associated appInternet url, then it is stored in this buffer. //It is possible to extract the string from the text_label using GET_FILENAME_FOR_AUDIO_CONVERSATION. Andrew can then use ARE_STRINGS_EQUAL to check if //it is "NO_HYPERLINK_EMBEDDED". If it isn't then he uses the actual contents as the starting webpage. TEXT_LABEL_63 g_HyperLink_Buffered_Label = "NO_HYPERLINK" //Last activatable feed type and ID that should be set whenever an Invite, text or new email feed item has been created. ENUM ActivatableFeedType ACT_APP_NONE, ACT_APP_EMAIL, ACT_APP_INVITE, ACT_APP_TEXT, ACT_APP_BOSSINV ENDENUM INT g_Last_App_ActivatableFeedID //Written to whenever an EMAIL, INVITE or TEXT feed entry is created. ActivatableFeedType g_Last_App_ActivatableType //Written to whenever an EMAIL, INVITE or TEXT feed entry is created. ActivatableFeedType CellphoneAppAutoLaunchType = ACT_APP_NONE //Hold the last feed type when processing. BOOL g_ShouldForceSelectionOfLatestAppItem = FALSE // Keith 26/9/12: Contains the pre-generated headshotID when the text message is sent from an MP player. // If not NULL it should be valid - you can be sure by calling: IS_PEDHEADSHOT_VALID(PEDHEADSHOT_ID) and IS_PEDHEADSHOT_READY(PEDHEADSHOT_ID), // If either of these return FALSE then there is a problem somewhere so just use a default headshot TXD or something. // You can get the txdString associated with this headshot ID using: GET_PEDHEADSHOT_TXD_STRING(PEDHEADSHOT_ID), // sounds like you pass the returned string to the Feed function as both the TXD and the ImageName PEDHEADSHOT_ID g_playerTxtmsgHeadshotMP = NULL // Keith 3/12/12: FLAG: Auto-Launch Joblist App? If TRUE auto-launch joblist app when cellphone taken out. BOOL g_autolaunchJoblistApp = FALSE // Keith 16/7/13: global to count the number of unread joblist invites (to display the indicator on the joblist icon) INT g_numNewJoblistInvites = 0 // Keith 6/11/14 [BUG 2060056]: FLAG: Only show signifier beside radar if there are unread 'player' invites only (not NPC invites) BOOL g_displayPlayerInvitesIndicator = FALSE // Keith 3/12/14 [BUG 2135305]: FLAG: We now want the player invites indicator to appear if any new player invites are received while the player is on the corona menus. // This flag should become TRUE only if a player invite is received while on the corona menus, and should get automatically cleared whenthe player is no longer on the corona menus. // If TRUE, the invites indicator on the left hand side of the screen (usually beside the radar) should be displayed as normal. BOOL g_forceDisplayPlayerInvitesIndicator = FALSE //structTxtMsgTimeSent TxtMsgComparisonTime BOOL g_DoOptionsForSingleMessage = FALSE //Text message array. For simplicity, MP and SP share the same array. A specific portion of this array is sectioned off for use by MP messages only. //We need a couple of dummy positions, so SP is free to use 0 to 20, whilst MP can access 21 to 30. CONST_INT MAX_TEXT_MESSAGES 35 //The number of text messages that we can store and display is equal to the MAX_TEXT_MESSAGES - 2. The chronological sort needs a dummy, one //is taken up for "while" loop comparison ease. So if MAX_TEXT_MESSAGES = 8, we can have 0,1,2,3,4 and 5 displayed. CONST_INT SP_TEXT_PORTION_END 20 //0 - 19 CONST_INT SP_MICHAEL_BUFFER_INDEX 21 //Reserved buffers for text messages sent to a player character who is not currently being used. CONST_INT SP_FRANKLIN_BUFFER_INDEX 22 CONST_INT SP_TREVOR_BUFFER_INDEX 23 CONST_INT MP_TEXT_PORTION_START 24 //24 onwards INT TxtMsgIdentifiedFreeArrayIndex INT g_CurrentNumberOfUnreadTexts //INT g_CurrentNumberOfUnreadEmails, g_CurrentNumberOfUnreadSidetasks //2d arrays work! //structTextMessage g_TextMessage[3][MAX_TEXT_MESSAGES] STRUCT g_TextMessageSavedData structTextMessage g_TextMessage[MAX_TEXT_MESSAGES] ENDSTRUCT //HeadshotStrings do not require to be saved. PEDHEADSHOT_ID g_TxtMsgHeadShotID[MAX_TEXT_MESSAGES] //Car List text decision enum ENUM enumCarListMessageDecision NEW_CAR_LIST, UPDATED_CAR_LIST ENDENUM enumCarListMessageDecision g_CarListMessageDecision = NEW_CAR_LIST //________________________________________________________________________________________________________________________________________________________________________________ // // Gallery and Image Resources. // //________________________________________________________________________________________________________________________________________________________________________________ CONST_INT MAX_GALLERY_IMAGES 10 STRUCT structGalleryImage TEXT_LABEL_63 GalleryImage_ThumbLabel TEXT_LABEL_63 GalleryImage_PhotoLabel ENDSTRUCT STRUCT g_GalleryImageSavedData structGalleryImage g_GalleryImage[MAX_GALLERY_IMAGES] ENDSTRUCT //________________________________________________________________________________________________________________________________________________________________________________ // // Trackify Application // //________________________________________________________________________________________________________________________________________________________________________________ //Can be specified by another script using SET_TRACKIFY_TARGET_VECTOR VECTOR g_v_TrackifyTarget //________________________________________________________________________________________________________________________________________________________________________________ // // Friend Activity Display. // //________________________________________________________________________________________________________________________________________________________________________________ //BOOL Is_This_Player_On_Scheduled_Activity[3] //Needs to be a saved global so moved to STRUCT structThis_Cellphone_Owner_Settings definition. BOOL This_Player_Request_Cancellation[3] BOOL g_b_Is_This_An_Activity_Cancellation_Call = FALSE BOOL g_b_Is_This_An_Activity_Call = FALSE BOOL g_b_Is_This_A_Secondary_Function_Call = FALSE //__________________________________________________________________________________________________________________ // // Camera Selfie // //__________________________________________________________________________________________________________________ INT selfie_camera_help_text_system = 0 INT i_MP_selfie_camera_help_text_system = 0 //________________________________________________________________________________________________________________________________________________________________________________ // // SideTasks - up for removal! // //________________________________________________________________________________________________________________________________________________________________________________ CONST_INT MAX_NUM_SIDETASKS 4 //The number of live sidetasks that we can store and display is equal to the MAX_NUM_SIDETASKS - 2. The chronological sort needs a dummy, one //is taken up for "while" loop comparison ease. So if MAX_NUM_SIDETASKS = 8, we can have 0,1,2,3,4 and 5 displayed. CONST_INT MAX_NUM_SIDETASK_PORTIONS 4 INT SideTaskIdentifiedFreeArrayIndex ENUM enumSideTaskLockedStatus //will specify whether or not this message can be freely deleted from the list if the text message array nears capacity. SIDETASK_EMPTY, SIDETASK_UNLOCKED, SIDETASK_LOCKED ENDENUM //For use by ambient guys... ENUM enumSideTaskList DUMMYSidetask_0, Sidetask_1, Sidetask_2, Sidetask_3 ENDENUM STRUCT structSideTask TEXT_LABEL SideTaskTitle //Display the task name. TEXT_LABEL SideTaskSynopsis //Displays an overview of the task as whole. BOOL SideTaskFullyComplete //Once all sidetask portions are complete, this becomes true. INT NumberOfSideTaskPortions //Needed, so it can be easily determined how many sidetasks portions to display. TEXT_LABEL SideTaskPortionLabel[MAX_NUM_SIDETASK_PORTIONS] //labels for the subtasks of the sidetask INT SideTaskPortionCurrentInt[MAX_NUM_SIDETASK_PORTIONS] INT SideTaskPortionTargetInt[MAX_NUM_SIDETASK_PORTIONS] BOOL HasThisSideTaskPortionBeenCompleted[MAX_NUM_SIDETASK_PORTIONS] //bools to signify whether each subtask has been completed. ENDSTRUCT structSideTask g_AmbientSideTask[MAX_NUM_SIDETASKS] //For ambient guys, you would set up your sidetask and portion labels like so... //g_AmbientSideTask[Sidetask_1].SideTaskSynopsis = "SYNOPSIS_LABEL1" //g_AmbientSideTask[Sidetask_1].SideTaskFullyComplete = FALSE //g_AmbientSideTask[Sidetask_1].NumberOfSideTaskPortions = 5 //g_AmbientSideTask[Sidetask_1].SideTaskPortionLabel[1] = "PORTION_LABEL1" //g_AmbientSideTask[Sidetask_1].SideTaskPortionCurrentInt[1] = 1 //g_AmbientSideTask[Sidetask_1].HasThisSideTaskPortionBeenCompleted[1] = FALSE //g_AmbientSideTask[Sidetask_1].SideTaskPortionLabel[2] = "PORTION_LABEL2" //g_AmbientSideTask[Sidetask_1].HasThisSideTaskPortionBeenCompleted[2] = FALSE //For use by me. Ambient guys will "create a new sidetask" and I will pass in these detail into a live sidetask array - like the text message system. STRUCT structLiveSideTasks enumCharacterList SideTaskGiver //Optional - we can pass in NO CHARACTER if there is no character from the char sheet involved. enumSideTaskList SideTaskIdentifier //Refers to the enum which will identify the various sidetasks. structTxtMsgTimeSent TxtMsgTimeSent //The time that the sidetask was delivered to the player - we may need this for sorting purposes. Can reuse txtmsg struct. enumSideTaskLockedStatus SideTaskLockStatus //used by my internal mechanisms. ENDSTRUCT structLiveSideTasks g_LiveSideTask[MAX_NUM_SIDETASKS] //________________________________________________________________________________________________________________________________________________________________________________ // // Multiplayer Job List // //________________________________________________________________________________________________________________________________________________________________________________ /*Removed 14.10.11 ENUM enumJobListStatus JOB_EMPTY, JOB_AVAILABLE, JOB_CURRENT, JOB_TRIPSKIP, JOB_CANCELLED ENDENUM //Remove this... STRUCT structJobList //Removed on trial basis. Text messages are using global text rather than a text block in the interim. //TEXT_LABEL TxtBlockToLoad TEXT_LABEL JobListLabel enumCharacterList JobListSender structTxtMsgTimeSent TxtMsgTimeSent enumJobListStatus JobListStatus //Details of the job INT iMission //Mission Enum converted to an int INT iInstance ENDSTRUCT //BOOL g_DoOptionsForSingleJob = FALSE //Now within dedicated bitset. CONST_INT MAX_JOB_STORAGE 8 //The number of text messages that we can store and display is equal to MAX_JOB_STORAGE - 2. The chronological sort needs a dummy, one //is taken up for "while" loop comparison ease. So if MAX_JOB_STORAGE = 8, we can have 0,1,2,3,4 and 5 displayed. //INT g_CurrentNumberOfJobsStored, JobListIdentifiedFreeArrayIndex structJobList g_JobListEntry[MAX_JOB_STORAGE] //MP Bit Set. //Add more to this if need be... 0, 1, 2... to 31 CONST_INT g_BS_MAINTAIN_NEW_JOB_REQUEST 0 CONST_INT g_BS_BEEN_IN_COMPLEXAPP 1 //NEED TO REMOVE THIS ONE CONST_INT g_BS_DO_CANCEL_MISSION_STUFF 5 //INT BitSet_CellphoneJobList = 0 //clear all bits. INT JobListIdentifiedFreeArrayIndex Removed 14.10.11*/ //________________________________________________________________________________________________________________________________________________________________________________ // // Debug Variables // //________________________________________________________________________________________________________________________________________________________________________________ //Debug globals #if IS_DEBUG_BUILD BOOL g_Cellphone_Disable_WidgetToggle BOOL g_Cellphone_Disable_ThisFrameOnly_WidgetToggle BOOL g_Cellphone_Onscreen_State_Debug BOOL g_b_DebugPhoneTimerDisplay BOOL g_b_CellDialDebugTextToggle = FALSE BOOL g_b_DisplayConversationToggle = FALSE BOOL g_b_DisplayProceduralConversationToggle = FALSE //BOOL g_Cellphone_FullScreen_Mode = FALSE BOOL g_Cellphone_Ratio_4_3_WidgetToggle, g_Cellphone_Ratio_16_9_WidgetToggle FLOAT debugrect_posX = 0.5, debugrect_posY = 0.5 FLOAT debugrect_sizeX = 0.1, debugrect_sizeY = 0.1 BOOL g_DoDebugTempDraw_Phone = FALSE BOOL g_b_DisplayDrawingMovieDump = FALSE BOOL b_DebugCellphoneGuiInfo = FALSE BOOL g_Debug_Signifiers_Hidden_by_Script = FALSE BOOL g_DumpDisableEveryFrameCaller = FALSE BOOL g_DisplayTestPhotoSprite = FALSE BOOL g_HighqualityPhotoSprite = FALSE INT DebugCellphoneGui = 1 //Default startup gui. TEXT_LABEL_23 ScaleformDebugMovie[6] INT TestingNavigationInt = 0 #endif