Files
gtav-src/script/dev_ng/singleplayer/include/public/end_screen.sch
T
2025-09-29 00:52:08 +02:00

2274 lines
67 KiB
Scheme
Executable File

/////////
/// Functions and datatypes concerning the display of the end screen described at
/// https://devstar.rockstargames.com/wiki/index.php/MISSION_BOX
///
///
///
///
///
/// Ak
//////////
USING "rage_builtins.sch"
USING "globals.sch"
USING "menu_public.sch"
USING "shared_hud_displays.sch"
//USING "net_mission_details_hud.sch" // can't use this because cyclic headers
USING "end_screen_old.sch" // For old versions of functions used by single player scripts in Final Submission. They use END_SCREEN_DATASET instead of END_SCREEN_DATASET_TITLE_UPDATE.
///////////
///
/// Duplicate functions that need to live here due to cyclic header bull
///
///
///
ENUM CREW_RANK_ORDER_COPY
CREW_RANK_NONE_COPY = -1,
CREW_RANK_LEADER_COPY = 0,
CREW_RANK_MEMBER1_COPY,
CREW_RANK_MEMBER2_COPY,
CREW_RANK_MEMBER3_COPY,
CREW_RANK_MEMBER4_COPY,
CREW_RANK_MEMBER5_COPY
ENDENUM
PROC DRAW_CREW_TAG_GAMER_COPY(GAMER_HANDLE& aPlayer, FLOAT ScreenX, FLOAT ScreenY, FLOAT ScaleMultiplyer = 1.0)
BOOL IsRockstar
BOOL IsPrivate
INT iRankPosition
GAMER_HANDLE bPlayers = aPlayer
bPlayers = bPlayers
TEXT_LABEL_31 tl31_CrewIcon = ""
TEXT_LABEL_31 tl31_CrewIconBackground = ""
TEXT_LABEL_31 tl31_CrewText = "EFG"
TEXT_LABEL_31 tl31_CrewRank = ""
/*
IF IS_PLAYER_IN_ACTIVE_CLAN(aPlayer)
IsPrivate = (IS_PLAYER_CLAN_PRIVATE(aPlayer))
IF IS_PLAYER_CLAN_LEADER(aPlayer)
iRankPosition = 0
ELSE
iRankPosition = -1
ENDIF
IsRockstar = IS_PLAYER_IN_A_ROCKSTAR_CREW(aPlayer)
tl31_CrewText = GET_PLAYER_CLAN_TAG(aPlayer)
ELSE
EXIT
ENDIF
*/
TEXT_STYLE TSCrewStyle
TEXT_STYLE TSCrewIconStyle
TEXT_STYLE TSCrewIconStyleBackground
TEXT_STYLE TSCrewRankCharacter
TEXT_PLACEMENT CrewPlacement
TEXT_PLACEMENT CrewIconPlacement
TEXT_PLACEMENT CrewRankCharacter
// #IF IS_DEBUG_BUILD
// IF CrewTagWidget = FALSE
// START_WIDGET_GROUP("DRAW_CREW_TAG")
// ADD_WIDGET_BOOL("bUseWidgetLogic", bUseWidgetLogic)
// CREATE_A_TEXT_PLACEMENT_WIDGET(WidgetCrewPlacement, "WidgetCrewPlacement")
// CREATE_A_TEXT_PLACEMENT_WIDGET(WidgetCrewIconPlacement, "WidgetCrewIconPlacement")
// CREATE_A_TEXT_PLACEMENT_WIDGET(WidgetCrewRankCharacterPlacement, "WidgetCrewRankCharacterPlacement")
// CREATE_A_TEXT_STYLE_WIGET(WidgetCrewStyle, "WidgetCrewStyle")
// CREATE_A_TEXT_STYLE_WIGET(WidgetCrewIconStyle, "WidgetCrewIconStyle")
// CREATE_A_TEXT_STYLE_WIGET(WidgetCrewIconBackgroundStyle, "WidgetCrewIconBackgroundStyle")
// CREATE_A_TEXT_STYLE_WIGET(WidgetCrewRankCharacter, "WidgetCrewRankCharacter")
// ADD_WIDGET_BOOL("Is a Rockstar", WidgetIsRockstar)
// ADD_WIDGET_BOOL("Is Private", WidgetIsPrivate)
// ADD_WIDGET_INT_SLIDER("Rank Level", iRankOrder, 0, 6, 1)
// ADD_WIDGET_FLOAT_SLIDER("PositionalFactorX", PositionalFactorX, -100, 100, 0.001)
// ADD_WIDGET_FLOAT_SLIDER("ScaleFactor", ScaleFactor, -10, 10, 0.001)
// ADD_WIDGET_FLOAT_SLIDER("PositionalRankFactorX", PositionalRankFactorX, -100, 100, 0.001)
// ADD_WIDGET_FLOAT_SLIDER("PositionalRankFactorY", PositionalRankFactorY, -100, 100, 0.001)
//
//
// STOP_WIDGET_GROUP()
//
// CrewTagWidget = TRUE
// ENDIF
// #ENDIF
SET_TEXT_PLACEMENT(CrewPlacement, ScreenX, ScreenY)
SET_TEXT_PLACEMENT(CrewIconPlacement, ScreenX, ScreenY)
SET_TEXT_PLACEMENT(CrewRankCharacter, ScreenX, ScreenY)
// #IF IS_DEBUG_BUILD
// ScaleMultiplyer += ScaleFactor
// #ENDIF
SET_STANDARD_SMALL_HUD_TEXT(TSCrewStyle)
SET_STANDARD_SMALL_HUD_TEXT(TSCrewIconStyle)
SET_STANDARD_SMALL_HUD_TEXT(TSCrewIconStyleBackground)
SET_STANDARD_SMALL_HUD_TEXT(TSCrewRankCharacter)
TSCrewStyle.YScale += 0.24*ScaleMultiplyer
TSCrewStyle.WrapEndX += 0
TSCrewStyle.WrapStartX += 0
TSCrewStyle.r += 0
TSCrewStyle.g += 0
TSCrewStyle.b += 0
TSCrewStyle.a += 0
TSCrewIconStyle.YScale += 0.24*ScaleMultiplyer
TSCrewIconStyle.WrapEndX += 0
TSCrewIconStyle.WrapStartX += 0
TSCrewIconStyle.r += 0
TSCrewIconStyle.g += 0
TSCrewIconStyle.b += 0
TSCrewIconStyle.a += 0
TSCrewIconStyleBackground.YScale += 0.24*ScaleMultiplyer
TSCrewIconStyleBackground.WrapEndX +=0
TSCrewIconStyleBackground.WrapStartX +=0
TSCrewIconStyleBackground.r += 0
TSCrewIconStyleBackground.g += 0
TSCrewIconStyleBackground.b += 0
TSCrewIconStyleBackground.a += 0
TSCrewRankCharacter.YScale += 0.24*ScaleMultiplyer
TSCrewRankCharacter.WrapEndX += 0
TSCrewRankCharacter.WrapStartX += 0
TSCrewRankCharacter.r += 0
TSCrewRankCharacter.g += 0
TSCrewRankCharacter.b += 0
TSCrewRankCharacter.a += 0
SET_TEXT_BLACK(TSCrewStyle)
TSCrewStyle.aFont = FONT_ROCKSTAR_TAG
TSCrewIconStyle.aFont = FONT_ROCKSTAR_TAG
TSCrewIconStyleBackground.aFont = FONT_ROCKSTAR_TAG
TSCrewRankCharacter.aFont = FONT_ROCKSTAR_TAG
// #IF IS_DEBUG_BUILD
// TSCrewStyle.YScale += WidgetCrewStyle.YScale
// TSCrewStyle.WrapEndX += WidgetCrewStyle.WrapEndX
// TSCrewStyle.WrapStartX += WidgetCrewStyle.WrapStartX
// TSCrewStyle.r += WidgetCrewStyle.r
// TSCrewStyle.g += WidgetCrewStyle.g
// TSCrewStyle.b += WidgetCrewStyle.b
// TSCrewStyle.a += WidgetCrewStyle.a
//
// TSCrewIconStyle.YScale += WidgetCrewIconStyle.YScale
// TSCrewIconStyle.WrapEndX += WidgetCrewIconStyle.WrapEndX
// TSCrewIconStyle.WrapStartX += WidgetCrewIconStyle.WrapStartX
// TSCrewIconStyle.r += WidgetCrewIconStyle.r
// TSCrewIconStyle.g += WidgetCrewIconStyle.g
// TSCrewIconStyle.b += WidgetCrewIconStyle.b
// TSCrewIconStyle.a += WidgetCrewIconStyle.a
//
// TSCrewIconStyleBackground.YScale += WidgetCrewIconBackgroundStyle.YScale
// TSCrewIconStyleBackground.WrapEndX += WidgetCrewIconBackgroundStyle.WrapEndX
// TSCrewIconStyleBackground.WrapStartX += WidgetCrewIconBackgroundStyle.WrapStartX
// TSCrewIconStyleBackground.r += WidgetCrewIconBackgroundStyle.r
// TSCrewIconStyleBackground.g += WidgetCrewIconBackgroundStyle.g
// TSCrewIconStyleBackground.b += WidgetCrewIconBackgroundStyle.b
// TSCrewIconStyleBackground.a += WidgetCrewIconBackgroundStyle.a
//
// TSCrewRankCharacter.YScale += WidgetCrewRankCharacter.YScale
// TSCrewRankCharacter.WrapEndX += WidgetCrewRankCharacter.WrapEndX
// TSCrewRankCharacter.WrapStartX += WidgetCrewRankCharacter.WrapStartX
// TSCrewRankCharacter.r += WidgetCrewRankCharacter.r
// TSCrewRankCharacter.g += WidgetCrewRankCharacter.g
// TSCrewRankCharacter.b += WidgetCrewRankCharacter.b
// TSCrewRankCharacter.a += WidgetCrewRankCharacter.a
//
// #ENDIF
// CrewPlacement.x += 0.017*PositionalFactorX
CrewPlacement.x += ((0.005*ScaleMultiplyer)+0.005)
CrewPlacement.y += 0.0
CrewIconPlacement.x += 0
CrewIconPlacement.y += 0
CrewRankCharacter.x += 0
CrewRankCharacter.y += 0//0.500
// #IF IS_DEBUG_BUILD
// CrewPlacement.x += WidgetCrewPlacement.x
// CrewPlacement.y += WidgetCrewPlacement.y
// CrewIconPlacement.x += WidgetCrewIconPlacement.x
// CrewIconPlacement.y += WidgetCrewIconPlacement.y
// CrewRankCharacter.x += WidgetCrewRankCharacterPlacement.x
// CrewRankCharacter.y += WidgetCrewRankCharacterPlacement.y
// #ENDIF
// #IF IS_DEBUG_BUILD
// IF bUseWidgetLogic
// IF WidgetIsRockstar
// tl31_CrewText += "@"
// ELSE
// tl31_CrewText += ""
// ENDIF
//
// CREW_RANK_ORDER CrewIndex = INT_TO_ENUM(CREW_RANK_ORDER, iRankOrder)
// tl31_CrewText = "RSND"
//
// SWITCH CrewIndex
//
// CASE CREW_RANK_NONE
// IF WidgetIsPrivate = FALSE
// tl31_CrewIcon += "#"
// tl31_CrewIconBackground += "$"
// ELSE
// tl31_CrewIcon += "!"
// tl31_CrewIconBackground += "\""
// ENDIF
// BREAK
//
// CASE CREW_RANK_LEADER
// tl31_CrewRank += "%"
//
// IF WidgetIsPrivate = FALSE
// tl31_CrewIcon += "."
// tl31_CrewIconBackground += "/"
// ELSE
// tl31_CrewIcon += ","
// tl31_CrewIconBackground += "-"
// ENDIF
// BREAK
// CASE CREW_RANK_MEMBER1
// // tl31_CrewRank += "&"
//
//
//
// IF WidgetIsPrivate = FALSE
// tl31_CrewIcon += "#"
// tl31_CrewIconBackground += "$"
// ELSE
// tl31_CrewIcon += "!"
// tl31_CrewIconBackground += "\""
// ENDIF
// BREAK
// CASE CREW_RANK_MEMBER2
// // tl31_CrewRank += "'"
//
// IF WidgetIsPrivate = FALSE
// tl31_CrewIcon += "#"
// tl31_CrewIconBackground += "$"
// ELSE
// tl31_CrewIcon += "!"
// tl31_CrewIconBackground += "\""
// ENDIF
// BREAK
// CASE CREW_RANK_MEMBER3
// // tl31_CrewRank += "("
//
// IF WidgetIsPrivate = FALSE
// tl31_CrewIcon += "#"
// tl31_CrewIconBackground += "$"
// ELSE
// tl31_CrewIcon += "!"
// tl31_CrewIconBackground += "\""
// ENDIF
// BREAK
// CASE CREW_RANK_MEMBER4
// // tl31_CrewRank += ")"
//
// IF WidgetIsPrivate = FALSE
// tl31_CrewIcon += "#"
// tl31_CrewIconBackground += "$"
// ELSE
// tl31_CrewIcon += "!"
// tl31_CrewIconBackground += "\""
// ENDIF
// BREAK
// CASE CREW_RANK_MEMBER5
// // tl31_CrewRank += "+"
//
// IF WidgetIsPrivate = FALSE
// tl31_CrewIcon += "#"
// tl31_CrewIconBackground += "$"
// ELSE
// tl31_CrewIcon += "!"
// tl31_CrewIconBackground += "\""
// ENDIF
// BREAK
//
//
//
// ENDSWITCH
// ENDIF
//
// #ENDIF
// #IF IS_DEBUG_BUILD
// IF bUseWidgetLogic = FALSE
// #ENDIF
IF IsRockstar
tl31_CrewText += "@"
ELSE
tl31_CrewText += ""
ENDIF
CREW_RANK_ORDER_COPY CrewIndex = INT_TO_ENUM(CREW_RANK_ORDER_COPY, iRankPosition)
SWITCH CrewIndex
CASE CREW_RANK_NONE_COPY
IF IsPrivate
tl31_CrewIcon += "#"
tl31_CrewIconBackground += "$"
ELSE
tl31_CrewIcon += "!"
tl31_CrewIconBackground += "\""
ENDIF
BREAK
CASE CREW_RANK_LEADER_COPY
tl31_CrewRank += "%"
IF IsPrivate
tl31_CrewIcon += "."
tl31_CrewIconBackground += "/"
ELSE
tl31_CrewIcon += ","
tl31_CrewIconBackground += "-"
ENDIF
BREAK
CASE CREW_RANK_MEMBER1_COPY
// tl31_CrewRank += "&"
IF IsPrivate
tl31_CrewIcon += "#"
tl31_CrewIconBackground += "$"
ELSE
tl31_CrewIcon += "!"
tl31_CrewIconBackground += "\""
ENDIF
BREAK
CASE CREW_RANK_MEMBER2_COPY
// tl31_CrewRank += "'"
IF IsPrivate
tl31_CrewIcon += "#"
tl31_CrewIconBackground += "$"
ELSE
tl31_CrewIcon += "!"
tl31_CrewIconBackground += "\""
ENDIF
BREAK
CASE CREW_RANK_MEMBER3_COPY
// tl31_CrewRank += "("
IF IsPrivate
tl31_CrewIcon += "#"
tl31_CrewIconBackground += "$"
ELSE
tl31_CrewIcon += "!"
tl31_CrewIconBackground += "\""
ENDIF
BREAK
CASE CREW_RANK_MEMBER4_COPY
// tl31_CrewRank += ")"
IF IsPrivate
tl31_CrewIcon += "#"
tl31_CrewIconBackground += "$"
ELSE
tl31_CrewIcon += "!"
tl31_CrewIconBackground += "\""
ENDIF
BREAK
CASE CREW_RANK_MEMBER5_COPY
// tl31_CrewRank += "+"
IF IsPrivate
tl31_CrewIcon += "#"
tl31_CrewIconBackground += "$"
ELSE
tl31_CrewIcon += "!"
tl31_CrewIconBackground += "\""
ENDIF
BREAK
ENDSWITCH
// #IF IS_DEBUG_BUILD
// ENDIF
// #ENDIF
SET_TEXT_STYLE(TSCrewIconStyleBackground)
DRAW_TEXT_WITH_PLAYER_NAME(CrewIconPlacement, TSCrewIconStyleBackground, tl31_CrewIconBackground, "", HUD_COLOUR_WHITE)
SET_TEXT_STYLE(TSCrewIconStyle)
DRAW_TEXT_WITH_PLAYER_NAME(CrewIconPlacement, TSCrewIconStyle, tl31_CrewIcon, "",HUD_COLOUR_BLACK )
SET_TEXT_STYLE(TSCrewStyle)
DRAW_TEXT_WITH_PLAYER_NAME(CrewPlacement, TSCrewStyle, tl31_CrewText, "", HUD_COLOUR_BLACK)
SET_TEXT_STYLE(TSCrewRankCharacter)
DRAW_TEXT_WITH_PLAYER_NAME(CrewRankCharacter, TSCrewRankCharacter, tl31_CrewRank, "", HUD_COLOUR_BLACK)
ENDPROC
/////////
///
/*
CONST_FLOAT ESC_LINE_Y_ADVANCE 25.0 //0.0347 = 25 pixel advance
CONST_FLOAT ESC_LINE_Y_GAP 2.0 //0.00278 = 2 pixel advance
//CONST_INT ESC_ALPHA 77
CONST_FLOAT ESC_LINE_Y_ADVANCE_HEADER 33.0 //0.04722222192 = 34 pixel advance
CONST_FLOAT ESC_HALF_WIDTH 0.1125
CONST_FLOAT ESC_INDENT 0.006
CONST_INT ESC_BLEND_TIME 1000
CONST_FLOAT ESC_Y_POSITION 0.2625
CONST_FLOAT ESC_X_PIXEL 0.00078125
CONST_FLOAT ESC_Y_PIXEL 0.00138888888
CONST_FLOAT ESC_SOCIAL_BULLSHIT_TAB_Y 0.138888888
//CONST_INT ESC_MAX_ELEMENTS 11
CONST_INT MEDAL_PIX_SIDE 16
FUNC FLOAT PIXEL_X(FLOAT PIXELSIZE)
RETURN PIXELSIZE * ESC_X_PIXEL
ENDFUNC
FUNC FLOAT PIXEL_Y(FLOAT PIXELSIZE)
RETURN PIXELSIZE * ESC_Y_PIXEL
ENDFUNC
FUNC FLOAT Get_PT_scale(FLOAT PTSIZE)
RETURN PTSIZE * 0.025
ENDFUNC
*/
PROC END_SCREEN_WORK_OUT_WIDTHS_TITLE_UPDATE(END_SCREEN_DATASET_TITLE_UPDATE &esd)
//SET_TEXT_WRAP(fontLeft,fontRight)
FLOAT width = 0.0
/*
INT iTitleSubelements
END_SCREEN_TITLE_SUB_ELEMENT_TYPE titleSubElementType[MAX_END_SCREEN_TITLE_SUB_ELEMENTS]
TEXT_LABEL_63 titleSubstrings[MAX_END_SCREEN_TITLE_SUBSTRINGS]
INT iTitleSubInts[MAX_END_SCREEN_TITLE_SUBINTEGERS]
*/
SET_TEXT_JUSTIFICATION(FONT_CENTRE)
SET_TEXT_SCALE(1.0, Get_PT_scale(16))
IF esd.iTitleSubelements = 0
IF esd.titleIsUserName
BEGIN_TEXT_COMMAND_GET_SCREEN_WIDTH_OF_DISPLAY_TEXT("STRING")
ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME(esd.title)
width = END_TEXT_COMMAND_GET_SCREEN_WIDTH_OF_DISPLAY_TEXT(TRUE)
PRINTLN("END_SCREEN_WORK_OUT_WIDTHS_TITLE_UPDATE: User name title(",esd.title,") width ",width)
ELSE
BEGIN_TEXT_COMMAND_GET_SCREEN_WIDTH_OF_DISPLAY_TEXT(esd.title)
width = END_TEXT_COMMAND_GET_SCREEN_WIDTH_OF_DISPLAY_TEXT(TRUE)
PRINTLN("END_SCREEN_WORK_OUT_WIDTHS_TITLE_UPDATE: Regular no substring title width(",esd.title,") width ",width)
ENDIF
ELSE
BEGIN_TEXT_COMMAND_GET_SCREEN_WIDTH_OF_DISPLAY_TEXT(esd.title)
INT iIntCount = 0
INT iStrCount = 0
INT i = 0
REPEAT esd.iTitleSubelements i
SWITCH esd.titleSubElementType[i]
CASE ESTSET_INT
ADD_TEXT_COMPONENT_INTEGER(esd.iTitleSubInts[iIntCount])
++iIntCount
BREAK
CASE ESTSET_STRING
ADD_TEXT_COMPONENT_SUBSTRING_TEXT_LABEL(esd.titleSubstrings[iStrCount] )
++iStrCount
BREAK
CASE ESTSET_LITERAL_STRING
ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME(esd.titleSubstrings[iStrCount])
++iStrCount
BREAK
ENDSWITCH
ENDREPEAT
width = END_TEXT_COMMAND_GET_SCREEN_WIDTH_OF_DISPLAY_TEXT(TRUE)
PRINTLN("END_SCREEN_WORK_OUT_WIDTHS_TITLE_UPDATE: Substr width (",esd.title,") with substr ",iStrCount," and subints ",iIntCount," width ",width)
ENDIF
IF width > (ESC_HALF_WIDTH*2 - ESC_INDENT*2)
esd.fTrueHalfWidth = (width/2.0) + ESC_INDENT*2
ENDIF
esd.fTrueHalfWidth *= GET_ASPECT_RATIO_MODIFIER()
//check the width of all the elements
//check the width of the completion line
ENDPROC
PROC PRIVATE_ENDSCREEN_DRAW_ORDER_TITLE_UPDATE()
SET_SCRIPT_GFX_DRAW_ORDER(GFX_ORDER_AFTER_HUD)
SET_SCRIPT_GFX_DRAW_ORDER(GFX_ORDER_AFTER_FADE)
SET_SCRIPT_GFX_DRAW_BEHIND_PAUSEMENU(FALSE)
ENDPROC
PROC PRIVATE_RENDER_ENDSCREEN_LABEL_TITLE_UPDATE(STRING tl, FLOAT x, FLOAT y,BOOL c = FALSE, BOOL isPlayerName = FALSE)
SET_TEXT_CENTRE(c)
SET_TEXT_FONT(FONT_STANDARD)
PRIVATE_ENDSCREEN_DRAW_ORDER_TITLE_UPDATE()
IF isPlayerName
BEGIN_TEXT_COMMAND_DISPLAY_TEXT("STRING")
ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME(tl)
ELSE
BEGIN_TEXT_COMMAND_DISPLAY_TEXT(tl)
ENDIF
//SET_COLOUR_OF_NEXT_TEXT_COMPONENT(HUD_COLOUR_BLACK)
//ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME(tl)
END_TEXT_COMMAND_DISPLAY_TEXT(x, y)
ENDPROC
PROC PRIVATE_RENDER_ENDSCREEN_VALUE_TITLE_UPDATE(INT valueA, INT valueB,
FLOAT x, FLOAT y,
STRING base,
END_SCREEN_ELEMENT_FORMATTING format)
HUD_COLOURS hucu = HUD_COLOUR_WHITE
//set the string value if needed
SET_TEXT_CENTRE(FALSE)
SET_TEXT_FONT(FONT_STANDARD)
PRIVATE_ENDSCREEN_DRAW_ORDER_TITLE_UPDATE()
//add any needed sub values
//do backing effects
FLOAT width = 0.0
FLOAT xw = 8* ESC_X_PIXEL
FLOAT yh = 16* ESC_Y_PIXEL
INT r = 93
INT g = 182
INT b = 229
INT a
GET_HUD_COLOUR(HUD_COLOUR_NORTH_BLUE_OFFICIAL,r,g,b,a)
IF format = ESEF_DOLLAR_VALUE_REDBACK
r = 194
g = 80
b = 80
ENDIF
SWITCH format
//CASE ESEF_DOLLAR_VALUE
CASE ESEF_DOLLAR_VALUE_REDBACK
CASE ESEF_DOLLAR_VALUE_BLUEBACK
SET_TEXT_SCALE(1.0, Get_PT_scale(18))//CUSTOM_MENU_TEXT_SCALE_Y*1.2857)
SET_TEXT_FONT(FONT_CONDENSED)
IF valueA < 0
BEGIN_TEXT_COMMAND_GET_SCREEN_WIDTH_OF_DISPLAY_TEXT("ESMINDOLLA")
ADD_TEXT_COMPONENT_FORMATTED_INTEGER(-1*valueA, INTEGER_FORMAT_COMMA_SEPARATORS)
width = END_TEXT_COMMAND_GET_SCREEN_WIDTH_OF_DISPLAY_TEXT(FALSE)
ELSE
BEGIN_TEXT_COMMAND_GET_SCREEN_WIDTH_OF_DISPLAY_TEXT("ESDOLLA")
ADD_TEXT_COMPONENT_FORMATTED_INTEGER(valueA, INTEGER_FORMAT_COMMA_SEPARATORS)
width = END_TEXT_COMMAND_GET_SCREEN_WIDTH_OF_DISPLAY_TEXT(FALSE)
ENDIF
width -= (width % ESC_X_PIXEL) //trim the sub pixel amount
DRAW_SPRITE("CommonMenu", "BettingBox_Left",
x-(width), //+ (ESC_X_PIXEL*4),
y+yh*0.6 + ESC_Y_PIXEL*2,
xw,yh,
0.0,
r,g,b,255)
DRAW_SPRITE("CommonMenu", "BettingBox_Centre",
x-width*0.5 - (ESC_X_PIXEL*2),
y+yh*0.6 + ESC_Y_PIXEL*2,
width - xw*0.5,yh,
0.0,
r,g,b,255)
DRAW_SPRITE("CommonMenu", "BettingBox_Right",
x- (ESC_X_PIXEL*4),
y+yh*0.6+ ESC_Y_PIXEL*2,
xw,yh,
0.0,
r,g,b,255)
SET_TEXT_SCALE(1.0, Get_PT_scale(14))//CUSTOM_MENU_TEXT_SCALE_Y
BREAK
ENDSWITCH
SET_COLOUR_OF_NEXT_TEXT_COMPONENT(hucu)
//start the string
SWITCH format
CASE ESEF_RAW_PERCENT
BEGIN_TEXT_COMMAND_DISPLAY_TEXT("PERCENTAGE")
ADD_TEXT_COMPONENT_INTEGER(valueA)
BREAK
CASE ESEF_RAW_INTEGER
SET_TEXT_FONT(FONT_STYLE_FIXED_WIDTH_NUMBERS)
BEGIN_TEXT_COMMAND_DISPLAY_TEXT("FO_NUM")
ADD_TEXT_COMPONENT_INTEGER(valueA)
BREAK
CASE ESEF_FRACTION
SET_TEXT_FONT(FONT_STYLE_FIXED_WIDTH_NUMBERS)
BEGIN_TEXT_COMMAND_DISPLAY_TEXT("FO_TWO_NUM")
ADD_TEXT_COMPONENT_INTEGER(valueA)
ADD_TEXT_COMPONENT_INTEGER(valueB)
BREAK
CASE ESEF_DOLLAR_VALUE_REDBACK
CASE ESEF_DOLLAR_VALUE_BLUEBACK
SET_TEXT_SCALE(1.0, Get_PT_scale(18))//CUSTOM_MENU_TEXT_SCALE_Y*1.2857)
FALLTHRU
CASE ESEF_DOLLAR_VALUE
IF valueA < 0
BEGIN_TEXT_COMMAND_DISPLAY_TEXT("ESMINDOLLA")
ADD_TEXT_COMPONENT_FORMATTED_INTEGER(-1*valueA, INTEGER_FORMAT_COMMA_SEPARATORS)
ELSE
BEGIN_TEXT_COMMAND_DISPLAY_TEXT("ESDOLLA")
ADD_TEXT_COMPONENT_FORMATTED_INTEGER(valueA, INTEGER_FORMAT_COMMA_SEPARATORS)
ENDIF
BREAK
CASE ESEF_RAW_STRING
BEGIN_TEXT_COMMAND_DISPLAY_TEXT(base)
BREAK
CASE ESEF_RAW_USERNAME
CASE ESEF_RAW_USERNAME_WITH_RANK
BEGIN_TEXT_COMMAND_DISPLAY_TEXT("STRING")
ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME(base)
BREAK
CASE ESEF_TIME_H_M_S
SET_TEXT_FONT(FONT_STYLE_FIXED_WIDTH_NUMBERS)
BEGIN_TEXT_COMMAND_DISPLAY_TEXT("STRING")
ADD_TEXT_COMPONENT_SUBSTRING_TIME(ValueA, TIME_FORMAT_HOURS | TIME_FORMAT_MINUTES | TIME_FORMAT_SECONDS)
BREAK
CASE ESEF_TIME_M_S
SET_TEXT_FONT(FONT_STYLE_FIXED_WIDTH_NUMBERS)
BEGIN_TEXT_COMMAND_DISPLAY_TEXT("STRING")
ADD_TEXT_COMPONENT_SUBSTRING_TIME(ValueA, TIME_FORMAT_MINUTES | TIME_FORMAT_SECONDS )
BREAK
CASE ESEF_TIME_M_S_MS
SET_TEXT_FONT(FONT_STYLE_FIXED_WIDTH_NUMBERS)
BEGIN_TEXT_COMMAND_DISPLAY_TEXT("STRING")
ADD_TEXT_COMPONENT_SUBSTRING_TIME(ValueA, TIME_FORMAT_MINUTES | TIME_FORMAT_SECONDS | TIME_FORMAT_MILLISECONDS | TEXT_FORMAT_USE_DOT_FOR_MILLISECOND_DIVIDER)
BREAK
CASE ESEF_TIME_M_S_MS_WITH_PERIOD //1506472
SET_TEXT_FONT(FONT_STYLE_FIXED_WIDTH_NUMBERS)
BEGIN_TEXT_COMMAND_DISPLAY_TEXT("STRING")
ADD_TEXT_COMPONENT_SUBSTRING_TIME(ValueA, TIME_FORMAT_MINUTES | TIME_FORMAT_SECONDS | TIME_FORMAT_MILLISECONDS | TEXT_FORMAT_USE_DOT_FOR_MILLISECOND_DIVIDER)
BREAK
CASE ESEF_DISTANCE_VALUE_METERS
BEGIN_TEXT_COMMAND_DISPLAY_TEXT("AHD_DIST")
ADD_TEXT_COMPONENT_INTEGER(valueA)
BREAK
CASE ESEF_SINGLE_NUMBER_SUB
BEGIN_TEXT_COMMAND_DISPLAY_TEXT(base)
ADD_TEXT_COMPONENT_INTEGER(valueA)
ADD_TEXT_COMPONENT_INTEGER(valueB)
BREAK
CASE ESEF_DOUBLE_NUMBER_SUB_LEFT
CASE ESEF_DOUBLE_NUMBER_SUB
BEGIN_TEXT_COMMAND_DISPLAY_TEXT(base)
ADD_TEXT_COMPONENT_INTEGER(valueA)
ADD_TEXT_COMPONENT_INTEGER(valueB)
BREAK
CASE ESEF_LEFT_AND_RIGHT_SUBSTRINGS
BEGIN_TEXT_COMMAND_DISPLAY_TEXT(base)
ADD_TEXT_COMPONENT_INTEGER(valueB)
BREAK
//CASE ESEF_LEFT_SIDE_INT_SUBSTRING //this only applys a substring to name
ENDSWITCH
IF format != ESEF_LEFT_SIDE_INT_SUBSTRING
IF format = ESEF_DOLLAR_VALUE_REDBACK
OR format = ESEF_DOLLAR_VALUE_BLUEBACK
END_TEXT_COMMAND_DISPLAY_TEXT(x- ESC_X_PIXEL*4, y)
SET_TEXT_SCALE(1.0, Get_PT_scale(14))//CUSTOM_MENU_TEXT_SCALE_Y
ELSE
END_TEXT_COMMAND_DISPLAY_TEXT(x, y)
ENDIF
ENDIF
ENDPROC
PROC PRIVATE_RENDER_ENSCREEN_ELEMENT_TITLE_UPDATE(END_SCREEN_DATASET_TITLE_UPDATE &esd, INT iNth, FLOAT yat, FLOAT fontLeft,FLOAT fontRight,INT EndScreenAlpha)
//END_SCREEN_ELEMENT_FORMATTING
//TEXT_LABEL ElementName[iNth]
//TEXT_LABEL ElementText[iNth]
//INT ElementValA[iNth]
//INT ElementValB[iNth]
//END_SCREEN_CHECK_MARK_STATUS ElementCheck[iNth]
//BOOL ElementInvalidation[iNth]
//IF esd.ElementInvalidation[iNth]
// SET_TEXT_COLOUR(10,10,10,255)
//ELSE
INT txt_R,txt_G,txt_B,txt_A
GET_HUD_COLOUR(HUD_COLOUR_WHITE,txt_R,txt_G,txt_B,txt_A)
SET_TEXT_COLOUR(txt_R,txt_G,txt_B,EndScreenAlpha)
//ENDIF
SET_TEXT_WRAP(fontLeft,fontRight)
SET_TEXT_JUSTIFICATION(FONT_LEFT)
//render the name
SET_TEXT_CENTRE(FALSE)
PRIVATE_ENDSCREEN_DRAW_ORDER_TITLE_UPDATE()
//SET_TEXT_SCALE(1.0, Get_PT_scale(2))//CUSTOM_MENU_TEXT_SCALE_Y
//SET_TEXT_FONT(FONT_ROCKSTAR_TAG)
IF esd.ElementIsPlayerName[iNth]
//SET_TEXT_SCALE(1.0, Get_PT_scale(20))//CUSTOM_MENU_TEXT_SCALE_Y
SET_TEXT_SCALE(1.0, Get_PT_scale(14))//CUSTOM_MENU_TEXT_SCALE_Y
SET_TEXT_FONT(FONT_STANDARD)
BEGIN_TEXT_COMMAND_DISPLAY_TEXT("STRING")
ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME(esd.ElementName[iNth])
ELSE
SET_TEXT_SCALE(1.0, Get_PT_scale(14))//CUSTOM_MENU_TEXT_SCALE_Y
SET_TEXT_FONT(FONT_STANDARD)
BEGIN_TEXT_COMMAND_DISPLAY_TEXT(esd.ElementName[iNth])
IF esd.ElementFormat[iNth] = ESEF_LEFT_AND_RIGHT_SUBSTRINGS
OR esd.ElementFormat[iNth] = ESEF_LEFT_SIDE_INT_SUBSTRING
ADD_TEXT_COMPONENT_INTEGER(esd.ElementValA[iNth])
ENDIF
ENDIF
//SET_COLOUR_OF_NEXT_TEXT_COMPONENT(HUD_COLOUR_BLACK)
//ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME(tl)
END_TEXT_COMMAND_DISPLAY_TEXT(fontleft, yat)
FLOAT widthPlus = 0.0//BEGIN_TEXT_COMMAND_GET_SCREEN_WIDTH_OF_DISPLAY_TEXT
IF esd.ElementIsPlayerName[iNth]
//SET_TEXT_SCALE(1.0, Get_PT_scale(20))//CUSTOM_MENU_TEXT_SCALE_Y
SET_TEXT_SCALE(1.0, Get_PT_scale(14))//CUSTOM_MENU_TEXT_SCALE_Y
SET_TEXT_FONT(FONT_STANDARD)
BEGIN_TEXT_COMMAND_GET_SCREEN_WIDTH_OF_DISPLAY_TEXT("STRING")
ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME(esd.ElementName[iNth])
ELSE
SET_TEXT_SCALE(1.0, Get_PT_scale(14))//CUSTOM_MENU_TEXT_SCALE_Y
SET_TEXT_FONT(FONT_STANDARD)
BEGIN_TEXT_COMMAND_GET_SCREEN_WIDTH_OF_DISPLAY_TEXT(esd.ElementName[iNth])
IF esd.ElementFormat[iNth] = ESEF_LEFT_AND_RIGHT_SUBSTRINGS
OR esd.ElementFormat[iNth] = ESEF_LEFT_SIDE_INT_SUBSTRING
ADD_TEXT_COMPONENT_INTEGER(esd.ElementValA[iNth])
ENDIF
ENDIF
//SET_COLOUR_OF_NEXT_TEXT_COMPONENT(HUD_COLOUR_BLACK)
//ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME(tl)
widthPlus += END_TEXT_COMMAND_GET_SCREEN_WIDTH_OF_DISPLAY_TEXT(TRUE)
//GET_PLAYER_RANK()
IF esd.ElementFormat[iNth] = ESEF_RAW_USERNAME_WITH_RANK
IF esd.ElementRankLookup[iNth] != NULL
GAMER_HANDLE aGamer = GET_GAMER_HANDLE_PLAYER(esd.ElementRankLookup[iNth])
DRAW_CREW_TAG_GAMER_COPY(aGamer,
fontLeft+widthPlus,//..+ESC_X_PIXEL*14,
yat,//-ESC_Y_PIXEL*14,
1.0)
ENDIF
ENDIF
SET_TEXT_SCALE(1.0, Get_PT_scale(14))//CUSTOM_MENU_TEXT_SCALE_Y
SET_TEXT_FONT(FONT_STANDARD)
FLOAT TRUEright = fontRight
FLOAT ficonw
FLOAT ficonh
//FLOAT ficonwh
//FLOAT ficonhh
SWITCH esd.ElementCheck[iNth]
CASE ESCM_NO_MARK
BREAK
CASE ESCM_UNCHECKED
GET_MENU_ICON_SCREEN_RESOLUTION(MENU_ICON_BOX_EMPTY,
FALSE,TRUE,
ficonw,ficonh)
//ficonwh = ficonw*0.5
//ficonhh = ficonh*0.5
//render the unchecked box
DRAW_SPRITE("CommonMenu", GET_MENU_ICON_TEXTURE(MENU_ICON_BOX_EMPTY,FALSE),
(fontRight)- ESC_INDENT, yat +PIXEL_Y(ESC_LINE_Y_GAP)+ (0.25*ficonh),
ficonw, ficonh,
0,
255, 255, 255, 255)
TRUEright -= ficonw*0.38 + ESC_INDENT//width of check mark
BREAK
CASE ESCM_CHECKED
GET_MENU_ICON_SCREEN_RESOLUTION(MENU_ICON_BOX_TICK,
FALSE,TRUE,
ficonw,ficonh)
//ficonwh = ficonw*0.5
//ficonhh = ficonh*0.5
//render the checked box
DRAW_SPRITE("CommonMenu", GET_MENU_ICON_TEXTURE(MENU_ICON_BOX_TICK,FALSE),
(fontRight)- ESC_INDENT , yat +PIXEL_Y(ESC_LINE_Y_GAP)+ (0.25*ficonh),
ficonw, ficonh,
0,
255, 255, 255, 255)
TRUEright -= ficonw*0.38 + ESC_INDENT//width of check mark
BREAK
CASE ESCM_INVALIDATED
GET_MENU_ICON_SCREEN_RESOLUTION(MENU_ICON_BOX_CROSS,
FALSE,TRUE,
ficonw,ficonh)
//ficonwh = ficonw*0.5
//ficonhh = ficonh*0.5
//render the checked box
DRAW_SPRITE("CommonMenu", GET_MENU_ICON_TEXTURE(MENU_ICON_BOX_CROSS,FALSE),
(fontRight)- ESC_INDENT , yat +PIXEL_Y(ESC_LINE_Y_GAP) + (0.25*ficonh),
ficonw, ficonh,
0,
255, 255, 255, 255)
TRUEright -= ficonw*0.38 + ESC_INDENT//width of check mark
BREAK
ENDSWITCH
IF esd.ElementFormat[iNth] = ESEF_NAME_ONLY
EXIT
ENDIF
//render the value
IF esd.ElementFormat[iNth] = ESEF_DOUBLE_NUMBER_SUB_LEFT
SET_TEXT_JUSTIFICATION(FONT_LEFT)
ELSE
SET_TEXT_JUSTIFICATION(FONT_RIGHT)
ENDIF
SET_TEXT_SCALE(1.0, Get_PT_scale(14))//CUSTOM_MENU_TEXT_SCALE_Y
IF esd.ElementFormat[iNth] = ESEF_DOLLAR_VALUE_BLUEBACK
OR esd.ElementFormat[iNth] = ESEF_DOLLAR_VALUE_REDBACK
SET_TEXT_WRAP(fontLeft,TRUEright - ESC_X_PIXEL*3)
ELSE
SET_TEXT_WRAP(fontLeft,TRUEright + ESC_X_PIXEL*2)
ENDIF
PRIVATE_RENDER_ENDSCREEN_VALUE_TITLE_UPDATE(
esd.ElementValA[iNth], esd.ElementValB[iNth],
fontRight, yat,
esd.ElementText[iNth],
esd.ElementFormat[iNth])
//esd.ElementInvalidation[iNth])
//PRINTLN("PRIVATE_RENDER_ENSCREEN_ELEMENT_TITLE_UPDATE: <eleminvalidation> invalidation for ", iNth, " is ", esd.ElementInvalidation[iNth])
ENDPROC
PROC FORCE_ENDSCREEN_ANIM_OUT_TITLE_UPDATE(END_SCREEN_DATASET_TITLE_UPDATE &esd)
esd.bShowSkipperPrompt = FALSE
esd.bHoldOnEnd = FALSE
esd.iEndScreenDisplayFinish = esd.IGameTimerReplacement+500
ENDPROC
/// PURPOSE:
//assumes that the scaleform is already loaded
//call at your own risk
/// PARAMS:
/// esd -
///
///
PROC RAW_ENDSCREEN_DRAW_TITLE_UPDATE(END_SCREEN_DATASET_TITLE_UPDATE &esd, FLOAT skipperMult = 1.0)
//set Alpha
Int EndScreenAlpha = round(esd.fFadeOutMult * 255)
IF HAS_SCALEFORM_MOVIE_LOADED(esd.splash)
IF esd.fTitleUpMult > 0.10
IF !esd.bStartedFailformAnim
BEGIN_SCALEFORM_MOVIE_METHOD(esd.splash, "TRANSITION_UP")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(0.15)
END_SCALEFORM_MOVIE_METHOD()
esd.bStartedFailformAnim = TRUE
ENDIF
ENDIF
PRIVATE_ENDSCREEN_DRAW_ORDER_TITLE_UPDATE()
//DRAW_SCALEFORM_MOVIE(esd.splash,0.5,0.775-0.275*esd.fTitleUpMult,1.0,1.0,255,255,255,255)//75-25
DRAW_SCALEFORM_MOVIE_FULLSCREEN(esd.splash,255,255,255,255)
ENDIF
//draw the background box
PRINTLN("End screen blend in ", esd.fBlendInProgress, " sum ",esd.fBlendInTargetYSum, " tmult = ", esd.fTitleUpMult," M alpha: ",EndScreenAlpha)
FLOAT currentH = (esd.fBlendInTargetYSum*esd.fBlendInProgress)*(1.0 - esd.fScrollOutMult)
FLOAT socialH = 0.0
IF esd.bVoteModeEnabled
socialH = ((ESC_SOCIAL_BULLSHIT_TAB_Y + PIXEL_Y(ESC_LINE_Y_GAP*2))*esd.fVoteBarProg)*(1.0 - esd.fScrollOutMult)
currentH += socialH
ENDIF
IF esd.fScrollOutMult != 0.0
FLOAT min = PIXEL_Y(ESC_LINE_Y_ADVANCE_HEADER)//+ PIXEL_Y(ESC_LINE_Y_GAP*2) // title box
IF currentH < min
currentH = min
ENDIF
ELSE
FLOAT min = PIXEL_Y(ESC_LINE_Y_ADVANCE_HEADER) - PIXEL_Y(ESC_LINE_Y_GAP)// Completion box
IF esd.fTitleUpMult >= 0.975
IF currentH < min
currentH = min
ENDIF
ENDIF
ENDIF
FLOAT yat = ESC_Y_POSITION
IF esd.bCenterMessageMode
yat = 0.5
ENDIF
FLOAT w = esd.fTrueHalfWidth *2
FLOAT fontLeft = (0.499 - esd.fTrueHalfWidth) + ESC_INDENT // request both moved slightly to the left
FLOAT fontRight = (0.499 + esd.fTrueHalfWidth) - ESC_INDENT // request both moved slightly to the left
//show the "press button to continue prompt if needed
IF esd.bShowSkipperPrompt OR esd.bVoteModeEnabled
IF (esd.iEndScreenDisplayFinish-(7500*skipperMult)) < esd.IGameTimerReplacement //normal mode
OR (esd.bVoteModeEnabled AND esd.fBlendInProgress > 0.95 AND (esd.iEndScreenDisplayFinish-(10000)) < esd.IGameTimerReplacement) //vote mode
IF esd.bVoteModeEnabled
//timing
IF esd.iVoteTimer < 0// init
esd.iVoteTimer *= -1
esd.iVoteTimer = esd.IGameTimerReplacement + esd.iVoteTimer
ENDIf
IF esd.iVoteTimer > 0
IF (esd.iVoteTimer - esd.IGameTimerReplacement) > 0
//DRAW_GENERIC_TIMER(esd.iVoteTimer - esd.IGameTimerReplacement ,"TIMER_TIME")
BEGIN_SCALEFORM_MOVIE_METHOD(esd.button, "OVERRIDE_RESPAWN_TEXT")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(0)
BEGIN_TEXT_COMMAND_SCALEFORM_STRING("STRING")
ADD_TEXT_COMPONENT_SUBSTRING_TIME(esd.iVoteTimer - esd.IGameTimerReplacement, TIME_FORMAT_MINUTES | TIME_FORMAT_SECONDS )
END_TEXT_COMMAND_SCALEFORM_STRING()
END_SCALEFORM_MOVIE_METHOD()
ELSE
esd.iVoteTimer = 0
esd.eVoteResult = ESSRV_TIMEOUT
esd.bVoteModeEnabled = FALSE
esd.bHoldOnEnd = FALSE
esd.bShowSkipperPrompt = FALSE
esd.iEndScreenDisplayFinish = esd.IGameTimerReplacement+500
esd.iVoteTimer = 0
ENDIF
ENDIF
//scroll out effect
IF esd.fVoteBarProg < 1.0
esd.fVoteBarProg += 0.0 +@ (1.0/0.166)
IF esd.fVoteBarProg > 1.0
esd.fVoteBarProg = 1.0
ENDIF
ENDIF
ENDIF
//SET_TEXT_WRAP(fontLeft,fontRight)
//SET_TEXT_JUSTIFICATION(FONT_RIGHT)
//SET_TEXT_SCALE(1.0, Get_PT_scale(14))//CUSTOM_MENU_TEXT_SCALE_Y
//PRIVATE_RENDER_ENDSCREEN_LABEL_TITLE_UPDATE("MTPHPERCONT", fontLeft, yat+currentH)//
IF IS_SCREEN_FADED_OUT()
HIDE_LOADING_ON_FADE_THIS_FRAME()
ENDIF
IF esd.button != NULL AND ( esd.fScrollOutMult < 0.10)
DRAW_SCALEFORM_MOVIE_FULLSCREEN(esd.button,255,255,255,EndScreenAlpha)
ENDIF
IF esd.bVoteModeEnabled
DISABLE_CONTROL_ACTION(PLAYER_CONTROL,INPUT_MELEE_ATTACK_LIGHT)
DISABLE_CONTROL_ACTION(PLAYER_CONTROL,INPUT_MELEE_ATTACK_HEAVY)
DISABLE_CONTROL_ACTION(PLAYER_CONTROL,INPUT_MELEE_ATTACK_ALTERNATE)
HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_AREA_NAME)
HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_DISTRICT_NAME)
HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_STREET_NAME)
HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_VEHICLE_NAME)
DISABLE_CONTROL_ACTION(FRONTEND_CONTROL, INPUT_FRONTEND_UP)
IF IS_DISABLED_CONTROL_JUST_PRESSED(FRONTEND_CONTROL,INPUT_FRONTEND_UP)
PLAY_SOUND_FRONTEND(-1,"CONTINUE","HUD_FRONTEND_DEFAULT_SOUNDSET", FALSE)
esd.bVoteModeEnabled = FALSE
esd.bHoldOnEnd = FALSE
esd.bShowSkipperPrompt = FALSE
esd.iEndScreenDisplayFinish = esd.IGameTimerReplacement+500
esd.eVoteResult = ESSRV_THUMBS_UP
esd.iVoteTimer = 0
PLAY_SOUND_FRONTEND (-1, "continue", "HUD_FRONTEND_DEFAULT_SOUNDSET", FALSE)
ENDIF
DISABLE_CONTROL_ACTION(FRONTEND_CONTROL, INPUT_FRONTEND_DOWN)
IF IS_DISABLED_CONTROL_JUST_PRESSED(FRONTEND_CONTROL,INPUT_FRONTEND_DOWN)
PLAY_SOUND_FRONTEND(-1,"CONTINUE","HUD_FRONTEND_DEFAULT_SOUNDSET", FALSE)
esd.bVoteModeEnabled = FALSE
esd.bHoldOnEnd = FALSE
esd.bShowSkipperPrompt = FALSE
esd.iEndScreenDisplayFinish = esd.IGameTimerReplacement+500
esd.eVoteResult = ESSRV_THUMBS_DOWN
esd.iVoteTimer = 0
PLAY_SOUND_FRONTEND (-1, "continue", "HUD_FRONTEND_DEFAULT_SOUNDSET", FALSE)
ENDIF
DISABLE_CONTROL_ACTION(FRONTEND_CONTROL, INPUT_FRONTEND_CANCEL)
IF IS_DISABLED_CONTROL_JUST_PRESSED(FRONTEND_CONTROL,INPUT_FRONTEND_CANCEL)
PLAY_SOUND_FRONTEND(-1,"CONTINUE","HUD_FRONTEND_DEFAULT_SOUNDSET", FALSE)
esd.bVoteModeEnabled = FALSE
esd.bHoldOnEnd = FALSE
esd.bShowSkipperPrompt = FALSE
esd.iEndScreenDisplayFinish = esd.IGameTimerReplacement+500
esd.eVoteResult = ESSRV_ABSTAIN
esd.iVoteTimer = 0
PLAY_SOUND_FRONTEND (-1, "continue", "HUD_FRONTEND_DEFAULT_SOUNDSET", FALSE)
ENDIF
ELSE
IF esd.bShowSkipperPrompt
HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_AREA_NAME)
HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_DISTRICT_NAME)
HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_STREET_NAME)
HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_VEHICLE_NAME)
DISABLE_CONTROL_ACTION(PLAYER_CONTROL,INPUT_MELEE_ATTACK_LIGHT)
DISABLE_CONTROL_ACTION(PLAYER_CONTROL,INPUT_MELEE_ATTACK_HEAVY)
DISABLE_CONTROL_ACTION(PLAYER_CONTROL,INPUT_MELEE_ATTACK_ALTERNATE)
DISABLE_CONTROL_ACTION(FRONTEND_CONTROL, INPUT_SKIP_CUTSCENE)
IF IS_DISABLED_CONTROL_JUST_PRESSED(FRONTEND_CONTROL,INPUT_SKIP_CUTSCENE)
PLAY_SOUND_FRONTEND(-1,"CONTINUE","HUD_FRONTEND_DEFAULT_SOUNDSET", FALSE)
esd.bShowSkipperPrompt = FALSE
esd.bHoldOnEnd = FALSE
esd.iEndScreenDisplayFinish = esd.IGameTimerReplacement+500
PLAY_SOUND_FRONTEND (-1, "continue", "HUD_FRONTEND_DEFAULT_SOUNDSET", FALSE)
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
PRIVATE_ENDSCREEN_DRAW_ORDER_TITLE_UPDATE()
INT r,g,b,a
GET_HUD_COLOUR(HUD_COLOUR_PAUSE_BG,r,g,b,a)
// a = round(255 * 0.73) //73% black
DRAW_RECT(0.5,
yat+(currentH*0.5),
w,
currentH,
r,g,b,round(esd.fFadeOutMult*a))
//==================================================== WHITE LINE ===========================================================
IF currentH >= PIXEL_Y(ESC_LINE_Y_GAP)
//draw whiteline top
PRIVATE_ENDSCREEN_DRAW_ORDER_TITLE_UPDATE()
DRAW_RECT(0.5,
yat-(PIXEL_Y(ESC_LINE_Y_GAP-0.5)-ESC_Y_PIXEL),
w,
PIXEL_Y(ESC_LINE_Y_GAP),
255,255,255,EndScreenAlpha)
ELSE
EXIT
ENDIF
yat += PIXEL_Y(ESC_LINE_Y_GAP)
//==================================================== TITLE BOX ===========================================================
//draw the title string
INT txt_R,txt_G,txt_B,txt_A
GET_HUD_COLOUR(HUD_COLOUR_WHITE,txt_R,txt_G,txt_B,txt_A)
SET_TEXT_COLOUR(txt_R,txt_G,txt_B,EndScreenAlpha)
SET_TEXT_WRAP(fontLeft,fontRight)
SET_TEXT_JUSTIFICATION(FONT_CENTRE)
SET_TEXT_SCALE(1.0, Get_PT_scale(16)) //17.36
// IS THE USERNAME BEING USED
IF esd.titleIsUserName
PRIVATE_RENDER_ENDSCREEN_LABEL_TITLE_UPDATE(esd.title,0.5,yat+ESC_Y_PIXEL,TRUE,TRUE)//+PIXEL_Y(ESC_LINE_Y_GAP)
ELSE
// DISPLAY MISSION TITLE
IF esd.iTitleSubelements = 0
PRIVATE_RENDER_ENDSCREEN_LABEL_TITLE_UPDATE(esd.title,0.5,yat+ESC_Y_PIXEL,TRUE)//+PIXEL_Y(ESC_LINE_Y_GAP)
ELSE
// TITLE WITH ELEMENTS
SET_TEXT_CENTRE(TRUE)
SET_TEXT_FONT(FONT_STANDARD)
PRIVATE_ENDSCREEN_DRAW_ORDER_TITLE_UPDATE()
BEGIN_TEXT_COMMAND_DISPLAY_TEXT(esd.title)
INT iIntCount = 0
INT iStrCount = 0
INT i = 0
REPEAT esd.iTitleSubelements i
SWITCH esd.titleSubElementType[i]
CASE ESTSET_INT
ADD_TEXT_COMPONENT_INTEGER(esd.iTitleSubInts[iIntCount])
++iIntCount
BREAK
CASE ESTSET_STRING
ADD_TEXT_COMPONENT_SUBSTRING_TEXT_LABEL(esd.titleSubstrings[iStrCount] )
++iStrCount
BREAK
CASE ESTSET_LITERAL_STRING
ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME(esd.titleSubstrings[iStrCount])
++iStrCount
BREAK
ENDSWITCH
ENDREPEAT
END_TEXT_COMMAND_DISPLAY_TEXT(0.5,yat+ESC_Y_PIXEL)//yat+PIXEL_Y(1.85))
ENDIF
ENDIF
//===========================================================================================================================
//==================================================== WHITE LINE ===========================================================
yat += PIXEL_Y(ESC_LINE_Y_ADVANCE_HEADER)-(PIXEL_Y(ESC_LINE_Y_GAP*2))
IF currentH >= PIXEL_Y(ESC_LINE_Y_GAP)
//draw whiteline top
PRIVATE_ENDSCREEN_DRAW_ORDER_TITLE_UPDATE()
DRAW_RECT(0.5,
yat+(PIXEL_Y(ESC_LINE_Y_GAP*0.5)),
w,
PIXEL_Y(ESC_LINE_Y_GAP),
255,255,255,EndScreenAlpha)
ELSE
EXIT
ENDIF
//===========================================================================================================================
//=================================================== ELEMENTS BOX ==========================================================
// yat += PIXEL_Y(ESC_LINE_Y_GAP*0.5)
IF esd.iElements > 0
yat += PIXEL_Y(ESC_LINE_Y_ADVANCE*0.25) //6.25 pxls
ENDIF
INT i = 0
REPEAT esd.iElements i
IF currentH >= (yat-ESC_Y_POSITION)
//draw each of the content lines
PRIVATE_RENDER_ENSCREEN_ELEMENT_TITLE_UPDATE(esd, i, yat+PIXEL_Y(ESC_LINE_Y_GAP), fontLeft, fontRight,EndScreenAlpha)
ELSE
EXIT
ENDIF
yat += PIXEL_Y(ESC_LINE_Y_ADVANCE)
ENDREPEAT
IF esd.iElements > 0
yat += PIXEL_Y(ESC_LINE_Y_ADVANCE*0.25)//6.25 pxls
//===========================================================================================================================
//==================================================== WHITE LINE ===========================================================
IF currentH >= (yat-ESC_Y_POSITION)
yat += PIXEL_Y(ESC_LINE_Y_GAP)//y at the bottom of the white line
//draw whiteline before end
PRIVATE_ENDSCREEN_DRAW_ORDER_TITLE_UPDATE()
DRAW_RECT(0.5,
yat-PIXEL_Y(0.5),
w,
PIXEL_Y(ESC_LINE_Y_GAP),
255,255,255,EndScreenAlpha)
ELSE
EXIT
ENDIF
ENDIF
//===========================================================================================================================
//================================================= COMPLETION BOX ==========================================================
IF esd.bShowCompletion
SET_TEXT_COLOUR(txt_R,txt_G,txt_B,EndScreenAlpha)
//TODO Draw completion line here
SET_TEXT_WRAP(fontLeft,fontRight)
SET_TEXT_JUSTIFICATION(FONT_LEFT)
SET_TEXT_SCALE(1.0, Get_PT_scale(14))//CUSTOM_MENU_TEXT_SCALE_Y)
PRIVATE_RENDER_ENDSCREEN_LABEL_TITLE_UPDATE(esd.CompletionResultString,fontLeft,yat+PIXEL_Y(ESC_LINE_Y_GAP*2))//4pxls after white line
//and percentage if needed
SET_TEXT_WRAP(fontLeft,fontRight)
SET_TEXT_JUSTIFICATION(FONT_RIGHT)
SET_TEXT_SCALE(1.0, Get_PT_scale(14))//CUSTOM_MENU_TEXT_SCALE_Y)
SET_TEXT_CENTRE(FALSE)
SET_TEXT_FONT(FONT_STANDARD)
PRIVATE_ENDSCREEN_DRAW_ORDER_TITLE_UPDATE()
FLOAT medalRight = fontRight
TEXT_LABEL medalsprite = "Common_Medal"
FLOAT ficonw
FLOAT ficonh
GET_MENU_ICON_SCREEN_RESOLUTION(MENU_ICON_BOX_EMPTY,
FALSE,TRUE,
ficonw,ficonh)
//esd.CompletionMedalState = ESMS_GOLD
SWITCH esd.CompletionMedalState
//ESMS_NO_MEDAL,
CASE ESMS_BRONZE
medalRight -= ficonw*0.38 + ESC_INDENT//ESC_X_PIXEL*(MEDAL_PIX_SIDE/1.5)
//medalsprite = "medal_bronze"
BREAK
CASE ESMS_SILVER
medalRight -= ficonw*0.38 + ESC_INDENT//ESC_X_PIXEL*(MEDAL_PIX_SIDE/1.5)
BREAK
CASE ESMS_GOLD
medalRight -= ficonw*0.38 + ESC_INDENT//ESC_X_PIXEL*(MEDAL_PIX_SIDE/1.5)
//medalsprite = "medal_gold"
BREAK
ENDSWITCH
SET_TEXT_WRAP(fontLeft,medalRight)
// INT iCompletionValueA
// INT iCompletionValueB
// END_SCREEN_COMPLETION_TYPE CompletionType
SWITCH esd.CompletionType
CASE ESC_PERCENTAGE_COMPLETION
BEGIN_TEXT_COMMAND_DISPLAY_TEXT("PERCENTAGE")
ADD_TEXT_COMPONENT_INTEGER(esd.iCompletionValueA)
END_TEXT_COMMAND_DISPLAY_TEXT(fontLeft, yat+PIXEL_Y(ESC_LINE_Y_GAP*2))//4pxls after white line
BREAK
CASE ESC_FRACTION_COMPLETION
BEGIN_TEXT_COMMAND_DISPLAY_TEXT("FO_TWO_NUM")
ADD_TEXT_COMPONENT_INTEGER(esd.iCompletionValueA)
ADD_TEXT_COMPONENT_INTEGER(esd.iCompletionValueB)
END_TEXT_COMMAND_DISPLAY_TEXT(fontLeft, yat+PIXEL_Y(ESC_LINE_Y_GAP*2))//4pxls after white line
BREAK
CASE ESC_XP_COMPLETION
BEGIN_TEXT_COMMAND_DISPLAY_TEXT("MTPHPER_XPNO")
ADD_TEXT_COMPONENT_INTEGER(esd.iCompletionValueA)
END_TEXT_COMMAND_DISPLAY_TEXT(fontLeft, yat+PIXEL_Y(ESC_LINE_Y_GAP*2))//4pxls after white line
BREAK
ENDSWITCH
IF esd.CompletionMedalState != ESMS_NO_MEDAL
INT mr = 255
INT mg = 255
INT mb = 255
INT ma = EndScreenAlpha
SWITCH esd.CompletionMedalState
CASE ESMS_BRONZE
GET_HUD_COLOUR(HUD_COLOUR_BRONZE,mr,mg,mb,ma)
BREAK
CASE ESMS_GOLD
GET_HUD_COLOUR(HUD_COLOUR_GOLD,mr,mg,mb,ma)
BREAK
CASE ESMS_SILVER
GET_HUD_COLOUR(HUD_COLOUR_SILVER,mr,mg,mb,ma)
BREAK
ENDSWITCH
FLOAT fmedalw = ESC_X_PIXEL*MEDAL_PIX_SIDE*2//twice the size for new texture
FLOAT fmedalh = ESC_Y_PIXEL*MEDAL_PIX_SIDE*2//twice the size for new texture
//FLOAT fmedalwh = ESC_X_PIXEL*(MEDAL_PIX_SIDE/3)
FLOAT fmedalhh = ESC_Y_PIXEL*(MEDAL_PIX_SIDE/3)
DRAW_SPRITE("CommonMenu", medalsprite,
(fontRight)- ESC_INDENT,//(fontRight) - fmedalwh*1.1,
yat + (PIXEL_Y(9)) + fmedalhh, //fmedalhh+
fmedalw, fmedalh,
0,
mr, mg, mb, EndScreenAlpha)
ENDIF
//===========================================================================================================================
//==================================================== WHITE LINE ===========================================================
yat += PIXEL_Y(ESC_LINE_Y_ADVANCE_HEADER)-(PIXEL_Y(ESC_LINE_Y_GAP))
IF currentH >= (yat-ESC_Y_POSITION)
//draw whiteline before end
PRIVATE_ENDSCREEN_DRAW_ORDER_TITLE_UPDATE()
DRAW_RECT(0.5,
yat,//-(PIXEL_Y(ESC_LINE_Y_GAP*0.5)),
w,
PIXEL_Y(ESC_LINE_Y_GAP),
255,255,255,EndScreenAlpha)
ELSE
EXIT
ENDIF
ENDIF
//===========================================================================================================================
//===================================================== VOTE BOX ============================================================
IF esd.bVoteModeEnabled AND socialH > 0.0
FLOAT remainder = socialH
remainder -= socialH*0.03
yat += socialH*0.03
//[ES_HELP_SOC3:MISHSTA]
//Like / Dislike
//draw the title string
IF esd.fVoteBarProg > 0.08
SET_TEXT_COLOUR(txt_R,txt_G,txt_B,EndScreenAlpha)
SET_TEXT_WRAP(fontLeft,fontRight)
SET_TEXT_JUSTIFICATION(FONT_CENTRE)
SET_TEXT_SCALE(1.0, Get_PT_scale(17))
PRIVATE_RENDER_ENDSCREEN_LABEL_TITLE_UPDATE("ES_HELP_SOC3",0.5,yat+PIXEL_Y(ESC_LINE_Y_GAP*2),TRUE)
//draw thumbs
FLOAT fThumbw = ESC_X_PIXEL * MEDAL_PIX_SIDE * 3
FLOAT fThumbh = ESC_Y_PIXEL * MEDAL_PIX_SIDE * 3
FLOAT fThumbhh = ESC_Y_PIXEL* (MEDAL_PIX_SIDE/3)
SET_TEXT_SCALE(1.0, Get_PT_scale(17))
BEGIN_TEXT_COMMAND_GET_SCREEN_WIDTH_OF_DISPLAY_TEXT("ES_HELP_SOC3")
FLOAT wx = END_TEXT_COMMAND_GET_SCREEN_WIDTH_OF_DISPLAY_TEXT(TRUE)
//left thumb
DRAW_SPRITE("MPLeaderboard", "Leaderboard_thumb",
0.5 - (wx*0.5) - (fThumbw*0.3),
yat + (PIXEL_Y(9)) + fThumbhh,
fThumbw, fThumbh, 0,255, 255, 255, EndScreenAlpha)
//right thumb
DRAW_SPRITE("MPLeaderboard", "Leaderboard_thumb",
0.5+ (wx*0.5) + (fThumbw*0.3),
yat + (PIXEL_Y(9)) + fThumbhh*2,
fThumbw, fThumbh, 180,255, 255, 255, EndScreenAlpha)
ENDIF
remainder -= socialH*0.23
yat += socialH*0.22
IF esd.fVoteBarProg > 0.3
SET_TEXT_COLOUR(txt_R,txt_G,txt_B,EndScreenAlpha)
SET_TEXT_WRAP(fontLeft,fontRight)
SET_TEXT_JUSTIFICATION(FONT_CENTRE)
SET_TEXT_SCALE(1.0, Get_PT_scale(12))//CUSTOM_MENU_TEXT_SCALE_Y)
PRIVATE_RENDER_ENDSCREEN_LABEL_TITLE_UPDATE("ES_HELP_SOCA",0.5,yat+PIXEL_Y(ESC_LINE_Y_GAP*2),TRUE)
ENDIF
remainder -= socialH*0.15
yat += socialH*0.15
IF esd.fVoteBarProg > 0.4
SET_TEXT_COLOUR(txt_R,txt_G,txt_B,EndScreenAlpha)
SET_TEXT_WRAP(fontLeft,fontRight)
SET_TEXT_JUSTIFICATION(FONT_CENTRE)
SET_TEXT_SCALE(1.0, Get_PT_scale(12))//CUSTOM_MENU_TEXT_SCALE_Y)
PRIVATE_RENDER_ENDSCREEN_LABEL_TITLE_UPDATE("ES_HELP_SOCB",0.5,yat+PIXEL_Y(ESC_LINE_Y_GAP*2),TRUE)
ENDIF
remainder -= socialH*0.15
yat += socialH*0.15
IF esd.fVoteBarProg > 0.5
SET_TEXT_COLOUR(txt_R,txt_G,txt_B,EndScreenAlpha)
SET_TEXT_WRAP(fontLeft,fontRight)
SET_TEXT_JUSTIFICATION(FONT_CENTRE)
SET_TEXT_SCALE(1.0, Get_PT_scale(12))//CUSTOM_MENU_TEXT_SCALE_Y)
PRIVATE_RENDER_ENDSCREEN_LABEL_TITLE_UPDATE("ES_HELP_SOCC",0.5,yat+PIXEL_Y(ESC_LINE_Y_GAP*2),TRUE)
ENDIF
remainder -= socialH*0.15
yat += socialH*0.15
IF esd.fVoteBarProg > 0.6
SET_TEXT_COLOUR(txt_R,txt_G,txt_B,EndScreenAlpha)
SET_TEXT_WRAP(fontLeft,fontRight)
SET_TEXT_JUSTIFICATION(FONT_CENTRE)
SET_TEXT_SCALE(1.0, Get_PT_scale(12))//CUSTOM_MENU_TEXT_SCALE_Y)
PRIVATE_RENDER_ENDSCREEN_LABEL_TITLE_UPDATE("ES_HELP_SOCD",0.5,yat+PIXEL_Y(ESC_LINE_Y_GAP*2),TRUE)
ENDIF
IF remainder > 0
yat += remainder
ENDIF
/*
remainder -= socialH*0.08
yat += socialH*0.08
//[ES_HELP_SOC1:MISHSTA]
//Let the ~y~Social Club Community~s~ know if you
//draw the title string
IF esd.fVoteBarProg > 0.08
SET_TEXT_COLOUR(txt_R,txt_G,txt_B,EndScreenAlpha)
SET_TEXT_WRAP(fontLeft,fontRight)
SET_TEXT_JUSTIFICATION(FONT_CENTRE)
SET_TEXT_SCALE(1.0, Get_PT_scale(14))//CUSTOM_MENU_TEXT_SCALE_Y)
PRIVATE_RENDER_ENDSCREEN_LABEL_TITLE_UPDATE("ES_HELP_SOC1",0.5,yat+PIXEL_Y(ESC_LINE_Y_GAP*2),TRUE)
ENDIF
remainder -= socialH*0.2
yat += socialH*0.2
//[ES_HELP_SOC2:MISHSTA]
//enjoyed this race. Vote here:
//draw the title string
IF esd.fVoteBarProg > 0.28
SET_TEXT_COLOUR(txt_R,txt_G,txt_B,EndScreenAlpha)
SET_TEXT_WRAP(fontLeft,fontRight)
SET_TEXT_JUSTIFICATION(FONT_CENTRE)
SET_TEXT_SCALE(1.0, Get_PT_scale(14))//CUSTOM_MENU_TEXT_SCALE_Y)
if esd.eVoteGameType = ESMGT_RACE
PRIVATE_RENDER_ENDSCREEN_LABEL_TITLE_UPDATE("ES_HELP_SOC2",0.5,yat+PIXEL_Y(ESC_LINE_Y_GAP*2),TRUE)
elif esd.eVoteGameType = ESMGT_DEATHMATCH
PRIVATE_RENDER_ENDSCREEN_LABEL_TITLE_UPDATE("ES_HELP_SOC2b",0.5,yat+PIXEL_Y(ESC_LINE_Y_GAP*2),TRUE)
elif esd.eVoteGameType = ESMGT_MISSION
PRIVATE_RENDER_ENDSCREEN_LABEL_TITLE_UPDATE("ES_HELP_SOC2c",0.5,yat+PIXEL_Y(ESC_LINE_Y_GAP*2),TRUE)
endif
ENDIF
remainder -= socialH*0.3
yat += socialH*0.3
//[ES_HELP_SOC3:MISHSTA]
//Like / Dislike
//draw the title string
IF esd.fVoteBarProg > 0.58
SET_TEXT_COLOUR(txt_R,txt_G,txt_B,EndScreenAlpha)
SET_TEXT_WRAP(fontLeft,fontRight)
SET_TEXT_JUSTIFICATION(FONT_CENTRE)
SET_TEXT_SCALE(1.0, Get_PT_scale(17))
PRIVATE_RENDER_ENDSCREEN_LABEL_TITLE_UPDATE("ES_HELP_SOC3",0.5,yat+PIXEL_Y(ESC_LINE_Y_GAP*2),TRUE)
//draw thumbs
FLOAT fThumbw = ESC_X_PIXEL * MEDAL_PIX_SIDE * 3
FLOAT fThumbh = ESC_Y_PIXEL * MEDAL_PIX_SIDE * 3
FLOAT fThumbhh = ESC_Y_PIXEL* (MEDAL_PIX_SIDE/3)
SET_TEXT_SCALE(1.0, Get_PT_scale(17))
BEGIN_TEXT_COMMAND_GET_SCREEN_WIDTH_OF_DISPLAY_TEXT("ES_HELP_SOC3")
FLOAT wx = END_TEXT_COMMAND_GET_SCREEN_WIDTH_OF_DISPLAY_TEXT(TRUE)
//left thumb
DRAW_SPRITE("MPLeaderboard", "Leaderboard_thumb",
0.5 - (wx*0.5) - (fThumbw*0.6),
yat + (PIXEL_Y(9)) + fThumbhh,
fThumbw, fThumbh, 0,255, 255, 255, EndScreenAlpha)
//right thumb
DRAW_SPRITE("MPLeaderboard", "Leaderboard_thumb",
0.5+ (wx*0.5) + (fThumbw*0.6),
yat + (PIXEL_Y(9)) + fThumbhh,
fThumbw, fThumbh, 180,255, 255, 255, EndScreenAlpha)
ENDIF
IF remainder > 0
yat += remainder
ENDIF
*/
ENDIF
//===========================================================================================================================
//==================================================== WHITE LINE ===========================================================
IF currentH >= (yat-ESC_Y_POSITION)
//draw whiteline before end
PRIVATE_ENDSCREEN_DRAW_ORDER_TITLE_UPDATE()
DRAW_RECT(0.5,
yat, //-(PIXEL_Y(ESC_LINE_Y_GAP*0.5)),
w,
PIXEL_Y(ESC_LINE_Y_GAP),
255,255,255,EndScreenAlpha)
ELSE
EXIT
ENDIF
//===========================================================================================================================
ENDPROC
Proc INIT_ENDSCREEN_VALUES_TITLE_UPDATE(END_SCREEN_DATASET_TITLE_UPDATE &esd)
esd.fFadeOutMult = 1.0
esd.iFadeOutSplashTimer = 0
esd.fVoteBarProg = 0.0
esd.iEndScreenDisplayFinish = 0
esd.fTitleUpMult = 0.0
esd.fScrollOutMult = 0.0
esd.fBlendInProgress = 0.0
esd.fBlendInTargetYSum = 0.0 //the precalculated target height
esd.bTransitionOutCalled = FALSE
esd.bDoneFlash = FALSE
esd.IGameTimerReplacement = 0
esd.bNoLoadingScreenEnabled = FALSE
esd.fTrueHalfWidth = ESC_HALF_WIDTH
esd.bStartedFailformAnim = FALSE
ENDPROC
PROC RESET_ENDSCREEN_TITLE_UPDATE(END_SCREEN_DATASET_TITLE_UPDATE &esd)
//SCALEFORM_INDEX splash
INIT_ENDSCREEN_VALUES_TITLE_UPDATE(esd)
esd.iVoteTimer = 0
esd.iTitleSubelements = 0
esd.iElements = 0
esd.bVoteModeEnabled = FALSE
esd.eVoteResult = ESSRV_UNSET
ENDPROC
/// PURPOSE:
/// CALL THIS BEFORE PREPARE IF YOU USE IT
PROC ENDSCREEN_CONFIGURE_VOTE_PANEL_TITLE_UPDATE(END_SCREEN_DATASET_TITLE_UPDATE &esd,INT iVoteDurationSeconds,END_SCREEN_MP_GAME_TYPE gameType = ESMGT_RACE)
esd.bVoteModeEnabled = TRUE
esd.fVoteBarProg = 0.0
esd.eVoteResult = ESSRV_UNSET
esd.iVoteTimer = -iVoteDurationSeconds*1000
esd.bHoldOnEnd = TRUE
esd.eVoteGameType = gameType
ENDPROC
FUNC END_SCREEN_SOCIAL_RETURN_VALUE GET_ENDSCREEN_SOCIAL_RETURN_VALUE_TITLE_UPDATE(END_SCREEN_DATASET_TITLE_UPDATE &esd)
RETURN esd.eVoteResult
ENDFUNC
//populate
//prepare
//render
//shutdown
/// PURPOSE:
/// render the data in the heist endscreen structure
/// PARAMS:
/// esd - data handle
/// bBlock - if true will block and re-render until done
/// otherwise will return state until done
///
/// RETURNS:
/// True when render complete
FUNC BOOL RENDER_ENDSCREEN_TITLE_UPDATE(END_SCREEN_DATASET_TITLE_UPDATE &esd, BOOL bBlockUntilDone = FALSE,FLOAT skipperMultiplier = 1.0)
// PT Fix 1558760
IF NOT NETWORK_IS_GAME_IN_PROGRESS()
IF IS_PED_DEAD_OR_DYING(GET_PLAYER_PED(GET_PLAYER_INDEX()))
RETURN TRUE // bail out
ENDIF
IF IS_PED_BEING_ARRESTED(GET_PLAYER_PED(GET_PLAYER_INDEX()))
RETURN TRUE // bail out
ENDIF
IF IS_PLAYER_PLAYING(PLAYER_ID())
IF IS_SPECIAL_ABILITY_ACTIVE(PLAYER_ID())
CPRINTLN(DEBUG_MISSION_STATS, "RENDER_ENDSCREEN_TITLE_UPDATE: Clearing player special ability as end screen is displaying.")
SPECIAL_ABILITY_DEACTIVATE(PLAYER_ID())
ENDIF
ENDIF
DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_SPRINT)
DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_SPECIAL_ABILITY)
DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_SPECIAL_ABILITY_SECONDARY)
DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_SPECIAL_ABILITY_PC)
ENDIF
IF NOT esd.bNoLoadingScreenEnabled
IF IS_SCREEN_FADED_OUT()
OR IS_SCREEN_FADING_OUT()
SET_NO_LOADING_SCREEN(TRUE)
esd.bNoLoadingScreenEnabled = TRUE
ENDIF
ENDIF
//DRAW_GENERIC_TIMER
//DRAW_TIMER_HUD
DISABLE_CONTROL_ACTION(FRONTEND_CONTROL, INPUT_CHARACTER_WHEEL)
DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_SELECT_WEAPON)
HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_VEHICLE_NAME)
HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_AREA_NAME)
HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_WEAPON_WHEEL)
//Stop the comms controller queue timers from ticking while the end screen is drawing.
g_bPauseCommsQueuesThisFrame = TRUE
IF NOT esd.bDoneFlash
SWITCH GET_PLAYER_PED_ENUM(GET_PLAYER_PED(GET_PLAYER_INDEX()))
CASE CHAR_FRANKLIN
ANIMPOSTFX_PLAY("SuccessFranklin",1000,FALSE)
BREAK
CASE CHAR_TREVOR
ANIMPOSTFX_PLAY("SuccessTrevor",1000,FALSE)
BREAK
DEFAULT//CASE CHAR_MICHAEL or MP
ANIMPOSTFX_PLAY("SuccessMichael",1000,FALSE)
BREAK
ENDSWITCH
esd.bDoneFlash = TRUE
ENDIF
IF esd.iEndScreenDisplayFinish = 0
esd.iEndScreenDisplayFinish = esd.IGameTimerReplacement + FLOOR(15000*skipperMultiplier)
PRINTLN("RENDER_ENDSCREEN: first call on dataset, setting timer")
ENDIF
IF esd.fBlendInTargetYSum = 0.0 //recalcuate the height
esd.fBlendInTargetYSum += PIXEL_Y(ESC_LINE_Y_ADVANCE_HEADER) // Title box should = 33pxls
esd.fBlendInTargetYSum += esd.iElements* PIXEL_Y(ESC_LINE_Y_ADVANCE)
IF esd.iElements > 0
esd.fBlendInTargetYSum += PIXEL_Y(ESC_LINE_Y_ADVANCE*0.5)
ENDIF
IF esd.bShowCompletion
esd.fBlendInTargetYSum += PIXEL_Y(ESC_LINE_Y_ADVANCE_HEADER) - PIXEL_Y(ESC_LINE_Y_GAP)//completion
ENDIF
ENDIF
BOOL rendering = TRUE
WHILE rendering
//Set the 'end screen on' global boolean to true
SET_RESULT_SCREEN_DISPLAYING_STATE(TRUE)
//render the data
esd.IGameTimerReplacement += round(0 +@ 1000)
RAW_ENDSCREEN_DRAW_TITLE_UPDATE(esd,skipperMultiplier)
IF esd.IGameTimerReplacement > esd.iEndScreenDisplayFinish + 666 - 15000*skipperMultiplier //text move up time
IF esd.fTitleUpMult < 1.0
esd.fTitleUpMult += 0.0 +@ (1.0/0.15)
IF esd.fTitleUpMult < 0.0
esd.fTitleUpMult = 0.0
ENDIF
ENDIF
ENDIF
IF esd.fTitleUpMult > 1.0
esd.fTitleUpMult = 1.0
ENDIF
IF esd.IGameTimerReplacement > esd.iEndScreenDisplayFinish - 333
IF NOT esd.bHoldOnEnd
esd.fFadeOutMult -= 0.0 +@ (1.0/0.810)
IF esd.fFadeOutMult <= 0.0
esd.fFadeOutMult = 0.0
ENDIF
endif
ENDIF
IF esd.fFadeOutMult > 1.0
esd.fFadeOutMult = 1.0
ENDIF
IF esd.fFadeOutMult <= 0.20
and not esd.bTransitionOutCalled
AND (esd.splash != NULL)
BEGIN_SCALEFORM_MOVIE_METHOD(esd.splash, "TRANSITION_OUT")
END_SCALEFORM_MOVIE_METHOD()
esd.iFadeOutSplashTimer = esd.IGameTimerReplacement
esd.bTransitionOutCalled = true
endif
IF esd.IGameTimerReplacement > esd.iEndScreenDisplayFinish - 333
IF NOT esd.bHoldOnEnd
IF esd.fScrollOutMult < 1.0
esd.fScrollOutMult += 0.0 +@ (1.0/0.140)
IF esd.fScrollOutMult < 0.0
esd.fScrollOutMult = 0.0
ENDIF
ENDIF
ENDIF
ENDIF
IF esd.fScrollOutMult > 1.0
esd.fScrollOutMult = 1.0
ENDIF
//update the blend
IF esd.IGameTimerReplacement > esd.iEndScreenDisplayFinish + 1165 - 15000*skipperMultiplier // grace period
IF esd.fBlendInProgress < 1.0
esd.fBlendInProgress += 0.0 +@ (1.0/0.140)
IF esd.fBlendInProgress < 0.0
esd.fBlendInProgress = 0.0
ENDIF
ENDIF
ENDIF
IF esd.fBlendInProgress > 1.0
esd.fBlendInProgress = 1.0
ENDIF
//check to see if done
IF esd.IGameTimerReplacement > esd.iEndScreenDisplayFinish
IF esd.bHoldOnEnd
//display x to continue button if need be
//wait for button press
//if so then rendering = false
IF NOT esd.bVoteModeEnabled
IF IS_CONTROL_JUST_PRESSED(FRONTEND_CONTROL,INPUT_SKIP_CUTSCENE)
// Has to change from INPUT_FRONTEND_ACCEPT because the player has control at this time, and could remap a player control button to this (B*1901789)
// rendering = FALSE
esd.bHoldOnEnd = FALSE
ENDIF
ENDIF
ELSE
IF esd.IGameTimerReplacement - esd.iFadeOutSplashTimer > 1000
and esd.bTransitionOutCalled
rendering = FALSE
endif
ENDIF
endif
IF bBlockUntilDone
WAIT(0)
ELSE
//Set the 'end screen on' global boolean to false
IF !rendering
SET_RESULT_SCREEN_DISPLAYING_STATE(FALSE)
ENDIF
RETURN !rendering
ENDIF
ENDWHILE
PRINTLN("RENDER_ENDSCREEN: process complete")
//made it out! the screen process is complete.
//Set the 'end screen on' global boolean to false
SET_RESULT_SCREEN_DISPLAYING_STATE(FALSE)
RETURN TRUE
ENDFUNC
//Population calls
PROC SET_ENDSCREEN_DATASET_HEADER_TITLE_UPDATE(END_SCREEN_DATASET_TITLE_UPDATE &esd,
STRING splash,
STRING title,
BOOL bTitleIsUserName = FALSE)
//
esd.passed_splash_message = splash
esd.title = title
esd.titleIsUserName = bTitleIsUserName
esd.eSplashType = ESST_REGULAR
ENDPROC
PROC SET_ENDSCREEN_DATASET_SPLASH_WITH_SUBINTS_TITLE_UPDATE(END_SCREEN_DATASET_TITLE_UPDATE &esd,
STRING splash,
INT ValueA,
INT ValueB = 0,
BOOL UseBoth = FALSE)
//
esd.passed_splash_message = splash
esd.iSplashSubA = ValueA
esd.iSplashSubB = ValueB
IF UseBoth
esd.eSplashType = ESST_TWO_SUB
ELSE
esd.eSplashType = ESST_ONE_SUB
ENDIF
ENDPROC
PROC SET_ENDSCREEN_DATASET_HEADER_SINGLE_SUB_LITERAL_STRING_TITLE_UPDATE(END_SCREEN_DATASET_TITLE_UPDATE &esd,STRING str)
//
esd.iTitleSubelements = 1
esd.titleSubElementType[0] = ESTSET_LITERAL_STRING
esd.titleSubstrings[0] = str
ENDPROC
PROC SET_ENDSCREEN_DATASET_HEADER_SINGLE_SUB_INT_TITLE_UPDATE(END_SCREEN_DATASET_TITLE_UPDATE &esd,
INT value)
//
esd.iTitleSubelements = 1
esd.titleSubElementType[0] = ESTSET_INT
esd.iTitleSubInts[0] = value
ENDPROC
PROC SET_ENDSCREEN_DATASET_HEADER_SUB_INT_STRING_INT_TITLE_UPDATE(END_SCREEN_DATASET_TITLE_UPDATE &esd,
INT valueA,STRING str,INT valueB)
//
esd.iTitleSubelements = 3
esd.titleSubElementType[0] = ESTSET_INT
esd.titleSubElementType[1] = ESTSET_STRING
esd.titleSubElementType[2] = ESTSET_INT
esd.iTitleSubInts[0] = valueA
esd.iTitleSubInts[1] = valueB
esd.titleSubstrings[0] = str
ENDPROC
PROC SET_ENDSCREEN_DATASET_HEADER_SUB_INT_STRING_TITLE_UPDATE(END_SCREEN_DATASET_TITLE_UPDATE &esd,
INT value,STRING str)
//
esd.iTitleSubelements = 2
esd.titleSubElementType[0] = ESTSET_INT
esd.titleSubElementType[1] = ESTSET_STRING
esd.iTitleSubInts[0] = value
esd.titleSubstrings[0] = str
ENDPROC
PROC ADD_ENDSCREEN_DATASET_CONTENT_ELEMENT_TITLE_UPDATE(END_SCREEN_DATASET_TITLE_UPDATE &esd,
END_SCREEN_ELEMENT_FORMATTING type,
STRING name,
STRING text,
INT valueA,
INT valueB,
END_SCREEN_CHECK_MARK_STATUS checkState,
BOOL bNameIsPlayerName = FALSE)
//
IF esd.iElements = END_SCREEN_MAX_ELEMENTS
EXIT
ENDIF
INT i = esd.iElements
esd.ElementFormat[i] = type
esd.ElementName[i] = name
esd.ElementText[i] = text
esd.ElementValA[i] = valueA
esd.ElementValB[i] = valueB
esd.ElementCheck[i] = checkState
//esd.ElementInvalidation[i] = bInvalidated
//PRINTLN("ADD_ENDSCREEN_DATASET_CONTENT_ELEMENT: <eleminvalidation> invalidation for ", i, " is ", bInvalidated)
esd.ElementIsPlayerName[i] = bNameIsPlayerName
esd.ElementRankLookup[i] = NULL
++esd.iElements
ENDPROC
PROC SET_LAST_ENDSCREEN_ELEMENT_PLAYER_TITLE_UPDATE(END_SCREEN_DATASET_TITLE_UPDATE &esd, PLAYER_INDEX pi)
IF esd.iElements = 0
EXIT
ENDIF
esd.ElementRankLookup[esd.iElements - 1] = pi
ENDPROC
PROC SET_ENDSCREEN_COMPLETION_LINE_STATE_TITLE_UPDATE(END_SCREEN_DATASET_TITLE_UPDATE &esd,
BOOL bShow,
STRING resultString,
INT valueA,
INT valueB,
END_SCREEN_COMPLETION_TYPE type = ESC_PERCENTAGE_COMPLETION,
END_SCREEN_MEDAL_STATUS medal = ESMS_NO_MEDAL)
//
esd.bShowCompletion = bShow
esd.CompletionResultString = resultString
esd.iCompletionValueA = valueA
esd.iCompletionValueB = valueB
esd.CompletionType = type
esd.CompletionMedalState = medal
ENDPROC
/// PURPOSE:
/// Prep the scaleform part of the end screen, call this after you have finished calling populate
/// functions on it.
/// If not set to block returns if it has completely prepped the scaleform
/// RETURNS:
///
FUNC BOOL ENDSCREEN_PREPARE_TITLE_UPDATE(END_SCREEN_DATASET_TITLE_UPDATE &esd, BOOL bBlockUntilLoaded = TRUE, BOOL bCenterMessageMode = FALSE)
//esd.bShowCompletion = FALSE
// ENDSCREEN_CONFIGURE_VOTE_PANEL(esd,30)
esd.bCenterMessageMode = bCenterMessageMode
INIT_ENDSCREEN_VALUES_TITLE_UPDATE(esd) // prep values
END_SCREEN_WORK_OUT_WIDTHS_TITLE_UPDATE(esd)
IF esd.splash = NULL
//do the request
REQUEST_STREAMED_TEXTURE_DICT("CommonMenu")
REQUEST_STREAMED_TEXTURE_DICT("MPLeaderboard")
//IF bCenterMessageMode
//esd.splash = REQUEST_SCALEFORM_MOVIE("MP_BIG_MESSAGE_CENTERED")
//ELSE
esd.splash = REQUEST_SCALEFORM_MOVIE("MP_BIG_MESSAGE_FREEMODE")
//ENDIF
esd.bStartedFailformAnim = FALSE
ENDIF
// Speirs added to fix PT 1575220
// IF esd.bShowSkipperPrompt AND esd.button = NULL
// IF esd.bShowSkipperPrompt AND esd.button = NULL
esd.button = REQUEST_SCALEFORM_MOVIE_INSTANCE("INSTRUCTIONAL_BUTTONS")
PRINTLN("<ENDSCREEN_PREPARE> Requested instructional button scaleform. ID: ", NATIVE_TO_INT(esd.button), ".")
// ENDIF
IF bBlockUntilLoaded
WHILE (NOT HAS_SCALEFORM_MOVIE_LOADED(esd.splash))
OR (NOT HAS_STREAMED_TEXTURE_DICT_LOADED("CommonMenu"))
OR (NOT HAS_STREAMED_TEXTURE_DICT_LOADED("MPLeaderboard"))
PRINTLN("<ENDSCREEN_PREPARE> Waiting for scaleform movie and textures to load.")
WAIT(0)
ENDWHILE
IF esd.bShowSkipperPrompt OR esd.bVoteModeEnabled
WHILE NOT HAS_SCALEFORM_MOVIE_LOADED(esd.button)
PRINTLN("<ENDSCREEN_PREPARE> Waiting for button movie.")
WAIT(0)
ENDWHILE
ENDIF
ELSE
IF (NOT HAS_SCALEFORM_MOVIE_LOADED(esd.splash))
OR (NOT HAS_STREAMED_TEXTURE_DICT_LOADED("CommonMenu"))
OR (NOT HAS_STREAMED_TEXTURE_DICT_LOADED("MPLeaderboard"))
PRINTLN("ENDSCREEN_PREPARE: Movie or textures not loaded in none blocking mode, returning false")
RETURN FALSE
ENDIF
IF esd.bShowSkipperPrompt
IF NOT HAS_SCALEFORM_MOVIE_LOADED(esd.button)
PRINTLN("<ENDSCREEN_PREPARE> Waiting for button movie.")
RETURN FALSE
ENDIF
ENDIF
ENDIF
IF esd.bCenterMessageMode
BEGIN_SCALEFORM_MOVIE_METHOD(esd.splash, "SHOW_CENTERED_MP_MESSAGE")
ELSE
BEGIN_SCALEFORM_MOVIE_METHOD(esd.splash, "SHOW_MISSION_PASSED_MESSAGE")
ENDIF
IF esd.eSplashType = ESST_REGULAR
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING(esd.passed_splash_message)
ELSE
BEGIN_TEXT_COMMAND_SCALEFORM_STRING(esd.passed_splash_message)
ADD_TEXT_COMPONENT_INTEGER(esd.iSplashSubA)
IF esd.eSplashType = ESST_TWO_SUB
ADD_TEXT_COMPONENT_INTEGER(esd.iSplashSubB)
ENDIF
END_TEXT_COMMAND_SCALEFORM_STRING()
ENDIF
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("")//esd.title) //this will need to be hidden
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(100)//alpha
SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(TRUE)//anim
END_SCALEFORM_MOVIE_METHOD_RETURN_VALUE()
IF esd.bShowSkipperPrompt
BEGIN_SCALEFORM_MOVIE_METHOD(esd.button, "CLEAR_ALL")
END_SCALEFORM_MOVIE_METHOD()
#IF NOT USE_TU_CHANGES
//Removing this fixes #1813267.
BEGIN_SCALEFORM_MOVIE_METHOD(esd.button, "SET_CLEAR_SPACE")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(0)
END_SCALEFORM_MOVIE_METHOD()
#ENDIF
IF esd.bVoteModeEnabled
//up
BEGIN_SCALEFORM_MOVIE_METHOD(esd.button, "SET_DATA_SLOT")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(3)
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INSTRUCTIONAL_BUTTONS(GET_CONTROL_INSTRUCTIONAL_BUTTONS_STRING(FRONTEND_CONTROL, INPUT_FRONTEND_UP))
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("ES_HELP_TU")
END_SCALEFORM_MOVIE_METHOD()
//down
BEGIN_SCALEFORM_MOVIE_METHOD(esd.button, "SET_DATA_SLOT")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(2)
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INSTRUCTIONAL_BUTTONS(GET_CONTROL_INSTRUCTIONAL_BUTTONS_STRING(FRONTEND_CONTROL, INPUT_FRONTEND_DOWN))
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("ES_HELP_TD")
END_SCALEFORM_MOVIE_METHOD()
//cancel
BEGIN_SCALEFORM_MOVIE_METHOD(esd.button, "SET_DATA_SLOT")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(1)
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INSTRUCTIONAL_BUTTONS(GET_CONTROL_INSTRUCTIONAL_BUTTONS_STRING(FRONTEND_CONTROL, INPUT_FRONTEND_CANCEL))
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("ES_HELP_AB")
END_SCALEFORM_MOVIE_METHOD()
BEGIN_SCALEFORM_MOVIE_METHOD(esd.button, "SET_DATA_SLOT")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(0)
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT((ENUM_TO_INT(ICON_SPINNER)))
BEGIN_TEXT_COMMAND_SCALEFORM_STRING("STRING")
ADD_TEXT_COMPONENT_SUBSTRING_TIME(esd.iVoteTimer, TIME_FORMAT_MINUTES | TIME_FORMAT_SECONDS )
END_TEXT_COMMAND_SCALEFORM_STRING()
END_SCALEFORM_MOVIE_METHOD()
ELSE
BEGIN_SCALEFORM_MOVIE_METHOD(esd.button, "SET_DATA_SLOT")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(0)
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INSTRUCTIONAL_BUTTONS(GET_CONTROL_INSTRUCTIONAL_BUTTONS_STRING(FRONTEND_CONTROL, INPUT_SKIP_CUTSCENE))
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("ES_HELP")
END_SCALEFORM_MOVIE_METHOD()
ENDIF
BEGIN_SCALEFORM_MOVIE_METHOD(esd.button, "DRAW_INSTRUCTIONAL_BUTTONS")
END_SCALEFORM_MOVIE_METHOD()
ENDIF
g_bResultScreenPrepared = TRUE
PRINTLN("ENDSCREEN_PREPARE: Complete")
RETURN TRUE
ENDFUNC
/// PURPOSE:
/// call to release your end screen scaleform elements
/// PARAMS:
/// esd -
PROC ENDSCREEN_SHUTDOWN_TITLE_UPDATE(END_SCREEN_DATASET_TITLE_UPDATE &esd)
PRINTLN("ENDSCREEN_SHUTDOWN: Marking dataset scaleform as no longer needed")
IF esd.splash != NULL
SET_SCALEFORM_MOVIE_AS_NO_LONGER_NEEDED(esd.splash)
esd.splash = NULL
ENDIF
IF esd.bShowSkipperPrompt
//2285274 - Other scripts may keep this scaleform in memory for other uses.
//By default turn off mouse input in case they don't need it.
IF IS_PC_VERSION()
BEGIN_SCALEFORM_MOVIE_METHOD(esd.button, "TOGGLE_MOUSE_BUTTONS")
SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(FALSE)
END_SCALEFORM_MOVIE_METHOD()
ENDIF
PRINTLN("ENDSCREEN_SHUTDOWN: Set instructional button scaleform as no longer needed.")
SET_SCALEFORM_MOVIE_AS_NO_LONGER_NEEDED(esd.button)
esd.button = NULL
ENDIF
IF esd.bNoLoadingScreenEnabled
SET_NO_LOADING_SCREEN(FALSE)
esd.bNoLoadingScreenEnabled = FALSE
ENDIF
//1321416
IF NOT g_bEndScreenSuppressFadeIn
IF NOT IS_PLAYER_DEAD(GET_PLAYER_INDEX())//1454085
IF NOT g_flowUnsaved.bUpdatingGameflow
IF IS_SCREEN_FADED_OUT() AND (NOT IS_REPEAT_PLAY_ACTIVE())//1416830
DO_SCREEN_FADE_IN(DEFAULT_FADE_TIME)
ENDIF
ENDIF
ENDIF
ENDIF
//1925793: Mark stat screen as not displaying, just to be safe
SET_RESULT_SCREEN_DISPLAYING_STATE(FALSE)
ENDPROC