Files
2025-09-29 00:52:08 +02:00

11749 lines
565 KiB
XML
Executable File

//USING "leader_board_common.sch"
USING "commands_stats.sch"
USING "net_common_functions.sch"
USING "socialclub_leaderboard_hud.sch"
USING "net_leaderboards.sch"
USING "commands_socialclub.sch"
USING "net_stat_system.sch"
USING "PS_MP_LESSON_ENUM.sch"
// Navigation
CONST_INT SC_LB_PRESSED_UP 0
CONST_INT SC_LB_PRESSED_DOWN 1
CONST_INT SC_LB_PRESSED_SELECT 2
CONST_INT SC_LB_PRESSED_Y 3
CONST_INT SC_LB_PRESSED_ACCEPT 4
//General read stats
CONST_INT SC_LB_START_READ 0
CONST_INT SC_LB_READ_PENDING 1
CONST_INT SC_LB_READING 2
CONST_INT SC_LB_READ_FINISED 3
//Used by freemode for XP board.
CONST_INT FREEMODE_DATA_LB_STAT_TYPE_XP 0
CONST_INT FREEMODE_DATA_LB_STAT_TYPE_TIME 1
CONST_INT FREEMODE_DATA_LB_MAX_STAT_TYPES 2
CONST_INT MAX_STORED_CREWS 5
CONST_INT FREEMODE_DATA_LB_MAINTAIN_STAGE_INIT 0
CONST_INT FREEMODE_DATA_LB_MAINTAIN_STAGE_UPDATE_WRITE 1
CONST_INT FREEMODE_DATA_LB_MAINTAIN_STAGE_CHECKS 2
CONST_INT FREEMODE_DATA_LB_MAINTAIN_STAGE_WRITE 3
CONST_INT FREEMODE_DATA_LB_BS_UPDATE_STAT 0
CONST_INT FREEMODE_DATA_LB_COLUMN_XP 0
CONST_INT FREEMODE_DATA_LB_COLUMN_TIME 1
CONST_INT FREEMODE_DATA_LB_COLUMN_SESSIONS 2
CONST_INT RACE_LEADERBOARD_NO_DATA_RESULT -2
STRUCT RACE_CHECKPOINTS_LOAD_STRUCT
INT iCheckPointType
INT m_ClanId
INT iFriendLoopCounter
BOOL bInitComplete
INT iBestLapTime
ENDSTRUCT
#IF IS_DEBUG_BUILD
PROC DEBUG_PRINT_LEADERBOARD_READ_DATA_STRUCT(STRING ProcName,Leaderboard2ReadData& lbReadData)
INT i
println("PRINT_LEADERBOARD_READ_DATA_STRUCT started in ",": ", ProcName)
println("leaderboard ID = ",lbReadData.m_LeaderboardID)
println("leaderboard TYPE = ",ENUM_TO_INT(lbReadData.m_type))
println("leaderboard CLAN ID = ",lbReadData.m_ClanID)
println("leaderboard NUM GROUPS = ", lbReadData.m_GroupSelector.m_NumGroups)
REPEAT lbReadData.m_GroupSelector.m_NumGroups i
println("leaderboard CATEGORY ",i," = ",lbReadData.m_GroupSelector.m_Group[i].m_Category)
println("leaderboard NAME ID ",i," = ",lbReadData.m_GroupSelector.m_Group[i].m_Id)
ENDREPEAT
ENDPROC
PROC DEBUG_PRINT_LEADERBOARD_GROUP_HANDLE_STRUCT(STRING ProcName,Leaderboard2GroupHandle& lbGroup[])
INT i
println("PRINT_LEADERBOARD_GROUP_HANDLE_STRUCT started in ",": ", ProcName)
println("leaderboard NUM GROUPS = ", lbGroup[0].m_NumGroups)
REPEAT lbGroup[0].m_NumGroups i
println("leaderboard CATEGORY ",i," = ",lbGroup[0].m_Group[i].m_Category)
println("leaderboard NAME ID ",i," = ",lbGroup[0].m_Group[i].m_Id)
ENDREPEAT
ENDPROC
PROC DEBUG_PRINT_WAITING_FOR_READ_TO_FINISH(Leaderboard2ReadData& lbReadData)
println("--CURRENT READ DETAILS--")
println("leaderboard ID = ",lbReadData.m_LeaderboardID)
println("eaderboard TYPE = ",ENUM_TO_INT(lbReadData.m_type))
println("--OUTSTANDING READ DETAILS--")
println("leaderboard ID = ",ongoingSCLB_readInfo.m_LeaderboardID)
println("leaderboard TYPE = ",ENUM_TO_INT(ongoingSCLB_readInfo.m_type))
ENDPROC
PROC DEBUG_PRINT_LB_READ_PROGRESS(STRING ProcName,INT iLoadStage)
println(ProcName," moving to load stage ", iLoadStage)
ENDPROC
PROC DEBUG_PRINT_READ_RESULT_STATUS(STRING ProcName,Leaderboard2ReadData& lbReadData, BOOL bSuccessful)
INt i
IF bSuccessful
println(ProcName, " READ SUCCESSFUL")
ENDIF
println("leaderboard ID = ",lbReadData.m_LeaderboardID)
println("leaderboard TYPE = ",ENUM_TO_INT(lbReadData.m_type))
println("leaderboard NUM GROUPS = ", lbReadData.m_GroupSelector.m_NumGroups)
REPEAT lbReadData.m_GroupSelector.m_NumGroups i
println("leaderboard CATEGORY ",i," = ",lbReadData.m_GroupSelector.m_Group[i].m_Category)
println("leaderboard NAME ID ",i," = ",lbReadData.m_GroupSelector.m_Group[i].m_Id)
ENDREPEAT
ENDPROC
PROC DEBUG_START_LEADERBOARD_PRINT_RESULTS(STRING ProcName,Leaderboard2ReadData& lbReadData)
INT i
println(ProcName, " leaderboard ID = ",lbReadData.m_LeaderboardID)
println("leaderboard TYPE = ",ENUM_TO_INT(lbReadData.m_type))
println("leaderboard NUM GROUPS = ", lbReadData.m_GroupSelector.m_NumGroups)
REPEAT lbReadData.m_GroupSelector.m_NumGroups i
println("leaderboard CATEGORY ",i," = ",lbReadData.m_GroupSelector.m_Group[i].m_Category)
println("leaderboard NAME ID ",i," = ",lbReadData.m_GroupSelector.m_Group[i].m_Id)
ENDREPEAT
ENDPROC
PROC DEBUG_PRINT_SC_LB_RETURNED_VALUES(STRING ProcName,STRING Section, INT iRow, INT iColumn, INT iValue, FLOAT fValue, BOOL bFloat, BOOL bForcePrint = FALSE)
IF g_bOutputSCLeaderboardData
OR bForcePrint
IF bFloat
println(ProcName, ": ",Section,": Row # ",iRow ,": Column # ",iColumn," - fValue ", fValue)
ELSE
println(ProcName, ": ",Section,": Row # ",iRow , ": Column # ",iColumn," - iValue ", iValue)
ENDIF
ENDIF
ENDPROC
PROC DEBUG_PRINT_READ_INFO(STRING ProcName,LeaderboardReadInfo readInfo)
println(ProcName, ": READ INFO- m_LeaderboardId : ", readINfo.m_LeaderboardId)
println(ProcName, ": READ INFO- m_leaderboardType : ", readINfo.m_leaderboardType)
println(ProcName, ": READ INFO- m_LeaderboardIndex : ", readINfo.m_LeaderboardIndex)
println(ProcName, ": READ INFO- m_ReturnedRows : ", readINfo.m_ReturnedRows)
println(ProcName, ": READ INFO- m_TotalRows: ", readINfo.m_TotalRows)
println(ProcName, ": READ INFO- m_LocalGamerRowNumber : ", readINfo.m_LocalGamerRowNumber)
ENDPROC
#ENDIF
PROC START_LEADERBOARD_READ(Leaderboard2ReadData lbReadData)
#IF IS_DEBUG_BUILD
DEBUG_PRINTCALLSTACK()
#ENDIF
println("--START_LEADERBOARD_READ-- leaderboard ID = ",lbReadData.m_LeaderboardID)
println("leaderboard TYPE = ",ENUM_TO_INT(lbReadData.m_type))
ongoingSCLB_readInfo.bProcessingLBRead = TRUE
REINIT_NET_TIMER(ongoingSCLB_readInfo.failSafeTimer,TRUE)
ongoingSCLB_readInfo.m_LeaderboardID = lbReadData.m_LeaderboardID
ongoingSCLB_readInfo.m_type = lbReadData.m_type
ENDPROC
PROC END_LEADERBOARD_READ(INT& iLoadStage,BOOL& readResult,Leaderboard2ReadData& lbReadData)
println("--END_LEADERBOARD_READ-- leaderboard ID = ",lbReadData.m_LeaderboardID)
println("leaderboard TYPE = ",ENUM_TO_INT(lbReadData.m_type))
iLoadStage = 0
readResult = FALSE
ongoingSCLB_readInfo.bProcessingLBRead = FALSE
RESET_NET_TIMER(ongoingSCLB_readInfo.failSafeTimer)
LEADERBOARDS_READ_CLEAR(lbReadData.m_LeaderboardId,lbReadData.m_Type)
ENDPROC
PROC CHECK_LEADERBOARD_READ_SHOULD_HAVE_TERMINATED()
IF HAS_NET_TIMER_EXPIRED(ongoingSCLB_readInfo.failSafeTimer,LEADERBOARD_READ_FAILSAFE_TIMER,TRUE)
println("--TERMINATING_LEADERBOARD_READ (TIMEOUT)-- leaderboard ID = ",ongoingSCLB_readInfo.m_LeaderboardID)
println("leaderboard TYPE = ",ENUM_TO_INT(ongoingSCLB_readInfo.m_type))
LEADERBOARDS_READ_CLEAR(ongoingSCLB_readInfo.m_LeaderboardId,ongoingSCLB_readInfo.m_Type)
ongoingSCLB_readInfo.bProcessingLBRead = FALSE
RESET_NET_TIMER(ongoingSCLB_readInfo.failSafeTimer)
ENDIF
ENDPROC
FUNC BOOL SHOULD_ALL_SCRIPT_LEADERBOARD_READS_TERMINATE()
IF IS_PAUSE_MENU_ACTIVE()
AND NOT IS_PLAYER_ACTIVE_IN_CORONA()
RETURN TRUE
ENDIF
RETURN FALSE
ENDFUNC
FUNC BOOL IS_ANY_LEADERBOARD_READ_BEING_PROCESSED()
IF LEADERBOARDS_READ_ANY_PENDING()
OR ongoingSCLB_readInfo.bProcessingLBRead
CHECK_LEADERBOARD_READ_SHOULD_HAVE_TERMINATED()
RETURN TRUE
ENDIF
RETURN FALSE
ENDFUNC
FUNC BOOL SCLB_CHECK_HANDLES_ARE_THE_SAME(GAMER_HANDLE &gamerHandle1, GAMER_HANDLE &gamerHandle2)
IF NOT IS_GAMER_HANDLE_VALID(gamerHandle1)
RETURN FALSE
ENDIF
IF NOT IS_GAMER_HANDLE_VALID(gamerHandle2)
RETURN FALSE
ENDIF
IF NETWORK_ARE_HANDLES_THE_SAME(gamerHandle1, gamerHandle2)
RETURN TRUE
ENDIF
RETURN FALSE
ENDFUNC
FUNC BOOL START_SC_LEADERBOARD_READ_SESSION_PLAYERS_BY_ROW(INT& iLoadStage,BOOL &bSuccessful,Leaderboard2ReadData& lbReadData, Leaderboard2GroupHandle& lbGroups, INT numGroups)
#IF IS_DEBUG_BUILD
STRING procName = "START_SC_LEADERBOARD_READ_SESSION_PLAYERS_BY_ROW"
#ENDIF
SWITCH iLoadStage
CASE 0
IF NOT IS_ANY_LEADERBOARD_READ_BEING_PROCESSED()
AND NOT SHOULD_ALL_SCRIPT_LEADERBOARD_READS_TERMINATE()
//LEADERBOARDS_READ_EXISTS(lbReadData.m_LeaderboardId, lbReadData.m_Type)
#IF IS_DEBUG_BUILD
DEBUG_PRINT_LEADERBOARD_READ_DATA_STRUCT(procName,lbReadData)
DEBUG_PRINT_LEADERBOARD_GROUP_HANDLE_STRUCT(procName,lbGroups)
#ENDIF
START_LEADERBOARD_READ(lbReadData)
IF LEADERBOARDS2_READ_SESSION_PLAYERS_BY_ROW(lbReadData, lbGroups,numGroups)
iLoadStage++
#IF IS_DEBUG_BUILD
DEBUG_PRINT_LB_READ_PROGRESS(procName, 1)
#ENDIF
ELSE
#IF IS_DEBUG_BUILD
println("LEADERBOARDS2_READ_SESSION_PLAYERS_BY_ROW!! start See Conor")
println(procname, ": ID :", lbReadData.m_LeaderboardId, ": Type: ",lbReadData.m_Type)
//SCRIPT_ASSERT("LEADERBOARDS2_READ_SESSION_PLAYERS_BY_ROW FAILED!! See Conor")
DEBUG_PRINT_READ_RESULT_STATUS(procName,lbReadData,FALSE)
DEBUG_PRINT_LB_READ_PROGRESS(procName,3)
#ENDIF
bSuccessful = FALSE
iLoadStage = 3
ENDIF
#IF IS_DEBUG_BUILD
ELSE
IF g_DBb_OutputLeaderboardReadErrors
DEBUG_PRINT_WAITING_FOR_READ_TO_FINISH(procName,lbReadData)
ENDIF
#ENDIF
ENDIF
BREAK
CASE 1
IF NOT LEADERBOARDS_READ_PENDING(lbReadData.m_LeaderboardId, lbReadData.m_Type)
iLoadStage++
#IF IS_DEBUG_BUILD
DEBUG_PRINT_LB_READ_PROGRESS(procName,3)
#ENDIF
ENDIF
BREAK
CASE 2
IF LEADERBOARDS_READ_SUCCESSFUL(lbReadData.m_LeaderboardId, lbReadData.m_Type)
#IF IS_DEBUG_BUILD
DEBUG_PRINT_READ_RESULT_STATUS(procName,lbReadData,TRUE)
DEBUG_PRINT_LB_READ_PROGRESS(procName,3)
#ENDIF
bSuccessful = TRUE
iLoadStage++
ELSE
#IF IS_DEBUG_BUILD
println("LEADERBOARD READ FAILED!! See Conor")
println(procname, ": ID :", lbReadData.m_LeaderboardId, ": Type: ",lbReadData.m_Type)
//SCRIPT_ASSERT("LEADERBOARD READ FAILED!! See Conor")
DEBUG_PRINT_READ_RESULT_STATUS(procName,lbReadData,FALSE)
DEBUG_PRINT_LB_READ_PROGRESS(procName,3)
#ENDIF
bSuccessful = FALSE
iLoadStage++
ENDIF
BREAK
CASE 3
RETURN TRUE
BREAK
ENDSWITCH
RETURN FALSE
ENDFUNC
FUNC BOOL START_SC_LEADERBOARD_READ_FRIENDS_BY_ROW(INT& iLoadStage,BOOL &bSuccessful,Leaderboard2ReadData& lbReadData, Leaderboard2GroupHandle& lbGroups[], INT numGroups, BOOL includeLocalPlayer,INT iStartIndex, INT iNumFriendsRead)
#IF IS_DEBUG_BUILD
STRING procName = "START_SC_LEADERBOARD_READ_FRIENDS_BY_ROW"
#ENDIF
SWITCH iLoadStage
CASE 0
IF NOT IS_ANY_LEADERBOARD_READ_BEING_PROCESSED()//LEADERBOARDS_READ_EXISTS(lbReadData.m_LeaderboardId, lbReadData.m_Type)
AND NOT SHOULD_ALL_SCRIPT_LEADERBOARD_READS_TERMINATE()
#IF IS_DEBUG_BUILD
DEBUG_PRINT_LEADERBOARD_READ_DATA_STRUCT(procName,lbReadData)
DEBUG_PRINT_LEADERBOARD_GROUP_HANDLE_STRUCT(procName,lbGroups)
#ENDIF
START_LEADERBOARD_READ(lbReadData)
println("LEADERBOARDS2_READ_FRIENDS_BY_ROW is being called with start index: ",iStartIndex, " includeLocalPlayer: ", includeLocalPlayer)
IF LEADERBOARDS2_READ_FRIENDS_BY_ROW(lbReadData, lbGroups,numGroups,includeLocalPlayer,iStartIndex,iNumFriendsRead)
iLoadStage++
#IF IS_DEBUG_BUILD
DEBUG_PRINT_LB_READ_PROGRESS(procName, 1)
#ENDIF
ELSE
#IF IS_DEBUG_BUILD
//println()
println("LEADERBOARDS2_READ_FRIENDS_BY_ROW FAILED!! start See Conor")
println(procname, ": ID :", lbReadData.m_LeaderboardId, ": Type: ",lbReadData.m_Type)
//println()
//SCRIPT_ASSERT("LEADERBOARDS2_READ_FRIENDS_BY_ROW FAILED!! See Conor")
DEBUG_PRINT_READ_RESULT_STATUS(procName,lbReadData,FALSE)
DEBUG_PRINT_LB_READ_PROGRESS(procName,3)
#ENDIF
bSuccessful = FALSE
iLoadStage=3
ENDIF
#IF IS_DEBUG_BUILD
ELSE
IF g_DBb_OutputLeaderboardReadErrors
DEBUG_PRINT_WAITING_FOR_READ_TO_FINISH(lbReadData)//"START_SC_LEADERBOARD_READ_FRIENDS_BY_ROW",
ENDIF
#ENDIF
ENDIF
BREAK
CASE 1
IF NOT LEADERBOARDS_READ_PENDING(lbReadData.m_LeaderboardId, lbReadData.m_Type)
iLoadStage++
#IF IS_DEBUG_BUILD
DEBUG_PRINT_LB_READ_PROGRESS(procName,2)
#ENDIF
ENDIF
BREAK
CASE 2
IF LEADERBOARDS_READ_SUCCESSFUL(lbReadData.m_LeaderboardId, lbReadData.m_Type)
#IF IS_DEBUG_BUILD
DEBUG_PRINT_READ_RESULT_STATUS(procName,lbReadData,TRUE)
DEBUG_PRINT_LB_READ_PROGRESS(procName,3)
#ENDIF
bSuccessful = TRUE
iLoadStage++
ELSE
#IF IS_DEBUG_BUILD
//println()
println("LEADERBOARD READ FAILED!! See Conor")
println(procname, ": ID :", lbReadData.m_LeaderboardId, ": Type: ",lbReadData.m_Type)
///println()
//SCRIPT_ASSERT("LEADERBOARD READ FAILED!! See Conor")
DEBUG_PRINT_READ_RESULT_STATUS(procName,lbReadData,FALSE)
DEBUG_PRINT_LB_READ_PROGRESS(procName,3)
#ENDIF
bSuccessful = FALSE
iLoadStage++
ENDIF
BREAK
CASE 3
RETURN TRUE
BREAK
ENDSWITCH
RETURN FALSE
ENDFUNC
FUNC BOOL START_SC_LEADERBOARD_READ_BY_ROW(INT& iLoadStage
,BOOL &bSuccessful
,Leaderboard2ReadData& lbReadData
,GAMER_HANDLE& lbGamerHandleData[]
,INT nGamerHandles
,LeaderboardClanIds& pArray_LBClanIds[]
,INT nClanIds
,Leaderboard2GroupHandle& lbGroups[]
,INT numGroups)
#IF IS_DEBUG_BUILD
STRING procName = "START_SC_LEADERBOARD_READ_BY_ROW"
#ENDIF
SWITCH iLoadStage
CASE 0
IF NOT IS_ANY_LEADERBOARD_READ_BEING_PROCESSED() //LEADERBOARDS_READ_EXISTS(lbReadData.m_LeaderboardId, lbReadData.m_Type)
AND NOT SHOULD_ALL_SCRIPT_LEADERBOARD_READS_TERMINATE()
#IF IS_DEBUG_BUILD
DEBUG_PRINT_LEADERBOARD_READ_DATA_STRUCT(procName,lbReadData)
DEBUG_PRINT_LEADERBOARD_GROUP_HANDLE_STRUCT(procName,lbGroups)
#ENDIF
START_LEADERBOARD_READ(lbReadData)
IF LEADERBOARDS2_READ_BY_ROW(lbReadData, lbGamerHandleData, nGamerHandles, pArray_LBClanIds, nClanIds, lbGroups, numGroups)
iLoadStage++
#IF IS_DEBUG_BUILD
DEBUG_PRINT_LB_READ_PROGRESS(procName, 1)
#ENDIF
ELSE
#IF IS_DEBUG_BUILD
//println()
println("LEADERBOARDS2_READ_BY_ROW FAILED!! start See Conor")
println(procname, ": ID :", lbReadData.m_LeaderboardId, ": Type: ",lbReadData.m_Type)
//println()
//SCRIPT_ASSERT("LEADERBOARDS2_READ_BY_ROW FAILED!! See Conor")
DEBUG_PRINT_READ_RESULT_STATUS(procName,lbReadData,FALSE)
DEBUG_PRINT_LB_READ_PROGRESS(procName,3)
#ENDIF
bSuccessful = FALSE
iLoadStage=3
ENDIF
#IF IS_DEBUG_BUILD
ELSE
IF g_DBb_OutputLeaderboardReadErrors
DEBUG_PRINT_WAITING_FOR_READ_TO_FINISH(lbReadData)//"START_SC_LEADERBOARD_READ_BY_ROW",
ENDIF
#ENDIF
ENDIF
BREAK
CASE 1
IF NOT LEADERBOARDS_READ_PENDING(lbReadData.m_LeaderboardId, lbReadData.m_Type)
iLoadStage++
#IF IS_DEBUG_BUILD
DEBUG_PRINT_LB_READ_PROGRESS(procName,3)
#ENDIF
ENDIF
BREAK
CASE 2
IF LEADERBOARDS_READ_SUCCESSFUL(lbReadData.m_LeaderboardId, lbReadData.m_Type)
#IF IS_DEBUG_BUILD
DEBUG_PRINT_READ_RESULT_STATUS(procName,lbReadData,TRUE)
DEBUG_PRINT_LB_READ_PROGRESS(procName,3)
#ENDIF
bSuccessful = TRUE
iLoadStage++
ELSE
#IF IS_DEBUG_BUILD
//println()
println("LEADERBOARD READ FAILED!! See Conor")
println(procname, ": ID :", lbReadData.m_LeaderboardId, ": Type: ",lbReadData.m_Type)
//println()
//SCRIPT_ASSERT("LEADERBOARD READ FAILED!! See Conor")
DEBUG_PRINT_READ_RESULT_STATUS(procName,lbReadData,FALSE)
DEBUG_PRINT_LB_READ_PROGRESS(procName,3)
#ENDIF
bSuccessful = FALSE
iLoadStage++
ENDIF
BREAK
CASE 3
RETURN TRUE
BREAK
ENDSWITCH
RETURN FALSE
ENDFUNC
FUNC BOOL START_SC_LEADERBOARD_READ_BY_HANDLE(INT& iLoadStage,BOOL &bSuccessful, Leaderboard2ReadData& lbReadData, GAMER_HANDLE& handleData)
#IF IS_DEBUG_BUILD
STRING procName = "START_SC_LEADERBOARD_READ_BY_HANDLE"
#ENDIF
SWITCH iLoadStage
CASE 0
IF NOT IS_ANY_LEADERBOARD_READ_BEING_PROCESSED()//LEADERBOARDS_READ_EXISTS(lbReadData.m_LeaderboardId, lbReadData.m_Type)
AND NOT SHOULD_ALL_SCRIPT_LEADERBOARD_READS_TERMINATE()
#IF IS_DEBUG_BUILD
DEBUG_PRINT_LEADERBOARD_READ_DATA_STRUCT(procName,lbReadData)
#ENDIF
START_LEADERBOARD_READ(lbReadData)
IF LEADERBOARDS2_READ_BY_HANDLE(lbReadData, handleData)
iLoadStage++
#IF IS_DEBUG_BUILD
DEBUG_PRINT_LB_READ_PROGRESS(procName, 1)
#ENDIF
ELSE
#IF IS_DEBUG_BUILD
//println()
println("LEADERBOARDS2_READ_BY_HANDLE FAILED!! start See Conor")
println(procname, ": ID :", lbReadData.m_LeaderboardId, ": Type: ",lbReadData.m_Type)
//println()
//SCRIPT_ASSERT("LEADERBOARDS2_READ_BY_HANDLE FAILED!! See Conor")
DEBUG_PRINT_READ_RESULT_STATUS(procName,lbReadData,FALSE)
DEBUG_PRINT_LB_READ_PROGRESS(procName,3)
#ENDIF
bSuccessful = FALSE
iLoadStage=3
ENDIF
#IF IS_DEBUG_BUILD
ELSE
IF g_DBb_OutputLeaderboardReadErrors
DEBUG_PRINT_WAITING_FOR_READ_TO_FINISH(lbReadData)//"START_SC_LEADERBOARD_READ_BY_HANDLE",
ENDIF
#ENDIF
ENDIF
BREAK
CASE 1
IF NOT LEADERBOARDS_READ_PENDING(lbReadData.m_LeaderboardId, lbReadData.m_Type)
iLoadStage++
#IF IS_DEBUG_BUILD
DEBUG_PRINT_LB_READ_PROGRESS(procName,2)
#ENDIF
ENDIF
BREAK
CASE 2
IF LEADERBOARDS_READ_SUCCESSFUL(lbReadData.m_LeaderboardId, lbReadData.m_Type)
#IF IS_DEBUG_BUILD
DEBUG_PRINT_READ_RESULT_STATUS(procName,lbReadData,TRUE)
DEBUG_PRINT_LB_READ_PROGRESS(procName,3)
#ENDIF
bSuccessful = TRUE
iLoadStage++
ELSE
#IF IS_DEBUG_BUILD
//println()
println("LEADERBOARD READ FAILED!! See Conor")
println(procname, ": ID :", lbReadData.m_LeaderboardId, ": Type: ",lbReadData.m_Type)
//println()
//SCRIPT_ASSERT("LEADERBOARD READ FAILED!! See Conor")
DEBUG_PRINT_READ_RESULT_STATUS(procName,lbReadData,FALSE)
DEBUG_PRINT_LB_READ_PROGRESS(procName,3)
#ENDIF
bSuccessful = FALSE
iLoadStage++
ENDIF
BREAK
CASE 3
RETURN TRUE
BREAK
ENDSWITCH
RETURN FALSE
ENDFUNC
FUNC BOOL START_SC_LEADERBOARD_READ_BY_RANK(INT& iLoadStage,BOOL &bSuccessful,Leaderboard2ReadData& lbReadData, INT rankStart, INT numRows)
#IF IS_DEBUG_BUILD
STRING procName = "START_SC_LEADERBOARD_READ_BY_RANK"
#ENDIF
SWITCH iLoadStage
CASE 0
IF NOT IS_ANY_LEADERBOARD_READ_BEING_PROCESSED()// LEADERBOARDS_READ_EXISTS(lbReadData.m_LeaderboardId, lbReadData.m_Type)
AND NOT SHOULD_ALL_SCRIPT_LEADERBOARD_READS_TERMINATE()
#IF IS_DEBUG_BUILD
println(procName," Rank Start ",RankStart, " numRows",numRows)
DEBUG_PRINT_LEADERBOARD_READ_DATA_STRUCT(procName,lbReadData)
#ENDIF
START_LEADERBOARD_READ(lbReadData)
IF LEADERBOARDS2_READ_BY_RANK(lbReadData, rankStart, numRows)
iLoadStage++
#IF IS_DEBUG_BUILD
DEBUG_PRINT_LB_READ_PROGRESS(procName, 1)
#ENDIF
ELSE
#IF IS_DEBUG_BUILD
//println()
println("LEADERBOARDS2_READ_BY_RANK FAILED!! start See Conor")
println(procname, ": ID :", lbReadData.m_LeaderboardId, ": Type: ",lbReadData.m_Type)
//println()
//SCRIPT_ASSERT("LEADERBOARDS2_READ_BY_RANK FAILED!! See Conor")
DEBUG_PRINT_READ_RESULT_STATUS(procName,lbReadData,FALSE)
DEBUG_PRINT_LB_READ_PROGRESS(procName,3)
#ENDIF
bSuccessful = FALSE
iLoadStage=3
ENDIF
#IF IS_DEBUG_BUILD
ELSE
IF g_DBb_OutputLeaderboardReadErrors
DEBUG_PRINT_WAITING_FOR_READ_TO_FINISH(lbReadData)//"START_SC_LEADERBOARD_READ_BY_RANK",
ENDIF
#ENDIF
ENDIF
BREAK
CASE 1
IF NOT LEADERBOARDS_READ_PENDING(lbReadData.m_LeaderboardId, lbReadData.m_Type)
iLoadStage++
#IF IS_DEBUG_BUILD
DEBUG_PRINT_LB_READ_PROGRESS(procName,2)
#ENDIF
ENDIF
BREAK
CASE 2
IF LEADERBOARDS_READ_SUCCESSFUL(lbReadData.m_LeaderboardId, lbReadData.m_Type)
#IF IS_DEBUG_BUILD
DEBUG_PRINT_READ_RESULT_STATUS(procName,lbReadData,TRUE)
DEBUG_PRINT_LB_READ_PROGRESS(procName,3)
#ENDIF
bSuccessful = TRUE
iLoadStage++
ELSE
#IF IS_DEBUG_BUILD
//println()
println("LEADERBOARD READ FAILED!! See Conor")
println(procname, ": ID :", lbReadData.m_LeaderboardId, ": Type: ",lbReadData.m_Type)
//println()
//SCRIPT_ASSERT("LEADERBOARD READ FAILED!! See Conor")
DEBUG_PRINT_READ_RESULT_STATUS(procName,lbReadData,FALSE)
DEBUG_PRINT_LB_READ_PROGRESS(procName,3)
#ENDIF
bSuccessful = FALSE
iLoadStage++
ENDIF
BREAK
CASE 3
RETURN TRUE
BREAK
ENDSWITCH
RETURN FALSE
ENDFUNC
FUNC BOOL START_SC_LEADERBOARD_READ_BY_RADIUS(INT& iLoadStage,BOOL &bSuccessful,Leaderboard2ReadData& lbReadData, INT radius, GAMER_HANDLE& pivotGamerHandle,BOOL bRankPrediction = FALSE, BOOL bUseRankPredictOverride = FALSE,INT iRPOverride = 0, FLOAT fRPOverride = 0.0)
#IF IS_DEBUG_BUILD
STRING procName = "START_SC_LEADERBOARD_READ_BY_RADIUS"
#ENDIF
INT iScore = sclb_rank_predict.combinedResult.m_iColumnData[0]
FLOAT fScore = sclb_rank_predict.combinedResult.m_fColumnData[0]
IF bUseRankPredictOverride
iScore = iRPOverride
fScore = fRPOverride
ENDIF
SWITCH iLoadStage
CASE 0
IF NOT IS_ANY_LEADERBOARD_READ_BEING_PROCESSED()//LEADERBOARDS_READ_EXISTS(lbReadData.m_LeaderboardId, lbReadData.m_Type)
AND NOT SHOULD_ALL_SCRIPT_LEADERBOARD_READS_TERMINATE()
#IF IS_DEBUG_BUILD
DEBUG_PRINT_LEADERBOARD_READ_DATA_STRUCT(procName,lbReadData)
#ENDIF
START_LEADERBOARD_READ(lbReadData)
IF bRankPrediction
IF IS_BIT_SET(sclb_rank_predict.currentResult.m_ColumnsBitSets, 0)
println("LEADERBOARDS2_READ_BY_SCORE_INT: reading for int: ",iScore )
IF LEADERBOARDS2_READ_BY_SCORE_INT(lbReadData, iScore, radius)
iLoadStage++
#IF IS_DEBUG_BUILD
DEBUG_PRINT_LB_READ_PROGRESS(procName, 1)
#ENDIF
ELSE
#IF IS_DEBUG_BUILD
//println()
println("LEADERBOARDS2_READ_BY_RADIUS PREDICTION (INT) FAILED!! start See Conor")
println(procname, ": ID :", lbReadData.m_LeaderboardId, ": Type: ",lbReadData.m_Type)
//println()
//SCRIPT_ASSERT("LEADERBOARDS2_READ_BY_RADIUS PREDICTION (INT) FAILED!! See Conor")
DEBUG_PRINT_READ_RESULT_STATUS(procName,lbReadData,FALSE)
DEBUG_PRINT_LB_READ_PROGRESS(procName,3)
#ENDIF
bSuccessful = FALSE
iLoadStage=3
ENDIF
ELSE
println("LEADERBOARDS2_READ_BY_SCORE_INT: reading for float: ",fScore )
IF LEADERBOARDS2_READ_BY_SCORE_FLOAT(lbReadData, fScore , radius)
iLoadStage++
#IF IS_DEBUG_BUILD
DEBUG_PRINT_LB_READ_PROGRESS(procName, 1)
#ENDIF
ELSE
#IF IS_DEBUG_BUILD
//println()
println("LEADERBOARDS2_READ_BY_RADIUS PREDICTION (FLOAT) FAILED!! start See Conor")
println(procname, ": ID :", lbReadData.m_LeaderboardId, ": Type: ",lbReadData.m_Type)
//println()
//SCRIPT_ASSERT("LEADERBOARDS2_READ_BY_RADIUS PREDICTION (FLOAT) FAILED!! See Conor")
DEBUG_PRINT_READ_RESULT_STATUS(procName,lbReadData,FALSE)
DEBUG_PRINT_LB_READ_PROGRESS(procName,3)
#ENDIF
bSuccessful = FALSE
iLoadStage=3
ENDIF
ENDIF
ELSE
IF LEADERBOARDS2_READ_BY_RADIUS(lbReadData, radius, pivotGamerHandle)
iLoadStage++
#IF IS_DEBUG_BUILD
DEBUG_PRINT_LB_READ_PROGRESS(procName, 1)
#ENDIF
ELSE
#IF IS_DEBUG_BUILD
//println()
println("LEADERBOARDS2_READ_BY_RADIUS FAILED!! start See Conor")
println(procname, ": ID :", lbReadData.m_LeaderboardId, ": Type: ",lbReadData.m_Type)
//println()
//SCRIPT_ASSERT("LEADERBOARDS2_READ_BY_RADIUS FAILED!! See Conor")
DEBUG_PRINT_READ_RESULT_STATUS(procName,lbReadData,FALSE)
DEBUG_PRINT_LB_READ_PROGRESS(procName,3)
#ENDIF
bSuccessful = FALSE
iLoadStage=3
ENDIF
ENDIF
#IF IS_DEBUG_BUILD
ELSE
IF g_DBb_OutputLeaderboardReadErrors
DEBUG_PRINT_WAITING_FOR_READ_TO_FINISH(lbReadData)//"START_SC_LEADERBOARD_READ_BY_RADIUS",
ENDIF
#ENDIF
ENDIF
BREAK
CASE 1
IF NOT LEADERBOARDS_READ_PENDING(lbReadData.m_LeaderboardId, lbReadData.m_Type)
iLoadStage++
#IF IS_DEBUG_BUILD
DEBUG_PRINT_LB_READ_PROGRESS(procName,3)
#ENDIF
ENDIF
BREAK
CASE 2
IF LEADERBOARDS_READ_SUCCESSFUL(lbReadData.m_LeaderboardId, lbReadData.m_Type)
#IF IS_DEBUG_BUILD
DEBUG_PRINT_READ_RESULT_STATUS(procName,lbReadData,TRUE)
DEBUG_PRINT_LB_READ_PROGRESS(procName,3)
#ENDIF
bSuccessful = TRUE
iLoadStage++
ELSE
#IF IS_DEBUG_BUILD
//println()
println("LEADERBOARD READ FAILED!! See Conor")
println(procname, ": ID :", lbReadData.m_LeaderboardId, ": Type: ",lbReadData.m_Type)
//println()
//SCRIPT_ASSERT("LEADERBOARD READ FAILED!! See Conor")
DEBUG_PRINT_READ_RESULT_STATUS(procName,lbReadData,FALSE)
DEBUG_PRINT_LB_READ_PROGRESS(procName,3)
#ENDIF
bSuccessful = FALSE
iLoadStage++
ENDIF
BREAK
CASE 3
RETURN TRUE
BREAK
ENDSWITCH
RETURN FALSE
ENDFUNC
#IF IS_DEBUG_BUILD
PROC PRINT_ROW_DATA(SC_LEADERBOARD_DISPLAY_ROW_STRUCT rowData)
INT j
IF g_bOutputSCLeaderboardData
//println()
//println("PRINT_ROW_DATA")
println("row data gamer name: ",rowData.tl23_ParticipantName)
println("row data rank: ",rowData.iRank)
REPEAT SC_LEADERBOARD_MAX_DISPLAYED_STATS j
println("FLOAT Column # ", j, " = ", rowData.fColumnData[j])
ENDREPEAT
REPEAT SC_LEADERBOARD_MAX_DISPLAYED_STATS j
println("INT Column # ", j, " = ", rowData.iColumnData[j])
ENDREPEAT
println("row data is valid : ", rowData.bValidData)
println("END - PRINT_ROW_DATA")
ENDIF
ENDPROC
#ENDIF
PROC CLEAR_FINAL_DATA_STRUCT(SC_FINAL_DATA &finalData[])
GAMER_HANDLE emptyGamer
INT i, j
REPEAT SC_LEADERBOARD_MAX_NUM_DISPLAYED_ROWS i
finalData[i].rowData.tl23_ParticipantName = ""
finalData[i].rowData.tl31_CoDriver = ""
finalData[i].rowData.playerGamerHandle = emptyGamer
finalData[i].rowData.coDriverGamerHandle = emptyGamer
finalData[i].rowData.bCustomVehicle = FALSE
finalData[i].rowData.iRank = 0
REPEAT SC_LEADERBOARD_MAX_DISPLAYED_STATS j
finalData[i].rowData.fColumnData[j] = 0
finalData[i].rowData.iColumnData[j] = 0
ENDREPEAT
finalData[i].iSection = 0
finalData[i].rowData.bValidData = FALSE
finalData[i].iCrewTagLoadStage = 0
finalData[i].iCoDriverNameLoadStage = 0
finalData[i].iRunUpdateGamerTagsLoadStage = 0
finalData[i].iDisplayNameRequestID = 0
finalData[i].crewTag = ""
ENDREPEAT
RESET_NET_TIMER(scLB_DisplayedData.failSafeTimer)
PRINTLN("CLEAR_FINAL_DATA_STRUCT- Called")
ENDPROC
FUNC BOOL IS_SC_LEADERBOARD_A_RACE(INT iLeaderboardID)
IF iLeaderboardID = ENUM_TO_INT(LEADERBOARD_FREEMODE_RACES)
OR iLeaderboardID = ENUM_TO_INT(LEADERBOARD_FREEMODE_GTA_RACES)
OR iLeaderboardID = ENUM_TO_INT(LEADERBOARD_FREEMODE_RALLY)
OR iLeaderboardID = ENUM_TO_INT(LEADERBOARD_FREEMODE_RACES_LAPS)
OR iLeaderboardID = ENUM_TO_INT(LEADERBOARD_FREEMODE_GTA_RACES_LAPS)
OR iLeaderboardID = ENUM_TO_INT(LEADERBOARD_FREEMODE_RALLY_LAPS)
OR iLeaderboardID = ENUM_TO_INT(LEADERBOARD_FREEMODE_ON_FOOT_RACE)
//OR iLeaderboardID = ENUM_TO_INT(LEADERBOARD_FREEMODE_ON_FOOT_LAPS)
RETURN TRUE
ENDIF
RETURN FALSE
ENDFUNC
FUNC BOOL IS_SC_LEADERBOARD_A_RALLY(INT iLeaderboardID)
IF iLeaderboardID = ENUM_TO_INT(LEADERBOARD_FREEMODE_RALLY)
OR iLeaderboardID = ENUM_TO_INT(LEADERBOARD_FREEMODE_RALLY_LAPS)
RETURN TRUE
ENDIF
RETURN FALSE
ENDFUNC
FUNC INT SC_LC_GENERATE_ID_FOR_CACHE(TEXT_LABEL_31 tl_UGC_name, INT iLeaderboard,INT iMissionType, INT iSubType = -1, INT iLaps = -1, BOOL bCoDriver = FALSE)
TEXT_LABEL_63 tempString
tempString = tl_UGC_name
tempString += iLeaderBoard
tempString += "_"
IF IS_SC_LEADERBOARD_A_RALLY(iLeaderboard)
IF bCoDriver
tempString += "CoDri"
ELSE
tempString += "Dri"
ENDIF
tempString += "_"
ENDIF
tempString += iMissionType
tempString += "_"
tempString += iSubType
tempString += "_"
tempString += ilaps
RETURN GET_HASH_KEY(tempString)
ENDFUNC
FUNC BOOL IS_SC_LB_VALUE_INVALID(INT iValue, FLOAT fValue)
IF iValue = HIGHEST_INT
OR iValue = -HIGHEST_INT
RETURN TRUE
ENDIF
IF fValue = TO_FLOAT(HIGHEST_INT)
OR fValue = TO_FLOAT(-HIGHEST_INT)
RETURN TRUE
ENDIF
RETURN FALSE
ENDFUNC
//PROC CLEAR_ROW_DATA_STRUCT(LeaderboardRowData& tempRowData[])
// LeaderboardRowData clearData
// tempRowData[0] = clearData
//ENDPROC
PROC CLEAR_ROW_DATA_INFO_STRUCT(LeaderboardRowData& tempRowData)
tempRowData.m_GamerHandle.Data1 = 0
tempRowData.m_GamerHandle.Data2 = 0
tempRowData.m_GamerHandle.Data3 = 0
tempRowData.m_GamerHandle.Data4 = 0
tempRowData.m_GamerHandle.Data5 = 0
tempRowData.m_GamerHandle.Data6 = 0
tempRowData.m_GamerHandle.Data7 = 0
tempRowData.m_GamerHandle.Data8 = 0
tempRowData.m_GamerHandle.Data9 = 0
tempRowData.m_GamerHandle.Data10 = 0
tempRowData.m_GamerHandle.Data11 = 0
tempRowData.m_GamerHandle.Data12 = 0
tempRowData.m_GamerHandle.Data13 = 0
tempRowData.m_GamerName = ""
tempRowData.m_GroupSelector.m_NumGroups = 0
INT i
REPEAT LEADERBOARD_MAX_GROUPS i
tempRowData.m_GroupSelector.m_Group[i].m_Category = ""
tempRowData.m_GroupSelector.m_Group[i].m_Id = ""
ENDREPEAT
tempRowData.m_ClanId = 0
tempRowData.m_ClanName = ""
tempRowData.m_ClanTag = ""
tempRowData.m_Rank = 0
tempRowData.m_NumColumnValues = 0
ENDPROC
PROC FILL_READ_INFO_STRUCT(LeaderboardReadInfo& readInfo,Leaderboard2ReadData &ReadDataStruct)
readInfo.m_LeaderboardId = ReadDataStruct.m_LeaderboardId
readInfo.m_LeaderboardType = ENUM_TO_INT(ReadDataStruct.m_Type)
readInfo.m_LeaderboardIndex = 0
ENDPROC
FUNC BOOL IS_RANK_PREDICTION_VALID_FOR_CURRENT_READ()
IF sclb_useRankPrediction
AND sclb_rankPredictionDataValid
RETURN TRUE
ENDIF
RETURN FALSE
ENDFUNC
PROC FILL_LEADERBOARD_ROW_WITH_COMBINED_PREDICTION_RESULT(SC_LEADERBOARD_CONTROL_STRUCT& scLB_control, SC_LEADERBOARD_DISPLAY_ROW_STRUCT &rowData, INT iRank #IF IS_DEBUG_BUILD, STRING funcName,INT iSection #endif )
//println("FILL_LEADERBOARD_ROW_WITH_COMBINED_PREDICTION_RESULT: filling in data for a row from the combined rank prediction result")
INT iCustomCar
INT i
IF IS_SC_LEADERBOARD_A_RALLY(scLB_control.ReadDataStruct.m_LeaderboardId)
rowData.tl23_ParticipantName = sclb_rank_predict.DriverName
rowData.playerGamerHandle = sclb_rank_predict.driverHandle
println("CODRIVER NAME = ", sclb_rank_predict.coDriverName)
rowData.tl31_CoDriver = sclb_rank_predict.coDriverName
ELSE
rowData.tl23_ParticipantName = GET_PLAYER_NAME(PLAYER_ID())
rowData.playerGamerHandle = GET_GAMER_HANDLE_PLAYER(PLAYER_ID())
ENDIF
rowData.iRank = iRank
IF IS_SC_LEADERBOARD_A_RACE(scLB_control.ReadDataStruct.m_LeaderboardId)
println("COMBINED_PREDICTION_RESULT: Row: ", scLB_DisplayedData.iSectionEntries[iSection], " Column: ", scLB_DisplayedData.iCustomVehicleColumn)
iCustomCar = sclb_rank_predict.combinedResult.m_iColumnData[scLB_DisplayedData.iCustomVehicleColumn]
IF iCustomCar = 1
rowData.bCustomVehicle = TRUE
ELSE
rowData.bCustomVehicle = FALSE
ENDIF
ENDIF
rowData.bValidData = TRUE
REPEAT scLB_DisplayedData.iNumNonRankColumnsToDisplay i
println("COMBINED_PREDICTION_RESULT: Row: ", scLB_DisplayedData.iSectionEntries[iSection], " Column: ", scLB_DisplayedData.iReadColumns[i])
//IF IS_BIT_SET(sclb_rank_predict.currentResult.m_ColumnsBitSets,scLB_DisplayedData.iReadColumns[i])
IF IS_BIT_SET(sclb_rank_predict.currentResult.m_ColumnsBitSets,scLB_DisplayedData.iReadColumns[i])
//IF IS_LEADERBOARD_COLUMN_INT(scLB_control.ReadDataStruct.m_LeaderboardId,scLB_Control.ReadDataStruct.m_Type,scLB_DisplayedData.iReadColumns[i])
rowData.iColumnData[i] = sclb_rank_predict.combinedResult.m_iColumnData[scLB_DisplayedData.iReadColumns[i]]
#IF IS_DEBUG_BUILD
DEBUG_PRINT_SC_LB_RETURNED_VALUES(funcName,"Row: ",scLB_DisplayedData.iSectionEntries[iSection],scLB_DisplayedData.iReadColumns[i],
rowData.iColumnData[i],0.0,FALSE,TRUE )
#ENDIF
ELSE
rowData.fColumnData[i] = sclb_rank_predict.combinedResult.m_fColumnData[scLB_DisplayedData.iReadColumns[i]]
#IF IS_DEBUG_BUILD
DEBUG_PRINT_SC_LB_RETURNED_VALUES(funcName,"Row: ",scLB_DisplayedData.iSectionEntries[iSection],scLB_DisplayedData.iReadColumns[i],
0,rowData.fColumnData[i],TRUE,TRUE )
#ENDIF
ENDIF
ENDREPEAT
ENDPROC
//FUNC INT GET_OFFSET_FOR_RANK_BASED_ON_PREDICTED_PLAYER_POSITION(INT iSection, INT iPlayerInitialRank, INT iCurrentRowRank)
// IF IS_RANK_PREDICTION_VALID_FOR_CURRENT_READ()
// AND scLB_DisplayedData.iSectionEntries[iSection] > scLB_DisplayedData.iPlayerIndexForSection[iSection]
// AND scLB_DisplayedData.iPlayerIndexForSection[iSection] >= 0
// IF iPlayerInitialRank != scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iPlayerIndexForSection[iSection]].iRank
// IF iCurrentRowRank >= scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iPlayerIndexForSection[iSection]].iRank
// RETURN 1
// ENDIF
// ENDIF
// ENDIF
// RETURN 0
//ENDFUNC
PROC CALCULATE_OFFSETS_FOR_RANK_BASED_ON_PREDICTED_PLAYER_POSITION(INT iSection, INT iPlayerInitialRank)
INT i
println("CALCULATE_OFFSETS_FOR_RANK_BASED_ON_PREDICTED_PLAYER_POSITION")
IF IS_RANK_PREDICTION_VALID_FOR_CURRENT_READ()
AND scLB_DisplayedData.iSectionEntries[iSection] > scLB_DisplayedData.iPlayerIndexForSection[iSection]
AND scLB_DisplayedData.iPlayerIndexForSection[iSection] >= 0
IF iPlayerInitialRank != scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iPlayerIndexForSection[iSection]].iRank
REPEAT scLB_DisplayedData.iSectionEntries[iSection] i
IF i != scLB_DisplayedData.iPlayerIndexForSection[iSection]
//if row
IF scLB_DisplayedData.rowData[iSection][i].iRank >= scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iPlayerIndexForSection[iSection]].iRank
IF scLB_DisplayedData.rowData[iSection][i].iRank < iPlayerInitialRank OR iPlayerInitialRank = -1
println("offseting Rank for iSection: ",iSection,"iRow :",i)
println("OLD RANK: ",scLB_DisplayedData.rowData[iSection][i].iRank)
scLB_DisplayedData.rowData[iSection][i].iRank = scLB_DisplayedData.rowData[iSection][i].iRank + 1
println("NEW RANK: ",scLB_DisplayedData.rowData[iSection][i].iRank)
#IF IS_DEBUG_BUILD
ELSE
println("scLB_DisplayedData.rowData[",iSection,"][",i,"].iRank = ",scLB_DisplayedData.rowData[iSection][i].iRank)
println("iPlayerInitialRank = ",iPlayerInitialRank)
#ENDIF
ENDIF
#IF IS_DEBUG_BUILD
ELSE
println("scLB_DisplayedData.rowData[",iSection,"][",i,"].iRank = ", scLB_DisplayedData.rowData[iSection][i].iRank)
println("scLB_DisplayedData.rowData[",iSection,"][",scLB_DisplayedData.iPlayerIndexForSection[iSection],"].iRank = ",scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iPlayerIndexForSection[iSection]].iRank)
#ENDIF
ENDIF
ENDIF
ENDREPEAT
ELSE
println("iPlayerInitialRank = ",iPlayerInitialRank)
ENDIF
ELSE
IF NOT IS_RANK_PREDICTION_VALID_FOR_CURRENT_READ()
println("Rank prediction NOT valid")
ENDIF
IF scLB_DisplayedData.iSectionEntries[iSection] <= scLB_DisplayedData.iPlayerIndexForSection[iSection]
println("scLB_DisplayedData.iSectionEntries[iSection] = ", scLB_DisplayedData.iSectionEntries[iSection])
println("scLB_DisplayedData.iPlayerIndexForSection[iSection] = ", scLB_DisplayedData.iPlayerIndexForSection[iSection])
ENDIF
IF scLB_DisplayedData.iPlayerIndexForSection[iSection] < 0
println("scLB_DisplayedData.iPlayerIndexForSection[iSection] < 0")
ENDIF
ENDIF
ENDPROC
FUNC BOOL DO_WE_HAVE_STORED_RANK_PREDICTED_DATA_FOR_THIS_READ(Leaderboard2ReadData readData)
INT i
IF sclb_useRankPrediction
println("DO_WE_HAVE_STORED_RANK_PREDICTED_DATA_FOR_THIS_READ")
IF sclb_rank_predict.LBWriteDetails.m_LeaderboardId != 0
IF sclb_rank_predict.LBWriteDetails.m_LeaderboardId = readData.m_LeaderboardId
IF sclb_rank_predict.LBWriteDetails.m_GroupSelector.m_NumGroups = readData.m_GroupSelector.m_NumGroups
REPEAT readData.m_GroupSelector.m_NumGroups i
IF NOT ARE_STRINGS_EQUAL(sclb_rank_predict.LBWriteDetails.m_GroupSelector.m_Group[i].m_Category, readData.m_GroupSelector.m_Group[i].m_Category)
OR NOT ARE_STRINGS_EQUAL(sclb_rank_predict.LBWriteDetails.m_GroupSelector.m_Group[i].m_Id, readData.m_GroupSelector.m_Group[i].m_Id)
println("FALSE - sclb_rank_predict.LBWriteDetails.m_GroupSelector.m_Group[",i,"].m_Category = ", sclb_rank_predict.LBWriteDetails.m_GroupSelector.m_Group[i].m_Category)
println("readData.m_GroupSelector.m_Group[",i,"].m_Category = ", readData.m_GroupSelector.m_Group[i].m_Category)
println("sclb_rank_predict.LBWriteDetails.m_GroupSelector.m_Group[",i,"].m_Id = ", sclb_rank_predict.LBWriteDetails.m_GroupSelector.m_Group[i].m_Id)
println("readData.m_GroupSelector.m_Group[",i,"].m_Id = ", readData.m_GroupSelector.m_Group[i].m_Id)
RETURN FALSE
ENDIF
ENDREPEAT
println("TRUE")
RETURN TRUE
#IF IS_DEBUG_BUILD
ELSE
println("FALSE -sclb_rank_predict.LBWriteDetails.m_GroupSelector.m_NumGroups = ",sclb_rank_predict.LBWriteDetails.m_GroupSelector.m_NumGroups)
println(" readData.m_GroupSelector.m_NumGroups= ", readData.m_GroupSelector.m_NumGroups)
#ENDIF
ENDIF
#IF IS_DEBUG_BUILD
ELSE
println("FALSE -sclb_rank_predict.LBWriteDetails.m_LeaderboardId = ",sclb_rank_predict.LBWriteDetails.m_LeaderboardId)
println("readData.m_LeaderboardId = ",readData.m_LeaderboardId)
#ENDIF
ENDIF
#IF IS_DEBUG_BUILD
ELSE
println("FALSE -sclb_rank_predict.LBWriteDetails.m_LeaderboardId = ",sclb_rank_predict.LBWriteDetails.m_LeaderboardId)
#ENDIF
ENDIF
#IF IS_DEBUG_BUILD
ELSE
println("sclb_useRankPrediction = FALSE")
#ENDIF
ENDIF
RETURN FALSE
ENDFUNC
/*
Global OR Crew read
11 Radius around player
If 0 rows are returned
Read rank 1-11
Else
if radius !include rank 1
read rank 1
endif
endif
Friend read
Get all friend data including player - READ 1
Loop through all friend data.
Store rank 1
Loop through until you find player then get rows above/below
(there is probably a nicer way to do this but just to get things working again)
*/
FUNC BOOL SOCIAL_CLUB_GET_GLOBAL_LB_DATA(SC_LEADERBOARD_CONTROL_STRUCT& scLB_control )
GAMER_HANDLE localPlayerHandle
LeaderboardRowData initRowData
LeaderboardReadInfo readInfo
//INT iRankStart
INT i, j
INT iCustomCar
INT iPlayerRow = -1
INT iRowStart
INT iIndex
BOOL bRankOneInRadius
#IF IS_DEBUG_BUILD
STRING funcName = "SOCIAL_CLUB_GET_GLOBAL_LB_DATA"
#ENDIF
INT iSection = SC_LB_SECTION_GLOBAL
BOOL bReplaceFirstSlot
INT iRankRowsToRead
//INT iOffsetRank
localPlayerHandle = GET_GAMER_HANDLE_PLAYER(PLAYER_ID())
SWITCH scLB_control.iLoadStage[iSection]
//radius around player
CASE 0
scLB_DisplayedData.iPlayerIndexForSection[iSection] = -1
scLB_DisplayedData.iSectionEntries[iSection] = 0
sclb_rank_predict.iRankBeforePrediction = -1
sclb_rankPredictionDataValid = FALSE
IF DO_WE_HAVE_STORED_RANK_PREDICTED_DATA_FOR_THIS_READ(scLB_control.ReadDataStruct)
IF NOT sclb_rankPredictionDataValid
println("DO_WE_HAVE_STORED_RANK_PREDICTED_DATA_FOR_THIS_READ = TRUE setting flag to valid")
sclb_rankPredictionDataValid = TRUE
ENDIF
ELSE
IF sclb_rankPredictionDataValid
println("DO_WE_HAVE_STORED_RANK_PREDICTED_DATA_FOR_THIS_READ = FALSE setting flag to NOT valid")
sclb_rankPredictionDataValid = FALSE
ENDIF
ENDIF
IF NOT sclb_rankPredictionDataValid
println("DO_WE_HAVE_STORED_RANK_PREDICTED_DATA_FOR_THIS_READ = FALSE")
ENDIF
IF START_SC_LEADERBOARD_READ_BY_RADIUS(scLB_control.iTempLoadStage,scLB_control.bTempReadResult,scLB_control.ReadDataStruct,11,localPlayerHandle,IS_RANK_PREDICTION_VALID_FOR_CURRENT_READ())
#IF IS_DEBUG_BUILD
DEBUG_START_LEADERBOARD_PRINT_RESULTS(funcName,scLB_control.ReadDataStruct)
#ENDIF
FILL_READ_INFO_STRUCT(readInfo,scLB_control.ReadDataStruct)
IF scLB_control.bTempReadResult
AND LEADERBOARDS2_READ_GET_ROW_DATA_START(readInfo)
println(funcName, ":readInfo.m_LocalGamerRowNumber = ",readInfo.m_LocalGamerRowNumber)
IF readInfo.m_ReturnedRows > 0
iIndex = 0
i = 0
//RANK PREDICTION
IF IS_RANK_PREDICTION_VALID_FOR_CURRENT_READ()
REPEAT readInfo.m_ReturnedRows iIndex
LEADERBOARDS2_READ_GET_ROW_DATA_INFO(iIndex, initRowData)
IF sclb_rank_predict.iRankBeforePrediction < 0
//IF ARE_STRINGS_EQUAL(initRowData.m_GamerName, GET_PLAYER_NAME(PLAYER_ID()))
//OR ARE_STRINGS_EQUAL(initRowData.m_GamerName,sclb_rank_predict.driverName)
IF SCLB_CHECK_HANDLES_ARE_THE_SAME(initRowData.m_GamerHandle,localPlayerHandle)
OR SCLB_CHECK_HANDLES_ARE_THE_SAME(initRowData.m_GamerHandle,sclb_rank_predict.driverHandle)
sclb_rank_predict.iRankBeforePrediction =initRowData.m_Rank
println(funcName, " setting players rank before prediction = ",sclb_rank_predict.iRankBeforePrediction)
ENDIF
ENDIF
IF iPlayerRow < 0
IF IS_BIT_SET(sclb_rank_predict.currentResult.m_ColumnsBitSets,0)
println("Players score: ", sclb_rank_predict.combinedResult.m_iColumnData[0])
println("Returned Row# ",iIndex, " score: ", LEADERBOARDS2_READ_GET_ROW_DATA_INT(iIndex, 0))
IF sclb_rank_predict.combinedResult.m_iColumnData[0] >= LEADERBOARDS2_READ_GET_ROW_DATA_INT(iIndex, 0)
iPlayerRow = iIndex
println(funcName, " Players score is higher than returned result setting player row to ", iPlayerRow)
ENDIF
ELSE
println("Players score: ", sclb_rank_predict.combinedResult.m_fColumnData[0])
println("Returned Row# ",iIndex, " score: ", LEADERBOARDS2_READ_GET_ROW_DATA_FLOAT(iIndex, 0))
IF sclb_rank_predict.combinedResult.m_fColumnData[0] >= LEADERBOARDS2_READ_GET_ROW_DATA_FLOAT(iIndex, 0)
iPlayerRow = iIndex
println(funcName, " Players score is higher than returned result setting player row to ", iPlayerRow)
ENDIF
ENDIF
ENDIF
CLEAR_ROW_DATA_INFO_STRUCT(initRowData)
ENDREPEAT
IF iPlayerRow < 0
iPlayerRow = readInfo.m_ReturnedRows
ENDIF
ENDIF
iIndex = 0
LEADERBOARDS2_READ_GET_ROW_DATA_INFO(0, initRowData)
IF initRowData.m_Rank <= 1
//OR (iPlayerRow = 0 AND initRowData.m_Rank <= 1)
println(funcName, ": Rank 1 included in radius search grabbing now")
//1st Place
IF scLB_DisplayedData.iSectionEntries[iSection] < 11
IF IS_RANK_PREDICTION_VALID_FOR_CURRENT_READ()
AND iPlayerRow = 0
FILL_LEADERBOARD_ROW_WITH_COMBINED_PREDICTION_RESULT(scLB_control,scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]],initRowData.m_Rank #IF IS_DEBUG_BUILD ,funcName,iSection#endif )
//iPlayerRow = 0
scLB_DisplayedData.iPlayerIndexForSection[iSection] = 0
#IF IS_DEBUG_BUILD
PRINT_ROW_DATA(scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]])
#ENDIF
scLB_DisplayedData.iSectionEntries[iSection]++
println(funcName,": adding data to section number of entries now : ",scLB_DisplayedData.iSectionEntries[iSection] )
ENDIF
IF IS_RANK_PREDICTION_VALID_FOR_CURRENT_READ()
AND (SCLB_CHECK_HANDLES_ARE_THE_SAME(initRowData.m_GamerHandle,localPlayerHandle)
OR SCLB_CHECK_HANDLES_ARE_THE_SAME(initRowData.m_GamerHandle,sclb_rank_predict.driverHandle))
//AND (ARE_STRINGS_EQUAL(initRowData.m_GamerName, GET_PLAYER_NAME(PLAYER_ID()))
//OR ARE_STRINGS_EQUAL(initRowData.m_GamerName,sclb_rank_predict.driverName))
ELSE
//IF ARE_STRINGS_EQUAL(initRowData.m_GamerName, GET_PLAYER_NAME(PLAYER_ID()))
IF SCLB_CHECK_HANDLES_ARE_THE_SAME(initRowData.m_GamerHandle,localPlayerHandle)
iPlayerRow = 0
scLB_DisplayedData.iPlayerIndexForSection[iSection] = 0
ENDIF
scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].tl23_ParticipantName = initRowData.m_GamerName
scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].playerGamerHandle = initRowData.m_GamerHandle
scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].iRank = initRowData.m_Rank
IF IS_SC_LEADERBOARD_A_RACE(scLB_control.ReadDataStruct.m_LeaderboardId)
println("LEADERBOARDS2_READ_GET_ROW_DATA_INFO: Row: ", scLB_DisplayedData.iSectionEntries[iSection], " Column: ", scLB_DisplayedData.iCustomVehicleColumn)
iCustomCar = LEADERBOARDS2_READ_GET_ROW_DATA_INT(0,scLB_DisplayedData.iCustomVehicleColumn)
IF iCustomCar = 1
scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].bCustomVehicle = TRUE
ELSE
scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].bCustomVehicle = FALSE
ENDIF
ENDIF
IF IS_SC_LEADERBOARD_A_RALLY(scLB_control.ReadDataStruct.m_LeaderboardId)
println("CODRIVER - initRowData.m_GroupSelector.m_Group[1].m_Id= ", initRowData.m_GroupSelector.m_Group[1].m_Id)
scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].tl31_CoDriver = initRowData.m_GroupSelector.m_Group[1].m_Id
ENDIF
scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].bValidData = TRUE
REPEAT scLB_DisplayedData.iNumNonRankColumnsToDisplay i
println("LEADERBOARDS2_READ_GET_ROW_DATA_INFO: Row: ", scLB_DisplayedData.iSectionEntries[iSection], " Column: ", scLB_DisplayedData.iReadColumns[i])
IF IS_BIT_SET(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[i])
//IF IS_LEADERBOARD_COLUMN_INT(scLB_control.ReadDataStruct.m_LeaderboardId,scLB_Control.ReadDataStruct.m_Type,scLB_DisplayedData.iReadColumns[i])
scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].iColumnData[i] = LEADERBOARDS2_READ_GET_ROW_DATA_INT(0, scLB_DisplayedData.iReadColumns[i])
#IF IS_DEBUG_BUILD
DEBUG_PRINT_SC_LB_RETURNED_VALUES(funcName,"Rank 1",scLB_DisplayedData.iSectionEntries[iSection],scLB_DisplayedData.iReadColumns[i],
scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].iColumnData[i],0.0,FALSE )
#ENDIF
ELSE
scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].fColumnData[i] = LEADERBOARDS2_READ_GET_ROW_DATA_FLOAT(0, scLB_DisplayedData.iReadColumns[i])
#IF IS_DEBUG_BUILD
DEBUG_PRINT_SC_LB_RETURNED_VALUES(funcName,"Rank 1",scLB_DisplayedData.iSectionEntries[iSection],scLB_DisplayedData.iReadColumns[i],
0,scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].fColumnData[i],TRUE )
#ENDIF
ENDIF
ENDREPEAT
//iOffsetRank = GET_OFFSET_FOR_RANK_BASED_ON_PREDICTED_PLAYER_POSITION(iSection,sclb_rank_predict.iRankBeforePrediction)
//scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].iRank = scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].iRank + iOffsetRank
//println(funcName,": rank prediction offseting rank by: ", iOffsetRank)
#IF IS_DEBUG_BUILD
PRINT_ROW_DATA(scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]])
#ENDIF
scLB_DisplayedData.iSectionEntries[iSection]++
println(funcName,": adding data to section number of entries now : ",scLB_DisplayedData.iSectionEntries[iSection] )
ENDIF
bRankOneInRadius = TRUE
ENDIF
ENDIF
IF NOT bRankOneInRadius
scLB_DisplayedData.iSectionEntries[iSection]++
println(funcName,": adding data to section number of entries now (FAKE TO ALLOW 1st PLACE LATER) : ",scLB_DisplayedData.iSectionEntries[iSection] )
ENDIF
IF NOT IS_RANK_PREDICTION_VALID_FOR_CURRENT_READ()
iPlayerRow = readInfo.m_LocalGamerRowNumber
println(funcName,": NOT IS_RANK_PREDICTION_VALID_FOR_CURRENT_READ() iPlayerRow: ",iPlayerRow )
ENDIF
IF iPlayerRow > 6
iRowStart = iPlayerRow - 6
ELSE
IF bRankOneInRadius
iRowStart = 1
ELSE
iRowStart = 0
ENDIF
ENDIF
iIndex = iRowStart
CLEAR_ROW_DATA_INFO_STRUCT(initRowData)
FOR iIndex = iRowStart TO readInfo.m_ReturnedRows-1
LEADERBOARDS2_READ_GET_ROW_DATA_INFO(iIndex, initRowData)
//Get data about row outside of getting data for each column?
println(funcName,": initRowData.iRank = ", initRowData.m_Rank)
println(funcName,": scLB_DisplayedData.iSectionEntries[iSection] = ", scLB_DisplayedData.iSectionEntries[iSection])
IF scLB_DisplayedData.iSectionEntries[iSection] < 11
AND initRowData.m_Rank > 1
IF IS_RANK_PREDICTION_VALID_FOR_CURRENT_READ()
AND iPlayerRow = iIndex
//IF NOT ARE_STRINGS_EQUAL(scLB_DisplayedData.rowData[iSection][0].tl23_ParticipantName,GET_PLAYER_NAME(PLAYER_ID()))
IF NOT SCLB_CHECK_HANDLES_ARE_THE_SAME(scLB_DisplayedData.rowData[iSection][0].playerGamerHandle,initRowData.m_GamerHandle)
FILL_LEADERBOARD_ROW_WITH_COMBINED_PREDICTION_RESULT(scLB_control,scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]],initRowData.m_Rank#IF IS_DEBUG_BUILD ,funcName,iSection #endif )
scLB_DisplayedData.iPlayerIndexForSection[iSection] = scLB_DisplayedData.iSectionEntries[iSection]
println(funcName, "Adding player to index ", scLB_DisplayedData.iPlayerIndexForSection[iSection])
#IF IS_DEBUG_BUILD
PRINT_ROW_DATA(scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]])
#ENDIF
scLB_DisplayedData.iSectionEntries[iSection]++
println(funcName,": adding data to section number of entries now : ",scLB_DisplayedData.iSectionEntries[iSection] )
ENDIF
ENDIF //if we are using rank prediction there is no record for local player so its an extra one in the middle
IF IS_RANK_PREDICTION_VALID_FOR_CURRENT_READ()
//AND (ARE_STRINGS_EQUAL(initRowData.m_GamerName, GET_PLAYER_NAME(PLAYER_ID()))
//OR ARE_STRINGS_EQUAL(initRowData.m_GamerName,sclb_rank_predict.driverName))
AND (SCLB_CHECK_HANDLES_ARE_THE_SAME(initRowData.m_GamerHandle,localPlayerHandle)
OR SCLB_CHECK_HANDLES_ARE_THE_SAME(initRowData.m_GamerHandle,sclb_rank_predict.driverHandle))
println(funcName,": NOT adding data to section as it's equal to prediction handle")
ELSE
IF scLB_DisplayedData.iSectionEntries[iSection] < 11
//IF NOT ARE_STRINGS_EQUAL(initRowData.m_GamerName, "")
//AND NOT ARE_STRINGS_EQUAL(scLB_DisplayedData.rowData[iSection][0].tl23_ParticipantName,initRowData.m_GamerName)
//IF ARE_STRINGS_EQUAL(GET_PLAYER_NAME(PLAYER_ID()),initRowData.m_GamerName)
IF IS_GAMER_HANDLE_VALID(initRowData.m_GamerHandle)
AND NOT SCLB_CHECK_HANDLES_ARE_THE_SAME(scLB_DisplayedData.rowData[iSection][0].playerGamerHandle,initRowData.m_GamerHandle)
IF SCLB_CHECK_HANDLES_ARE_THE_SAME(initRowData.m_GamerHandle,localPlayerHandle)
IF scLB_DisplayedData.iPlayerIndexForSection[iSection] < 0
scLB_DisplayedData.iPlayerIndexForSection[iSection] = scLB_DisplayedData.iSectionEntries[iSection]
println(funcName, "Adding player to index ", scLB_DisplayedData.iPlayerIndexForSection[iSection])
ENDIF
ENDIF
scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].tl23_ParticipantName = initRowData.m_GamerName
scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].playerGamerHandle = initRowData.m_GamerHandle
scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].iRank = initRowData.m_Rank
scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].bValidData = TRUE
IF IS_SC_LEADERBOARD_A_RACE(scLB_control.ReadDataStruct.m_LeaderboardId)
println("LEADERBOARDS2_READ_GET_ROW_DATA_INFO: Row: ", iIndex, " Column: ", scLB_DisplayedData.iCustomVehicleColumn)
iCustomCar = LEADERBOARDS2_READ_GET_ROW_DATA_INT(iIndex, scLB_DisplayedData.iCustomVehicleColumn)
IF iCustomCar = 1
scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].bCustomVehicle = TRUE
ELSE
scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].bCustomVehicle = FALSE
ENDIF
ENDIF
IF IS_SC_LEADERBOARD_A_RALLY(scLB_control.ReadDataStruct.m_LeaderboardId)
println("CODRIVER - initRowData.m_GroupSelector.m_Group[1].m_Id= ", initRowData.m_GroupSelector.m_Group[1].m_Id)
scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].tl31_CoDriver = initRowData.m_GroupSelector.m_Group[1].m_Id
ENDIF
i = 0
REPEAT scLB_DisplayedData.iNumNonRankColumnsToDisplay i
IF IS_BIT_SET(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[i])
//IF IS_LEADERBOARD_COLUMN_INT(scLB_control.ReadDataStruct.m_LeaderboardId,scLB_Control.ReadDataStruct.m_Type,scLB_DisplayedData.iReadColumns[i])
scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].iColumnData[i] = LEADERBOARDS2_READ_GET_ROW_DATA_INT(iIndex, scLB_DisplayedData.iReadColumns[i])
println("LEADERBOARDS2_READ_GET_ROW_DATA_INFO: Row: ", iIndex, " Column: ", scLB_DisplayedData.iReadColumns[i], " Value = ",scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].iColumnData[i])
#IF IS_DEBUG_BUILD
DEBUG_PRINT_SC_LB_RETURNED_VALUES(funcName,"Radius around player",iIndex,scLB_DisplayedData.iReadColumns[i],
scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].iColumnData[i],0.0,FALSE )
#ENDIF
ELSE
scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].fColumnData[i] = LEADERBOARDS2_READ_GET_ROW_DATA_FLOAT(iIndex, scLB_DisplayedData.iReadColumns[i])
println("LEADERBOARDS2_READ_GET_ROW_DATA_INFO: Row: ", iIndex, " Column: ", scLB_DisplayedData.iReadColumns[i], " Value = ",scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].fColumnData[i])
#IF IS_DEBUG_BUILD
DEBUG_PRINT_SC_LB_RETURNED_VALUES(funcName,"Radius around player",iIndex,scLB_DisplayedData.iReadColumns[i],
0,scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].fColumnData[i],TRUE )
#ENDIF
ENDIF
ENDREPEAT
//iOffsetRank = GET_OFFSET_FOR_RANK_BASED_ON_PREDICTED_PLAYER_POSITION(iSection,sclb_rank_predict.iRankBeforePrediction)
//scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].iRank = scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].iRank + iOffsetRank
//println(funcName,": rank prediction offseting rank by: ", iOffsetRank)
#IF IS_DEBUG_BUILD
PRINT_ROW_DATA(scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]])
#ENDIF
scLB_DisplayedData.iSectionEntries[iSection]++
println(funcName,": adding data to section number of entries now : ",scLB_DisplayedData.iSectionEntries[iSection] )
ELSE
println(funcName, " gamer hande is not valid or matches slot 0 ")
ENDIF
ENDIF
ENDIF
ENDIF
CLEAR_ROW_DATA_INFO_STRUCT(initRowData)
ENDFOR
LEADERBOARDS2_READ_GET_ROW_DATA_END( )
END_LEADERBOARD_READ(scLB_control.iTempLoadStage,scLB_control.bTempReadResult,scLB_control.ReadDataStruct)
IF bRankOneInRadius
println(funcName," --Rank 1 included in radius-- moving to stage 2 grabbed ")
IF scLB_DisplayedData.iPlayerIndexForSection[iSection] = -1
AND IS_RANK_PREDICTION_VALID_FOR_CURRENT_READ()
IF scLB_DisplayedData.iSectionEntries[iSection] >= 1
FILL_LEADERBOARD_ROW_WITH_COMBINED_PREDICTION_RESULT(scLB_control,scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]],
scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]-1].iRank+1 #IF IS_DEBUG_BUILD ,funcName,iSection #endif )
ELSE
FILL_LEADERBOARD_ROW_WITH_COMBINED_PREDICTION_RESULT(scLB_control,scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]],
1 #IF IS_DEBUG_BUILD ,funcName,iSection #endif )
ENDIF
scLB_DisplayedData.iPlayerIndexForSection[iSection] = scLB_DisplayedData.iSectionEntries[iSection]
println(funcName, "Adding player to index ", scLB_DisplayedData.iPlayerIndexForSection[iSection])
#IF IS_DEBUG_BUILD
IF scLB_DisplayedData.iSectionEntries[iSection] < 11
PRINT_ROW_DATA(scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]])
ENDIF
#ENDIF
scLB_DisplayedData.iSectionEntries[iSection]++
println(funcName,": adding data to section number of entries now : ",scLB_DisplayedData.iSectionEntries[iSection] )
ENDIF
scLB_control.iLoadStage[iSection] = 2
ELSE
println(funcName," -- moving to stage 1 grabbed ")
scLB_control.iLoadStage[iSection] = 1
ENDIF
ELSE
IF NOT bRankOneInRadius
scLB_DisplayedData.iSectionEntries[iSection]++
println(funcName,": adding data to section number of entries now (FAKE TO ALLOW 1st PLACE LATER) : ",scLB_DisplayedData.iSectionEntries[iSection] )
ENDIF
LEADERBOARDS2_READ_GET_ROW_DATA_END( )
END_LEADERBOARD_READ(scLB_control.iTempLoadStage,scLB_control.bTempReadResult,scLB_control.ReadDataStruct)
scLB_DisplayedData.iPlayerIndexForSection[iSection] = -1
scLB_control.iLoadStage[iSection] = 1
println(funcName," -- no data available for local player moving to stage 1(returned rows is 0)")
ENDIF
ELSE
//LEADERBOARDS2_READ_GET_ROW_DATA_END( )
END_LEADERBOARD_READ(scLB_control.iTempLoadStage,scLB_control.bTempReadResult,scLB_control.ReadDataStruct)
scLB_DisplayedData.iPlayerIndexForSection[iSection] = -1
scLB_control.iLoadStage[iSection] = 1
SET_BIT(scLB_DisplayedData.iReadFailedBS,iSection)
println(funcName," -- no data available for local player moving to stage 1 (READ FAILED) ")
ENDIF
ENDIF
BREAK
CASE 1
//ENDIF
IF scLB_DisplayedData.iPlayerIndexForSection[iSection] = -1
iRankRowsToRead = 11
ELSE
iRankRowsToRead = 1
ENDIF
IF START_SC_LEADERBOARD_READ_BY_RANK(scLB_control.iTempLoadStage,scLB_control.bTempReadResult,scLB_control.ReadDataStruct, 1,iRankRowsToRead)
#IF IS_DEBUG_BUILD
DEBUG_START_LEADERBOARD_PRINT_RESULTS(funcName,scLB_control.ReadDataStruct)
#ENDIF
FILL_READ_INFO_STRUCT(readInfo,scLB_control.ReadDataStruct)
IF scLB_control.bTempReadResult
AND LEADERBOARDS2_READ_GET_ROW_DATA_START(readInfo)
IF readInfo.m_ReturnedRows > 0
REPEAT readInfo.m_ReturnedRows i
println(funcName," start loop counter: ", i)
LEADERBOARDS2_READ_GET_ROW_DATA_INFO(i, initRowData)
IF IS_RANK_PREDICTION_VALID_FOR_CURRENT_READ()
//AND (ARE_STRINGS_EQUAL(initRowData.m_GamerName, GET_PLAYER_NAME(PLAYER_ID()))
//OR ARE_STRINGS_EQUAL(initRowData.m_GamerName,sclb_rank_predict.driverName))
AND (SCLB_CHECK_HANDLES_ARE_THE_SAME(initRowData.m_GamerHandle,localPlayerHandle)
OR SCLB_CHECK_HANDLES_ARE_THE_SAME(initRowData.m_GamerHandle,sclb_rank_predict.driverHandle))
println(funcName," data already in stored via rank prediction by passing")
ELSE
bReplaceFirstSlot = FALSE
IF scLB_DisplayedData.rowData[iSection][0].iRank > 1
OR scLB_DisplayedData.rowData[iSection][0].iRank <= 0
bReplaceFirstSlot = TRUE
println(funcName," replacing slot 0 as rank 1 is not in")
ENDIF
IF scLB_DisplayedData.iSectionEntries[iSection] < 11
OR bReplaceFirstSlot
IF i = 0
OR bReplaceFirstSlot
scLB_DisplayedData.rowData[iSection][0].tl23_ParticipantName = initRowData.m_GamerName
scLB_DisplayedData.rowData[iSection][0].playerGamerHandle = initRowData.m_GamerHandle
scLB_DisplayedData.rowData[iSection][0].iRank = initRowData.m_Rank
IF IS_SC_LEADERBOARD_A_RACE(scLB_control.ReadDataStruct.m_LeaderboardId)
println("LEADERBOARDS2_READ_GET_ROW_DATA_INFO: Row: ", 0, " Column: ", scLB_DisplayedData.iCustomVehicleColumn)
iCustomCar = LEADERBOARDS2_READ_GET_ROW_DATA_INT(0,scLB_DisplayedData.iCustomVehicleColumn)
IF iCustomCar = 1
scLB_DisplayedData.rowData[iSection][0].bCustomVehicle = TRUE
ELSE
scLB_DisplayedData.rowData[iSection][0].bCustomVehicle = FALSE
ENDIF
ENDIF
IF IS_SC_LEADERBOARD_A_RALLY(scLB_control.ReadDataStruct.m_LeaderboardId)
println("CODRIVER - initRowData.m_GroupSelector.m_Group[1].m_Id= ", initRowData.m_GroupSelector.m_Group[1].m_Id)
scLB_DisplayedData.rowData[iSection][0].tl31_CoDriver = initRowData.m_GroupSelector.m_Group[1].m_Id
ENDIF
scLB_DisplayedData.rowData[iSection][0].bValidData = TRUE
j = 0
REPEAT scLB_DisplayedData.iNumNonRankColumnsToDisplay j
println("LEADERBOARDS2_READ_GET_ROW_DATA_INFO: Row: ", i, " Column: ", scLB_DisplayedData.iReadColumns[j])
IF IS_BIT_SET(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[j])
//IF IS_LEADERBOARD_COLUMN_INT(scLB_control.ReadDataStruct.m_LeaderboardId,scLB_Control.ReadDataStruct.m_Type,scLB_DisplayedData.iReadColumns[i])
scLB_DisplayedData.rowData[iSection][i].iColumnData[j] = LEADERBOARDS2_READ_GET_ROW_DATA_INT(i, scLB_DisplayedData.iReadColumns[j])
#IF IS_DEBUG_BUILD
DEBUG_PRINT_SC_LB_RETURNED_VALUES(funcName,"Rank 1",i,scLB_DisplayedData.iReadColumns[j],
scLB_DisplayedData.rowData[iSection][i].iColumnData[j],0.0,FALSE )
#ENDIF
ELSE
scLB_DisplayedData.rowData[iSection][i].fColumnData[j] = LEADERBOARDS2_READ_GET_ROW_DATA_FLOAT(i, scLB_DisplayedData.iReadColumns[j])
#IF IS_DEBUG_BUILD
DEBUG_PRINT_SC_LB_RETURNED_VALUES(funcName,"Rank 1",i,scLB_DisplayedData.iReadColumns[j],
0,scLB_DisplayedData.rowData[iSection][i].fColumnData[j],TRUE )
#ENDIF
ENDIF
ENDREPEAT
IF scLB_DisplayedData.iSectionEntries[iSection] = 0
//iOffsetRank = GET_OFFSET_FOR_RANK_BASED_ON_PREDICTED_PLAYER_POSITION(iSection,sclb_rank_predict.iRankBeforePrediction)
//scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].iRank = scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].iRank + iOffsetRank
//println(funcName,": rank prediction offseting rank by: ", iOffsetRank)
#IF IS_DEBUG_BUILD
PRINT_ROW_DATA(scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]])
#ENDIF
IF bReplaceFirstSlot
println(funcName,": Replacing first entry with rank 1 player as it was not included")
ELSE
scLB_DisplayedData.iSectionEntries[iSection]++
ENDIF
println(funcName,": adding data to section number of entries now : ",scLB_DisplayedData.iSectionEntries[iSection] )
ELSE
//1943783
IF scLB_DisplayedData.iSectionEntries[iSection] = 1
AND scLB_DisplayedData.iPlayerIndexForSection[iSection] = -1
#IF IS_DEBUG_BUILD
PRINT_ROW_DATA(scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]])
#ENDIF
scLB_DisplayedData.iSectionEntries[iSection]++
println(funcName,": adding data to section number of entries now : ",scLB_DisplayedData.iSectionEntries[iSection] )
ENDIF
ENDIF
ELSE
IF scLB_DisplayedData.iSectionEntries[iSection] < 11
//Get data about row outside of getting data for each column?
scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].tl23_ParticipantName = initRowData.m_GamerName
scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].playerGamerHandle = initRowData.m_GamerHandle
IF IS_SC_LEADERBOARD_A_RACE(scLB_control.ReadDataStruct.m_LeaderboardId)
println("LEADERBOARDS2_READ_GET_ROW_DATA_INT: Row: ", i, " Column: ", scLB_DisplayedData.iCustomVehicleColumn)
iCustomCar = LEADERBOARDS2_READ_GET_ROW_DATA_INT(i,scLB_DisplayedData.iCustomVehicleColumn)
IF iCustomCar = 1
scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].bCustomVehicle = TRUE
ELSE
scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].bCustomVehicle = FALSE
ENDIF
ENDIF
IF IS_SC_LEADERBOARD_A_RALLY(scLB_control.ReadDataStruct.m_LeaderboardId)
println("CODRIVER - initRowData.m_GroupSelector.m_Group[1].m_Id= ", initRowData.m_GroupSelector.m_Group[1].m_Id)
scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].tl31_CoDriver = initRowData.m_GroupSelector.m_Group[1].m_Id
ENDIF
scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].iRank = initRowData.m_Rank
scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].bValidData = TRUE
j = 0
REPEAT scLB_DisplayedData.iNumNonRankColumnsToDisplay j
println("LEADERBOARDS2_READ_GET_ROW_DATA_INFO: Row: ", i, " Column: ", scLB_DisplayedData.iReadColumns[j])
IF IS_BIT_SET(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[j])
//IF IS_LEADERBOARD_COLUMN_INT(scLB_control.ReadDataStruct.m_LeaderboardId,scLB_Control.ReadDataStruct.m_Type,scLB_DisplayedData.iReadColumns[j])
scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].iColumnData[j] = LEADERBOARDS2_READ_GET_ROW_DATA_INT(i, scLB_DisplayedData.iReadColumns[j])
#IF IS_DEBUG_BUILD
DEBUG_PRINT_SC_LB_RETURNED_VALUES(funcName,"Radius around player",i,scLB_DisplayedData.iReadColumns[j],
scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].iColumnData[j],0.0,FALSE )
#ENDIF
ELSE
scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].fColumnData[j] = LEADERBOARDS2_READ_GET_ROW_DATA_FLOAT(i, scLB_DisplayedData.iReadColumns[j])
#IF IS_DEBUG_BUILD
DEBUG_PRINT_SC_LB_RETURNED_VALUES(funcName,"Radius around player",i,scLB_DisplayedData.iReadColumns[j],
0,scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].fColumnData[j],TRUE )
#ENDIF
ENDIF
ENDREPEAT
IF i != 0
//iOffsetRank = GET_OFFSET_FOR_RANK_BASED_ON_PREDICTED_PLAYER_POSITION(iSection,sclb_rank_predict.iRankBeforePrediction)
//scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].iRank = scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].iRank + iOffsetRank
//println(funcName,": rank prediction offseting rank by: ", iOffsetRank)
#IF IS_DEBUG_BUILD
PRINT_ROW_DATA(scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]])
#ENDIF
scLB_DisplayedData.iSectionEntries[iSection]++
println(funcName,": adding data to global section number of entries now : ",scLB_DisplayedData.iSectionEntries[iSection] )
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
CLEAR_ROW_DATA_INFO_STRUCT(initRowData)
//println("Looping through global data end loop counter: ", i)
ENDREPEAT
ENDIF
LEADERBOARDS2_READ_GET_ROW_DATA_END( )
END_LEADERBOARD_READ(scLB_control.iTempLoadStage,scLB_control.bTempReadResult,scLB_control.ReadDataStruct)
println(funcName," -- moving to stage 2 grabbed ")
scLB_control.iLoadStage[iSection] = 2
ELSE
SET_BIT(scLB_DisplayedData.iReadFailedBS,iSection)
println(funcName," -- moving to end no one in first so no data at all (READ FAILED) ")
//LEADERBOARDS2_READ_GET_ROW_DATA_END( )
END_LEADERBOARD_READ(scLB_control.iTempLoadStage,scLB_control.bTempReadResult,scLB_control.ReadDataStruct)
scLB_DisplayedData.iSectionEntries[iSection] = 0
scLB_control.iLoadStage[iSection] = 2
scLB_DisplayedData.iSectionEntries[SC_LB_SECTION_FRIEND] = 0
scLB_control.iLoadStage[SC_LB_SECTION_FRIEND] = 1
scLB_DisplayedData.iSectionEntries[SC_LB_SECTION_CREW] = 0
scLB_control.iLoadStage[SC_LB_SECTION_CREW] = 3
ENDIF
ENDIF
IF scLB_DisplayedData.iPlayerIndexForSection[iSection] = -1
AND IS_RANK_PREDICTION_VALID_FOR_CURRENT_READ()
IF scLB_DisplayedData.iSectionEntries[iSection] >= 1
FILL_LEADERBOARD_ROW_WITH_COMBINED_PREDICTION_RESULT(scLB_control,scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]],
scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]-1].iRank+1#IF IS_DEBUG_BUILD ,funcName,iSection #endif )
ELSE
FILL_LEADERBOARD_ROW_WITH_COMBINED_PREDICTION_RESULT(scLB_control,scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]],
1#IF IS_DEBUG_BUILD ,funcName,iSection #endif )
ENDIF
scLB_DisplayedData.iPlayerIndexForSection[iSection] = scLB_DisplayedData.iSectionEntries[iSection]
println(funcName, "Adding player to index ", scLB_DisplayedData.iPlayerIndexForSection[iSection])
#IF IS_DEBUG_BUILD
PRINT_ROW_DATA(scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]])
#ENDIF
scLB_DisplayedData.iSectionEntries[iSection]++
println(funcName,": adding data to section number of entries now : ",scLB_DisplayedData.iSectionEntries[iSection] )
ENDIF
BREAK
//Finished
CASE 2
println(funcName,": doing rank offset for prediction. Player's rank before prediction = ",sclb_rank_predict.iRankBeforePrediction )
CALCULATE_OFFSETS_FOR_RANK_BASED_ON_PREDICTED_PLAYER_POSITION(iSection,sclb_rank_predict.iRankBeforePrediction)
scLB_control.iLoadStage[iSection] = 3
BREAK
CASE 3
RETURN TRUE
BREAK
ENDSWITCH
RETURN FALSE
ENDFUNC
//Friend read
//Get all friend data including player - READ 1
//
//Loop through all friend data.
// Store rank 1
//
// Loop through until you find player then get rows above/below
// (there is probably a nicer way to do this but just to get things working again)
FUNC BOOL SOCIAL_CLUB_GET_FRIEND_LB_DATA(SC_LEADERBOARD_CONTROL_STRUCT& scLB_control )
//Leaderboard2ReadData emptyStruct
//LeaderboardRowData tempRowData[1]
LeaderboardRowData initRowData
LeaderboardReadInfo readInfo
INT i//, j
INT iNumOfFriends
INT iPlayerRow = -1
//INT iTotalRows
INT iRowStart
INT iIndex
INT iCustomCar
BOOL bIncludeLocalPlayer
#IF IS_DEBUG_BUILD
STRING funcName = "SOCIAL_CLUB_GET_FRIEND_LB_DATA"
#ENDIF
INT iSection = SC_LB_SECTION_FRIEND
//INT iOffsetRank
GAMER_HANDLE localPlayerHandle = GET_GAMER_HANDLE_PLAYER(PLAYER_ID())
SWITCH scLB_control.iLoadStage[SC_LB_SECTION_FRIEND]
CASE 0
//getting information about local player
iNumOfFriends = NETWORK_GET_FRIEND_COUNT()
//inited to -1
scLB_DisplayedData.iPlayerIndexForSection[SC_LB_SECTION_FRIEND] = -1
sclb_rank_predict.iRankBeforePrediction = -1
scLB_DisplayedData.iSectionEntries[iSection] = 0
IF iNumOfFriends > 0
IF IS_RANK_PREDICTION_VALID_FOR_CURRENT_READ()
bIncludeLocalPlayer= FALSE
ELSE
bIncludeLocalPlayer = TRUE
ENDIF
IF START_SC_LEADERBOARD_READ_FRIENDS_BY_ROW(scLB_control.iTempLoadStage,scLB_control.bTempReadResult,scLB_control.ReadDataStruct,scLB_control.groupHandle,scLB_control.groupHandle[0].m_NumGroups,bIncludeLocalPlayer,0,100)
#IF IS_DEBUG_BUILD
DEBUG_START_LEADERBOARD_PRINT_RESULTS("SOCIAL_CLUB_GET_FRIEND_LB_DATA",scLB_control.ReadDataStruct)
#ENDIF
FILL_READ_INFO_STRUCT(readInfo,scLB_control.ReadDataStruct)
IF scLB_control.bTempReadResult
AND LEADERBOARDS2_READ_GET_ROW_DATA_START(readInfo)
println("SOCIAL_CLUB_GET_FRIEND_LB_DATA returned ",readInfo.m_ReturnedRows ," rows. local player row: ",readInfo.m_LocalGamerRowNumber)
//RANK PREDICTION
IF IS_RANK_PREDICTION_VALID_FOR_CURRENT_READ()
iIndex = 0
REPEAT readInfo.m_ReturnedRows iIndex
IF iPlayerRow < 0
LEADERBOARDS2_READ_GET_ROW_DATA_INFO(iIndex, initRowData)
IF IS_SC_LEADERBOARD_A_RALLY(scLB_control.ReadDataStruct.m_LeaderboardId)
IF sclb_rank_predict.iRankBeforePrediction < 0
///IF ARE_STRINGS_EQUAL(initRowData.m_GamerName,sclb_rank_predict.driverName)
IF SCLB_CHECK_HANDLES_ARE_THE_SAME(initRowData.m_GamerHandle,sclb_rank_predict.driverHandle)
sclb_rank_predict.iRankBeforePrediction = initRowData.m_Rank
println(funcName, " setting players rank before prediction = ",sclb_rank_predict.iRankBeforePrediction)
ENDIF
ENDIF
ENDIF
IF IS_BIT_SET(sclb_rank_predict.currentResult.m_ColumnsBitSets,0)
println("Players score: ", sclb_rank_predict.combinedResult.m_iColumnData[0])
println("Returned Row# ",iIndex, " score: ", LEADERBOARDS2_READ_GET_ROW_DATA_INT(iIndex, 0))
IF sclb_rank_predict.combinedResult.m_iColumnData[0] >= LEADERBOARDS2_READ_GET_ROW_DATA_INT(iIndex, 0)
iPlayerRow = iIndex
println(funcName, " Players score is higher than returned result setting player row to ", iPlayerRow)
ENDIF
ELSE
println("Players score: ", sclb_rank_predict.combinedResult.m_fColumnData[0])
println("Returned Row# ",iIndex, " score: ", LEADERBOARDS2_READ_GET_ROW_DATA_FLOAT(iIndex, 0))
IF sclb_rank_predict.combinedResult.m_fColumnData[0] >= LEADERBOARDS2_READ_GET_ROW_DATA_FLOAT(iIndex, 0)
iPlayerRow = iIndex
println(funcName, " Players score is higher than returned result setting player row to ", iPlayerRow)
ENDIF
ENDIF
CLEAR_ROW_DATA_INFO_STRUCT(initRowData)
ENDIF
ENDREPEAT
IF iPlayerRow < 0
iPlayerRow = readInfo.m_ReturnedRows
ENDIF
ENDIF
iIndex = 0
//1st Place
IF IS_RANK_PREDICTION_VALID_FOR_CURRENT_READ()
AND iPlayerRow = 0
IF scLB_DisplayedData.iSectionEntries[iSection] < 11
FILL_LEADERBOARD_ROW_WITH_COMBINED_PREDICTION_RESULT(scLB_control,scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]],1#IF IS_DEBUG_BUILD ,funcName,iSection #endif )
//iPlayerRow = 0
scLB_DisplayedData.iPlayerIndexForSection[iSection] = 0
#IF IS_DEBUG_BUILD
PRINT_ROW_DATA(scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]])
#ENDIF
scLB_DisplayedData.iSectionEntries[iSection]++
println(funcName,": adding data to section number of entries now : ",scLB_DisplayedData.iSectionEntries[iSection] )
ENDIF
ENDIF
IF readInfo.m_ReturnedRows > 0
LEADERBOARDS2_READ_GET_ROW_DATA_INFO(0, initRowData)
IF IS_RANK_PREDICTION_VALID_FOR_CURRENT_READ()
//AND (ARE_STRINGS_EQUAL(initRowData.m_GamerName, GET_PLAYER_NAME(PLAYER_ID()))
//OR ARE_STRINGS_EQUAL(initRowData.m_GamerName,sclb_rank_predict.driverName))
AND (SCLB_CHECK_HANDLES_ARE_THE_SAME(initRowData.m_GamerHandle,localPlayerHandle)
OR SCLB_CHECK_HANDLES_ARE_THE_SAME(initRowData.m_GamerHandle,sclb_rank_predict.driverHandle))
ELSE
//1st Place
//Get data about row outside of getting data for each column?
//IF NOT ARE_STRINGS_EQUAL(initRowData.m_GamerName, "")
//AND scLB_DisplayedData.iSectionEntries[iSection] < 12
//IF ARE_STRINGS_EQUAL(initRowData.m_GamerName, GET_PLAYER_NAME(PLAYER_ID()))
IF IS_GAMER_HANDLE_VALID(initRowData.m_GamerHandle)
AND scLB_DisplayedData.iSectionEntries[iSection] < 11
IF SCLB_CHECK_HANDLES_ARE_THE_SAME(initRowData.m_GamerHandle,localPlayerHandle)
iPlayerRow = 0
scLB_DisplayedData.iPlayerIndexForSection[SC_LB_SECTION_FRIEND] = 0
ENDIF
scLB_DisplayedData.rowData[SC_LB_SECTION_FRIEND][scLB_DisplayedData.iSectionEntries[iSection]].tl23_ParticipantName = initRowData.m_GamerName
scLB_DisplayedData.rowData[SC_LB_SECTION_FRIEND][scLB_DisplayedData.iSectionEntries[iSection]].playerGamerHandle = initRowData.m_GamerHandle
scLB_DisplayedData.rowData[SC_LB_SECTION_FRIEND][scLB_DisplayedData.iSectionEntries[iSection]].iRank = 1
IF IS_SC_LEADERBOARD_A_RACE(scLB_control.ReadDataStruct.m_LeaderboardId)
println("LEADERBOARDS2_READ_GET_ROW_DATA_INFO: Row: ", scLB_DisplayedData.iSectionEntries[iSection], " Column: ", scLB_DisplayedData.iCustomVehicleColumn)
iCustomCar = LEADERBOARDS2_READ_GET_ROW_DATA_INT(0,scLB_DisplayedData.iCustomVehicleColumn)
IF iCustomCar = 1
scLB_DisplayedData.rowData[SC_LB_SECTION_FRIEND][scLB_DisplayedData.iSectionEntries[iSection]].bCustomVehicle = TRUE
ELSE
scLB_DisplayedData.rowData[SC_LB_SECTION_FRIEND][scLB_DisplayedData.iSectionEntries[iSection]].bCustomVehicle = FALSE
ENDIF
ENDIF
IF IS_SC_LEADERBOARD_A_RALLY(scLB_control.ReadDataStruct.m_LeaderboardId)
println("CODRIVER - initRowData.m_GroupSelector.m_Group[1].m_Id= ", initRowData.m_GroupSelector.m_Group[1].m_Id)
scLB_DisplayedData.rowData[SC_LB_SECTION_FRIEND][scLB_DisplayedData.iSectionEntries[iSection]].tl31_CoDriver = initRowData.m_GroupSelector.m_Group[1].m_Id
ENDIF
scLB_DisplayedData.rowData[SC_LB_SECTION_FRIEND][scLB_DisplayedData.iSectionEntries[iSection]].bValidData = TRUE
REPEAT scLB_DisplayedData.iNumNonRankColumnsToDisplay i
println("LEADERBOARDS2_READ_GET_ROW_DATA_INFO: Row: ", scLB_DisplayedData.iSectionEntries[iSection], " Column: ", scLB_DisplayedData.iReadColumns[i])
IF IS_BIT_SET(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[i])
//IF IS_LEADERBOARD_COLUMN_INT(scLB_control.ReadDataStruct.m_LeaderboardId,scLB_Control.ReadDataStruct.m_Type,scLB_DisplayedData.iReadColumns[i])
scLB_DisplayedData.rowData[SC_LB_SECTION_FRIEND][scLB_DisplayedData.iSectionEntries[iSection]].iColumnData[i] = LEADERBOARDS2_READ_GET_ROW_DATA_INT(0, scLB_DisplayedData.iReadColumns[i])
#IF IS_DEBUG_BUILD
DEBUG_PRINT_SC_LB_RETURNED_VALUES("SOCIAL_CLUB_GET_FRIEND_LB_DATA","row: ",scLB_DisplayedData.iSectionEntries[iSection],scLB_DisplayedData.iReadColumns[i],
scLB_DisplayedData.rowData[SC_LB_SECTION_FRIEND][scLB_DisplayedData.iSectionEntries[iSection]].iColumnData[i],0.0,FALSE )
#ENDIF
ELSE
scLB_DisplayedData.rowData[SC_LB_SECTION_FRIEND][scLB_DisplayedData.iSectionEntries[iSection]].fColumnData[i] = LEADERBOARDS2_READ_GET_ROW_DATA_FLOAT(0, scLB_DisplayedData.iReadColumns[i])
#IF IS_DEBUG_BUILD
DEBUG_PRINT_SC_LB_RETURNED_VALUES("SOCIAL_CLUB_GET_FRIEND_LB_DATA","row: ",scLB_DisplayedData.iSectionEntries[iSection],scLB_DisplayedData.iReadColumns[i],
0,scLB_DisplayedData.rowData[SC_LB_SECTION_FRIEND][scLB_DisplayedData.iSectionEntries[iSection]].fColumnData[i],TRUE )
#ENDIF
ENDIF
ENDREPEAT
//iOffsetRank = GET_OFFSET_FOR_RANK_BASED_ON_PREDICTED_PLAYER_POSITION(iSection,sclb_rank_predict.iRankBeforePrediction)
//scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].iRank = scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].iRank + iOffsetRank
//println(funcName,": rank prediction offseting rank by: ", iOffsetRank)
#IF IS_DEBUG_BUILD
PRINT_ROW_DATA(scLB_DisplayedData.rowData[SC_LB_SECTION_FRIEND][scLB_DisplayedData.iSectionEntries[iSection]])
#ENDIF
scLB_DisplayedData.iSectionEntries[SC_LB_SECTION_FRIEND]++
println("SOCIAL_CLUB_GET_FRIEND_LB_DATA: adding data to section number of entries now (FIRST) : ",scLB_DisplayedData.iSectionEntries[SC_LB_SECTION_FRIEND] )
ELSE
CLEAR_ROW_DATA_INFO_STRUCT(initRowData)
LEADERBOARDS2_READ_GET_ROW_DATA_END( )
END_LEADERBOARD_READ(scLB_control.iTempLoadStage,scLB_control.bTempReadResult,scLB_control.ReadDataStruct)
println("SOCIAL_CLUB_GET_FRIEND_LB_DATA no friends data skiping to end stage 1 (no one in 1st)")
scLB_DisplayedData.iSectionEntries[SC_LB_SECTION_FRIEND] = 0
scLB_control.iLoadStage[SC_LB_SECTION_FRIEND] = 1
IF scLB_DisplayedData.iPlayerIndexForSection[iSection] = -1
AND IS_RANK_PREDICTION_VALID_FOR_CURRENT_READ()
IF scLB_DisplayedData.iSectionEntries[iSection] >= 1
FILL_LEADERBOARD_ROW_WITH_COMBINED_PREDICTION_RESULT(scLB_control,scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]],
scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]-1].iRank+1#IF IS_DEBUG_BUILD ,funcName,iSection #endif )
ELSE
FILL_LEADERBOARD_ROW_WITH_COMBINED_PREDICTION_RESULT(scLB_control,scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]],
1#IF IS_DEBUG_BUILD ,funcName,iSection #endif )
ENDIF
scLB_DisplayedData.iPlayerIndexForSection[iSection] = scLB_DisplayedData.iSectionEntries[iSection]
println(funcName, "Adding player to index ", scLB_DisplayedData.iPlayerIndexForSection[iSection])
#IF IS_DEBUG_BUILD
PRINT_ROW_DATA(scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]])
#ENDIF
scLB_DisplayedData.iSectionEntries[iSection]++
println(funcName,": adding data to section number of entries now : ",scLB_DisplayedData.iSectionEntries[iSection] )
ENDIF
RETURN FALSE
ENDIF
ENDIF
CLEAR_ROW_DATA_INFO_STRUCT(initRowData)
ELSE
//IF IS_RANK_PREDICTION_VALID_FOR_CURRENT_READ()
// FILL_LEADERBOARD_ROW_WITH_COMBINED_PREDICTION_RESULT(funcName,scLB_control,scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]],1)
// scLB_DisplayedData.iPlayerIndexForSection[iSection] = scLB_DisplayedData.iSectionEntries[iSection]
// println(funcName, "Adding player to index ", scLB_DisplayedData.iPlayerIndexForSection[iSection])
// #IF IS_DEBUG_BUILD
// PRINT_ROW_DATA(scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]])
// #ENDIF
// scLB_DisplayedData.iSectionEntries[iSection]++
// println(funcName,": adding data to section number of entries now : ",scLB_DisplayedData.iSectionEntries[iSection] )
//ELSE
scLB_DisplayedData.iSectionEntries[SC_LB_SECTION_FRIEND] = 0
println("SOCIAL_CLUB_GET_FRIEND_LB_DATA no friends data skiping to end stage 1 (no one in 1st no row returned)")
//ENDIF
CLEAR_ROW_DATA_INFO_STRUCT(initRowData)
LEADERBOARDS2_READ_GET_ROW_DATA_END( )
END_LEADERBOARD_READ(scLB_control.iTempLoadStage,scLB_control.bTempReadResult,scLB_control.ReadDataStruct)
IF scLB_DisplayedData.iPlayerIndexForSection[iSection] = -1
AND IS_RANK_PREDICTION_VALID_FOR_CURRENT_READ()
IF scLB_DisplayedData.iSectionEntries[iSection] >= 1
FILL_LEADERBOARD_ROW_WITH_COMBINED_PREDICTION_RESULT(scLB_control,scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]],
scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]-1].iRank+1#IF IS_DEBUG_BUILD ,funcName,iSection #endif )
ELSE
FILL_LEADERBOARD_ROW_WITH_COMBINED_PREDICTION_RESULT(scLB_control,scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]],
1#IF IS_DEBUG_BUILD ,funcName,iSection #endif )
ENDIF
scLB_DisplayedData.iPlayerIndexForSection[iSection] = scLB_DisplayedData.iSectionEntries[iSection]
println(funcName, "Adding player to index ", scLB_DisplayedData.iPlayerIndexForSection[iSection])
#IF IS_DEBUG_BUILD
PRINT_ROW_DATA(scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]])
#ENDIF
scLB_DisplayedData.iSectionEntries[iSection]++
println(funcName,": adding data to section number of entries now : ",scLB_DisplayedData.iSectionEntries[iSection] )
ENDIF
scLB_control.iLoadStage[SC_LB_SECTION_FRIEND] = 1
RETURN FALSE
ENDIF
IF NOT IS_RANK_PREDICTION_VALID_FOR_CURRENT_READ()
iPlayerRow = readInfo.m_LocalGamerRowNumber
ENDIF
//IF iPlayerRow = -1
//OR iPlayerRow < 7
// iRankStart = 2
//ELSE
IF iPlayerRow > 6
iRowStart = iPlayerRow - 6
ELSE
iRowStart = 1
ENDIF
//ENDIF
iIndex = iRowStart
println(funcName, " iRowStart = ", iRowStart)
FOR iIndex = iRowStart TO readInfo.m_ReturnedRows-1
println(funcName, ": looking at details for returned row of index: ",iIndex, " columnBS: ",scLB_DisplayedData.iReadColumnIsIntBS)
LEADERBOARDS2_READ_GET_ROW_DATA_INFO(iIndex, initRowData)
IF scLB_DisplayedData.iSectionEntries[iSection] < 11
AND initRowData.m_Rank > 1
//Get data about row outside of getting data for each column?
IF IS_RANK_PREDICTION_VALID_FOR_CURRENT_READ()
AND iPlayerRow = iIndex
//IF NOT ARE_STRINGS_EQUAL(scLB_DisplayedData.rowData[iSection][0].tl23_ParticipantName,GET_PLAYER_NAME(PLAYER_ID()))
IF NOT SCLB_CHECK_HANDLES_ARE_THE_SAME(scLB_DisplayedData.rowData[iSection][0].playerGamerHandle,localPlayerHandle)
FILL_LEADERBOARD_ROW_WITH_COMBINED_PREDICTION_RESULT(scLB_control,scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]],initRowData.m_Rank #IF IS_DEBUG_BUILD ,funcName,iSection #endif )
scLB_DisplayedData.rowData[SC_LB_SECTION_FRIEND][scLB_DisplayedData.iSectionEntries[SC_LB_SECTION_FRIEND]].iRank = iIndex +1
scLB_DisplayedData.iPlayerIndexForSection[iSection] = scLB_DisplayedData.iSectionEntries[iSection]
println(funcName, "Adding player to index ", scLB_DisplayedData.iPlayerIndexForSection[iSection])
#IF IS_DEBUG_BUILD
PRINT_ROW_DATA(scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]])
#ENDIF
scLB_DisplayedData.iSectionEntries[iSection]++
println(funcName,": adding data to section number of entries now : ",scLB_DisplayedData.iSectionEntries[iSection] )
ENDIF
ENDIF
IF IS_RANK_PREDICTION_VALID_FOR_CURRENT_READ()
//AND (ARE_STRINGS_EQUAL(initRowData.m_GamerName, GET_PLAYER_NAME(PLAYER_ID()))
//OR ARE_STRINGS_EQUAL(initRowData.m_GamerName,sclb_rank_predict.driverName))
AND (SCLB_CHECK_HANDLES_ARE_THE_SAME(initRowData.m_GamerHandle,localPlayerHandle)
OR SCLB_CHECK_HANDLES_ARE_THE_SAME(initRowData.m_GamerHandle,sclb_rank_predict.driverHandle))
ELSE
IF scLB_DisplayedData.iSectionEntries[SC_LB_SECTION_FRIEND] < 12
//IF NOT ARE_STRINGS_EQUAL(initRowData.m_GamerName, "")
//AND NOT ARE_STRINGS_EQUAL(scLB_DisplayedData.rowData[SC_LB_SECTION_FRIEND][0].tl23_ParticipantName,initRowData.m_GamerName)
//IF ARE_STRINGS_EQUAL(GET_PLAYER_NAME(PLAYER_ID()),initRowData.m_GamerName)
IF IS_GAMER_HANDLE_VALID(initRowData.m_GamerHandle)
AND NOT SCLB_CHECK_HANDLES_ARE_THE_SAME(initRowData.m_GamerHandle,scLB_DisplayedData.rowData[iSection][0].playerGamerHandle)
IF SCLB_CHECK_HANDLES_ARE_THE_SAME(initRowData.m_GamerHandle,localPlayerHandle)
IF scLB_DisplayedData.iPlayerIndexForSection[SC_LB_SECTION_FRIEND] < 0
scLB_DisplayedData.iPlayerIndexForSection[SC_LB_SECTION_FRIEND] = scLB_DisplayedData.iSectionEntries[SC_LB_SECTION_FRIEND]
ENDIF
ENDIF
scLB_DisplayedData.rowData[SC_LB_SECTION_FRIEND][scLB_DisplayedData.iSectionEntries[SC_LB_SECTION_FRIEND]].tl23_ParticipantName = initRowData.m_GamerName
scLB_DisplayedData.rowData[SC_LB_SECTION_FRIEND][scLB_DisplayedData.iSectionEntries[SC_LB_SECTION_FRIEND]].playerGamerHandle = initRowData.m_GamerHandle
scLB_DisplayedData.rowData[SC_LB_SECTION_FRIEND][scLB_DisplayedData.iSectionEntries[SC_LB_SECTION_FRIEND]].iRank = iIndex +1
scLB_DisplayedData.rowData[SC_LB_SECTION_FRIEND][scLB_DisplayedData.iSectionEntries[SC_LB_SECTION_FRIEND]].bValidData = TRUE
IF IS_SC_LEADERBOARD_A_RACE(scLB_control.ReadDataStruct.m_LeaderboardId)
println("LEADERBOARDS2_READ_GET_ROW_DATA_INFO: Row: ", iIndex, " Column: ", scLB_DisplayedData.iCustomVehicleColumn)
iCustomCar = LEADERBOARDS2_READ_GET_ROW_DATA_INT(iIndex, scLB_DisplayedData.iCustomVehicleColumn)
IF iCustomCar = 1
scLB_DisplayedData.rowData[SC_LB_SECTION_FRIEND][scLB_DisplayedData.iSectionEntries[SC_LB_SECTION_FRIEND]].bCustomVehicle = TRUE
ELSE
scLB_DisplayedData.rowData[SC_LB_SECTION_FRIEND][scLB_DisplayedData.iSectionEntries[SC_LB_SECTION_FRIEND]].bCustomVehicle = FALSE
ENDIF
ENDIF
IF IS_SC_LEADERBOARD_A_RALLY(scLB_control.ReadDataStruct.m_LeaderboardId)
println("CODRIVER- initRowData.m_GroupSelector.m_Group[1].m_Id= ", initRowData.m_GroupSelector.m_Group[1].m_Id)
scLB_DisplayedData.rowData[SC_LB_SECTION_FRIEND][scLB_DisplayedData.iSectionEntries[SC_LB_SECTION_FRIEND]].tl31_CoDriver = initRowData.m_GroupSelector.m_Group[1].m_Id
ENDIF
REPEAT scLB_DisplayedData.iNumNonRankColumnsToDisplay i
println("LEADERBOARDS2_READ_GET_ROW_DATA_INFO: Row: ", iIndex, " Column: ", scLB_DisplayedData.iReadColumns[i])
IF IS_BIT_SET(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[i])
//IF IS_LEADERBOARD_COLUMN_INT(scLB_control.ReadDataStruct.m_LeaderboardId,scLB_Control.ReadDataStruct.m_Type,scLB_DisplayedData.iReadColumns[i])
scLB_DisplayedData.rowData[SC_LB_SECTION_FRIEND][scLB_DisplayedData.iSectionEntries[SC_LB_SECTION_FRIEND]].iColumnData[i] = LEADERBOARDS2_READ_GET_ROW_DATA_INT(iIndex, scLB_DisplayedData.iReadColumns[i])
#IF IS_DEBUG_BUILD
DEBUG_PRINT_SC_LB_RETURNED_VALUES("SOCIAL_CLUB_GET_FRIEND_LB_DATA","Radius around player",iIndex,scLB_DisplayedData.iReadColumns[i],
scLB_DisplayedData.rowData[SC_LB_SECTION_FRIEND][0].iColumnData[i],0.0,FALSE )
#ENDIF
ELSE
scLB_DisplayedData.rowData[SC_LB_SECTION_FRIEND][scLB_DisplayedData.iSectionEntries[SC_LB_SECTION_FRIEND]].fColumnData[i] = LEADERBOARDS2_READ_GET_ROW_DATA_FLOAT(iIndex, scLB_DisplayedData.iReadColumns[i])
#IF IS_DEBUG_BUILD
DEBUG_PRINT_SC_LB_RETURNED_VALUES("SOCIAL_CLUB_GET_FRIEND_LB_DATA","Radius around player",iIndex,scLB_DisplayedData.iReadColumns[i],
0,scLB_DisplayedData.rowData[SC_LB_SECTION_FRIEND][0].fColumnData[i],TRUE )
#ENDIF
ENDIF
ENDREPEAT
//iOffsetRank = GET_OFFSET_FOR_RANK_BASED_ON_PREDICTED_PLAYER_POSITION(iSection,sclb_rank_predict.iRankBeforePrediction)
//scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].iRank = scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].iRank + iOffsetRank
//println(funcName,": rank prediction offseting rank by: ", iOffsetRank)
#IF IS_DEBUG_BUILD
PRINT_ROW_DATA(scLB_DisplayedData.rowData[SC_LB_SECTION_FRIEND][scLB_DisplayedData.iSectionEntries[SC_LB_SECTION_FRIEND]])
#ENDIF
scLB_DisplayedData.iSectionEntries[SC_LB_SECTION_FRIEND]++
println("SOCIAL_CLUB_GET_FRIEND_LB_DATA: (IN LOOP) adding data to section number of entries now : ",scLB_DisplayedData.iSectionEntries[SC_LB_SECTION_FRIEND] )
ENDIF
ENDIF
ENDIF
ENDIF
CLEAR_ROW_DATA_INFO_STRUCT(initRowData)
ENDFOR
LEADERBOARDS2_READ_GET_ROW_DATA_END( )
END_LEADERBOARD_READ(scLB_control.iTempLoadStage,scLB_control.bTempReadResult,scLB_control.ReadDataStruct)
println("SOCIAL_CLUB_GET_FRIEND_LB_DATA -- moving to stage 1")
scLB_control.iLoadStage[SC_LB_SECTION_FRIEND] = 1
IF scLB_DisplayedData.iPlayerIndexForSection[iSection] = -1
AND IS_RANK_PREDICTION_VALID_FOR_CURRENT_READ()
IF scLB_DisplayedData.iSectionEntries[iSection] >= 1
FILL_LEADERBOARD_ROW_WITH_COMBINED_PREDICTION_RESULT(scLB_control,scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]],
scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]-1].iRank+1#IF IS_DEBUG_BUILD ,funcName,iSection #endif )
ELSE
FILL_LEADERBOARD_ROW_WITH_COMBINED_PREDICTION_RESULT(scLB_control,scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]],
1#IF IS_DEBUG_BUILD ,funcName,iSection #endif )
ENDIF
scLB_DisplayedData.iPlayerIndexForSection[iSection] = scLB_DisplayedData.iSectionEntries[iSection]
println(funcName, "Adding player to index ", scLB_DisplayedData.iPlayerIndexForSection[iSection])
#IF IS_DEBUG_BUILD
PRINT_ROW_DATA(scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]])
#ENDIF
scLB_DisplayedData.iSectionEntries[iSection]++
println(funcName,": adding data to section number of entries now : ",scLB_DisplayedData.iSectionEntries[iSection] )
ENDIF
RETURN FALSE
ELSE
END_LEADERBOARD_READ(scLB_control.iTempLoadStage,scLB_control.bTempReadResult,scLB_control.ReadDataStruct)
scLB_DisplayedData.iSectionEntries[1] = 0
scLB_control.iLoadStage[SC_LB_SECTION_FRIEND] = 1
SET_BIT(scLB_DisplayedData.iReadFailedBS,SC_LB_SECTION_FRIEND)
println("SOCIAL_CLUB_GET_FRIEND_LB_DATA"," -- moving to end no one in first so no data at all (READ FAILED) ")
RETURN FALSE
ENDIF
ENDIF
ELSE
println("SOCIAL_CLUB_GET_FRIEND_LB_DATA no friends data skiping to end stage 1 (friend count is 0)")
END_LEADERBOARD_READ(scLB_control.iTempLoadStage,scLB_control.bTempReadResult,scLB_control.ReadDataStruct)
scLB_DisplayedData.iSectionEntries[SC_LB_SECTION_FRIEND] = 0
scLB_control.iLoadStage[SC_LB_SECTION_FRIEND] = 1
RETURN FALSE
ENDIF
BREAK
CASE 1
println(funcName,": doing rank offset for prediction" )
CALCULATE_OFFSETS_FOR_RANK_BASED_ON_PREDICTED_PLAYER_POSITION(iSection,sclb_rank_predict.iRankBeforePrediction)
scLB_control.iLoadStage[SC_LB_SECTION_FRIEND] = 2
BREAK
CASE 2
RETURN TRUE
BREAK
ENDSWITCH
RETURN FALSE
ENDFUNC
FUNC BOOL SOCIAL_CLUB_GET_CREW_LB_DATA(SC_LEADERBOARD_CONTROL_STRUCT& scLB_control )
//GAMER_HANDLE gamerHandle
LeaderboardRowData initRowData
LeaderboardReadInfo readInfo
//INT iRankStart
INT i, j
INT iCustomCar
INT iPlayerRow = -1
INT iRowStart
INT iIndex
//
BOOL bRankOneInRadius
#IF IS_DEBUG_BUILD
STRING funcName = "SOCIAL_CLUB_GET_CREW_LB_DATA"
#ENDIF
INT iSection = SC_LB_SECTION_CREW
BOOL bReplaceFirstSlot
INT iRankRowsToRead
//INT iOffsetRank
GAMER_HANDLE localPlayerHandle = GET_GAMER_HANDLE_PLAYER(PLAYER_ID())
SWITCH scLB_control.iLoadStage[iSection]
CASE 0
scLB_DisplayedData.iPlayerIndexForSection[iSection] = -1
scLB_DisplayedData.iSectionEntries[iSection] = 0
sclb_rank_predict.iRankBeforePrediction = -1
IF NETWORK_CLAN_SERVICE_IS_VALID()
//gamerHandle = GET_GAMER_HANDLE_PLAYER(PLAYER_ID())
IF NETWORK_CLAN_PLAYER_IS_ACTIVE(localPlayerHandle)
IF NETWORK_CLAN_PLAYER_GET_DESC(scLB_control.localPlayerClanInfo, SIZE_OF(scLB_control.localPlayerClanInfo), localPlayerHandle)
println(funcName," moving to stage 1 ")
scLB_control.ReadDataStruct.m_ClanId = scLB_control.localPlayerClanInfo.Id
scLB_control.ReadDataStruct.m_type = LEADERBOARD2_TYPE_CLAN_MEMBER
scLB_control.iLoadStage[iSection] = 1
RETURN FALSE
ENDIF
ELSE
println(funcName," moving to stage 3 NETWORK_CLAN_PLAYER_IS_ACTIVE is false")
scLB_control.iLoadStage[iSection] = 3
RETURN TRUE
ENDIF
ELSE
println(funcName," moving to stage 3 NETWORK_CLAN_SERVICE_IS_VALID is false")
scLB_control.iLoadStage[iSection] = 3
RETURN TRUE
ENDIF
BREAK
//radius around player
CASE 1
//gamerHandle = GET_GAMER_HANDLE_PLAYER(PLAYER_ID())
scLB_control.ReadDataStruct.m_type = LEADERBOARD2_TYPE_CLAN_MEMBER
readInfo.m_LeaderboardId = scLB_control.ReadDataStruct.m_LeaderboardId
readInfo.m_LeaderboardType = ENUM_TO_INT(scLB_control.ReadDataStruct.m_type)
IF START_SC_LEADERBOARD_READ_BY_RADIUS(scLB_control.iTempLoadStage,scLB_control.bTempReadResult,scLB_control.ReadDataStruct,11,localPlayerHandle,IS_RANK_PREDICTION_VALID_FOR_CURRENT_READ())
#IF IS_DEBUG_BUILD
DEBUG_START_LEADERBOARD_PRINT_RESULTS(funcName,scLB_control.ReadDataStruct)
#ENDIF
FILL_READ_INFO_STRUCT(readInfo,scLB_control.ReadDataStruct)
IF scLB_control.bTempReadResult
AND LEADERBOARDS2_READ_GET_ROW_DATA_START(readInfo)
println(funcName, ":readInfo.m_LocalGamerRowNumber = ",readInfo.m_LocalGamerRowNumber)
IF readInfo.m_ReturnedRows > 0
iIndex = 0
i = 0
//RANK PREDICTION
IF IS_RANK_PREDICTION_VALID_FOR_CURRENT_READ()
REPEAT readInfo.m_ReturnedRows iIndex
LEADERBOARDS2_READ_GET_ROW_DATA_INFO(iIndex, initRowData)
IF sclb_rank_predict.iRankBeforePrediction < 0
//IF ARE_STRINGS_EQUAL(initRowData.m_GamerName, GET_PLAYER_NAME(PLAYER_ID()))
//OR ARE_STRINGS_EQUAL(initRowData.m_GamerName,sclb_rank_predict.driverName)
IF SCLB_CHECK_HANDLES_ARE_THE_SAME(initRowData.m_GamerHandle,localPlayerHandle)
OR SCLB_CHECK_HANDLES_ARE_THE_SAME(initRowData.m_GamerHandle,sclb_rank_predict.driverHandle)
sclb_rank_predict.iRankBeforePrediction = initRowData.m_Rank
println(funcName, " setting players rank before prediction = ",sclb_rank_predict.iRankBeforePrediction)
ENDIF
ENDIF
IF iPlayerRow < 0
IF IS_BIT_SET(sclb_rank_predict.currentResult.m_ColumnsBitSets,0)
println("Players score: ", sclb_rank_predict.combinedResult.m_iColumnData[0])
println("Returned Row# ",iIndex, " score: ", LEADERBOARDS2_READ_GET_ROW_DATA_INT(iIndex, 0))
IF sclb_rank_predict.combinedResult.m_iColumnData[0] >= LEADERBOARDS2_READ_GET_ROW_DATA_INT(iIndex, 0)
iPlayerRow = iIndex
println(funcName, " Players score is higher than returned result setting player row to ", iPlayerRow)
ENDIF
ELSE
println("Players score: ", sclb_rank_predict.combinedResult.m_fColumnData[0])
println("Returned Row# ",iIndex, " score: ", LEADERBOARDS2_READ_GET_ROW_DATA_FLOAT(iIndex, 0))
IF sclb_rank_predict.combinedResult.m_fColumnData[0] >= LEADERBOARDS2_READ_GET_ROW_DATA_FLOAT(iIndex, 0)
iPlayerRow = iIndex
println(funcName, " Players score is higher than returned result setting player row to ", iPlayerRow)
ENDIF
ENDIF
ENDIF
CLEAR_ROW_DATA_INFO_STRUCT(initRowData)
ENDREPEAT
IF iPlayerRow < 0
iPlayerRow = readInfo.m_ReturnedRows
ENDIF
ENDIF
iIndex = 0
LEADERBOARDS2_READ_GET_ROW_DATA_INFO(0, initRowData)
IF initRowData.m_Rank <= 1
//OR (iPlayerRow = 0 AND initRowData.m_Rank <= 2)
println(funcName, ": Rank 1 included in radius search grabbing now")
IF scLB_DisplayedData.iSectionEntries[iSection] < 11
IF IS_RANK_PREDICTION_VALID_FOR_CURRENT_READ()
AND iPlayerRow = 0
FILL_LEADERBOARD_ROW_WITH_COMBINED_PREDICTION_RESULT(scLB_control,scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]],initRowData.m_Rank#IF IS_DEBUG_BUILD ,funcName,iSection #endif )
//iPlayerRow = 0
scLB_DisplayedData.iPlayerIndexForSection[iSection] = 0
#IF IS_DEBUG_BUILD
PRINT_ROW_DATA(scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]])
#ENDIF
println(funcName, "Adding player to index ", scLB_DisplayedData.iPlayerIndexForSection[iSection])
scLB_DisplayedData.iSectionEntries[iSection]++
println(funcName,": adding data to section number of entries now : ",scLB_DisplayedData.iSectionEntries[iSection] )
ENDIF
IF IS_RANK_PREDICTION_VALID_FOR_CURRENT_READ()
//AND (ARE_STRINGS_EQUAL(initRowData.m_GamerName, GET_PLAYER_NAME(PLAYER_ID()))
//OR ARE_STRINGS_EQUAL(initRowData.m_GamerName,sclb_rank_predict.driverName))
AND (SCLB_CHECK_HANDLES_ARE_THE_SAME(initRowData.m_GamerHandle,localPlayerHandle)
OR SCLB_CHECK_HANDLES_ARE_THE_SAME(initRowData.m_GamerHandle,sclb_rank_predict.driverHandle))
ELSE
//1st Place
//IF ARE_STRINGS_EQUAL(initRowData.m_GamerName, GET_PLAYER_NAME(PLAYER_ID()))
IF SCLB_CHECK_HANDLES_ARE_THE_SAME(initRowData.m_GamerHandle,localPlayerHandle)
iPlayerRow = 0
scLB_DisplayedData.iPlayerIndexForSection[iSection] = 0
ENDIF
scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].tl23_ParticipantName = initRowData.m_GamerName
scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].playerGamerHandle = initRowData.m_GamerHandle
scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].iRank = initRowData.m_Rank
IF IS_SC_LEADERBOARD_A_RACE(scLB_control.ReadDataStruct.m_LeaderboardId)
println("LEADERBOARDS2_READ_GET_ROW_DATA_INFO: Row: ", scLB_DisplayedData.iSectionEntries[iSection], " Column: ", scLB_DisplayedData.iCustomVehicleColumn)
iCustomCar = LEADERBOARDS2_READ_GET_ROW_DATA_INT(0,scLB_DisplayedData.iCustomVehicleColumn)
IF iCustomCar = 1
scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].bCustomVehicle = TRUE
ELSE
scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].bCustomVehicle = FALSE
ENDIF
ENDIF
IF IS_SC_LEADERBOARD_A_RALLY(scLB_control.ReadDataStruct.m_LeaderboardId)
println("CODRIVER - initRowData.m_GroupSelector.m_Group[1].m_Id= ", initRowData.m_GroupSelector.m_Group[1].m_Id)
scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].tl31_CoDriver = initRowData.m_GroupSelector.m_Group[1].m_Id
ENDIF
scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].bValidData = TRUE
j = 0
REPEAT scLB_DisplayedData.iNumNonRankColumnsToDisplay j
println("LEADERBOARDS2_READ_GET_ROW_DATA_INFO: Row: ", scLB_DisplayedData.iSectionEntries[iSection], " Column: ", scLB_DisplayedData.iReadColumns[j])
IF IS_BIT_SET(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[j])
//IF IS_LEADERBOARD_COLUMN_INT(scLB_control.ReadDataStruct.m_LeaderboardId,scLB_Control.ReadDataStruct.m_Type,scLB_DisplayedData.iReadColumns[i])
scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].iColumnData[j] = LEADERBOARDS2_READ_GET_ROW_DATA_INT(0, scLB_DisplayedData.iReadColumns[j])
#IF IS_DEBUG_BUILD
DEBUG_PRINT_SC_LB_RETURNED_VALUES(funcName,"Row: ",scLB_DisplayedData.iSectionEntries[iSection],scLB_DisplayedData.iReadColumns[j],
scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].iColumnData[j],0.0,FALSE )
#ENDIF
ELSE
scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].fColumnData[j] = LEADERBOARDS2_READ_GET_ROW_DATA_FLOAT(0, scLB_DisplayedData.iReadColumns[j])
#IF IS_DEBUG_BUILD
DEBUG_PRINT_SC_LB_RETURNED_VALUES(funcName,"Row: ",scLB_DisplayedData.iSectionEntries[iSection],scLB_DisplayedData.iReadColumns[j],
0,scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].fColumnData[j],TRUE )
#ENDIF
ENDIF
ENDREPEAT
//iOffsetRank = GET_OFFSET_FOR_RANK_BASED_ON_PREDICTED_PLAYER_POSITION(iSection,sclb_rank_predict.iRankBeforePrediction)
//scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].iRank = scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].iRank + iOffsetRank
//println(funcName,": rank prediction offseting rank by: ", iOffsetRank)
#IF IS_DEBUG_BUILD
PRINT_ROW_DATA(scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]])
#ENDIF
scLB_DisplayedData.iSectionEntries[iSection]++
println(funcName,": adding data to section number of entries now : ",scLB_DisplayedData.iSectionEntries[iSection] )
ENDIF
bRankOneInRadius = TRUE
ENDIF
ENDIF
IF NOT bRankOneInRadius
scLB_DisplayedData.iSectionEntries[iSection]++
println(funcName,": adding data to section number of entries now (FAKE TO ALLOW 1st PLACE LATER) : ",scLB_DisplayedData.iSectionEntries[iSection] )
ENDIF
IF NOT IS_RANK_PREDICTION_VALID_FOR_CURRENT_READ()
iPlayerRow = readInfo.m_LocalGamerRowNumber
ENDIF
IF iPlayerRow > 6
iRowStart = iPlayerRow - 6
ELSE
IF bRankOneInRadius
iRowStart = 1
ELSE
iRowStart = 0
ENDIF
ENDIF
iIndex = iRowStart
CLEAR_ROW_DATA_INFO_STRUCT(initRowData)
FOR iIndex = iRowStart TO readInfo.m_ReturnedRows-1
LEADERBOARDS2_READ_GET_ROW_DATA_INFO(iIndex, initRowData)
//Get data about row outside of getting data for each column?
IF scLB_DisplayedData.iSectionEntries[iSection] < 11
AND initRowData.m_Rank > 1
IF IS_RANK_PREDICTION_VALID_FOR_CURRENT_READ()
AND iPlayerRow = iIndex
//IF NOT ARE_STRINGS_EQUAL(scLB_DisplayedData.rowData[iSection][0].tl23_ParticipantName,GET_PLAYER_NAME(PLAYER_ID()))
IF NOT SCLB_CHECK_HANDLES_ARE_THE_SAME(scLB_DisplayedData.rowData[iSection][0].playerGamerHandle,localPlayerHandle)
FILL_LEADERBOARD_ROW_WITH_COMBINED_PREDICTION_RESULT(scLB_control,scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]],initRowData.m_Rank #IF IS_DEBUG_BUILD ,funcName,iSection #endif )
scLB_DisplayedData.iPlayerIndexForSection[iSection] = scLB_DisplayedData.iSectionEntries[iSection]
println(funcName, "Adding player to index ", scLB_DisplayedData.iPlayerIndexForSection[iSection])
#IF IS_DEBUG_BUILD
PRINT_ROW_DATA(scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]])
#ENDIF
scLB_DisplayedData.iSectionEntries[iSection]++
println(funcName,": adding data to section number of entries now : ",scLB_DisplayedData.iSectionEntries[iSection] )
ENDIF
ENDIF //if we are using rank prediction there is no record for local player so its an extra one in the middle
IF IS_RANK_PREDICTION_VALID_FOR_CURRENT_READ()
//AND (ARE_STRINGS_EQUAL(initRowData.m_GamerName, GET_PLAYER_NAME(PLAYER_ID()))
//OR ARE_STRINGS_EQUAL(initRowData.m_GamerName,sclb_rank_predict.driverName))
AND (SCLB_CHECK_HANDLES_ARE_THE_SAME(initRowData.m_GamerHandle,localPlayerHandle)
OR SCLB_CHECK_HANDLES_ARE_THE_SAME(initRowData.m_GamerHandle,sclb_rank_predict.driverHandle))
ELSE
IF scLB_DisplayedData.iSectionEntries[iSection] < 11
//IF NOT ARE_STRINGS_EQUAL(initRowData.m_GamerName, "")
//AND NOT ARE_STRINGS_EQUAL(scLB_DisplayedData.rowData[iSection][0].tl23_ParticipantName,initRowData.m_GamerName)
//IF ARE_STRINGS_EQUAL(GET_PLAYER_NAME(PLAYER_ID()),initRowData.m_GamerName)
IF IS_GAMER_HANDLE_VALID(initRowData.m_GamerHandle)
AND NOT SCLB_CHECK_HANDLES_ARE_THE_SAME(initRowData.m_GamerHandle,scLB_DisplayedData.rowData[iSection][0].playerGamerHandle)
IF SCLB_CHECK_HANDLES_ARE_THE_SAME(initRowData.m_GamerHandle,localPlayerHandle)
IF scLB_DisplayedData.iPlayerIndexForSection[iSection] < 0
scLB_DisplayedData.iPlayerIndexForSection[iSection] = scLB_DisplayedData.iSectionEntries[iSection]
println(funcName, "Adding player to index ", scLB_DisplayedData.iPlayerIndexForSection[iSection])
ENDIF
ENDIF
scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].tl23_ParticipantName = initRowData.m_GamerName
scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].playerGamerHandle = initRowData.m_GamerHandle
scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].iRank = initRowData.m_Rank
scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].bValidData = TRUE
IF IS_SC_LEADERBOARD_A_RACE(scLB_control.ReadDataStruct.m_LeaderboardId)
println("LEADERBOARDS2_READ_GET_ROW_DATA_INFO: Row: ", iIndex, " Column: ", scLB_DisplayedData.iCustomVehicleColumn)
iCustomCar = LEADERBOARDS2_READ_GET_ROW_DATA_INT(iIndex, scLB_DisplayedData.iCustomVehicleColumn)
IF iCustomCar = 1
scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].bCustomVehicle = TRUE
ELSE
scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].bCustomVehicle = FALSE
ENDIF
ENDIF
IF IS_SC_LEADERBOARD_A_RALLY(scLB_control.ReadDataStruct.m_LeaderboardId)
println("CODRIVER - initRowData.m_GroupSelector.m_Group[1].m_Id= ", initRowData.m_GroupSelector.m_Group[1].m_Id)
scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].tl31_CoDriver = initRowData.m_GroupSelector.m_Group[1].m_Id
ENDIF
i = 0
REPEAT scLB_DisplayedData.iNumNonRankColumnsToDisplay i
println("LEADERBOARDS2_READ_GET_ROW_DATA_INFO: Row: ", iIndex, " Column: ", scLB_DisplayedData.iReadColumns[i])
IF IS_BIT_SET(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[i])
//IF IS_LEADERBOARD_COLUMN_INT(scLB_control.ReadDataStruct.m_LeaderboardId,scLB_Control.ReadDataStruct.m_Type,scLB_DisplayedData.iReadColumns[i])
scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].iColumnData[i] = LEADERBOARDS2_READ_GET_ROW_DATA_INT(iIndex, scLB_DisplayedData.iReadColumns[i])
#IF IS_DEBUG_BUILD
DEBUG_PRINT_SC_LB_RETURNED_VALUES(funcName,"Radius around player",iIndex,scLB_DisplayedData.iReadColumns[i],
scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].iColumnData[i],0.0,FALSE )
#ENDIF
ELSE
scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].fColumnData[i] = LEADERBOARDS2_READ_GET_ROW_DATA_FLOAT(iIndex, scLB_DisplayedData.iReadColumns[i])
#IF IS_DEBUG_BUILD
DEBUG_PRINT_SC_LB_RETURNED_VALUES(funcName,"Radius around player",iIndex,scLB_DisplayedData.iReadColumns[i],
0,scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].fColumnData[i],TRUE )
#ENDIF
ENDIF
ENDREPEAT
//iOffsetRank = GET_OFFSET_FOR_RANK_BASED_ON_PREDICTED_PLAYER_POSITION(iSection,sclb_rank_predict.iRankBeforePrediction)
//scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].iRank = scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].iRank + iOffsetRank
//println(funcName,": rank prediction offseting rank by: ", iOffsetRank)
#IF IS_DEBUG_BUILD
PRINT_ROW_DATA(scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]])
#ENDIF
scLB_DisplayedData.iSectionEntries[iSection]++
println(funcName,": adding data to section number of entries now : ",scLB_DisplayedData.iSectionEntries[iSection] )
ENDIF
ENDIF
ENDIF
ENDIF
CLEAR_ROW_DATA_INFO_STRUCT(initRowData)
ENDFOR
LEADERBOARDS2_READ_GET_ROW_DATA_END( )
END_LEADERBOARD_READ(scLB_control.iTempLoadStage,scLB_control.bTempReadResult,scLB_control.ReadDataStruct)
IF bRankOneInRadius
println(funcName," --Rank 1 included in radius-- moving to stage 3 grabbed ")
IF scLB_DisplayedData.iPlayerIndexForSection[iSection] = -1
AND IS_RANK_PREDICTION_VALID_FOR_CURRENT_READ()
IF scLB_DisplayedData.iSectionEntries[iSection] >= 1
FILL_LEADERBOARD_ROW_WITH_COMBINED_PREDICTION_RESULT(scLB_control,scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]],
scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]-1].iRank+1#IF IS_DEBUG_BUILD ,funcName,iSection #endif )
ELSE
FILL_LEADERBOARD_ROW_WITH_COMBINED_PREDICTION_RESULT(scLB_control,scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]],
1#IF IS_DEBUG_BUILD ,funcName,iSection #endif )
ENDIF
scLB_DisplayedData.iPlayerIndexForSection[iSection] = scLB_DisplayedData.iSectionEntries[iSection]
println(funcName, "Adding player to index ", scLB_DisplayedData.iPlayerIndexForSection[iSection])
#IF IS_DEBUG_BUILD
PRINT_ROW_DATA(scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]])
#ENDIF
scLB_DisplayedData.iSectionEntries[iSection]++
println(funcName,": adding data to section number of entries now : ",scLB_DisplayedData.iSectionEntries[iSection] )
ENDIF
scLB_control.iLoadStage[iSection] = 3
ELSE
println(funcName," -- moving to stage 2 grabbed ")
scLB_control.iLoadStage[iSection] = 2
ENDIF
ELSE
IF NOT bRankOneInRadius
scLB_DisplayedData.iSectionEntries[iSection]++
println(funcName,": adding data to section number of entries now (FAKE TO ALLOW 1st PLACE LATER) : ",scLB_DisplayedData.iSectionEntries[iSection] )
ENDIF
LEADERBOARDS2_READ_GET_ROW_DATA_END( )
END_LEADERBOARD_READ(scLB_control.iTempLoadStage,scLB_control.bTempReadResult,scLB_control.ReadDataStruct)
scLB_DisplayedData.iPlayerIndexForSection[iSection] = -1
scLB_control.iLoadStage[iSection] = 2
println(funcName," -- no data available for local player moving to stage 2(returned rows is 0)")
ENDIF
ELSE
//LEADERBOARDS2_READ_GET_ROW_DATA_END( )
END_LEADERBOARD_READ(scLB_control.iTempLoadStage,scLB_control.bTempReadResult,scLB_control.ReadDataStruct)
scLB_DisplayedData.iPlayerIndexForSection[iSection] = -1
scLB_control.iLoadStage[iSection] = 2
SET_BIT(scLB_DisplayedData.iReadFailedBS,iSection)
println(funcName," -- no data available for local player moving to stage 2 (read failed)")
ENDIF
ENDIF
BREAK
CASE 2
//ENDIF
IF scLB_DisplayedData.iPlayerIndexForSection[iSection] = -1
iRankRowsToRead = 11
ELSE
iRankRowsToRead = 1
ENDIF
//gamerHandle = GET_GAMER_HANDLE_PLAYER(PLAYER_ID())
scLB_control.ReadDataStruct.m_type = LEADERBOARD2_TYPE_CLAN_MEMBER
readInfo.m_LeaderboardId = scLB_control.ReadDataStruct.m_LeaderboardId
readInfo.m_LeaderboardType = ENUM_TO_INT(scLB_control.ReadDataStruct.m_type)
IF START_SC_LEADERBOARD_READ_BY_RANK(scLB_control.iTempLoadStage,scLB_control.bTempReadResult,scLB_control.ReadDataStruct, 1,iRankRowsToRead)
#IF IS_DEBUG_BUILD
DEBUG_START_LEADERBOARD_PRINT_RESULTS(funcName,scLB_control.ReadDataStruct)
#ENDIF
FILL_READ_INFO_STRUCT(readInfo,scLB_control.ReadDataStruct)
IF scLB_control.bTempReadResult
AND LEADERBOARDS2_READ_GET_ROW_DATA_START(readInfo)
IF readInfo.m_ReturnedRows > 0
REPEAT readInfo.m_ReturnedRows i
println(funcName," start loop counter: ", i)
LEADERBOARDS2_READ_GET_ROW_DATA_INFO(i, initRowData)
bReplaceFirstSlot = FALSE
IF scLB_DisplayedData.rowData[iSection][0].iRank > 1
OR scLB_DisplayedData.rowData[iSection][0].iRank <= 0
bReplaceFirstSlot = TRUE
println(funcName," replacing slot 0 as rank 1 is not in")
ENDIF
IF scLB_DisplayedData.iSectionEntries[iSection] < 11
OR bReplaceFirstSlot
IF IS_RANK_PREDICTION_VALID_FOR_CURRENT_READ()
//AND (ARE_STRINGS_EQUAL(initRowData.m_GamerName, GET_PLAYER_NAME(PLAYER_ID()))
//OR ARE_STRINGS_EQUAL(initRowData.m_GamerName,sclb_rank_predict.driverName))
AND (SCLB_CHECK_HANDLES_ARE_THE_SAME(initRowData.m_GamerHandle,localPlayerHandle)
OR SCLB_CHECK_HANDLES_ARE_THE_SAME(initRowData.m_GamerHandle,sclb_rank_predict.driverHandle))
ELSE
IF i = 0
OR bReplaceFirstSlot
scLB_DisplayedData.rowData[iSection][0].tl23_ParticipantName = initRowData.m_GamerName
scLB_DisplayedData.rowData[iSection][0].playerGamerHandle = initRowData.m_GamerHandle
scLB_DisplayedData.rowData[iSection][0].iRank = initRowData.m_Rank
IF IS_SC_LEADERBOARD_A_RACE(scLB_control.ReadDataStruct.m_LeaderboardId)
println("LEADERBOARDS2_READ_GET_ROW_DATA_INFO: Row: ", 0, " Column: ", scLB_DisplayedData.iCustomVehicleColumn)
iCustomCar = LEADERBOARDS2_READ_GET_ROW_DATA_INT(0,scLB_DisplayedData.iCustomVehicleColumn)
IF iCustomCar = 1
scLB_DisplayedData.rowData[iSection][0].bCustomVehicle = TRUE
ELSE
scLB_DisplayedData.rowData[iSection][0].bCustomVehicle = FALSE
ENDIF
ENDIF
IF IS_SC_LEADERBOARD_A_RALLY(scLB_control.ReadDataStruct.m_LeaderboardId)
println("CODRIVER - initRowData.m_GroupSelector.m_Group[1].m_Id= ", initRowData.m_GroupSelector.m_Group[1].m_Id)
scLB_DisplayedData.rowData[iSection][0].tl31_CoDriver = initRowData.m_GroupSelector.m_Group[1].m_Id
ENDIF
scLB_DisplayedData.rowData[iSection][0].bValidData = TRUE
j = 0
REPEAT scLB_DisplayedData.iNumNonRankColumnsToDisplay j
println("LEADERBOARDS2_READ_GET_ROW_DATA_INFO: Row: ", 0, " Column: ", scLB_DisplayedData.iReadColumns[j])
IF IS_BIT_SET(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[j])
//IF IS_LEADERBOARD_COLUMN_INT(scLB_control.ReadDataStruct.m_LeaderboardId,scLB_Control.ReadDataStruct.m_Type,scLB_DisplayedData.iReadColumns[i])
scLB_DisplayedData.rowData[iSection][0].iColumnData[j] = LEADERBOARDS2_READ_GET_ROW_DATA_INT(0, scLB_DisplayedData.iReadColumns[j])
#IF IS_DEBUG_BUILD
DEBUG_PRINT_SC_LB_RETURNED_VALUES(funcName,"Rank 1",0,scLB_DisplayedData.iReadColumns[j],
scLB_DisplayedData.rowData[iSection][0].iColumnData[j],0.0,FALSE )
#ENDIF
ELSE
scLB_DisplayedData.rowData[iSection][0].fColumnData[j] = LEADERBOARDS2_READ_GET_ROW_DATA_FLOAT(0, scLB_DisplayedData.iReadColumns[j])
#IF IS_DEBUG_BUILD
DEBUG_PRINT_SC_LB_RETURNED_VALUES(funcName,"Row: ",0,scLB_DisplayedData.iReadColumns[j],
0,scLB_DisplayedData.rowData[iSection][0].fColumnData[j],TRUE )
#ENDIF
ENDIF
ENDREPEAT
IF scLB_DisplayedData.iSectionEntries[iSection] = 0
//iOffsetRank = GET_OFFSET_FOR_RANK_BASED_ON_PREDICTED_PLAYER_POSITION(iSection,sclb_rank_predict.iRankBeforePrediction)
//scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].iRank = scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].iRank + iOffsetRank
//println(funcName,": rank prediction offseting rank by: ", iOffsetRank)
#IF IS_DEBUG_BUILD
PRINT_ROW_DATA(scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]])
#ENDIF
IF bReplaceFirstSlot
println(funcName,": Replacing first entry with rank 1 player as it was not included")
ELSE
scLB_DisplayedData.iSectionEntries[iSection]++
ENDIF
println(funcName,": adding data to section number of entries now : ",scLB_DisplayedData.iSectionEntries[iSection] )
ENDIF
ELSE
IF scLB_DisplayedData.iSectionEntries[iSection] < 11
//Get data about row outside of getting data for each column?
scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].tl23_ParticipantName = initRowData.m_GamerName
scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].playerGamerHandle = initRowData.m_GamerHandle
IF IS_SC_LEADERBOARD_A_RACE(scLB_control.ReadDataStruct.m_LeaderboardId)
println("LEADERBOARDS2_READ_GET_ROW_DATA_INT: Row: ", i, " Column: ", scLB_DisplayedData.iCustomVehicleColumn)
iCustomCar = LEADERBOARDS2_READ_GET_ROW_DATA_INT(i,scLB_DisplayedData.iCustomVehicleColumn)
IF iCustomCar = 1
scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].bCustomVehicle = TRUE
ELSE
scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].bCustomVehicle = FALSE
ENDIF
ENDIF
IF IS_SC_LEADERBOARD_A_RALLY(scLB_control.ReadDataStruct.m_LeaderboardId)
println("CODRIVER- initRowData.m_GroupSelector.m_Group[1].m_Id= ", initRowData.m_GroupSelector.m_Group[1].m_Id)
scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].tl31_CoDriver = initRowData.m_GroupSelector.m_Group[1].m_Id
ENDIF
scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].iRank = initRowData.m_Rank
scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].bValidData = TRUE
j = 0
REPEAT scLB_DisplayedData.iNumNonRankColumnsToDisplay j
println("LEADERBOARDS2_READ_GET_ROW_DATA_INFO: Row: ", i, " Column: ", scLB_DisplayedData.iReadColumns[j])
IF IS_BIT_SET(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[j])
//IF IS_LEADERBOARD_COLUMN_INT(scLB_control.ReadDataStruct.m_LeaderboardId,scLB_Control.ReadDataStruct.m_Type,scLB_DisplayedData.iReadColumns[j])
scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].iColumnData[j] = LEADERBOARDS2_READ_GET_ROW_DATA_INT(i, scLB_DisplayedData.iReadColumns[j])
#IF IS_DEBUG_BUILD
DEBUG_PRINT_SC_LB_RETURNED_VALUES(funcName,"Radius around player",i,scLB_DisplayedData.iReadColumns[j],
scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].iColumnData[j],0.0,FALSE )
#ENDIF
ELSE
scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].fColumnData[j] = LEADERBOARDS2_READ_GET_ROW_DATA_FLOAT(i, scLB_DisplayedData.iReadColumns[j])
#IF IS_DEBUG_BUILD
DEBUG_PRINT_SC_LB_RETURNED_VALUES(funcName,"Radius around player",i,scLB_DisplayedData.iReadColumns[j],
0,scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].fColumnData[j],TRUE )
#ENDIF
ENDIF
ENDREPEAT
IF i != 0
//iOffsetRank = GET_OFFSET_FOR_RANK_BASED_ON_PREDICTED_PLAYER_POSITION(iSection,sclb_rank_predict.iRankBeforePrediction)
//scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].iRank = scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]].iRank + iOffsetRank
//println(funcName,": rank prediction offseting rank by: ", iOffsetRank)
#IF IS_DEBUG_BUILD
PRINT_ROW_DATA(scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]])
#ENDIF
scLB_DisplayedData.iSectionEntries[iSection]++
println(funcName,": adding data to section number of entries now : ",scLB_DisplayedData.iSectionEntries[iSection] )
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
CLEAR_ROW_DATA_INFO_STRUCT(initRowData)
//println("Looping through data end loop counter: ", i)
ENDREPEAT
ENDIF
LEADERBOARDS2_READ_GET_ROW_DATA_END( )
END_LEADERBOARD_READ(scLB_control.iTempLoadStage,scLB_control.bTempReadResult,scLB_control.ReadDataStruct)
println(funcName," -- moving to stage 3 grabbed ")
scLB_control.iLoadStage[iSection] = 3
ELSE
LEADERBOARDS2_READ_GET_ROW_DATA_END( )
END_LEADERBOARD_READ(scLB_control.iTempLoadStage,scLB_control.bTempReadResult,scLB_control.ReadDataStruct)
SET_BIT(scLB_DisplayedData.iReadFailedBS,iSection)
println(funcName," -- no data available for local player moving to stage 3 (read failed)")
scLB_DisplayedData.iSectionEntries[iSection] = 0
scLB_control.iLoadStage[iSection] = 3
ENDIF
IF scLB_DisplayedData.iPlayerIndexForSection[iSection] = -1
AND IS_RANK_PREDICTION_VALID_FOR_CURRENT_READ()
IF scLB_DisplayedData.iSectionEntries[iSection] >= 1
FILL_LEADERBOARD_ROW_WITH_COMBINED_PREDICTION_RESULT(scLB_control,scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]],
scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]-1].iRank+1 #IF IS_DEBUG_BUILD ,funcName,iSection #endif )
ELSE
FILL_LEADERBOARD_ROW_WITH_COMBINED_PREDICTION_RESULT(scLB_control,scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]],
1#IF IS_DEBUG_BUILD ,funcName,iSection #endif )
ENDIF
scLB_DisplayedData.iPlayerIndexForSection[iSection] = scLB_DisplayedData.iSectionEntries[iSection]
println(funcName, "Adding player to index ", scLB_DisplayedData.iPlayerIndexForSection[iSection])
#IF IS_DEBUG_BUILD
PRINT_ROW_DATA(scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iSectionEntries[iSection]])
#ENDIF
scLB_DisplayedData.iSectionEntries[iSection]++
println(funcName,": adding data to section number of entries now : ",scLB_DisplayedData.iSectionEntries[iSection] )
ENDIF
ENDIF
BREAK
//Finished
CASE 3
println(funcName,": doing rank offset for prediction" )
CALCULATE_OFFSETS_FOR_RANK_BASED_ON_PREDICTED_PLAYER_POSITION(iSection,sclb_rank_predict.iRankBeforePrediction)
scLB_control.iLoadStage[iSection] = 4
BREAK
CASE 4
RETURN TRUE
BREAK
ENDSWITCH
RETURN FALSE
ENDFUNC
FUNC BOOL GET_SECTION_ROW(SC_FINAL_DATA& finalData[],INT iTotalCounter, INT &ISectionRowCounter, INT iSection)
INT iOffset
#IF IS_DEBUG_BUILD
STRING sProcName = "GET_SECTION_ROW: "
#ENDIF
println(sProcName,"Section Row Counter: ", ISectionRowCounter, " Section: ", iSection)
//first element is always player in first place
IF ISectionRowCounter = 0
IF scLB_DisplayedData.rowData[iSection][0].iRank > 0
finalData[iTotalCounter].rowData = scLB_DisplayedData.rowData[iSection][0]
coronaLB_Display.playerNames[iSection] = scLB_DisplayedData.rowData[iSection][0].tl23_ParticipantName
coronaLB_Display.icolumnValue[iSection] = scLB_DisplayedData.rowData[iSection][0].iColumnData[scLB_DisplayedData.iCoronaBoxColumn]
coronaLB_Display.fcolumnValue[iSection] = scLB_DisplayedData.rowData[iSection][0].fColumnData[scLB_DisplayedData.iCoronaBoxColumn]
ISectionRowCounter++
println(sProcName,"Added first place section ", iSection, " data to final array: ITOTALCOUNTER = ",iTotalCounter )
#IF IS_DEBUG_BUILD
PRINT_ROW_DATA(finalData[iTotalCounter].rowData)
#ENDIF
RETURN TRUE
ELSE
println(sProcName,"scLB_DisplayedData.rowData[",iSection,"][0].iRank = 0 not adding section ", iSection, " data")
ENDIF
//second element is always local player data
ELIF ISectionRowCounter = 1
println(sProcName,"Player index for section ", iSection, " : ", scLB_DisplayedData.iPlayerIndexForSection[iSection])
IF scLB_DisplayedData.iPlayerIndexForSection[iSection] > 0
finalData[iTotalCounter].rowData = scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iPlayerIndexForSection[iSection]]
ISectionRowCounter++
println(sProcName,"Added player section ", iSection, " to final array: ITOTALCOUNTER = ",iTotalCounter )
#IF IS_DEBUG_BUILD
PRINT_ROW_DATA(finalData[iTotalCounter].rowData)
#ENDIF
RETURN TRUE
ELSE
IF scLB_DisplayedData.iPlayerIndexForSection[iSection] < 0
finalData[iTotalCounter].rowData.tl23_ParticipantName = GET_PLAYER_NAME(PLAYER_ID())
finalData[iTotalCounter].rowData.playerGamerHandle = GET_GAMER_HANDLE_PLAYER(PLAYER_ID())
finalData[iTotalCounter].rowData.iRank = -1
finalData[iTotalCounter].rowData.icolumnData[0] = -1
finalData[iTotalCounter].rowData.icolumnData[1] = -1
finalData[iTotalCounter].rowData.icolumnData[2] = -1
finalData[iTotalCounter].rowData.icolumnData[3] = -1
finalData[iTotalCounter].rowData.fcolumnData[0] = -1.0
finalData[iTotalCounter].rowData.fcolumnData[1] = -1.0
finalData[iTotalCounter].rowData.fcolumnData[2] = -1.0
finalData[iTotalCounter].rowData.fcolumnData[3] = -1.0
//finalData[iTotalCounter].rowData.iCarEnum = 0
ISectionRowCounter++
println(sProcName,"Added player section ", iSection, " to final array (empty data): ITOTALCOUNTER = ",iTotalCounter )
#IF IS_DEBUG_BUILD
PRINT_ROW_DATA(finalData[iTotalCounter].rowData)
#ENDIF
RETURN TRUE
ELSE
println(sProcName,"Not adding player data to section ", iSection, " data as player index is :", scLB_DisplayedData.iPlayerIndexForSection[iSection])
ENDIF
ISectionRowCounter++
ENDIF
ELSE
//if even
IF ISectionRowCounter%2 = 0
iOffset = ISectionRowCounter/2
IF scLB_DisplayedData.iPlayerIndexForSection[iSection] - iOffset >= 1
IF scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iPlayerIndexForSection[iSection] - iOffset].iRank > 0
finalData[iTotalCounter].rowData = scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iPlayerIndexForSection[iSection] - iOffset]
ISectionRowCounter++
println(sProcName,"Added section ", iSection, " data to final array (even): ITOTALCOUNTER = ",iTotalCounter )
#IF IS_DEBUG_BUILD
PRINT_ROW_DATA(finalData[iTotalCounter].rowData)
#ENDIF
RETURN TRUE
ENDIF
ENDIF
ELSE
//if odd
iOffset = FLOOR(TO_FLOAT(ISectionRowCounter/2))
IF scLB_DisplayedData.iPlayerIndexForSection[iSection] + iOffset < 12
AND scLB_DisplayedData.iPlayerIndexForSection[iSection] + iOffset > 0
IF scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iPlayerIndexForSection[iSection] + iOffset].iRank > 1
finalData[iTotalCounter].rowData = scLB_DisplayedData.rowData[iSection][scLB_DisplayedData.iPlayerIndexForSection[iSection] + iOffset]
ISectionRowCounter++
println(sProcName,"Added section ", iSection, " data to final array (odd): ITOTALCOUNTER = ",iTotalCounter )
#IF IS_DEBUG_BUILD
PRINT_ROW_DATA(finalData[iTotalCounter].rowData)
#ENDIF
RETURN TRUE
ENDIF
ENDIF
ENDIF
ENDIF
ISectionRowCounter++
RETURN FALSE
ENDFUNC
FUNC INT SC_LEADERBOARD_CACHE_GET_FREE_SLOT(INT iCacheID)
INT i
INT iOldestSlot
INT iOldestTime
INT iCurrentTime
REPEAT MAX_SOCIAL_CLUB_LEADERBOARD_CACHES i
IF scLB_cache.iCacheIds[i] = iCacheID
RETURN i
//println("SC_LEADERBOARD_CACHE_GET_FREE_SLOT: player already has this data cached but re-caching??")
ENDIF
ENDREPEAT
i = 0
REPEAT MAX_SOCIAL_CLUB_LEADERBOARD_CACHES i
IF scLB_cache.iCacheIds[i] = 0
RETURN i
ELSE
IF LEADERBOARDS_GET_CACHE_EXISTS(scLB_cache.iCacheIds[i])
iCurrentTime = LEADERBOARDS_GET_CACHE_TIME(scLB_cache.iCacheIds[i])
IF iCurrentTime > iOldestTime
iOldestSlot = i
iOldestTime = iCurrentTime
ENDIF
ELSE
RETURN i
ENDIF
ENDIF
ENDREPEAT
RETURN iOldestSlot
ENDFUNC
PROC SC_LEADERBOARD_CACHE_CLEAR_SLOT(INT iCacheID = -1,INT iSlotID=-1)
INT i
IF iSlotID != -1
println("SC_LEADERBOARD_CACHE_CLEAR_SLOT: Clearing slot ID: ", iSlotID)
IF LEADERBOARDS_GET_CACHE_EXISTS(scLB_cache.iCacheIds[iSlotID])
LEADERBOARDS_CLEAR_CACHE_DATA_ID(scLB_cache.iCacheIds[iSlotID])
println("SC_LEADERBOARD_CACHE_CLEAR_SLOT: slot have cache ID: ", iCacheID)
ENDIF
scLB_cache.iCacheIds[iSlotID] = 0
ELSE
IF iCacheID != -1
println("SC_LEADERBOARD_CACHE_CLEAR_SLOT: Clearing cache ID: ", iCacheID)
IF LEADERBOARDS_GET_CACHE_EXISTS(iCacheID)
LEADERBOARDS_CLEAR_CACHE_DATA_ID(iCacheID)
ENDIF
REPEAT MAX_SOCIAL_CLUB_LEADERBOARD_CACHES i
IF scLB_cache.iCacheIds[i] = iCacheID
scLB_cache.iCacheIds[i] = 0
ENDIF
ENDREPEAT
ENDIF
ENDIF
ENDPROC
PROC SC_LEADERBOARD_CACHE_CLEAR_ALL()
INT i
println("SC_LEADERBOARD_CACHE_CLEAR_ALL: Called from ", GET_THIS_SCRIPT_NAME())
LEADERBOARDS_CLEAR_CACHE_DATA()
REPEAT MAX_SOCIAL_CLUB_LEADERBOARD_CACHES i
scLB_cache.iCacheIds[i] = 0
ENDREPEAT
ENDPROC
PROC SC_LB_CHECK_IS_DATA_CACHED(SC_LEADERBOARD_CONTROL_STRUCT& scLB_control)
INT iCacheTime
IF LEADERBOARDS_GET_CACHE_EXISTS(scLB_DisplayedData.iCacheHashID)
iCacheTime = LEADERBOARDS_GET_CACHE_TIME(scLB_DisplayedData.iCacheHashID)
println("SC_LB_CHECK_IS_DATA_CACHED: cache does exists for : ",scLB_DisplayedData.iCacheHashID, " time: ",iCacheTime)
IF iCacheTime < SC_LEADERBOARD_CACHE_DUMP_TIME
SET_BIT(scLB_control.iBS,SC_LEADERBOARD_CONTROL_SETUP_USING_CACHE)
ELSE
CLEAR_BIT(scLB_control.iBS,SC_LEADERBOARD_CONTROL_SETUP_USING_CACHE)
println("SC_LB_CHECK_IS_DATA_CACHED: time is up clearing cache for : ",scLB_DisplayedData.iCacheHashID)
SC_LEADERBOARD_CACHE_CLEAR_SLOT(scLB_DisplayedData.iCacheHashID)
ENDIF
ELSE
println("SC_LB_CHECK_IS_DATA_CACHED: cache does NOT exist for : ",scLB_DisplayedData.iCacheHashID)
ENDIF
ENDPROC
PROC TRIGGER_SC_LB_CACHE_CHECK()
SET_BIT(scLB_cache.iBS,SC_LB_CACHE_CHECK_STATUS)
scLB_cache.iSlowCounter = 0
RESET_NET_TIMER(scLB_cache.checkTimer)
ENDPROC
PROC MAINTAIN_CACHE_CLEARING()
IF IS_BIT_SET(scLB_cache.iBS,SC_LB_CACHE_CHECK_STATUS)
IF scLB_cache.iCacheIds[scLB_cache.iSlowCounter] != 0
IF NETWORK_IS_GAME_IN_PROGRESS()
IF IS_NET_PLAYER_OK(PLAYER_ID())
IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID()),scLB_cache.vCacheLocation[scLB_cache.iSlowCounter]) > SC_LEADERBOARD_CACHE_DUMP_RANGE
AND NOT IS_PLAYER_ACTIVE_IN_CORONA()
println("Clearing cache out of range of cache area.")
SC_LEADERBOARD_CACHE_CLEAR_SLOT(-1,scLB_cache.iSlowCounter)
ELSE
INT iCacheTime
IF LEADERBOARDS_GET_CACHE_EXISTS(scLB_DisplayedData.iCacheHashID)
iCacheTime = LEADERBOARDS_GET_CACHE_TIME(scLB_DisplayedData.iCacheHashID)
println("MAINTAIN_CACHE_CLEARING: cache does exists for : ",scLB_DisplayedData.iCacheHashID, " time: ",iCacheTime)
IF iCacheTime > SC_LEADERBOARD_CACHE_DUMP_TIME
println("MAINTAIN_CACHE_CLEARING: time is up clearing cache for : ",scLB_DisplayedData.iCacheHashID)
SC_LEADERBOARD_CACHE_CLEAR_SLOT(scLB_DisplayedData.iCacheHashID)
ENDIF
ENDIF
ENDIF
ENDIF
ELSE
IF NOT IS_PED_INJURED(PLAYER_PED_ID())
IF GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID()),scLB_cache.vCacheLocation[scLB_cache.iSlowCounter]) > SC_LEADERBOARD_CACHE_DUMP_RANGE
println("Clearing cache out of range of cache area.")
SC_LEADERBOARD_CACHE_CLEAR_SLOT(-1,scLB_cache.iSlowCounter)
ELSE
INT iCacheTime
IF LEADERBOARDS_GET_CACHE_EXISTS(scLB_DisplayedData.iCacheHashID)
iCacheTime = LEADERBOARDS_GET_CACHE_TIME(scLB_DisplayedData.iCacheHashID)
println("MAINTAIN_CACHE_CLEARING: cache does exists for : ",scLB_DisplayedData.iCacheHashID, " time: ",iCacheTime)
IF iCacheTime > SC_LEADERBOARD_CACHE_DUMP_TIME
println("MAINTAIN_CACHE_CLEARING: time is up clearing cache for : ",scLB_DisplayedData.iCacheHashID)
SC_LEADERBOARD_CACHE_CLEAR_SLOT(scLB_DisplayedData.iCacheHashID)
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
scLB_cache.iSlowCounter++
IF scLB_cache.iSlowCounter >= MAX_SOCIAL_CLUB_LEADERBOARD_CACHES
CLEAR_BIT(scLB_cache.iBS,SC_LB_CACHE_CHECK_STATUS)
ENDIF
ELSE
IF IS_PAUSE_MENU_ACTIVE()
IF NOT IS_BIT_SET(scLB_cache.iBS,SC_LB_CACHE_PAUSE_ACTIVATED)
TRIGGER_SC_LB_CACHE_CHECK()
SET_BIT(scLB_cache.iBS,SC_LB_CACHE_PAUSE_ACTIVATED)
ENDIF
ELSE
CLEAR_BIT(scLB_cache.iBS,SC_LB_CACHE_PAUSE_ACTIVATED)
ENDIF
IF NOT HAS_NET_TIMER_STARTED(scLB_cache.checkTimer)
START_NET_TIMER(scLB_cache.checkTimer,TRUE)
ELSE
IF HAS_NET_TIMER_EXPIRED(scLB_cache.checkTimer,SC_LEADERBOARD_CHECK_TIME,TRUE)
TRIGGER_SC_LB_CACHE_CHECK()
ENDIF
ENDIF
ENDIF
ENDPROC
PROC CLEAR_CACHE_DISPLAY_DATA_STRUCT(LeaderboardCachedDisplayData& toClear)
GAMER_HANDLE emptyHandle
INT i
toClear.m_Id = 0
toClear.m_GamerName = ""
toClear.m_CoDriverName = ""
toClear.m_GamerHandle = emptyHandle
toClear.m_CoDriverHandle = emptyHandle
toClear.m_CustomVehicle = FALSE
toClear.m_Rank = 0
toClear.m_RowFlags = 0
toClear.m_NumColumns = 0
toClear.m_ColumnsBitSets = 0
REPEAT MAX_COLUMNS i
toClear.m_fColumnData[i] = 0
toClear.m_iColumnData[i] = 0
ENDREPEAT
ENDPROC
PROC CACHE_FINAL_DATA_LIST(SC_FINAL_DATA& finalData[])
INT i,j
//println("CACHE_FINAL_DATA_LIST: STARTING CACHE of ID: ", scLB_DisplayedData.iCacheHashID)
INT iCacheSlot
iCacheSlot = SC_LEADERBOARD_CACHE_GET_FREE_SLOT(scLB_DisplayedData.iCacheHashID)
IF scLB_cache.iCacheIds[iCacheSlot] != 0
println("CACHE_FINAL_DATA_LIST: clearing oldest slot to make room")
SC_LEADERBOARD_CACHE_CLEAR_SLOT(-1,iCacheSlot)
ENDIF
REPEAT SC_LEADERBOARD_MAX_NUM_DISPLAYED_ROWS i
CLEAR_CACHE_DISPLAY_DATA_STRUCT(tempSCLB_CacheData)
IF finalData[i].iSection != 0
tempSCLB_CacheData.m_Id = scLB_DisplayedData.iCacheHashID
println("---START ROW--- Hash ID: ",tempSCLB_CacheData.m_Id)
tempSCLB_CacheData.m_GamerName = finalData[i].rowData.tl23_ParticipantName
println("Gamer Name: ",tempSCLB_CacheData.m_GamerName )
IF ARE_STRINGS_EQUAL(finalData[i].rowData.tl31_CoDriver,"")
tempSCLB_CacheData.m_CoDriverName = finalData[i].rowData.tl23_ParticipantName
ELSE
tempSCLB_CacheData.m_CoDriverName = finalData[i].rowData.tl31_CoDriver
ENDIF
println("Co-Driver Name: ",tempSCLB_CacheData.m_CoDriverName)
tempSCLB_CacheData.m_GamerHandle = finalData[i].rowData.playerGamerHandle
//println("Gamer Handle: ", tempSCLB_CacheData.m_GamerHandle)
IF IS_GAMER_HANDLE_VALID(finalData[i].rowData.coDriverGamerHandle)
tempSCLB_CacheData.m_CoDriverHandle = finalData[i].rowData.coDriverGamerHandle
ELSE
tempSCLB_CacheData.m_CoDriverHandle = finalData[i].rowData.playerGamerHandle
ENDIF
//println("Co-Driver Handle: ",tempSCLB_CacheData.m_CoDriverHandle)
tempSCLB_CacheData.m_CustomVehicle = finalData[i].rowData.bCustomVehicle
println("Custom Vehicle: ",tempSCLB_CacheData.m_CustomVehicle)
tempSCLB_CacheData.m_Rank = finalData[i].rowData.iRank
println("Rank: ",tempSCLB_CacheData.m_Rank)
tempSCLB_CacheData.m_NumColumns = scLB_DisplayedData.iNumNonRankColumnsToDisplay
//IF tempSCLB_CacheData.m_NumColumns > 5
// println("More than 5 columns capping at 5 for testing")
// tempSCLB_CacheData.m_NumColumns = 5
//ENDIF
println("Number of Columns: ",tempSCLB_CacheData.m_NumColumns)
tempSCLB_CacheData.m_ColumnsBitSets = scLB_DisplayedData.iDisplayColumnIsIntBS
println("Column Bitset: ",tempSCLB_CacheData.m_ColumnsBitSets)
println("Row Flags BEFORE: ",tempSCLB_CacheData.m_RowFlags)
println("Row is: ",finalData[i].rowData.bValidData)
IF finalData[i].rowData.bValidData
SET_BIT(tempSCLB_CacheData.m_RowFlags,SC_LEADERBOARD_ROW_FLAG_VALID)
ELSE
CLEAR_BIT(tempSCLB_CacheData.m_RowFlags,SC_LEADERBOARD_ROW_FLAG_VALID)
ENDIF
println("Row is in section: ",finalData[i].iSection)
SET_BIT(tempSCLB_CacheData.m_RowFlags,finalData[i].iSection)
println("Row Flags: ",tempSCLB_CacheData.m_RowFlags)
REPEAT tempSCLB_CacheData.m_NumColumns j
//IF j < 5
//if an INT
IF IS_BIT_SET(tempSCLB_CacheData.m_ColumnsBitSets,j)
tempSCLB_CacheData.m_iColumnData[j] = finalData[i].rowData.iColumnData[j]
println("Adding INT for column ", j, " value: ",tempSCLB_CacheData.m_iColumnData[j])
ELSE
tempSCLB_CacheData.m_fColumnData[j] = finalData[i].rowData.fColumnData[j]
println("Adding FLOAT for column ", j, " value: ",tempSCLB_CacheData.m_fColumnData[j] )
ENDIF
//ENDIF
ENDREPEAT
scLB_cache.iCacheIds[iCacheSlot] = scLB_DisplayedData.iCacheHashID
LEADERBOARDS_CACHE_DATA_ROW(tempSCLB_CacheData)
ENDIF
ENDREPEAT
scLB_cache.vCacheLocation[iCacheSlot] = GET_PLAYER_COORDS(PLAYER_ID())
println("CACHE_FINAL_DATA_LIST: FINISHED CACHE of ID: ", scLB_DisplayedData.iCacheHashID)
ENDPROC
PROC ASSIGN_FINAL_DATA_FROM_CACHE(SC_FINAL_DATA& finalData[])
INT i,j
println("ASSIGN_FINAL_DATA_FROM_CACHE: RETRIEVE DATA for cache ID: ",scLB_DisplayedData.iCacheHashID)
INT iSection
REPEAT 3 i
scLB_DisplayedData.iSectionEntries[i] = 0
scLB_DisplayedData.iPlayerIndexForSection[i] = -1
ENDREPEAT
GAMER_HANDLE localPlayerHandle = GET_GAMER_HANDLE_PLAYER(PLAYER_ID())
IF LEADERBOARDS_GET_CACHE_EXISTS(scLB_DisplayedData.iCacheHashID)
INT iRows
iRows = LEADERBOARDS_GET_CACHE_NUMBER_OF_ROWS(scLB_DisplayedData.iCacheHashID)
println("RETRIEVE DATA num rows : ", iRows)
#IF IS_DEBUG_BUILD
IF iRows > SC_LEADERBOARD_MAX_NUM_DISPLAYED_ROWS
println("ASSIGN_FINAL_DATA_FROM_CACHE: more rows cached than should be used. Previous cache NOT cleared!")
SCRIPT_ASSERT("ASSIGN_FINAL_DATA_FROM_CACHE: more rows cached than should be used. Previous cache NOT cleared!- See Conor.")
ENDIF
#ENDIF
i = 0
REPEAT iRows i
IF i< SC_LEADERBOARD_MAX_NUM_DISPLAYED_ROWS
CLEAR_CACHE_DISPLAY_DATA_STRUCT(tempSCLB_CacheData)
iSection = 0
println("-START RETRIEVE CACHE ROW-Row ID: ", i)
LEADERBOARDS_GET_CACHE_DATA_ROW(scLB_DisplayedData.iCacheHashID,i,tempSCLB_CacheData)
//IF finalData[i].iSection != 0
//need to get the iBS miguel added
finalData[i].rowData.tl23_ParticipantName = tempSCLB_CacheData.m_GamerName
println("Participant Name: ", finalData[i].rowData.tl23_ParticipantName)
finalData[i].rowData.tl31_CoDriver = tempSCLB_CacheData.m_CoDriverName
println("Co-Driver Name: ", finalData[i].rowData.tl31_CoDriver)
finalData[i].rowData.playerGamerHandle = tempSCLB_CacheData.m_GamerHandle
//println("Player gamer handle: ", finalData[i].rowData.playerGamerHandle)
finalData[i].rowData.coDriverGamerHandle = tempSCLB_CacheData.m_CoDriverHandle
//println("Co-Driver gamer handle: ", finalData[i].rowData.coDriverGamerHandle)
finalData[i].rowData.bCustomVehicle = tempSCLB_CacheData.m_CustomVehicle
println("Custom vehicle: ", finalData[i].rowData.bCustomVehicle)
finalData[i].rowData.iRank = tempSCLB_CacheData.m_Rank
println("Rank: ", finalData[i].rowData.iRank)
scLB_DisplayedData.iNumNonRankColumnsToDisplay = tempSCLB_CacheData.m_NumColumns
println("Number of columns: ", scLB_DisplayedData.iNumNonRankColumnsToDisplay)
scLB_DisplayedData.iReadColumnIsIntBS = tempSCLB_CacheData.m_ColumnsBitSets
println("Column bitset: ", scLB_DisplayedData.iReadColumnIsIntBS)
//
iSection = 0
println("Row Flags: ", tempSCLB_CacheData.m_RowFlags)
IF IS_BIT_SET(tempSCLB_CacheData.m_RowFlags,1)
iSection = 1
ELIF IS_BIT_SET(tempSCLB_CacheData.m_RowFlags,2)
iSection = 2
ELIF IS_BIT_SET(tempSCLB_CacheData.m_RowFlags,3)
iSection = 3
ENDIF
println("Row is in section: ", iSection)
scLB_DisplayedData.iSectionEntries[iSection-1]++
finalData[i].iSection = iSection
IF finalData[i].rowData.iRank != -1
IF IS_BIT_SET(tempSCLB_CacheData.m_RowFlags,SC_LEADERBOARD_ROW_FLAG_VALID)
finalData[i].rowData.bValidData = TRUE
println("Row is valid ")
ELSE
finalData[i].rowData.bValidData = FALSE
println("Row is NOT valid ")
ENDIF
//IF ARE_STRINGS_EQUAL(GET_PLAYER_NAME(PLAYER_ID()),finalData[i].rowData.tl23_ParticipantName)
IF SCLB_CHECK_HANDLES_ARE_THE_SAME(finalData[i].rowData.playerGamerHandle,localPlayerHandle)
scLB_DisplayedData.iPlayerIndexForSection[iSection-1] = 0
println("scLB_DisplayedData.iPlayerIndexForSection[",iSection-1, "] = 0")
ENDIF
ENDIF
//ELIF IS_BIT_SET(tempSCLB_CacheData.m_RowFlags,1)
// scLB_DisplayedData.iSectionEntries[1]++
// finalData[i].iSection = 2
// IF ARE_STRINGS_EQUAL(GET_PLAYER_NAME(PLAYER_ID()),finalData[i].rowData.tl23_ParticipantName)
// IF finalData[i].rowData.iRank != -1
// scLB_DisplayedData.iPlayerIndexForSection[1] = 0
// ENDIF
// ENDIF
//ELIF IS_BIT_SET(tempSCLB_CacheData.m_RowFlags,2)
// finalData[i].iSection = 3
// scLB_DisplayedData.iSectionEntries[2]++
// IF ARE_STRINGS_EQUAL(GET_PLAYER_NAME(PLAYER_ID()),finalData[i].rowData.tl23_ParticipantName)
// IF finalData[i].rowData.iRank != -1
// scLB_DisplayedData.iPlayerIndexForSection[2] = 0
// ENDIF
// ENDIF
//ENDIF
REPEAT tempSCLB_CacheData.m_NumColumns j
//IF j < 5
//if an INT
//println("INT for column ", j, " Value: ", tempSCLB_CacheData.m_iColumnData[j])
//println("FLOAT for column ", j, " Value: ", tempSCLB_CacheData.m_fColumnData[j])
IF IS_BIT_SET(tempSCLB_CacheData.m_ColumnsBitSets,j)
finalData[i].rowData.iColumnData[j] = tempSCLB_CacheData.m_iColumnData[j]
println("INT for column ", j, " Value: ", finalData[i].rowData.iColumnData[j])
ELSE
finalData[i].rowData.fColumnData[j] = tempSCLB_CacheData.m_fColumnData[j]
println("FLOAT for column ", j, " Value: ", finalData[i].rowData.fColumnData[j])
ENDIF
//ENDIF
ENDREPEAT
//ENDIF
println("---END RETRIEVE CACHE ROW---")
ENDIF
ENDREPEAT
#IF IS_DEBUG_BUILD
IF g_bOutputSCLeaderboardData
REPEAT SC_LEADERBOARD_MAX_NUM_DISPLAYED_ROWS i
println("AFTER ASSIGNING CACHE - SC FINAL leaderboard row : ", i)
println("SC FINAL leaderboard row data gamer name: ",finalData[i].rowData.tl23_ParticipantName," rank: ",finalData[i].rowData.iRank, " section: ",finalData[i].iSection)
REPEAT SC_LEADERBOARD_MAX_DISPLAYED_STATS j
println(j,"- float column Value ",finalData[i].rowData.fcolumnData[j])
println(j,"-int column Value ",finalData[i].rowData.icolumnData[j])
ENDREPEAT
ENDREPEAT
ENDIF
#ENDIF
ELSE
println("ASSIGN_FINAL_DATA_FROM_CACHE: CACHE DOESN'T EXIST!! ID: ",scLB_DisplayedData.iCacheHashID)
SCRIPT_ASSERT("ASSIGN_FINAL_DATA_FROM_CACHE: trying to assign cache but it doesn't exist! - See Conor")
ENDIF
ENDPROC
PROC ORDER_FINAL_LIST(SC_LEADERBOARD_CONTROL_STRUCT& scLB_control,SC_FINAL_DATA& finalData[])
INT i, j
SC_LEADERBOARD_DISPLAY_ROW_STRUCT tempRow
INT itempSection
IF NOT IS_BIT_SET(scLB_control.iBS,SC_LEADERBOARD_CONTROL_SETUP_USING_CACHE)
AND NOT IS_BIT_SET(scLB_control.iBS,SC_LEADERBOARD_CONTROL_GENERATED_FINAL_LIST)
#IF IS_DEBUG_BUILD
IF g_bOutputSCLeaderboardData
REPEAT SC_LEADERBOARD_MAX_NUM_DISPLAYED_ROWS i
println("BEFORE SORT: Row: ",i)
println("SC FINAL leaderboard row data gamer name: ",finalData[i].rowData.tl23_ParticipantName," co-driver: ",finalData[i].rowData.tl31_CoDriver," rank: ",finalData[i].rowData.iRank, " section: ",finalData[i].iSection)
REPEAT SC_LEADERBOARD_MAX_DISPLAYED_STATS j
println("Column # ", j)
println(j, "- float column Value ",finalData[i].rowData.fcolumnData[j])
println(j, "- int column Value ",finalData[i].rowData.icolumnData[j])
ENDREPEAT
ENDREPEAT
ENDIF
#ENDIF
REPEAT SC_LEADERBOARD_MAX_NUM_DISPLAYED_ROWS i
IF finalData[i].iSection != 0
FOR j=i+1 TO 11
IF finalData[j].iSection != 0
IF finalData[j].iSection < finalData[i].iSection
itempSection = finalData[j].iSection
finalData[j].iSection = finalData[i].iSection
finalData[i].iSection = itempSection
tempRow = finalData[j].rowData
finalData[j].rowData = finalData[i].rowData
finalData[i].rowData = tempRow
ELIF finalData[j].iSection = finalData[i].iSection
//If less than j = i
IF finalData[j].rowData.iRank != -1
IF finalData[j].rowData.iRank < finalData[i].rowData.iRank
OR finalData[i].rowData.iRank = -1
itempSection = finalData[j].iSection
finalData[j].iSection = finalData[i].iSection
finalData[i].iSection = itempSection
tempRow = finalData[j].rowData
finalData[j].rowData= finalData[i].rowData
finalData[i].rowData = tempRow
ENDIF
ENDIF
ENDIF
ENDIF
ENDFOR
ENDIF
ENDREPEAT
#IF IS_DEBUG_BUILD
IF g_bOutputSCLeaderboardData
REPEAT SC_LEADERBOARD_MAX_NUM_DISPLAYED_ROWS i
println("AFTER SORT Row: ",i)
println("SC FINAL leaderboard row data gamer name: ",finalData[i].rowData.tl23_ParticipantName," rank: ",finalData[i].rowData.iRank, " section: ",finalData[i].iSection)
REPEAT SC_LEADERBOARD_MAX_DISPLAYED_STATS j
println(j,"- float column Value ",finalData[i].rowData.fcolumnData[j])
println(j,"- int column Value ",finalData[i].rowData.icolumnData[j])
ENDREPEAT
ENDREPEAT
ENDIF
#ENDIF
ENDIF
ENDPROC
PROC GET_FINAL_DATA_LIST(SC_LEADERBOARD_CONTROL_STRUCT& scLB_control,SC_FINAL_DATA& finalData[])
INT iGlobalRowCounter
INT iFriendRowCounter
INT iCrewRowCounter
INT iTotalCounter
//INT iFriendAboveCounter, iFriendBelowCounter
INT i
IF NOT IS_BIT_SET(scLB_control.iBS,SC_LEADERBOARD_CONTROL_SETUP_USING_CACHE)
AND NOT IS_BIT_SET(scLB_control.iBS,SC_LEADERBOARD_CONTROL_GENERATED_FINAL_LIST)
REPEAT SC_LEADERBOARD_MAX_NUM_DISPLAYED_ROWS i
IF GET_SECTION_ROW(finalData,iTotalCounter,iGlobalRowCounter,SC_LB_SECTION_GLOBAL)
finalData[iTotalCounter].iSection = 1
iTotalCounter++
IF iTotalCounter >= SC_LEADERBOARD_MAX_NUM_DISPLAYED_ROWS
EXIT
ENDIF
ENDIF
//IF GET_SECTION_ROW(finalData,scLB_control,iTotalCounter,iFriendRowCounter,iFriendAboveCounter, iFriendBelowCounter)
IF GET_SECTION_ROW(finalData,iTotalCounter,iFRiendRowCounter,SC_LB_SECTION_FRIEND)
finalData[iTotalCounter].iSection = 2
iTotalCounter++
IF iTotalCounter >= SC_LEADERBOARD_MAX_NUM_DISPLAYED_ROWS
EXIT
ENDIF
ENDIF
IF GET_SECTION_ROW(finalData,iTotalCounter,iCrewRowCounter,SC_LB_SECTION_CREW)
finalData[iTotalCounter].iSection = 3
iTotalCounter++
IF iTotalCounter >= SC_LEADERBOARD_MAX_NUM_DISPLAYED_ROWS
EXIT
ENDIF
ENDIF
ENDREPEAT
ELSE
ASSIGN_FINAL_DATA_FROM_CACHE(finalData)
ENDIF
ENDPROC
FUNC BOOL IS_GAMER_HANDLE_ALREADY_IN_ARRAY(GAMER_HANDLE& gamerToCheck,GAMERS_HANDLES& gamerHandles[])
INT i
REPEAT SC_LEADERBOARD_MAX_NUM_DISPLAYED_ROWS i
IF IS_GAMER_HANDLE_VALID(gamerHandles[i].m_GamerHandle)
IF NETWORK_ARE_HANDLES_THE_SAME(gamerToCheck,gamerHandles[i].m_GamerHandle)
RETURN TRUE
ENDIF
ENDIF
ENDREPEAT
RETURN FALSE
ENDFUNC
PROC CLEAR_CREW_TAGS_FOR_LEADERBOARD(SC_FINAL_DATA& finalData[])
INT i
REPEAT SC_LEADERBOARD_MAX_NUM_DISPLAYED_ROWS i
CLEAR_GAMER_HANDLE_STRUCT(tempGlobalLeaderboardCrewData.gamerHandles[i].m_GamerHandle)
tempGlobalLeaderboardCrewData.crewTags[i] = ""
ENDREPEAT
IF finalData[0].iCrewTagLoadStage > 0
finalData[0].iCrewTagLoadStage = 0
finalData[1].iCrewTagLoadStage = 0
IF NOT NETWORK_GET_PRIMARY_CLAN_DATA_PENDING()
NETWORK_GET_PRIMARY_CLAN_DATA_CLEAR()
ENDIF
ENDIF
PRINTLN("CLEAR_GLOBAL_CREW_DATA_FOR_LEADERBOARD called this frame")
IF NETWORK_GET_PRIMARY_CLAN_DATA_PENDING()
NETWORK_GET_PRIMARY_CLAN_DATA_CANCEL()
ENDIF
tempGlobalLeaderboardCrewData.iNumGamers = 0
ENDPROC
FUNC BOOL GET_CREW_TAGS_FOR_LEADERBOARD(SC_FINAL_DATA& finalData[])
INT i,j
// REPEAT SC_LEADERBOARD_MAX_NUM_DISPLAYED_ROWS i
// IF NOT GET_CREW_TAG_FOR_GAMER(finalData[i].iCrewTagLoadStage,finalData[i].rowData.playerGamerHandle,finalData[i].crewTag)
// RETURN FALSE
// ENDIF
// ENDREPEAT
//RETURN TRUE
SWITCH finalData[0].iCrewTagLoadStage
CASE 0
CLEAR_CREW_TAGS_FOR_LEADERBOARD(finalData)
IF (IS_PLAYSTATION_PLATFORM() OR IS_XBOX_PLATFORM())
AND NOT NETWORK_HAVE_USER_CONTENT_PRIVILEGES()
PRINTLN("GET_CREW_TAGS_FOR_LEADERBOARD: Moving to stage 3 (user content priv off)")
finalData[0].iCrewTagLoadStage= 3
RETURN FALSE
ENDIF
REPEAT SC_LEADERBOARD_MAX_NUM_DISPLAYED_ROWS i
IF IS_GAMER_HANDLE_VALID(finalData[i].rowData.playerGamerHandle)
IF NOT IS_GAMER_HANDLE_ALREADY_IN_ARRAY(finalData[i].rowData.playerGamerHandle,tempGlobalLeaderboardCrewData.gamerHandles)
tempGlobalLeaderboardCrewData.gamerHandles[tempGlobalLeaderboardCrewData.iNumGamers].m_GamerHandle = finalData[i].rowData.playerGamerHandle
#IF IS_DEBUG_BUILD
DEBUG_PRINT_GAMER_HANDLE(tempGlobalLeaderboardCrewData.gamerHandles[tempGlobalLeaderboardCrewData.iNumGamers].m_GamerHandle)
#ENDIF
tempGlobalLeaderboardCrewData.iNumGamers++
PRINTLN("GET_CREW_TAGS_FOR_LEADERBOARD:valid handle added total now: ",tempGlobalLeaderboardCrewData.iNumGamers)
ENDIF
ENDIF
ENDREPEAT
IF tempGlobalLeaderboardCrewData.iNumGamers > 0
PRINTLN("GET_CREW_TAGS_FOR_LEADERBOARD: Moving to stage 1")
finalData[0].iCrewTagLoadStage= 1
ELSE
PRINTLN("GET_CREW_TAGS_FOR_LEADERBOARD: Moving to stage 3 (no gamers to query)")
finalData[0].iCrewTagLoadStage= 3
ENDIF
BREAK
CASE 1
IF GET_CREW_TAGS_FOR_GAMERS(finalData[1].iCrewTagLoadStage,tempGlobalLeaderboardCrewData.iNumGamers,tempGlobalLeaderboardCrewData.gamerHandles,tempGlobalLeaderboardCrewData.crewTags)
finalData[0].iCrewTagLoadStage = 2
PRINTLN("GET_CREW_TAGS_FOR_LEADERBOARD: Moving to stage 2")
ENDIF
BREAK
CASE 2
IF tempGlobalLeaderboardCrewData.iNumGamers > SC_LEADERBOARD_MAX_NUM_DISPLAYED_ROWS
tempGlobalLeaderboardCrewData.iNumGamers = SC_LEADERBOARD_MAX_NUM_DISPLAYED_ROWS
ENDIF
REPEAT SC_LEADERBOARD_MAX_NUM_DISPLAYED_ROWS i
REPEAT tempGlobalLeaderboardCrewData.iNumGamers j
IF IS_GAMER_HANDLE_VALID(finalData[i].rowData.playerGamerHandle)
AND IS_GAMER_HANDLE_VALID(tempGlobalLeaderboardCrewData.gamerHandles[j].m_GamerHandle)
IF NETWORK_ARE_HANDLES_THE_SAME(finalData[i].rowData.playerGamerHandle,tempGlobalLeaderboardCrewData.gamerHandles[j].m_GamerHandle)
finalData[i].crewTag = tempGlobalLeaderboardCrewData.crewTags[j]
println("GET_CREW_TAGS_FOR_LEADERBOARD: player ",finalData[i].rowData.tl23_ParticipantName, " crew Tag = ",tempGlobalLeaderboardCrewData.crewTags[j] )
ELSE
PRINTLN("GET_CREW_TAGS_FOR_LEADERBOARD: gamer handles not the same I: ", i, " j: ",j)
ENDIF
ELSE
PRINTLN("GET_CREW_TAGS_FOR_LEADERBOARD: gamer handles not valid")
ENDIF
ENDREPEAT
ENDREPEAT
PRINTLN("GET_CREW_TAGS_FOR_LEADERBOARD: Moving to stage 3")
finalData[0].iCrewTagLoadStage= 3
BREAK
CASE 3
RETURN TRUE
BREAK
ENDSWITCH
RETURN FALSE
ENDFUNC
FUNC BOOL GET_CO_DRIVER_DISPLAY_NAMES(SC_FINAL_DATA& finalData[])
INT i
IF IS_XBOX_PLATFORM()
OR IS_PLAYSTATION_PLATFORM()
REPEAT SC_LEADERBOARD_MAX_NUM_DISPLAYED_ROWS i
IF NOT GET_DISPLAY_NAME_FROM_USERID(finalData[i].iCoDriverNameLoadStage,finalData[i].rowData.tl31_CoDriver,finalData[i].coDriverDisplayName,scLB_DisplayedData.tempDisplayName,finalData[i].iDisplayNameRequestID)
RETURN FALSE
ENDIF
ENDREPEAT
ELSE
REPEAT SC_LEADERBOARD_MAX_NUM_DISPLAYED_ROWS i
IF NOT GET_GAMER_NAME_FROM_USER_ID(finalData[i].iCoDriverNameLoadStage,finalData[i].rowData.tl31_CoDriver,finalData[i].coDriverDisplayName)
RETURN FALSE
ENDIF
ENDREPEAT
ENDIF
RETURN TRUE
ENDFUNC
#IF IS_DEBUG_BUILD
PROC RESET_SCLB_DEBUG_METRICS_DATA()
sclbDebugMetrics.iTotalFrames = 0
sclbDebugMetrics.iGlobalDataFrames = 0
sclbDebugMetrics.iCrewDataFrames = 0
sclbDebugMetrics.iFriendDataFrames = 0
sclbDebugMetrics.iTagsFrames = 0
sclbDebugMetrics.iCoDriverNameFrames = 0
sclbDebugMetrics.iUpdatedGamerTagFrames = 0
sclbDebugMetrics.iFlagsBS = 0
sclbDebugMetrics.bReset = FALSE
sclbDebugMetrics.iTotalTime = 0
RESET_NET_TIMER(sclbDebugMetrics.totalTimer)
ENDPROC
PROC PRINT_SCLB_DEBUG_METRICS_DATA()
PRINTLN("SCLB_DEBUG_METRICS: iTotalFrames = ", sclbDebugMetrics.iTotalFrames)
PRINTLN("SCLB_DEBUG_METRICS: iGlobalDataFrames = ", sclbDebugMetrics.iGlobalDataFrames)
PRINTLN("SCLB_DEBUG_METRICS: iFriendDataFrames = ", sclbDebugMetrics.iFriendDataFrames)
PRINTLN("SCLB_DEBUG_METRICS: iCrewDataFrames = ", sclbDebugMetrics.iCrewDataFrames)
PRINTLN("SCLB_DEBUG_METRICS: iCoDriverNameFrames = ", sclbDebugMetrics.iCoDriverNameFrames)
PRINTLN("SCLB_DEBUG_METRICS: iUpdatedGamerTagFrames = ", sclbDebugMetrics.iUpdatedGamerTagFrames)
PRINTLN("SCLB_DEBUG_METRICS: iTagsFrames = ", sclbDebugMetrics.iTagsFrames)
PRINTLN("SCLB_DEBUG_METRICS: iTotalTime = ", sclbDebugMetrics.iTotalTime)
ENDPROC
#ENDIF
/// PURPOSE:
/// Durango Only: gets the display name from handle
FUNC BOOL GET_DISPLAY_NAMES_FROM_HANDLES_FOR_SCLB(SC_FINAL_DATA& finalData[])
IF NOT IS_XBOX_PLATFORM()
AND NOT IS_PLAYSTATION_PLATFORM()
SCRIPT_ASSERT("GET_DISPLAY_NAMES_FROM_HANDLES_FOR_SCLB- is only supported on Durango- See Conor")
DEBUG_PRINTCALLSTACK()
PRINTLN("GET_DISPLAY_NAMES_FROM_HANDLES_FOR_SCLB- is only supported on Durango")
RETURN TRUE
ENDIF
IF finalData[0].iRunUpdateGamerTagsLoadStage = 2
RETURN TRUE
ENDIF
INT iResult
INT i
INT iCounter
SWITCH finalData[0].iRunUpdateGamerTagsLoadStage
CASE 0
scLB_DisplayedData.iNumTempHandles = 0
REPEAT SC_LEADERBOARD_MAX_NUM_DISPLAYED_ROWS i
scLB_DisplayedData.tempDisplayName[i] = ""
CLEAR_GAMER_HANDLE_STRUCT(scLB_DisplayedData.tempHandleList[i])
IF IS_GAMER_HANDLE_VALID(finalData[i].rowData.playerGamerHandle)
scLB_DisplayedData.tempHandleList[scLB_DisplayedData.iNumTempHandles] = finalData[i].rowData.playerGamerHandle
scLB_DisplayedData.iNumTempHandles++
ENDIF
ENDREPEAT
IF scLB_DisplayedData.iNumTempHandles > 0
finalData[0].iDisplayNameRequestID = NETWORK_DISPLAYNAMES_FROM_HANDLES_START(scLB_DisplayedData.tempHandleList,scLB_DisplayedData.iNumTempHandles)
finalData[0].iRunUpdateGamerTagsLoadStage = 1
ELSE
finalData[0].iRunUpdateGamerTagsLoadStage = 2
ENDIF
BREAK
CASE 1
iResult = NETWORK_GET_DISPLAYNAMES_FROM_HANDLES(finalData[0].iDisplayNameRequestID,scLB_DisplayedData.tempDisplayName,scLB_DisplayedData.iNumTempHandles)
IF iResult = 0
PRINTLN("GET_DISPLAY_NAMES_FROM_HANDLES_FOR_SCLB- SUCCEEDED!")
REPEAT SC_LEADERBOARD_MAX_NUM_DISPLAYED_ROWS i
IF IS_GAMER_HANDLE_VALID(finalData[i].rowData.playerGamerHandle)
finalData[i].rowData.tl23_ParticipantName = scLB_DisplayedData.tempDisplayName[iCounter]
PRINTLN("GET_DISPLAY_NAMES_FROM_HANDLES_FOR_SCLB PlayerName = ",finalData[i].rowData.tl23_ParticipantName )
iCounter++
ENDIF
ENDREPEAT
finalData[0].iRunUpdateGamerTagsLoadStage = 2
ELIF iResult = -1
PRINTLN("GET_DISPLAY_NAMES_FROM_HANDLES_FOR_SCLB- FAILED!")
finalData[0].iRunUpdateGamerTagsLoadStage = 2
ELSE
PRINTLN("GET_DISPLAY_NAMES_FROM_HANDLES_FOR_SCLB: waiting for display name request: iResult = ",iResult)
RETURN FALSE
ENDIF
BREAK
CASE 2
finalData[0].iDisplayNameRequestID = -1
RETURN TRUE
BREAK
ENDSWITCH
RETURN FALSE
ENDFUNC
FUNC BOOL GET_UPDATED_GAMERTAGS(SC_FINAL_DATA& finalData[])
INT i
IF IS_PC_VERSION()
PRINTLN("GET_UPDATED_GAMERTAGS: bypassing for PC build.")
RETURN TRUE
ELIF IS_XBOX_PLATFORM()
OR IS_PLAYSTATION_PLATFORM()
IF NOT GET_DISPLAY_NAMES_FROM_HANDLES_FOR_SCLB(finalData)
RETURN FALSE
ENDIF
ELSE
REPEAT SC_LEADERBOARD_MAX_NUM_DISPLAYED_ROWS i
IF NOT GET_GAMER_NAME_FROM_HANDLE(finalData[i].iRunUpdateGamerTagsLoadStage,finalData[i].rowData.playerGamerHandle,finalData[i].rowData.tl23_ParticipantName)
RETURN FALSE
ENDIF
ENDREPEAT
ENDIF
RETURN TRUE
ENDFUNC
/// PURPOSE:
/// Loads the social club data from global players, friends and crew
/// PARAMS:
/// scLB_control - The control struct for loading the data
/// RETURNS:
/// true when all the data has been grabbed
FUNC BOOL LOAD_SOCIAL_CLUB_LEADERBOARD_DATA(SC_LEADERBOARD_CONTROL_STRUCT& scLB_control)
#IF IS_DEBUG_BUILD
IF NOT IS_BIT_SET(sclbDebugMetrics.iFlagsBS,SCLB_DEBUG_METRICS_FINISHED)
IF NOT HAS_NET_TIMER_STARTED(sclbDebugMetrics.totalTimer)
START_NET_TIMER(sclbDebugMetrics.totalTimer,TRUE)
ENDIF
ENDIF
#ENDIF
IF NOT sclb_useRankPrediction
IF NOT HAS_NET_TIMER_STARTED(scLB_DisplayedData.optionChangeDelay)
START_NET_TIMER(scLB_DisplayedData.optionChangeDelay,TRUE)
PRINTLN("LOAD_SOCIAL_CLUB_LEADERBOARD_DATA- option delay timer -1 ")
RETURN FALSE
ELSE
IF NOT HAS_NET_TIMER_EXPIRED(scLB_DisplayedData.optionChangeDelay,1000,TRUE)
PRINTLN("LOAD_SOCIAL_CLUB_LEADERBOARD_DATA- option delay timer -2 ")
RETURN FALSE
ENDIF
ENDIF
ENDIF
#IF IS_DEBUG_BUILD
IF NOT IS_BIT_SET(sclbDebugMetrics.iFlagsBS,SCLB_DEBUG_METRICS_FINISHED)
sclbDebugMetrics.iTotalFrames++
ENDIF
#ENDIF
//failed to connect for some reason
IF NOT NETWORK_HAS_VALID_ROS_CREDENTIALS()
OR NOT IS_PLAYER_ONLINE()
OR (NOT NETWORK_HAVE_ONLINE_PRIVILEGES() AND NETWORK_HAS_AGE_RESTRICTIONS())
OR scLB_DisplayedData.iReadFailedBS != 0 //a read failed the values will be invalid display error message
CLEAR_BIT(scLB_control.iBS,SC_LEADERBOARD_CONTROL_SETUP_CHECK_CACHE)
PRINTLN("LOAD_SOCIAL_CLUB_LEADERBOARD_DATA- failed to connect ")
RETURN TRUE
ENDIF
IF NOT IS_BIT_SET(scLB_control.iBS,SC_LEADERBOARD_CONTROL_SETUP_CHECK_CACHE)
SC_LB_CHECK_IS_DATA_CACHED(scLB_control)
SET_BIT(scLB_control.iBS,SC_LEADERBOARD_CONTROL_SETUP_CHECK_CACHE)
#IF IS_DEBUG_BUILD
//IF g_bOutputSCLeaderboardData
println("LOAD_SOCIAL_CLUB_LEADERBOARD_DATA: checked for cached data")
//ENDIF
#ENDIF
RETURN FALSE
ELSE
IF IS_BIT_SET(scLB_control.iBS,SC_LEADERBOARD_CONTROL_SETUP_USING_CACHE)
#IF IS_DEBUG_BUILD
IF scLB_control.iLoadStage[SC_LB_SECTION_CREW] != 3
println("LOAD_SOCIAL_CLUB_LEADERBOARD_DATA: using cached data")
ENDIF
#ENDIF
scLB_control.iLoadStage[SC_LB_SECTION_GLOBAL] = 2
scLB_control.iLoadStage[SC_LB_SECTION_FRIEND] = 1
scLB_control.iLoadStage[SC_LB_SECTION_CREW] = 3
RETURN TRUE
ENDIF
ENDIF
#IF IS_DEBUG_BUILD
IF NOT IS_BIT_SET(sclbDebugMetrics.iFlagsBS,SCLB_DEBUG_METRICS_GOT_GLOBAL)
sclbDebugMetrics.iGlobalDataFrames++
ENDIF
#ENDIF
IF NOT SOCIAL_CLUB_GET_GLOBAL_LB_DATA(scLB_control)
#IF IS_DEBUG_BUILD
IF g_bOutputSCLeaderboardData
println("Waiting for SOCIAL_CLUB_GET_GLOBAL_LB_DATA")
ENDIF
#ENDIF
RETURN FALSE
ENDIF
#IF IS_DEBUG_BUILD
SET_BIT(sclbDebugMetrics.iFlagsBS,SCLB_DEBUG_METRICS_GOT_GLOBAL)
IF NOT IS_BIT_SET(sclbDebugMetrics.iFlagsBS,SCLB_DEBUG_METRICS_GOT_FRIENDS)
sclbDebugMetrics.iFriendDataFrames++
ENDIF
#ENDIF
IF NOT SOCIAL_CLUB_GET_FRIEND_LB_DATA(scLB_control)
#IF IS_DEBUG_BUILD
IF g_bOutputSCLeaderboardData
println("Waiting for SOCIAL_CLUB_GET_FRIEND_LB_DATA")
ENDIF
#ENDIF
RETURN FALSE
ENDIF
#IF IS_DEBUG_BUILD
SET_BIT(sclbDebugMetrics.iFlagsBS,SCLB_DEBUG_METRICS_GOT_FRIENDS)
IF NOT IS_BIT_SET(sclbDebugMetrics.iFlagsBS,SCLB_DEBUG_METRICS_GOT_CREW)
sclbDebugMetrics.iCrewDataFrames++
ENDIF
#ENDIF
IF NOT SOCIAL_CLUB_GET_CREW_LB_DATA(scLB_control)
#IF IS_DEBUG_BUILD
IF g_bOutputSCLeaderboardData
println("Waiting for SOCIAL_CLUB_GET_CREW_LB_DATA")
ENDIF
#ENDIF
RETURN FALSE
ENDIF
IF NOT IS_BIT_SET(scLB_control.iBS,SC_LEADERBOARD_CONTROL_GENERATED_FINAL_LIST)
CLEAR_FINAL_DATA_STRUCT(tempFinalData)
GET_FINAL_DATA_LIST(scLB_control,tempFinalData)
ORDER_FINAL_LIST(scLB_control,tempFinalData)
SET_BIT(scLB_control.iBS,SC_LEADERBOARD_CONTROL_GENERATED_FINAL_LIST)
ENDIF
#IF IS_DEBUG_BUILD
SET_BIT(sclbDebugMetrics.iFlagsBS,SCLB_DEBUG_METRICS_GOT_CREW)
// IF NOT IS_BIT_SET(sclbDebugMetrics.iFlagsBS,SCLB_DEBUG_METRICS_GOT_TAGS)
// sclbDebugMetrics.iTagsFrames++
// ENDIF
#ENDIF
IF NOT IS_BIT_SET(scLB_control.iBS, SC_LEADERBOARD_CONTROL_GENERATED_TAGS)
IF NOT HAS_NET_TIMER_STARTED(scLB_DisplayedData.failSafeTimer)
START_NET_TIMER(scLB_DisplayedData.failSafeTimer,TRUE)
ELSE
IF HAS_NET_TIMER_EXPIRED(scLB_DisplayedData.failSafeTimer,30000,TRUE)
println("LOAD_SOCIAL_CLUB_LEADERBOARD_DATA: hit failsafe timer for tag generation skipping)")
SET_BIT(scLB_control.iBS, SC_LEADERBOARD_CONTROL_GENERATED_TAGS)
ENDIF
ENDIF
IF GET_CO_DRIVER_DISPLAY_NAMES(tempFinalData)
ELSE
#IF IS_DEBUG_BUILD
IF g_bOutputSCLeaderboardData
println("LOAD_SOCIAL_CLUB_LEADERBOARD_DATA: Waiting for GET_CO_DRIVER_DISPLAY_NAMES()")
ENDIF
sclbDebugMetrics.iCoDriverNameFrames++
#ENDIF
RETURN FALSE
ENDIF
IF GET_UPDATED_GAMERTAGS(tempFinalData)
ELSE
#IF IS_DEBUG_BUILD
IF g_bOutputSCLeaderboardData
println("LOAD_SOCIAL_CLUB_LEADERBOARD_DATA: Waiting for GET_UPDATED_GAMERTAGS()")
ENDIF
sclbDebugMetrics.iUpdatedGamerTagFrames++
#ENDIF
RETURN FALSE
ENDIF
IF GET_CREW_TAGS_FOR_LEADERBOARD(tempFinalData)
CACHE_FINAL_DATA_LIST(tempFinalData)
SET_BIT(scLB_control.iBS, SC_LEADERBOARD_CONTROL_GENERATED_TAGS)
CACHE_FINAL_DATA_LIST(tempFinalData)
ELSE
#IF IS_DEBUG_BUILD
IF g_bOutputSCLeaderboardData
println("LOAD_SOCIAL_CLUB_LEADERBOARD_DATA: Waiting for GET_CREW_TAGS_FOR_LEADERBOARD()")
ENDIF
sclbDebugMetrics.iTagsFrames++
#ENDIF
RETURN FALSE
ENDIF
ENDIF
#IF IS_DEBUG_BUILD
SET_BIT(sclbDebugMetrics.iFlagsBS,SCLB_DEBUG_METRICS_GOT_TAGS)
IF NOT IS_BIT_SET(sclbDebugMetrics.iFlagsBS,SCLB_DEBUG_METRICS_FINISHED)
IF HAS_NET_TIMER_STARTED(sclbDebugMetrics.totalTimer)
sclbDebugMetrics.iTotalTime = GET_NET_TIMER_DIFFERENCE_WITH_CURRENT_TIME(sclbDebugMetrics.totalTimer,TRUE)
ENDIF
PRINT_SCLB_DEBUG_METRICS_DATA()
SET_BIT(sclbDebugMetrics.iFlagsBS,SCLB_DEBUG_METRICS_FINISHED)
ENDIF
#ENDIF
RETURN TRUE
ENDFUNC
/// PURPOSE:
/// Clears the control struct for the social club board.
/// This MUST be cleared if you are using common Social Club functions
/// PARAMS:
/// scLB_control - control struct to clear
PROC SOCIAL_CLUB_CLEAR_CONTROL_STRUCT(SC_LEADERBOARD_CONTROL_STRUCT& scLB_control)
INT i
NETWORK_CLAN_DESC emptyClanDes
//GAMER_HANDLE emptyHandle
//SC_LEADERBOARD_DISPLAY_ROW_STRUCT tempRow
scLB_control.iLoadStage[0] = 0
scLB_control.iLoadStage[1] = 0
scLB_control.iLoadStage[2] = 0
scLB_control.iTempLoadStage = 0
#IF IS_DEBUG_BUILD
RESET_SCLB_DEBUG_METRICS_DATA()
#ENDIF
scLB_control.iLoopCounter = 0
//scLB_control.iRowsThisLoop = 0
scLB_control.localPlayerClanInfo = emptyClanDes
scLB_control.iBS = 0
scLB_control.iDataCounter = 0
scLB_control.ReadDataStruct.m_LeaderboardId = 0
scLB_control.ReadDataStruct.m_Type = LEADERBOARD2_TYPE_INVALID
scLB_control.ReadDataStruct.m_ClanId = 0
scLB_control.ReadDataStruct.m_GroupSelector.m_NumGroups = 0
REPEAT LEADERBOARD_MAX_GROUPS i
scLB_control.ReadDataStruct.m_GroupSelector.m_Group[i].m_Category = ""
scLB_control.ReadDataStruct.m_GroupSelector.m_Group[i].m_Id = ""
ENDREPEAT
scLB_control.groupHandle[0].m_NumGroups = 0
REPEAT LEADERBOARD_MAX_GROUPS i
scLB_control.groupHandle[0].m_Group[i].m_Category = ""
scLB_control.groupHandle[0].m_Group[i].m_Id = ""
ENDREPEAT
DEBUG_PRINTCALLSTACK()
println("SOCIAL_CLUB_CLEAR_CONTROL_STRUCT- called this frame")
ENDPROC
#IF IS_DEBUG_BUILD
PROC PRINT_LEADERBOARD_SETUP_DETAILS(SC_LEADERBOARD_CONTROL_STRUCT &scLB_control,TEXT_LABEL_31 UniqueLBGroup,INT iMissionType,INT iSubType,INT iLaps,BOOL bCoDriver)
IF g_bOutputSCLeaderboardSetupThisFrame
println("PRINT_LEADERBOARD_SETUP_DETAILS- START")
PRINTLN("UniqueLBGroup = ",UniqueLBGroup)
PRINTLN("iMissionType = ",iMissionType)
PRINTLN("iSubType = ",iSubType)
PRINTLN("iLaps = ",iLaps)
PRINTLN("bCoDriver = ",bCoDriver)
println("scLB_control.ReadDataStruct.m_LeaderboardId = ",scLB_control.ReadDataStruct.m_LeaderboardId)
println("scLB_Control.ReadDataStruct.m_Type = ", scLB_Control.ReadDataStruct.m_Type)
println("scLB_Control.ReadDataStruct.m_GroupSelector.m_NumGroups = ",scLB_Control.ReadDataStruct.m_GroupSelector.m_NumGroups)
println("scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Category = ",scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Category)
println("scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Id = ",scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Id)
println("scLB_DisplayedData.displaySetup.iDisplayType = ", scLB_DisplayedData.displaySetup.iDisplayType)
println("scLB_DisplayedData.displaySetup.sLeaderboardType = ", scLB_DisplayedData.displaySetup.sLeaderboardType)
println("scLB_DisplayedData.displaySetup.sLeaderboardName = ",scLB_DisplayedData.displaySetup.sLeaderboardName)
println("scLB_DisplayedData.displaySetup.b_sLeaderboardNameLiteral = ",scLB_DisplayedData.displaySetup.b_sLeaderboardNameLiteral)
println("scLB_DisplayedData.sColumnTextName[0] = ",scLB_DisplayedData.sColumnTextName[0])
println("scLB_DisplayedData.sColumnTextName[1] = ",scLB_DisplayedData.sColumnTextName[1])
println("scLB_DisplayedData.sColumnTextName[2] = ",scLB_DisplayedData.sColumnTextName[2])
println("scLB_DisplayedData.sColumnTextName[3] = ",scLB_DisplayedData.sColumnTextName[3])
println("scLB_DisplayedData.iReadColumns[0] = ",scLB_DisplayedData.iReadColumns[0])
println("scLB_DisplayedData.iReadColumns[1] = ",scLB_DisplayedData.iReadColumns[1])
println("scLB_DisplayedData.iReadColumns[2] = ",scLB_DisplayedData.iReadColumns[2])
println("scLB_DisplayedData.iReadColumns[3] = ",scLB_DisplayedData.iReadColumns[3])
println("scLB_DisplayedData.iNumNonRankColumnsToDisplay = ", scLB_DisplayedData.iNumNonRankColumnsToDisplay)
// println("IS_BIT_SET(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[0]) = ",IS_BIT_SET(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[0]))
// println("IS_BIT_SET(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[1]) = ",IS_BIT_SET(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[1]))
// println("IS_BIT_SET(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[2]) = ",IS_BIT_SET(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[2]))
// println("IS_BIT_SET(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[3]) = ",IS_BIT_SET(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[3]))
println("scLB_DisplayedData.displaySetup.iLayout = ",scLB_DisplayedData.displaySetup.iLayout)
// println("scLB_DisplayedData.displaySetup.iIcons[0] = ",scLB_DisplayedData.displaySetup.iIcons[0])
// println("scLB_DisplayedData.displaySetup.iIcons[1] = ",scLB_DisplayedData.displaySetup.iIcons[1])
// println("scLB_DisplayedData.displaySetup.iIcons[2] = ",scLB_DisplayedData.displaySetup.iIcons[2])
// println("scLB_DisplayedData.displaySetup.iIcons[3] = ",scLB_DisplayedData.displaySetup.iIcons[3])
println("scLB_DisplayedData.displaySetup.iColumnDisplayType[0] = ",scLB_DisplayedData.displaySetup.iColumnDisplayType[0])
println("scLB_DisplayedData.displaySetup.iColumnDisplayType[1] = ",scLB_DisplayedData.displaySetup.iColumnDisplayType[1])
println("scLB_DisplayedData.displaySetup.iColumnDisplayType[2] = ",scLB_DisplayedData.displaySetup.iColumnDisplayType[2])
println("scLB_DisplayedData.displaySetup.iColumnDisplayType[3] = ",scLB_DisplayedData.displaySetup.iColumnDisplayType[3])
g_bOutputSCLeaderboardSetupThisFrame = FALSE
println("PRINT_LEADERBOARD_SETUP_DETAILS- END")
ENDIF
ENDPROC
#ENDIF
FUNC TEXT_LABEL_23 GET_SHOOTING_RANGE_CHALLENGE_NAME(INT iType)
TEXT_LABEL_23 tempText
SWITCH iType
CASE FMMC_TYPE_SP_RANGE_PISTOL_1
tempText = "HUD_MG_RANGE0"
BREAK
CASE FMMC_TYPE_SP_RANGE_PISTOL_2
tempText = "HUD_MG_RANGE1"
BREAK
CASE FMMC_TYPE_SP_RANGE_PISTOL_3
tempText = "HUD_MG_RANGE2"
BREAK
CASE FMMC_TYPE_SP_RANGE_SMG_1
tempText = "HUD_MG_RANGE3"
BREAK
CASE FMMC_TYPE_SP_RANGE_SMG_2
tempText = "HUD_MG_RANGE4"
BREAK
CASE FMMC_TYPE_SP_RANGE_SMG_3
tempText = "HUD_MG_RANGE5"
BREAK
CASE FMMC_TYPE_SP_RANGE_SHOTGUN_1
tempText = "HUD_MG_RANGE6"
BREAK
CASE FMMC_TYPE_SP_RANGE_SHOTGUN_2
tempText = "HUD_MG_RANGE7"
BREAK
CASE FMMC_TYPE_SP_RANGE_SHOTGUN_3
tempText = "HUD_MG_RANGE8"
BREAK
CASE FMMC_TYPE_SP_RANGE_AR_1
tempText = "HUD_MG_RANGE9"
BREAK
CASE FMMC_TYPE_SP_RANGE_AR_2
tempText = "HUD_MG_RANGE10"
BREAK
CASE FMMC_TYPE_SP_RANGE_AR_3
tempText = "HUD_MG_RANGE11"
BREAK
CASE FMMC_TYPE_SP_RANGE_LMG_1
tempText = "HUD_MG_RANGE12"
BREAK
CASE FMMC_TYPE_SP_RANGE_LMG_2
tempText = "HUD_MG_RANGE13"
BREAK
CASE FMMC_TYPE_SP_RANGE_LMG_3
tempText = "HUD_MG_RANGE14"
BREAK
CASE FMMC_TYPE_SP_RANGE_HEAVY_1
tempText = "HUD_MG_RANGE15"
BREAK
CASE FMMC_TYPE_SP_RANGE_HEAVY_2
tempText = "HUD_MG_RANGE16"
BREAK
CASE FMMC_TYPE_SP_RANGE_HEAVY_3
tempText = "HUD_MG_RANGE17"
BREAK
CASE FMMC_TYPE_SP_RANGE_RAILGUN_1
tempText = "HUD_MG_RANGE18"
BREAK
CASE FMMC_TYPE_SP_RANGE_RAILGUN_2
tempText = "HUD_MG_RANGE19"
BREAK
CASE FMMC_TYPE_SP_RANGE_RAILGUN_3
tempText = "HUD_MG_RANGE20"
BREAK
CASE FMMC_TYPE_SP_RANGE_RAILGUN_4
tempText = "HUD_MG_RANGE21"
BREAK
ENDSWITCH
RETURN tempText
ENDFUNC
FUNC TEXT_LABEL_23 GET_ARENA_WARS_MODE_NAME(INT iType)
TEXT_LABEL_23 tempText
SWITCH iType
CASE SCLB_TYPE_ARENA_MODE_BUZZER_BEATER
tempText = "BuzzerBeater"
BREAK
CASE SCLB_TYPE_ARENA_MODE_CARNAGE
tempText = "Carnage"
BREAK
CASE SCLB_TYPE_ARENA_MODE_FLAG_WAR
tempText ="FlagWar"
BREAK
CASE SCLB_TYPE_ARENA_MODE_WRECK_IT
tempText = "WreckIt"
BREAK
CASE SCLB_TYPE_ARENA_MODE_BOMB_BALL
tempText = "BombBall"
BREAK
CASE SCLB_TYPE_ARENA_MODE_GAMES_MASTERS
tempText = "GamesMasters"
BREAK
CASE SCLB_TYPE_ARENA_MODE_MONSTERS
tempText = "Monsters"
BREAK
CASE SCLB_TYPE_ARENA_MODE_HOT_BOMB
tempText = "HotBomb"
BREAK
CASE SCLB_TYPE_ARENA_MODE_TAG_TEAM
tempText = "TagTeam"
BREAK
DEFAULT
PRINTLN("GET_ARENA_WARS_MODE_NAME: invalid ID# ",iType," passed in! See Conor")
SCRIPT_ASSERT("GET_ARENA_WARS_MODE_NAME: invalid ID# passed in! See Conor")
BREAK
ENDSWITCH
RETURN tempText
ENDFUNC
/// PURPOSE:
/// To setup common leaderboard read parameters
/// PARAMS:
/// scLB_control - struct used to control leaderboard read progress
/// iMissionType - used to indicate what setup is used
/// UniqueLBGroupingIdentifier - Explaination below*
/// stMissionName - Only used for User Generated Content (UGC)
/// iSubType - subtype of mission type
/// iLaps - used only for races
// UniqueLBGroupingIdentifier - THIS IS ONLY NEEDED IF THE LEADERBOARD YOU ARE WRITING TO HAS GROUPS.
// Because we only have a single leaderboard we need a way to group together data this is based on a unique ID.
// For UGC this identifier is automatically created when a file is saved.
// If the leaderboard you are using is NOT reling upon UGC you can make up whatever identifier you want.
PROC SETUP_SOCIAL_CLUB_LEADERBOARD_READ_DATA(SC_LEADERBOARD_CONTROL_STRUCT& scLB_control, INT iMissionType, STRING UniqueLBGroupingIdentifier,STRING stMissionName, INT iSubType = -1, INT iLaps = -1, BOOL bCoDriver = FALSE, BOOL bMinigameDisplay = FALSE)
TEXT_LABEL_31 UniqueLBGroup
IF NOT IS_STRING_NULL_OR_EMPTY(UniqueLBGroupingIdentifier)
//AND NOT IS_STRING_NULL_OR_EMPTY(creatorID)
UniqueLBGroup = UniqueLBGroupingIdentifier
ENDIF
IF bMinigameDisplay
ENDIF
///Leaderboard2ReadData ReadDataStruct
TEXT_LABEL_31 lapText
INT i
scLB_DisplayedData.iReadColumnIsIntBS = 0
scLB_DisplayedData.iDisplayColumnIsIntBS = 0
scLB_DisplayedData.iInvalidDataSetBS = 0
GAMER_USERID localUserID
SWITCH iMissionType
CASE FMMC_TYPE_RACE
IF iSubType = ciRACE_SUB_TYPE_STANDARD
IF iLaps > 0
AND NOT IS_THIS_RACE_A_POINT_2_POINT_RACE()
scLB_control.ReadDataStruct.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_FREEMODE_RACES_LAPS)
ELSE
scLB_control.ReadDataStruct.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_FREEMODE_RACES)
ENDIF
scLB_Control.ReadDataStruct.m_Type = LEADERBOARD2_TYPE_GROUP_MEMBER
scLB_Control.ReadDataStruct.m_GroupSelector.m_NumGroups = 1
scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Category = "Mission"
scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Id = UniqueLBGroup
IF iLaps > 0
AND NOT IS_THIS_RACE_A_POINT_2_POINT_RACE()
scLB_Control.ReadDataStruct.m_GroupSelector.m_NumGroups = 2
scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[1].m_Category = "Laps"
lapText = ""
lapText += iLaps
scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[1].m_Id = lapText
scLB_DisplayedData.displaySetup.iLaps = iLaps
IF NOT IS_STRING_NULL_OR_EMPTY(stMissionName)
IF iLaps = 1
scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_RCE_L1"
scLB_DisplayedData.displaySetup.sLeaderboardName = stMissionName
ELSE
scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_RCE_LM"
scLB_DisplayedData.displaySetup.sLeaderboardName = stMissionName
ENDIF
ELSE
IF iLaps = 1
scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_RCE_NN_L1"
ELSE
scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_RCE_NN_LM"
ENDIF
ENDIF
ELSE
IF NOT IS_STRING_NULL_OR_EMPTY(stMissionName)
scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_RCE"
scLB_DisplayedData.displaySetup.sLeaderboardName = stMissionName
ELSE
scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_RCE_NN"
ENDIF
scLB_DisplayedData.displaySetup.iLaps = -1
ENDIF
scLB_DisplayedData.displaySetup.iDisplayType = ENUM_TO_INT(DISPLAY_TYPE_MULTIPLAYER)
//scLB_DisplayedData.iReadColumns[0] = 5 //best lap first
IF iLaps <= 0
OR IS_THIS_RACE_A_POINT_2_POINT_RACE()
scLB_DisplayedData.sColumnTextName[0] = "SCLB_C_BL"
scLB_DisplayedData.sColumnTextName[1] = "SCLB_C_VEH"
scLB_DisplayedData.sColumnTextName[2] = "SCLB_C_RANK"
scLB_DisplayedData.sColumnTextName[3] = ""
scLB_DisplayedData.iReadColumns[0] = 1
scLB_DisplayedData.iReadColumns[1] = 3
scLB_DisplayedData.iReadColumns[2] = 0
scLB_DisplayedData.iReadColumns[3] = 0
scLB_DisplayedData.iCustomVehicleColumn = 4
scLB_DisplayedData.iNumNonRankColumnsToDisplay = 2
SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[0])
SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[1])
scLB_DisplayedData.displaySetup.iLayout = ENUM_TO_INT(SLOT_LAYOUT_3_STATS)
////scLB_DisplayedData.displaySetup.iIcons[0] = ENUM_TO_INT(ICON_VEHICLE)
//scLB_DisplayedData.displaySetup.iIcons[0] = ENUM_TO_INT(ICON_LAP)
//scLB_DisplayedData.displaySetup.iIcons[1] = ENUM_TO_INT(ICON_VEHICLE)
//scLB_DisplayedData.displaySetup.iIcons[2] = ENUM_TO_INT(ICON_POSITION)
//scLB_DisplayedData.displaySetup.iColumnDisplayType[0] = ENUM_TO_INT(SCLB_DATA_TYPE_VEHICLE)
scLB_DisplayedData.displaySetup.iColumnDisplayType[0] = ENUM_TO_INT(SCLB_DATA_TYPE_TIME)
scLB_DisplayedData.displaySetup.iColumnDisplayType[1] = ENUM_TO_INT(SCLB_DATA_TYPE_VEHICLE)
scLB_DisplayedData.displaySetup.iColumnDisplayType[2] = ENUM_TO_INT(SCLB_DATA_TYPE_INT)
ELSE
scLB_DisplayedData.sColumnTextName[0] = "SCLB_C_RT"
scLB_DisplayedData.sColumnTextName[1] = "SCLB_C_BL"
scLB_DisplayedData.sColumnTextName[2] = "SCLB_C_VEH"
scLB_DisplayedData.sColumnTextName[3] = "SCLB_C_RANK"
scLB_DisplayedData.iReadColumns[0] = 2
scLB_DisplayedData.iReadColumns[1] = 1
scLB_DisplayedData.iReadColumns[2] = 3
scLB_DisplayedData.iReadColumns[3] = 0
scLB_DisplayedData.iCustomVehicleColumn = 4
scLB_DisplayedData.iNumNonRankColumnsToDisplay = 3
SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[0])
SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[1])
SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[2])
scLB_DisplayedData.displaySetup.iLayout = ENUM_TO_INT(SLOT_LAYOUT_4_STATS)
////scLB_DisplayedData.displaySetup.iIcons[0] = ENUM_TO_INT(ICON_VEHICLE)
//scLB_DisplayedData.displaySetup.iIcons[0] = ENUM_TO_INT(ICON_TIME)
//scLB_DisplayedData.displaySetup.iIcons[1] = ENUM_TO_INT(ICON_LAP)
//scLB_DisplayedData.displaySetup.iIcons[2] = ENUM_TO_INT(ICON_VEHICLE)
//scLB_DisplayedData.displaySetup.iIcons[3] = ENUM_TO_INT(ICON_POSITION)
//scLB_DisplayedData.displaySetup.iColumnDisplayType[0] = ENUM_TO_INT(SCLB_DATA_TYPE_VEHICLE)
scLB_DisplayedData.displaySetup.iColumnDisplayType[0] = ENUM_TO_INT(SCLB_DATA_TYPE_TIME)
scLB_DisplayedData.displaySetup.iColumnDisplayType[1] = ENUM_TO_INT(SCLB_DATA_TYPE_TIME)
scLB_DisplayedData.displaySetup.iColumnDisplayType[2] = ENUM_TO_INT(SCLB_DATA_TYPE_VEHICLE)
scLB_DisplayedData.displaySetup.iColumnDisplayType[3] = ENUM_TO_INT(SCLB_DATA_TYPE_INT)
ENDIF
scLB_DisplayedData.iCoronaBoxColumn = 0
ELIF iSubType = ciRACE_SUB_TYPE_GTA
//*SCORE_COLUMN( AGG_MAX ) : COLUMN_ID_LB_SCORE - LBCOLUMNTYPE_INT64
//BEST_LAP_TIME( AGG_LAST ) : COLUMN_ID_LB_BEST_TIME - LBCOLUMNTYPE_INT64
// TOTAL_TIME( AGG_LAST ) : COLUMN_ID_LB_TOTAL_TIME - LBCOLUMNTYPE_INT64
// KILLS( AGG_LAST ) : COLUMN_ID_LB_KILLS - LBCOLUMNTYPE_INT32
// DEATHS( AGG_LAST ) : COLUMN_ID_LB_DEATHS - LBCOLUMNTYPE_INT32
//VEHICLE_ID( AGG_LAST ) : COLUMN_ID_LB_VEHICLE_ID - LBCOLUMNTYPE_INT32
//VEHICLE_COLOR( AGG_LAST ) : COLUMN_ID_LB_VEHICLE_COLOR - LBCOLUMNTYPE_INT32
IF iLaps > 0
AND NOT IS_THIS_RACE_A_POINT_2_POINT_RACE()
scLB_control.ReadDataStruct.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_FREEMODE_GTA_RACES_LAPS)
ELSE
scLB_control.ReadDataStruct.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_FREEMODE_GTA_RACES)
ENDIF
scLB_Control.ReadDataStruct.m_Type = LEADERBOARD2_TYPE_GROUP_MEMBER
scLB_Control.ReadDataStruct.m_GroupSelector.m_NumGroups = 1
scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Category = "Mission"
scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Id = UniqueLBGroup
IF iLaps > 0
AND NOT IS_THIS_RACE_A_POINT_2_POINT_RACE()
scLB_Control.ReadDataStruct.m_GroupSelector.m_NumGroups = 2
scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[1].m_Category = "Laps"
lapText = ""
lapText += iLaps
scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[1].m_Id = lapText
scLB_DisplayedData.displaySetup.iLaps = iLaps
IF NOT IS_STRING_NULL_OR_EMPTY(stMissionName)
IF iLaps = 1
scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_GRCE_L1"
scLB_DisplayedData.displaySetup.sLeaderboardName = stMissionName
ELSE
scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_GRCE_LM"
scLB_DisplayedData.displaySetup.sLeaderboardName = stMissionName
ENDIF
ELSE
IF iLaps = 1
scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_GRCE_NN_L1"
ELSE
scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_GRCE_NN_LM"
ENDIF
ENDIF
ELSE
scLB_DisplayedData.displaySetup.iLaps = -1
IF NOT IS_STRING_NULL_OR_EMPTY(stMissionName)
scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_GRCE"
scLB_DisplayedData.displaySetup.sLeaderboardName = stMissionName
ELSE
scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_GRCE_NN"
ENDIF
ENDIF
scLB_DisplayedData.displaySetup.iDisplayType = ENUM_TO_INT(DISPLAY_TYPE_MULTIPLAYER)
IF iLaps <= 0
OR IS_THIS_RACE_A_POINT_2_POINT_RACE()
scLB_DisplayedData.sColumnTextName[0] = "SCLB_C_BL"
scLB_DisplayedData.sColumnTextName[1] = "SCLB_C_VEH"
scLB_DisplayedData.sColumnTextName[2] = "SCLB_C_RANK"
scLB_DisplayedData.sColumnTextName[3] = ""
scLB_DisplayedData.iReadColumns[0] = 1
scLB_DisplayedData.iReadColumns[1] = 5
scLB_DisplayedData.iReadColumns[2] = 0
scLB_DisplayedData.iReadColumns[3] = 0
scLB_DisplayedData.iCustomVehicleColumn = 6
scLB_DisplayedData.iNumNonRankColumnsToDisplay = 2
SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[0])
SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[1])
scLB_DisplayedData.displaySetup.iLayout = ENUM_TO_INT(SLOT_LAYOUT_3_STATS)
////scLB_DisplayedData.displaySetup.iIcons[0] = ENUM_TO_INT(ICON_VEHICLE)
//scLB_DisplayedData.displaySetup.iIcons[0] = ENUM_TO_INT(ICON_LAP)
//scLB_DisplayedData.displaySetup.iIcons[1] = ENUM_TO_INT(ICON_VEHICLE)
//scLB_DisplayedData.displaySetup.iIcons[2] = ENUM_TO_INT(ICON_POSITION)
//scLB_DisplayedData.displaySetup.iColumnDisplayType[0] = ENUM_TO_INT(SCLB_DATA_TYPE_VEHICLE)
scLB_DisplayedData.displaySetup.iColumnDisplayType[0] = ENUM_TO_INT(SCLB_DATA_TYPE_TIME)
scLB_DisplayedData.displaySetup.iColumnDisplayType[1] = ENUM_TO_INT(SCLB_DATA_TYPE_VEHICLE)
scLB_DisplayedData.displaySetup.iColumnDisplayType[2] = ENUM_TO_INT(SCLB_DATA_TYPE_INT)
ELSE
scLB_DisplayedData.sColumnTextName[0] = "SCLB_C_RT"
scLB_DisplayedData.sColumnTextName[1] = "SCLB_C_BL"
scLB_DisplayedData.sColumnTextName[2] = "SCLB_C_VEH"
scLB_DisplayedData.sColumnTextName[3] = "SCLB_C_RANK"
scLB_DisplayedData.iReadColumns[0] = 2
scLB_DisplayedData.iReadColumns[1] = 1
scLB_DisplayedData.iReadColumns[2] = 5
scLB_DisplayedData.iReadColumns[3] = 0
scLB_DisplayedData.iNumNonRankColumnsToDisplay = 3
scLB_DisplayedData.iCustomVehicleColumn = 6
SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[0])
SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[1])
SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[2])
scLB_DisplayedData.displaySetup.iLayout = ENUM_TO_INT(SLOT_LAYOUT_4_STATS)
////scLB_DisplayedData.displaySetup.iIcons[0] = ENUM_TO_INT(ICON_VEHICLE)
//scLB_DisplayedData.displaySetup.iIcons[0] = ENUM_TO_INT(ICON_TIME)
//scLB_DisplayedData.displaySetup.iIcons[1] = ENUM_TO_INT(ICON_LAP)
//scLB_DisplayedData.displaySetup.iIcons[2] = ENUM_TO_INT(ICON_VEHICLE)
//scLB_DisplayedData.displaySetup.iIcons[3] = ENUM_TO_INT(ICON_POSITION)
//scLB_DisplayedData.displaySetup.iColumnDisplayType[0] = ENUM_TO_INT(SCLB_DATA_TYPE_VEHICLE)
scLB_DisplayedData.displaySetup.iColumnDisplayType[0] = ENUM_TO_INT(SCLB_DATA_TYPE_TIME)
scLB_DisplayedData.displaySetup.iColumnDisplayType[1] = ENUM_TO_INT(SCLB_DATA_TYPE_TIME)
scLB_DisplayedData.displaySetup.iColumnDisplayType[2] = ENUM_TO_INT(SCLB_DATA_TYPE_VEHICLE)
scLB_DisplayedData.displaySetup.iColumnDisplayType[3] = ENUM_TO_INT(SCLB_DATA_TYPE_INT)
//println("SETUP_SOCIAL_CLUB_LEADERBOARD_READ_DATA: Reading RACE GTA leaderboard")
ENDIF
scLB_DisplayedData.iCoronaBoxColumn = 0
ELIF iSubType = ciRACE_SUB_TYPE_RALLY
IF iLaps > 0
AND NOT IS_THIS_RACE_A_POINT_2_POINT_RACE()
scLB_control.ReadDataStruct.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_FREEMODE_RALLY_LAPS)
ELSE
scLB_control.ReadDataStruct.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_FREEMODE_RALLY)
ENDIF
scLB_Control.ReadDataStruct.m_Type = LEADERBOARD2_TYPE_GROUP_MEMBER
scLB_Control.ReadDataStruct.m_GroupSelector.m_NumGroups = 2
scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Category = "Mission"
scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Id = UniqueLBGroup
IF NOT bCoDriver
scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[1].m_Category = "CoDriver"
scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[1].m_Id = "" //"RSN_ConorM_2"
ELSE
scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[1].m_Category = "CoDriver"
NETWORK_PLAYER_GET_USERID(PLAYER_ID(),localUserID)
scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[1].m_Id = localUserID.Name
scLB_DisplayedData.displaySetup.bCoDriver = TRUE
ENDIF
IF iLaps > 0
AND NOT IS_THIS_RACE_A_POINT_2_POINT_RACE()
scLB_Control.ReadDataStruct.m_GroupSelector.m_NumGroups =3
scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[2].m_Category = "Laps"
lapText = ""
lapText += iLaps
scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[2].m_Id = lapText
scLB_DisplayedData.displaySetup.iLaps = iLaps
IF NOT IS_STRING_NULL_OR_EMPTY(stMissionName)
IF iLaps = 1
scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_RRCE_L1"
scLB_DisplayedData.displaySetup.sLeaderboardName = stMissionName
ELSE
scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_RRCE_LM"
scLB_DisplayedData.displaySetup.sLeaderboardName = stMissionName
ENDIF
ELSE
IF iLaps = 1
scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_RRCE_NN_L1"
ELSE
scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_RRCE_NN_LM"
ENDIF
ENDIF
ELSE
scLB_DisplayedData.displaySetup.iLaps = -1
IF NOT IS_STRING_NULL_OR_EMPTY(stMissionName)
scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_RRCE"
scLB_DisplayedData.displaySetup.sLeaderboardName = stMissionName
ELSE
scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_RRCE_NN"
ENDIF
ENDIF
IF iLaps <= 0
OR IS_THIS_RACE_A_POINT_2_POINT_RACE()
scLB_DisplayedData.sColumnTextName[0] = "SCLB_C_BL"
scLB_DisplayedData.sColumnTextName[1] = "SCLB_C_VEH"
scLB_DisplayedData.sColumnTextName[2] = "SCLB_C_RANK"
scLB_DisplayedData.sColumnTextName[3] = ""
scLB_DisplayedData.iReadColumns[0] = 1
scLB_DisplayedData.iReadColumns[1] = 3
scLB_DisplayedData.iReadColumns[2] = 0
scLB_DisplayedData.iReadColumns[3] = 0
scLB_DisplayedData.iCustomVehicleColumn = 4
scLB_DisplayedData.iNumNonRankColumnsToDisplay = 2
SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[0])
SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[1])
scLB_DisplayedData.displaySetup.iLayout = ENUM_TO_INT(SLOT_LAYOUT_3_STATS)
////scLB_DisplayedData.displaySetup.iIcons[0] = ENUM_TO_INT(ICON_VEHICLE)
//scLB_DisplayedData.displaySetup.iIcons[0] = ENUM_TO_INT(ICON_LAP)
//scLB_DisplayedData.displaySetup.iIcons[1] = ENUM_TO_INT(ICON_VEHICLE)
//scLB_DisplayedData.displaySetup.iIcons[2] = ENUM_TO_INT(ICON_POSITION)
//scLB_DisplayedData.displaySetup.iColumnDisplayType[0] = ENUM_TO_INT(SCLB_DATA_TYPE_VEHICLE)
scLB_DisplayedData.displaySetup.iColumnDisplayType[0] = ENUM_TO_INT(SCLB_DATA_TYPE_TIME)
scLB_DisplayedData.displaySetup.iColumnDisplayType[1] = ENUM_TO_INT(SCLB_DATA_TYPE_VEHICLE)
scLB_DisplayedData.displaySetup.iColumnDisplayType[2] = ENUM_TO_INT(SCLB_DATA_TYPE_INT)
ELSE
//scLB_DisplayedData.iReadColumns[0] = 5 //best lap first
scLB_DisplayedData.sColumnTextName[0] = "SCLB_C_RT"
scLB_DisplayedData.sColumnTextName[1] = "SCLB_C_BL"
scLB_DisplayedData.sColumnTextName[2] = "SCLB_C_VEH"
scLB_DisplayedData.sColumnTextName[3] = "SCLB_C_RANK"
scLB_DisplayedData.iReadColumns[0] = 2
scLB_DisplayedData.iReadColumns[1] = 1
scLB_DisplayedData.iReadColumns[2] = 3
scLB_DisplayedData.iReadColumns[3] = 0
scLB_DisplayedData.iNumNonRankColumnsToDisplay = 3
scLB_DisplayedData.iCustomVehicleColumn = 4
SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[0])
SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[1])
SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[2])
scLB_DisplayedData.displaySetup.iLayout = ENUM_TO_INT(SLOT_LAYOUT_4_STATS)
////scLB_DisplayedData.displaySetup.iIcons[0] = ENUM_TO_INT(ICON_VEHICLE)
//scLB_DisplayedData.displaySetup.iIcons[0] = ENUM_TO_INT(ICON_TIME)
//scLB_DisplayedData.displaySetup.iIcons[1] = ENUM_TO_INT(ICON_LAP)
//scLB_DisplayedData.displaySetup.iIcons[2] = ENUM_TO_INT(ICON_VEHICLE)
//scLB_DisplayedData.displaySetup.iIcons[3] = ENUM_TO_INT(ICON_POSITION)
//scLB_DisplayedData.displaySetup.iColumnDisplayType[0] = ENUM_TO_INT(SCLB_DATA_TYPE_VEHICLE)
scLB_DisplayedData.displaySetup.iColumnDisplayType[0] = ENUM_TO_INT(SCLB_DATA_TYPE_TIME)
scLB_DisplayedData.displaySetup.iColumnDisplayType[1] = ENUM_TO_INT(SCLB_DATA_TYPE_TIME)
scLB_DisplayedData.displaySetup.iColumnDisplayType[2] = ENUM_TO_INT(SCLB_DATA_TYPE_VEHICLE)
scLB_DisplayedData.displaySetup.iColumnDisplayType[3] = ENUM_TO_INT(SCLB_DATA_TYPE_INT)
//println("SETUP_SOCIAL_CLUB_LEADERBOARD_READ_DATA: Reading RACE RALLY leaderboard")
ENDIF
//scLB_DisplayedData.iCacheHashID = SC_LC_GENERATE_ID_FOR_CACHE(scLB_control.ReadDataStruct.m_LeaderboardId,iMissionType,iSubType,iLaps,bCoDriver)
scLB_DisplayedData.iCoronaBoxColumn = 0
ELIF iSubType = FMMC_RACE_TYPE_ON_FOOT
OR iSubType = FMMC_RACE_TYPE_ON_FOOT_P2P
//println("Setup on foot race LB!")
//*SCORE_COLUMN( AGG_MAX ) : COLUMN_ID_LB_SCORE - LBCOLUMNTYPE_INT64
//BEST_LAP_TIME( AGG_LAST ) : COLUMN_ID_LB_BEST_TIME - LBCOLUMNTYPE_INT64
// TOTAL_TIME( AGG_LAST ) : COLUMN_ID_LB_TOTAL_TIME - LBCOLUMNTYPE_INT64
// KILLS( AGG_LAST ) : COLUMN_ID_LB_KILLS - LBCOLUMNTYPE_INT32
// DEATHS( AGG_LAST ) : COLUMN_ID_LB_DEATHS - LBCOLUMNTYPE_INT32
//VEHICLE_ID( AGG_LAST ) : COLUMN_ID_LB_VEHICLE_ID - LBCOLUMNTYPE_INT32
//VEHICLE_COLOR( AGG_LAST ) : COLUMN_ID_LB_VEHICLE_COLOR - LBCOLUMNTYPE_INT32
IF iLaps > 0
AND NOT IS_THIS_RACE_A_POINT_2_POINT_RACE()
scLB_control.ReadDataStruct.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_FREEMODE_ON_FOOT_RACE_LAPS)
ELSE
scLB_control.ReadDataStruct.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_FREEMODE_ON_FOOT_RACE)
ENDIF
scLB_Control.ReadDataStruct.m_Type = LEADERBOARD2_TYPE_GROUP_MEMBER
scLB_Control.ReadDataStruct.m_GroupSelector.m_NumGroups = 1
scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Category = "Mission"
scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Id = UniqueLBGroup
IF iLaps > 0
AND NOT IS_THIS_RACE_A_POINT_2_POINT_RACE()
scLB_Control.ReadDataStruct.m_GroupSelector.m_NumGroups = 2
scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[1].m_Category = "Laps"
lapText = ""
lapText += iLaps
scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[1].m_Id = lapText
scLB_DisplayedData.displaySetup.iLaps = iLaps
IF NOT IS_STRING_NULL_OR_EMPTY(stMissionName)
IF iLaps = 1
scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_FRCE_L1"
scLB_DisplayedData.displaySetup.sLeaderboardName = stMissionName
ELSE
scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_FRCE_LM"
scLB_DisplayedData.displaySetup.sLeaderboardName = stMissionName
ENDIF
ELSE
IF iLaps = 1
scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_FRCE_NN_L1"
ELSE
scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_FRCE_NN_LM"
ENDIF
ENDIF
ELSE
scLB_DisplayedData.displaySetup.iLaps = -1
IF NOT IS_STRING_NULL_OR_EMPTY(stMissionName)
scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_FRCE"
scLB_DisplayedData.displaySetup.sLeaderboardName = stMissionName
ELSE
scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_FRCE_NN"
ENDIF
ENDIF
scLB_DisplayedData.displaySetup.iDisplayType = ENUM_TO_INT(DISPLAY_TYPE_MULTIPLAYER)
IF iLaps <= 0
OR IS_THIS_RACE_A_POINT_2_POINT_RACE()
scLB_DisplayedData.sColumnTextName[0] = "SCLB_C_BL"
scLB_DisplayedData.sColumnTextName[2] = "SCLB_C_RANK"
scLB_DisplayedData.sColumnTextName[3] = ""
scLB_DisplayedData.iReadColumns[0] = 1
scLB_DisplayedData.iReadColumns[1] = 0
scLB_DisplayedData.iReadColumns[2] = 0
scLB_DisplayedData.iReadColumns[3] = 0
scLB_DisplayedData.iCustomVehicleColumn = 0
scLB_DisplayedData.iNumNonRankColumnsToDisplay = 1
SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[0])
SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[1])
scLB_DisplayedData.displaySetup.iLayout = ENUM_TO_INT(SLOT_LAYOUT_3_STATS)
////scLB_DisplayedData.displaySetup.iIcons[0] = ENUM_TO_INT(ICON_VEHICLE)
//scLB_DisplayedData.displaySetup.iIcons[0] = ENUM_TO_INT(ICON_LAP)
//scLB_DisplayedData.displaySetup.iIcons[1] = ENUM_TO_INT(ICON_POSITION)
//scLB_DisplayedData.displaySetup.iColumnDisplayType[0] = ENUM_TO_INT(SCLB_DATA_TYPE_VEHICLE)
scLB_DisplayedData.displaySetup.iColumnDisplayType[0] = ENUM_TO_INT(SCLB_DATA_TYPE_TIME)
scLB_DisplayedData.displaySetup.iColumnDisplayType[1] = ENUM_TO_INT(SCLB_DATA_TYPE_INT)
ELSE
scLB_DisplayedData.sColumnTextName[0] = "SCLB_C_RT"
scLB_DisplayedData.sColumnTextName[1] = "SCLB_C_BL"
scLB_DisplayedData.sColumnTextName[2] = "SCLB_C_RANK"
scLB_DisplayedData.iReadColumns[0] = 2
scLB_DisplayedData.iReadColumns[1] = 1
scLB_DisplayedData.iReadColumns[2] = 0
scLB_DisplayedData.iReadColumns[3] = 0
scLB_DisplayedData.iNumNonRankColumnsToDisplay = 2
SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[0])
SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[1])
SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[2])
scLB_DisplayedData.displaySetup.iLayout = ENUM_TO_INT(SLOT_LAYOUT_4_STATS)
////scLB_DisplayedData.displaySetup.iIcons[0] = ENUM_TO_INT(ICON_VEHICLE)
//scLB_DisplayedData.displaySetup.iIcons[0] = ENUM_TO_INT(ICON_TIME)
//scLB_DisplayedData.displaySetup.iIcons[1] = ENUM_TO_INT(ICON_LAP)
//scLB_DisplayedData.displaySetup.iIcons[2] = ENUM_TO_INT(ICON_POSITION)
//scLB_DisplayedData.displaySetup.iColumnDisplayType[0] = ENUM_TO_INT(SCLB_DATA_TYPE_VEHICLE)
scLB_DisplayedData.displaySetup.iColumnDisplayType[0] = ENUM_TO_INT(SCLB_DATA_TYPE_TIME)
scLB_DisplayedData.displaySetup.iColumnDisplayType[1] = ENUM_TO_INT(SCLB_DATA_TYPE_TIME)
scLB_DisplayedData.displaySetup.iColumnDisplayType[2] = ENUM_TO_INT(SCLB_DATA_TYPE_INT)
//println("SETUP_SOCIAL_CLUB_LEADERBOARD_READ_DATA: Reading RACE GTA leaderboard")
ENDIF
scLB_DisplayedData.iCoronaBoxColumn = 0
ELIF iSubType = ciRACE_SUB_TYPE_NON_CONTACT
IF iLaps > 0
AND NOT IS_THIS_RACE_A_POINT_2_POINT_RACE()
scLB_control.ReadDataStruct.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_FREEMODE_NON_CONTACT_RACES_1_LAPS) +(iLaps-1)
ELSE
scLB_control.ReadDataStruct.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_FREEMODE_NON_CONTACT_RACES)
ENDIF
scLB_Control.ReadDataStruct.m_Type = LEADERBOARD2_TYPE_GROUP_MEMBER
scLB_Control.ReadDataStruct.m_GroupSelector.m_NumGroups = 1
scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Category = "Mission"
scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Id = UniqueLBGroup
IF iLaps > 0
AND NOT IS_THIS_RACE_A_POINT_2_POINT_RACE()
scLB_DisplayedData.displaySetup.iLaps = iLaps
IF NOT IS_STRING_NULL_OR_EMPTY(stMissionName)
IF iLaps = 1
scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_RCE_L1"
scLB_DisplayedData.displaySetup.sLeaderboardName = stMissionName
ELSE
scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_RCE_LM"
scLB_DisplayedData.displaySetup.sLeaderboardName = stMissionName
ENDIF
ELSE
IF iLaps = 1
scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_RCE_NN_L1"
ELSE
scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_RCE_NN_LM"
ENDIF
ENDIF
ELSE
IF NOT IS_STRING_NULL_OR_EMPTY(stMissionName)
scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_RCE"
scLB_DisplayedData.displaySetup.sLeaderboardName = stMissionName
ELSE
scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_RCE_NN"
ENDIF
scLB_DisplayedData.displaySetup.iLaps = -1
ENDIF
scLB_DisplayedData.displaySetup.iDisplayType = ENUM_TO_INT(DISPLAY_TYPE_MULTIPLAYER)
//scLB_DisplayedData.iReadColumns[0] = 5 //best lap first
IF iLaps <= 0
OR IS_THIS_RACE_A_POINT_2_POINT_RACE()
scLB_DisplayedData.sColumnTextName[0] = "SCLB_C_BL"
scLB_DisplayedData.sColumnTextName[1] = "SCLB_C_VEH"
scLB_DisplayedData.sColumnTextName[2] = "SCLB_C_RANK"
scLB_DisplayedData.sColumnTextName[3] = ""
scLB_DisplayedData.iReadColumns[0] = 1
scLB_DisplayedData.iReadColumns[1] = 3
scLB_DisplayedData.iReadColumns[2] = 0
scLB_DisplayedData.iReadColumns[3] = 0
scLB_DisplayedData.iCustomVehicleColumn = 4
scLB_DisplayedData.iNumNonRankColumnsToDisplay = 2
SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[0])
SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[1])
scLB_DisplayedData.displaySetup.iLayout = ENUM_TO_INT(SLOT_LAYOUT_3_STATS)
////scLB_DisplayedData.displaySetup.iIcons[0] = ENUM_TO_INT(ICON_VEHICLE)
//scLB_DisplayedData.displaySetup.iIcons[0] = ENUM_TO_INT(ICON_LAP)
//scLB_DisplayedData.displaySetup.iIcons[1] = ENUM_TO_INT(ICON_VEHICLE)
//scLB_DisplayedData.displaySetup.iIcons[2] = ENUM_TO_INT(ICON_POSITION)
//scLB_DisplayedData.displaySetup.iColumnDisplayType[0] = ENUM_TO_INT(SCLB_DATA_TYPE_VEHICLE)
scLB_DisplayedData.displaySetup.iColumnDisplayType[0] = ENUM_TO_INT(SCLB_DATA_TYPE_TIME)
scLB_DisplayedData.displaySetup.iColumnDisplayType[1] = ENUM_TO_INT(SCLB_DATA_TYPE_VEHICLE)
scLB_DisplayedData.displaySetup.iColumnDisplayType[2] = ENUM_TO_INT(SCLB_DATA_TYPE_INT)
ELSE
scLB_DisplayedData.sColumnTextName[0] = "SCLB_C_RT"
scLB_DisplayedData.sColumnTextName[1] = "SCLB_C_BL"
scLB_DisplayedData.sColumnTextName[2] = "SCLB_C_VEH"
scLB_DisplayedData.sColumnTextName[3] = "SCLB_C_RANK"
scLB_DisplayedData.iReadColumns[0] = 2
scLB_DisplayedData.iReadColumns[1] = 1
scLB_DisplayedData.iReadColumns[2] = 3
scLB_DisplayedData.iReadColumns[3] = 0
scLB_DisplayedData.iCustomVehicleColumn = 4
scLB_DisplayedData.iNumNonRankColumnsToDisplay = 3
SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[0])
SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[1])
SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[2])
scLB_DisplayedData.displaySetup.iLayout = ENUM_TO_INT(SLOT_LAYOUT_4_STATS)
////scLB_DisplayedData.displaySetup.iIcons[0] = ENUM_TO_INT(ICON_VEHICLE)
//scLB_DisplayedData.displaySetup.iIcons[0] = ENUM_TO_INT(ICON_TIME)
//scLB_DisplayedData.displaySetup.iIcons[1] = ENUM_TO_INT(ICON_LAP)
//scLB_DisplayedData.displaySetup.iIcons[2] = ENUM_TO_INT(ICON_VEHICLE)
//scLB_DisplayedData.displaySetup.iIcons[3] = ENUM_TO_INT(ICON_POSITION)
//scLB_DisplayedData.displaySetup.iColumnDisplayType[0] = ENUM_TO_INT(SCLB_DATA_TYPE_VEHICLE)
scLB_DisplayedData.displaySetup.iColumnDisplayType[0] = ENUM_TO_INT(SCLB_DATA_TYPE_TIME)
scLB_DisplayedData.displaySetup.iColumnDisplayType[1] = ENUM_TO_INT(SCLB_DATA_TYPE_TIME)
scLB_DisplayedData.displaySetup.iColumnDisplayType[2] = ENUM_TO_INT(SCLB_DATA_TYPE_VEHICLE)
scLB_DisplayedData.displaySetup.iColumnDisplayType[3] = ENUM_TO_INT(SCLB_DATA_TYPE_INT)
ENDIF
scLB_DisplayedData.iCoronaBoxColumn = 0
ENDIF
BREAK
CASE FMMC_TYPE_DEATHMATCH
//KILLS( AGG_SUM ) : COLUMN_ID_LB_KILLS - CLAN_LBCOLUMNTYPE_INT32
// DEATHS( AGG_SUM ) : COLUMN_ID_LB_DEATHS - CLAN_LBCOLUMNTYPE_INT32
// KILL_DEATH_RATIO( AGG_SUM ) : COLUMN_ID_LB_DEATH_RATIO - CLAN_LBCOLUMNTYPE_INT32
IF iSubType = FMMC_DM_TYPE_NORMAL
OR iSubType = FMMC_DM_TYPE_KOTH
scLB_control.ReadDataStruct.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_FREEMODE_DEATHMATCH)
scLB_Control.ReadDataStruct.m_Type = LEADERBOARD2_TYPE_GROUP_MEMBER
scLB_Control.ReadDataStruct.m_GroupSelector.m_NumGroups = 1
scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Category = "Mission"
scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Id = UniqueLBGroup
scLB_DisplayedData.displaySetup.iDisplayType = ENUM_TO_INT(DISPLAY_TYPE_MULTIPLAYER)
IF iSubType = FMMC_DM_TYPE_KOTH
IF NOT IS_STRING_NULL_OR_EMPTY(stMissionName)
scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_KOTH"
scLB_DisplayedData.displaySetup.sLeaderboardName = stMissionName
ELSE
scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_KOTH_NN"
ENDIF
ELSE
IF NOT IS_STRING_NULL_OR_EMPTY(stMissionName)
scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_DM"
scLB_DisplayedData.displaySetup.sLeaderboardName = stMissionName
ELSE
scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_DM_NN"
ENDIF
ENDIF
scLB_DisplayedData.sColumnTextName[0] = "SCLB_C_WLRAT"
scLB_DisplayedData.sColumnTextName[1] = "SCLB_C_WINS"
scLB_DisplayedData.sColumnTextName[2] = "SCLB_C_LOSES"
scLB_DisplayedData.sColumnTextName[3] = "SCLB_C_KD"
scLB_DisplayedData.sColumnTextName[4] = "SCLB_C_KILLS"
scLB_DisplayedData.sColumnTextName[5] = "SCLB_C_DEATH"
scLB_DisplayedData.iReadColumns[0] = 0
scLB_DisplayedData.iReadColumns[1] = 4
scLB_DisplayedData.iReadColumns[2] = 6
scLB_DisplayedData.iReadColumns[3] = 3
scLB_DisplayedData.iReadColumns[4] = 1
scLB_DisplayedData.iReadColumns[5] = 2
scLB_DisplayedData.iNumNonRankColumnsToDisplay = 6
CLEAR_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[0])
SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[1])
SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[2])
CLEAR_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[3])
SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[4])
SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[5])
scLB_DisplayedData.displaySetup.iLayout = ENUM_TO_INT(SLOT_LAYOUT_4_STATS)
scLB_DisplayedData.displaySetup.iColumnDisplayType[0] = ENUM_TO_INT(SCLB_DATA_TYPE_FLOAT)
scLB_DisplayedData.displaySetup.iColumnDisplayType[1] = ENUM_TO_INT(SCLB_DATA_TYPE_INT)
scLB_DisplayedData.displaySetup.iColumnDisplayType[2] = ENUM_TO_INT(SCLB_DATA_TYPE_INT)
scLB_DisplayedData.displaySetup.iColumnDisplayType[3] = ENUM_TO_INT(SCLB_DATA_TYPE_FLOAT)
scLB_DisplayedData.displaySetup.iColumnDisplayType[4] = ENUM_TO_INT(SCLB_DATA_TYPE_INT)
scLB_DisplayedData.displaySetup.iColumnDisplayType[5] = ENUM_TO_INT(SCLB_DATA_TYPE_INT)
//println("SETUP_SOCIAL_CLUB_LEADERBOARD_READ_DATA: Reading DM NORMAL leaderboard")
ELIF iSubType = FMMC_DM_TYPE_TEAM
OR iSubType = FMMC_DM_TYPE_TEAM_KOTH
scLB_control.ReadDataStruct.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_FREEMODE_TEAM_DEATHMATCH)
scLB_Control.ReadDataStruct.m_Type = LEADERBOARD2_TYPE_GROUP_MEMBER
scLB_Control.ReadDataStruct.m_GroupSelector.m_NumGroups = 1
scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Category = "Mission"
scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Id = UniqueLBGroup
scLB_DisplayedData.displaySetup.iDisplayType = ENUM_TO_INT(DISPLAY_TYPE_MULTIPLAYER)
IF iSubType = FMMC_DM_TYPE_TEAM_KOTH
IF NOT IS_STRING_NULL_OR_EMPTY(stMissionName)
scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_TKOTH"
scLB_DisplayedData.displaySetup.sLeaderboardName = stMissionName
ELSE
scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_TKOTH_NN"
ENDIF
ELSE
IF NOT IS_STRING_NULL_OR_EMPTY(stMissionName)
scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_TDM"
scLB_DisplayedData.displaySetup.sLeaderboardName = stMissionName
ELSE
scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_TDM_NN"
ENDIF
ENDIF
scLB_DisplayedData.sColumnTextName[0] = "SCLB_C_WLRAT"
scLB_DisplayedData.sColumnTextName[1] = "SCLB_C_WINS"
scLB_DisplayedData.sColumnTextName[2] = "SCLB_C_LOSES"
scLB_DisplayedData.sColumnTextName[3] = "SCLB_C_KD"
scLB_DisplayedData.sColumnTextName[4] = "SCLB_C_KILLS"
scLB_DisplayedData.sColumnTextName[5] = "SCLB_C_DEATH"
scLB_DisplayedData.iReadColumns[0] = 0
scLB_DisplayedData.iReadColumns[1] = 4
scLB_DisplayedData.iReadColumns[2] = 6
scLB_DisplayedData.iReadColumns[3] = 3
scLB_DisplayedData.iReadColumns[4] = 1
scLB_DisplayedData.iReadColumns[5] = 2
scLB_DisplayedData.iNumNonRankColumnsToDisplay = 6
CLEAR_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[0])
SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[1])
SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[2])
CLEAR_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[3])
SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[4])
SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[5])
scLB_DisplayedData.displaySetup.iLayout = ENUM_TO_INT(SLOT_LAYOUT_4_STATS)
scLB_DisplayedData.displaySetup.iColumnDisplayType[0] = ENUM_TO_INT(SCLB_DATA_TYPE_FLOAT)
scLB_DisplayedData.displaySetup.iColumnDisplayType[1] = ENUM_TO_INT(SCLB_DATA_TYPE_INT)
scLB_DisplayedData.displaySetup.iColumnDisplayType[2] = ENUM_TO_INT(SCLB_DATA_TYPE_INT)
scLB_DisplayedData.displaySetup.iColumnDisplayType[3] = ENUM_TO_INT(SCLB_DATA_TYPE_FLOAT)
scLB_DisplayedData.displaySetup.iColumnDisplayType[4] = ENUM_TO_INT(SCLB_DATA_TYPE_INT)
scLB_DisplayedData.displaySetup.iColumnDisplayType[5] = ENUM_TO_INT(SCLB_DATA_TYPE_INT)
ELIF iSubType = FMMC_DM_TYPE_VEHICLE
scLB_control.ReadDataStruct.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_FREEMODE_VEHICLE_DEATHMATCH)
scLB_Control.ReadDataStruct.m_Type = LEADERBOARD2_TYPE_GROUP_MEMBER
scLB_Control.ReadDataStruct.m_GroupSelector.m_NumGroups = 1
scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Category = "Mission"
scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Id = UniqueLBGroup
scLB_DisplayedData.displaySetup.iDisplayType = ENUM_TO_INT(DISPLAY_TYPE_MULTIPLAYER)
IF NOT IS_STRING_NULL_OR_EMPTY(stMissionName)
scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_VEHDM"
scLB_DisplayedData.displaySetup.sLeaderboardName = stMissionName
ELSE
scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_VEHDM_NN"
ENDIF
scLB_DisplayedData.sColumnTextName[0] = "SCLB_C_WLRAT"
scLB_DisplayedData.sColumnTextName[1] = "SCLB_C_WINS"
scLB_DisplayedData.sColumnTextName[2] = "SCLB_C_LOSES"
scLB_DisplayedData.sColumnTextName[3] = "SCLB_C_KD"
scLB_DisplayedData.sColumnTextName[4] = "SCLB_C_KILLS"
scLB_DisplayedData.sColumnTextName[5] = "SCLB_C_DEATH"
scLB_DisplayedData.iReadColumns[0] = 0
scLB_DisplayedData.iReadColumns[1] = 4
scLB_DisplayedData.iReadColumns[2] = 6
scLB_DisplayedData.iReadColumns[3] = 3
scLB_DisplayedData.iReadColumns[4] = 1
scLB_DisplayedData.iReadColumns[5] = 2
scLB_DisplayedData.iNumNonRankColumnsToDisplay = 6
CLEAR_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[0])
SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[1])
SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[2])
CLEAR_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[3])
SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[4])
SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[5])
scLB_DisplayedData.displaySetup.iLayout = ENUM_TO_INT(SLOT_LAYOUT_4_STATS)
scLB_DisplayedData.displaySetup.iColumnDisplayType[0] = ENUM_TO_INT(SCLB_DATA_TYPE_FLOAT)
scLB_DisplayedData.displaySetup.iColumnDisplayType[1] = ENUM_TO_INT(SCLB_DATA_TYPE_INT)
scLB_DisplayedData.displaySetup.iColumnDisplayType[2] = ENUM_TO_INT(SCLB_DATA_TYPE_INT)
scLB_DisplayedData.displaySetup.iColumnDisplayType[3] = ENUM_TO_INT(SCLB_DATA_TYPE_FLOAT)
scLB_DisplayedData.displaySetup.iColumnDisplayType[4] = ENUM_TO_INT(SCLB_DATA_TYPE_INT)
scLB_DisplayedData.displaySetup.iColumnDisplayType[5] = ENUM_TO_INT(SCLB_DATA_TYPE_INT)
ENDIF
BREAK
CASE FMMC_TYPE_MG_GOLF
scLB_control.ReadDataStruct.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_MINI_GAMES_GOLF)
scLB_Control.ReadDataStruct.m_Type = LEADERBOARD2_TYPE_GROUP_MEMBER
scLB_Control.ReadDataStruct.m_GroupSelector.m_NumGroups = 1
scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Category = "GameType"
scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Id = "MP"
scLB_DisplayedData.displaySetup.iDisplayType = ENUM_TO_INT(DISPLAY_TYPE_MULTIPLAYER)
scLB_DisplayedData.displaySetup.sLeaderboardType = "HUD_MG_GOLF"
scLB_DisplayedData.sColumnTextName[0] = "SCLB_C_GOLF0"
scLB_DisplayedData.sColumnTextName[1] = "SCLB_C_GOLF1"
scLB_DisplayedData.sColumnTextName[2] = "SCLB_C_GAMES"
scLB_DisplayedData.sColumnTextName[3] = "SCLB_C_RANK"
scLB_DisplayedData.iReadColumns[0] = 0 //best round
scLB_DisplayedData.iReadColumns[1] = 1 //longest drive
scLB_DisplayedData.iReadColumns[2] = 3 //num matches
scLB_DisplayedData.iReadColumns[3] = 0
scLB_DisplayedData.iNumNonRankColumnsToDisplay = 3
SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[0])
SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[1])
SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[2])
scLB_DisplayedData.displaySetup.iLayout = ENUM_TO_INT(SLOT_LAYOUT_4_STATS)
//scLB_DisplayedData.displaySetup.iIcons[0] = ENUM_TO_INT(ICON_CROWN)
//scLB_DisplayedData.displaySetup.iIcons[1] = ENUM_TO_INT(ICON_GOLF_CLUB)
//scLB_DisplayedData.displaySetup.iIcons[2] = ENUM_TO_INT(ICON_GOLF)
//scLB_DisplayedData.displaySetup.iIcons[3] = ENUM_TO_INT(ICON_POSITION)
scLB_DisplayedData.displaySetup.iColumnDisplayType[0] = ENUM_TO_INT(SCLB_DATA_TYPE_INT_NEG_B4_DIS)
scLB_DisplayedData.displaySetup.iColumnDisplayType[1] = ENUM_TO_INT(SCLB_DATA_TYPE_INT)
scLB_DisplayedData.displaySetup.iColumnDisplayType[2] = ENUM_TO_INT(SCLB_DATA_TYPE_INT)
scLB_DisplayedData.displaySetup.iColumnDisplayType[3] = ENUM_TO_INT(SCLB_DATA_TYPE_INT)
BREAK
CASE FMMC_TYPE_MG_GOLF_SP
scLB_control.ReadDataStruct.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_MINI_GAMES_GOLF)
scLB_Control.ReadDataStruct.m_Type = LEADERBOARD2_TYPE_GROUP_MEMBER
scLB_Control.ReadDataStruct.m_GroupSelector.m_NumGroups = 1
scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Category = "GameType"
scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Id = "SP"
scLB_DisplayedData.displaySetup.iDisplayType = ENUM_TO_INT(DISPLAY_TYPE_MULTIPLAYER)
scLB_DisplayedData.displaySetup.sLeaderboardType = "HUD_MG_GOLF"
scLB_DisplayedData.sColumnTextName[0] = "SCLB_C_GOLF0"
scLB_DisplayedData.sColumnTextName[1] = "SCLB_C_GOLF1"
scLB_DisplayedData.sColumnTextName[2] = "SCLB_C_GAMES"
scLB_DisplayedData.sColumnTextName[3] = "SCLB_C_RANK"
scLB_DisplayedData.iReadColumns[0] = 0 //best round
scLB_DisplayedData.iReadColumns[1] = 1 //longest drive
scLB_DisplayedData.iReadColumns[2] = 3 //num matches
scLB_DisplayedData.iReadColumns[3] = 0
scLB_DisplayedData.iNumNonRankColumnsToDisplay = 3
SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[0])
SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[1])
SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[2])
scLB_DisplayedData.displaySetup.iLayout = ENUM_TO_INT(SLOT_LAYOUT_4_STATS)
//scLB_DisplayedData.displaySetup.iIcons[0] = ENUM_TO_INT(ICON_CROWN)
//scLB_DisplayedData.displaySetup.iIcons[1] = ENUM_TO_INT(ICON_GOLF_CLUB)
//scLB_DisplayedData.displaySetup.iIcons[2] = ENUM_TO_INT(ICON_GOLF)
//scLB_DisplayedData.displaySetup.iIcons[3] = ENUM_TO_INT(ICON_POSITION)
scLB_DisplayedData.displaySetup.iColumnDisplayType[0] = ENUM_TO_INT(SCLB_DATA_TYPE_INT_NEG_B4_DIS)
scLB_DisplayedData.displaySetup.iColumnDisplayType[1] = ENUM_TO_INT(SCLB_DATA_TYPE_INT)
scLB_DisplayedData.displaySetup.iColumnDisplayType[2] = ENUM_TO_INT(SCLB_DATA_TYPE_INT)
scLB_DisplayedData.displaySetup.iColumnDisplayType[3] = ENUM_TO_INT(SCLB_DATA_TYPE_INT)
BREAK
CASE FMMC_TYPE_MG_HUNTING
// Want score, Time to Gold, Kills, Heart shots, and Photos sent
scLB_control.ReadDataStruct.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_MINI_GAMES_HUNTING)
scLB_Control.ReadDataStruct.m_Type = LEADERBOARD2_TYPE_PLAYER
scLB_Control.ReadDataStruct.m_GroupSelector.m_NumGroups = 0
scLB_DisplayedData.displaySetup.sLeaderboardType = "HUD_MG_HUNTING"
scLB_DisplayedData.displaySetup.sLeaderboardName = "CMSW"
scLB_DisplayedData.displaySetup.b_sLeaderboardNameLiteral = FALSE
scLB_DisplayedData.displaySetup.iDisplayType = ENUM_TO_INT(DISPLAY_TYPE_MINIGAME)
scLB_DisplayedData.sColumnTextName[0] = "SCLB_C_HSCORE"
scLB_DisplayedData.sColumnTextName[1] = "SCLB_C_TIMEHUNT"
scLB_DisplayedData.sColumnTextName[2] = "SCLB_C_EKILLS"
scLB_DisplayedData.sColumnTextName[3] = "SCLB_C_PHOTOS"
scLB_DisplayedData.sColumnTextName[4] = "SCLB_C_MONEY"
//scLB_DisplayedData.sColumnTextName[5] = ""
scLB_DisplayedData.iReadColumns[0] = 0 // Score
scLB_DisplayedData.iReadColumns[1] = 5 // wins
scLB_DisplayedData.iReadColumns[2] = 2 // LOSES
scLB_DisplayedData.iReadColumns[3] = 4
scLB_DisplayedData.iReadColumns[4] = 6
//scLB_DisplayedData.iReadColumns[5] = 0
scLB_DisplayedData.iNumNonRankColumnsToDisplay = 5
SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[0])
SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[1])
SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[2])
SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[3])
SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[4])
scLB_DisplayedData.displaySetup.iLayout = ENUM_TO_INT(SLOT_LAYOUT_5_STATS)
//scLB_DisplayedData.displaySetup.iIcons[0] = ENUM_TO_INT(ICON_POINT)
//scLB_DisplayedData.displaySetup.iIcons[1] = ENUM_TO_INT(ICON_TIME)
//scLB_DisplayedData.displaySetup.iIcons[2] = ENUM_TO_INT(ICON_KILLS)
//scLB_DisplayedData.displaySetup.iIcons[3] = ENUM_TO_INT(ICON_CROSSHAIR)
//scLB_DisplayedData.displaySetup.iIcons[4] = ENUM_TO_INT(ICON_DOLLAR)
scLB_DisplayedData.displaySetup.iColumnDisplayType[0] = ENUM_TO_INT(SCLB_DATA_TYPE_INT)
scLB_DisplayedData.displaySetup.iColumnDisplayType[1] = ENUM_TO_INT(SCLB_DATA_TYPE_GOLD_TIME)
scLB_DisplayedData.displaySetup.iColumnDisplayType[2] = ENUM_TO_INT(SCLB_DATA_TYPE_INT)
scLB_DisplayedData.displaySetup.iColumnDisplayType[3] = ENUM_TO_INT(SCLB_DATA_TYPE_INT)
scLB_DisplayedData.displaySetup.iColumnDisplayType[4] = ENUM_TO_INT(SCLB_DATA_TYPE_INT)
BREAK
CASE FMMC_TYPE_MG_ARM_WRESTLING
scLB_control.ReadDataStruct.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_MINI_GAMES_ARM_WRESTLING)
scLB_Control.ReadDataStruct.m_Type = LEADERBOARD2_TYPE_PLAYER
scLB_Control.ReadDataStruct.m_GroupSelector.m_NumGroups = 0
scLB_DisplayedData.displaySetup.sLeaderboardType = "HUD_MG_ARM"
scLB_DisplayedData.displaySetup.iDisplayType = ENUM_TO_INT(DISPLAY_TYPE_MULTIPLAYER)
scLB_DisplayedData.sColumnTextName[0] = "SCLB_C_WINS"
scLB_DisplayedData.sColumnTextName[1] = "SCLB_C_LOSES"
scLB_DisplayedData.sColumnTextName[2] = "SCLB_C_WLRAT"
scLB_DisplayedData.sColumnTextName[3] = "SCLB_C_RANK"
scLB_DisplayedData.iReadColumns[0] = 2 //wins
scLB_DisplayedData.iReadColumns[1] = 5 //loses
scLB_DisplayedData.iReadColumns[2] = 0 //ratio
scLB_DisplayedData.iReadColumns[3] = 0
scLB_DisplayedData.iNumNonRankColumnsToDisplay = 3
SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[0])
SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[1])
CLEAR_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[2])
scLB_DisplayedData.displaySetup.iLayout = ENUM_TO_INT(SLOT_LAYOUT_4_STATS)
//scLB_DisplayedData.displaySetup.iIcons[0] = ENUM_TO_INT(ICON_WINNER)
//scLB_DisplayedData.displaySetup.iIcons[1] = ENUM_TO_INT(ICON_ARM)
//scLB_DisplayedData.displaySetup.iIcons[2] = ENUM_TO_INT(ICON_SCALE)
//scLB_DisplayedData.displaySetup.iIcons[3] = ENUM_TO_INT(ICON_POSITION)
scLB_DisplayedData.displaySetup.iColumnDisplayType[0] = ENUM_TO_INT(SCLB_DATA_TYPE_INT)
scLB_DisplayedData.displaySetup.iColumnDisplayType[1] = ENUM_TO_INT(SCLB_DATA_TYPE_INT)
scLB_DisplayedData.displaySetup.iColumnDisplayType[2] = ENUM_TO_INT(SCLB_DATA_TYPE_FLOAT)
scLB_DisplayedData.displaySetup.iColumnDisplayType[3] = ENUM_TO_INT(SCLB_DATA_TYPE_INT)
//println("Setup arm wrestling leaderboard read data")
BREAK
CASE FMMC_TYPE_MG_DARTS
scLB_control.ReadDataStruct.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_MINI_GAMES_DARTS)
scLB_Control.ReadDataStruct.m_Type = LEADERBOARD2_TYPE_GROUP_MEMBER
scLB_Control.ReadDataStruct.m_GroupSelector.m_NumGroups = 1
scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Category = "GameType"
IF iSubType = -1
scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Id = "MP"
ELSE
scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Id = "SP"
ENDIF
scLB_DisplayedData.displaySetup.sLeaderboardType = "HUD_MG_DARTS"
scLB_DisplayedData.displaySetup.iDisplayType = ENUM_TO_INT(DISPLAY_TYPE_MULTIPLAYER)
scLB_DisplayedData.sColumnTextName[0] = "SCLB_C_WLRAT"
scLB_DisplayedData.sColumnTextName[1] = "SCLB_C_WINS"
scLB_DisplayedData.sColumnTextName[2] = "SCLB_C_LOSES"
scLB_DisplayedData.sColumnTextName[3] = "SCLB_C_RANK"
scLB_DisplayedData.iReadColumns[0] = 0 //ratio
scLB_DisplayedData.iReadColumns[1] = 7 //wins
scLB_DisplayedData.iReadColumns[2] = 5 //LOSES
scLB_DisplayedData.iReadColumns[3] = 0
scLB_DisplayedData.iNumNonRankColumnsToDisplay = 3
CLEAR_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[0])
SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[1])
SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[2])
scLB_DisplayedData.displaySetup.iLayout = ENUM_TO_INT(SLOT_LAYOUT_4_STATS)
//scLB_DisplayedData.displaySetup.iIcons[0] = ENUM_TO_INT(ICON_SCALE)
//scLB_DisplayedData.displaySetup.iIcons[1] = ENUM_TO_INT(ICON_WINNER)
//scLB_DisplayedData.displaySetup.iIcons[2] = ENUM_TO_INT(ICON_DART)
//scLB_DisplayedData.displaySetup.iIcons[3] = ENUM_TO_INT(ICON_POSITION)
scLB_DisplayedData.displaySetup.iColumnDisplayType[0] = ENUM_TO_INT(SCLB_DATA_TYPE_FLOAT)
scLB_DisplayedData.displaySetup.iColumnDisplayType[1] = ENUM_TO_INT(SCLB_DATA_TYPE_INT)
scLB_DisplayedData.displaySetup.iColumnDisplayType[2] = ENUM_TO_INT(SCLB_DATA_TYPE_INT)
scLB_DisplayedData.displaySetup.iColumnDisplayType[3] = ENUM_TO_INT(SCLB_DATA_TYPE_INT)
BREAK
CASE FMMC_TYPE_MG_TENNIS
scLB_control.ReadDataStruct.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_MINI_GAMES_TENNIS)
scLB_Control.ReadDataStruct.m_Type = LEADERBOARD2_TYPE_GROUP_MEMBER
scLB_Control.ReadDataStruct.m_GroupSelector.m_NumGroups = 1
scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Category = "GameType"
scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Id = "MP"
// scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[1].m_Category = "Location"
// scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[1].m_Id = "ElBarto"
// scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[2].m_Category = "Type"
// scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[2].m_Id = "????"
scLB_DisplayedData.displaySetup.sLeaderboardType = "HUD_MG_TENNIS"
scLB_DisplayedData.displaySetup.sLeaderboardName = stMissionName
IF IS_STRING_NULL_OR_EMPTY(stMissionName)
scLB_DisplayedData.displaySetup.sLeaderboardName = "HUD_MG_TENNIS"
scLB_DisplayedData.displaySetup.sLeaderboardName += (iSubType+1)
ENDIF
scLB_DisplayedData.displaySetup.b_sLeaderboardNameLiteral = FALSE
scLB_DisplayedData.displaySetup.iDisplayType = ENUM_TO_INT(DISPLAY_TYPE_MULTIPLAYER)
scLB_DisplayedData.sColumnTextName[0] = "SCLB_C_WINS"
scLB_DisplayedData.sColumnTextName[1] = "SCLB_C_LOSES"
scLB_DisplayedData.sColumnTextName[2] = "SCLB_C_TEN1"
scLB_DisplayedData.sColumnTextName[3] = "SCLB_C_TEN2"
scLB_DisplayedData.sColumnTextName[4] = "SCLB_C_TEN0"
scLB_DisplayedData.iReadColumns[0] = 0 //wins
scLB_DisplayedData.iReadColumns[1] = 9 //loses
scLB_DisplayedData.iReadColumns[2] = 7 //sets won
scLB_DisplayedData.iReadColumns[3] = 5 //games won
scLB_DisplayedData.iReadColumns[4] = 2 //aces
scLB_DisplayedData.iNumNonRankColumnsToDisplay = 5
SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[0])
SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[1])
SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[2])
SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[3])
SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[4])
scLB_DisplayedData.displaySetup.iLayout = ENUM_TO_INT(SLOT_LAYOUT_4_STATS)
//scLB_DisplayedData.displaySetup.iIcons[0] = ENUM_TO_INT(ICON_TENNIS_BALL)
//scLB_DisplayedData.displaySetup.iIcons[1] = ENUM_TO_INT(ICON_WINNER)
//scLB_DisplayedData.displaySetup.iIcons[2] = ENUM_TO_INT(ICON_LOSER)
//scLB_DisplayedData.displaySetup.iIcons[3] = ENUM_TO_INT(ICON_POSITION)
scLB_DisplayedData.displaySetup.iColumnDisplayType[0] = ENUM_TO_INT(SCLB_DATA_TYPE_INT)
scLB_DisplayedData.displaySetup.iColumnDisplayType[1] = ENUM_TO_INT(SCLB_DATA_TYPE_INT)
scLB_DisplayedData.displaySetup.iColumnDisplayType[2] = ENUM_TO_INT(SCLB_DATA_TYPE_INT)
scLB_DisplayedData.displaySetup.iColumnDisplayType[3] = ENUM_TO_INT(SCLB_DATA_TYPE_INT)
scLB_DisplayedData.displaySetup.iColumnDisplayType[4] = ENUM_TO_INT(SCLB_DATA_TYPE_INT)
BREAK
CASE FMMC_TYPE_MG_TENNIS_SP
scLB_control.ReadDataStruct.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_MINI_GAMES_TENNIS)
scLB_Control.ReadDataStruct.m_Type = LEADERBOARD2_TYPE_GROUP_MEMBER
scLB_Control.ReadDataStruct.m_GroupSelector.m_NumGroups = 1
scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Category = "GameType"
scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Id = "SP"
scLB_DisplayedData.displaySetup.sLeaderboardType = "HUD_MG_TENNIS"
scLB_DisplayedData.displaySetup.sLeaderboardName = stMissionName
scLB_DisplayedData.displaySetup.b_sLeaderboardNameLiteral = FALSE
scLB_DisplayedData.displaySetup.iDisplayType = ENUM_TO_INT(DISPLAY_TYPE_MULTIPLAYER)
scLB_DisplayedData.sColumnTextName[0] = "SCLB_C_WINS"
scLB_DisplayedData.sColumnTextName[1] = "SCLB_C_LOSES"
scLB_DisplayedData.sColumnTextName[2] = "SCLB_C_TEN1"
scLB_DisplayedData.sColumnTextName[3] = "SCLB_C_TEN2"
scLB_DisplayedData.sColumnTextName[4] = "SCLB_C_TEN0"
scLB_DisplayedData.iReadColumns[0] = 0 //wins
scLB_DisplayedData.iReadColumns[1] = 9 //loses
scLB_DisplayedData.iReadColumns[2] = 7 //sets won
scLB_DisplayedData.iReadColumns[3] = 5 //games won
scLB_DisplayedData.iReadColumns[4] = 2 //aces
scLB_DisplayedData.iNumNonRankColumnsToDisplay = 5
SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[0])
SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[1])
SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[2])
SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[3])
SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[4])
scLB_DisplayedData.displaySetup.iLayout = ENUM_TO_INT(SLOT_LAYOUT_4_STATS)
//scLB_DisplayedData.displaySetup.iIcons[0] = ENUM_TO_INT(ICON_TENNIS_BALL)
//scLB_DisplayedData.displaySetup.iIcons[1] = ENUM_TO_INT(ICON_WINNER)
//scLB_DisplayedData.displaySetup.iIcons[2] = ENUM_TO_INT(ICON_LOSER)
//scLB_DisplayedData.displaySetup.iIcons[3] = ENUM_TO_INT(ICON_POSITION)
scLB_DisplayedData.displaySetup.iColumnDisplayType[0] = ENUM_TO_INT(SCLB_DATA_TYPE_INT)
scLB_DisplayedData.displaySetup.iColumnDisplayType[1] = ENUM_TO_INT(SCLB_DATA_TYPE_INT)
scLB_DisplayedData.displaySetup.iColumnDisplayType[2] = ENUM_TO_INT(SCLB_DATA_TYPE_INT)
scLB_DisplayedData.displaySetup.iColumnDisplayType[3] = ENUM_TO_INT(SCLB_DATA_TYPE_INT)
scLB_DisplayedData.displaySetup.iColumnDisplayType[4] = ENUM_TO_INT(SCLB_DATA_TYPE_INT)
BREAK
CASE FMMC_TYPE_MG_SHOOTING_RANGE
scLB_control.ReadDataStruct.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_MINI_GAMES_MP_SRANGE)
scLB_Control.ReadDataStruct.m_Type = LEADERBOARD2_TYPE_GROUP_MEMBER
scLB_Control.ReadDataStruct.m_GroupSelector.m_NumGroups = 2
SWITCH iSubType
CASE 0
scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Category = "Type"
scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Id = "RANDOM"
scLB_DisplayedData.displaySetup.sLeaderboardType = "HUD_MG_RANGEa"
BREAK
CASE 1
scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Category = "Type"
scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Id = "GRID"
scLB_DisplayedData.displaySetup.sLeaderboardType = "HUD_MG_RANGEb"
BREAK
CASE 2
scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Category = "Type"
scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Id = "COVERED"
scLB_DisplayedData.displaySetup.sLeaderboardType = "HUD_MG_RANGEc"
BREAK
DEFAULT
scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Category = "Type"
scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Id = "RANDOM"
scLB_DisplayedData.displaySetup.sLeaderboardType = "HUD_MG_RANGEa"
#IF IS_DEBUG_BUILD
println(iSubType," FMMC_TYPE_MG_SHOOTING_RANGE: FAILED- incorrect arguments passed to setup! called from: ", GET_THIS_SCRIPT_NAME())
SCRIPT_ASSERT("SETUP_SOCIAL_CLUB_LEADERBOARD_READ_DATA: Shooting range leaderboard failed to pass in correct setup. See Conor.")
#ENDIF
BREAK
ENDSWITCH
SWITCH iLaps
CASE 0
scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[1].m_Category = "WeaponId"
scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[1].m_Id = "Pistols"
scLB_DisplayedData.displaySetup.sLeaderboardName = "HUD_MG_PISTOL"
BREAK
CASE 1
scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[1].m_Category = "WeaponId"
scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[1].m_Id = "SMGs"
scLB_DisplayedData.displaySetup.sLeaderboardName = "HUD_MG_SMG"
BREAK
CASE 2
scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[1].m_Category = "WeaponId"
scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[1].m_Id = "AssaultRifles"
scLB_DisplayedData.displaySetup.sLeaderboardName = "HUD_MG_ASSAULT"
BREAK
CASE 3
scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[1].m_Category = "WeaponId"
scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[1].m_Id = "Shotguns"
scLB_DisplayedData.displaySetup.sLeaderboardName = "HUD_MG_SHOTGUN"
BREAK
CASE 4
scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[1].m_Category = "WeaponId"
scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[1].m_Id = "LMGs"
scLB_DisplayedData.displaySetup.sLeaderboardName = "HUD_MG_LMG"
BREAK
CASE 5
scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[1].m_Category = "WeaponId"
scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[1].m_Id = "Heavies"
scLB_DisplayedData.displaySetup.sLeaderboardName = "HUD_MG_HEAVY"
BREAK
DEFAULT
scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[1].m_Category = "WeaponId"
scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[1].m_Id = "Pistols"
scLB_DisplayedData.displaySetup.sLeaderboardName = "HUD_MG_PISTOL"
#IF IS_DEBUG_BUILD
println(iSubType, " FMMC_TYPE_MG_SHOOTING_RANGE: FAILED- incorrect arguments passed to setup! called from: ", GET_THIS_SCRIPT_NAME())
SCRIPT_ASSERT("SETUP_SOCIAL_CLUB_LEADERBOARD_READ_DATA: Shooting range leaderboard failed to pass in correct setup. See Conor.")
#ENDIF
BREAK
ENDSWITCH
scLB_DisplayedData.displaySetup.b_sLeaderboardNameLiteral = FALSE
scLB_DisplayedData.displaySetup.iDisplayType = ENUM_TO_INT(DISPLAY_TYPE_MULTIPLAYER)
scLB_DisplayedData.sColumnTextName[0] = "SCLB_C_WLRAT"
scLB_DisplayedData.sColumnTextName[1] = "SCLB_HITS"
scLB_DisplayedData.sColumnTextName[2] = "SCLB_SHOTS"
scLB_DisplayedData.sColumnTextName[3] = "SCLB_ACC"
scLB_DisplayedData.iReadColumns[0] = 0 //score
scLB_DisplayedData.iReadColumns[1] = 2 //hit
scLB_DisplayedData.iReadColumns[2] = 1 //fired
scLB_DisplayedData.iReadColumns[3] = 3 //accuracy
scLB_DisplayedData.iNumNonRankColumnsToDisplay = 4
CLEAR_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[0])
SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[1])
SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[2])
CLEAR_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[3])
scLB_DisplayedData.displaySetup.iLayout = ENUM_TO_INT(SLOT_LAYOUT_3_STATS)
//scLB_DisplayedData.displaySetup.iIcons[0] = ENUM_TO_INT(ICON_CROSSHAIR)
//scLB_DisplayedData.displaySetup.iIcons[1] = ENUM_TO_INT(ICON_GUN)
//scLB_DisplayedData.displaySetup.iIcons[2] = ENUM_TO_INT(ICON_POSITION)
//scLB_DisplayedData.displaySetup.iIcons[3] = ENUM_TO_INT(ICON_NONE)
scLB_DisplayedData.displaySetup.iColumnDisplayType[0] = ENUM_TO_INT(SCLB_DATA_TYPE_FLOAT)
scLB_DisplayedData.displaySetup.iColumnDisplayType[1] = ENUM_TO_INT(SCLB_DATA_TYPE_INT)
scLB_DisplayedData.displaySetup.iColumnDisplayType[2] = ENUM_TO_INT(SCLB_DATA_TYPE_INT)
scLB_DisplayedData.displaySetup.iColumnDisplayType[3] = ENUM_TO_INT(SCLB_DATA_TYPE_FLOAT)
BREAK
// CASE FMMC_TYPE_MG_RANGE_GRID
// scLB_control.ReadDataStruct.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_MINI_GAMES_SRANGE)
// scLB_Control.ReadDataStruct.m_Type = LEADERBOARD2_TYPE_GROUP_MEMBER
// scLB_Control.ReadDataStruct.m_GroupSelector.m_NumGroups = 2
// scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Category = "GameType"
// scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Id = "MP"
// scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[1].m_Category = "Type"
// scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[1].m_Id = "GRID"
// scLB_DisplayedData.displaySetup.iDisplayType = ENUM_TO_INT(DISPLAY_TYPE_MINIGAME)
// scLB_DisplayedData.displaySetup.sLeaderboardType = "HUD_MG_RANGE"
// scLB_DisplayedData.sColumnTextName[0] = "SCLB_C_SCORE"
// scLB_DisplayedData.sColumnTextName[1] = "SCLB_C_WEAP"
// scLB_DisplayedData.sColumnTextName[2] = "SCLB_C_RANK"
// scLB_DisplayedData.sColumnTextName[3] = ""
// scLB_DisplayedData.iReadColumns[0] = 0 //score
// scLB_DisplayedData.iReadColumns[1] = 1 //weapon
// scLB_DisplayedData.iReadColumns[2] = 0
// scLB_DisplayedData.iReadColumns[3] = 0
// scLB_DisplayedData.iNumNonRankColumnsToDisplay = 2
// SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[0])
// SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[1])
// scLB_DisplayedData.displaySetup.iLayout = ENUM_TO_INT(SLOT_LAYOUT_3_STATS)
// //scLB_DisplayedData.displaySetup.iIcons[0] = ENUM_TO_INT(ICON_CROSSHAIR)
// //scLB_DisplayedData.displaySetup.iIcons[1] = ENUM_TO_INT(ICON_GUN)
// //scLB_DisplayedData.displaySetup.iIcons[2] = ENUM_TO_INT(ICON_POSITION)
// //scLB_DisplayedData.displaySetup.iIcons[3] = ENUM_TO_INT(ICON_NONE)
// scLB_DisplayedData.displaySetup.iColumnDisplayType[0] = ENUM_TO_INT(SCLB_DATA_TYPE_INT)
// scLB_DisplayedData.displaySetup.iColumnDisplayType[1] = ENUM_TO_INT(SCLB_DATA_TYPE_GUN)
// scLB_DisplayedData.displaySetup.iColumnDisplayType[2] = ENUM_TO_INT(SCLB_DATA_TYPE_INT)
// scLB_DisplayedData.displaySetup.iColumnDisplayType[3] = ENUM_TO_INT(SCLB_DATA_TYPE_NONE)
// RETURN TRUE
// BREAK
// CASE FMMC_TYPE_MG_RANGE_COVERED
// scLB_control.ReadDataStruct.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_MINI_GAMES_SRANGE)
// scLB_Control.ReadDataStruct.m_Type = LEADERBOARD2_TYPE_GROUP_MEMBER
// scLB_Control.ReadDataStruct.m_GroupSelector.m_NumGroups = 2
// scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Category = "GameType"
// scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Id = "MP"
// scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[1].m_Category = "Type"
// scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[1].m_Id = "COVERED"
// scLB_DisplayedData.displaySetup.iDisplayType = ENUM_TO_INT(DISPLAY_TYPE_MINIGAME)
// scLB_DisplayedData.displaySetup.sLeaderboardType = "HUD_MG_RANGE"
// scLB_DisplayedData.sColumnTextName[0] = "SCLB_C_SCORE"
// scLB_DisplayedData.sColumnTextName[1] = "SCLB_C_WEAP"
// scLB_DisplayedData.sColumnTextName[2] = "SCLB_C_RANK"
// scLB_DisplayedData.sColumnTextName[3] = ""
// scLB_DisplayedData.iReadColumns[0] = 0 //score
// scLB_DisplayedData.iReadColumns[1] = 1 //weapon
// scLB_DisplayedData.iReadColumns[2] = 0
// scLB_DisplayedData.iReadColumns[3] = 0
// scLB_DisplayedData.iNumNonRankColumnsToDisplay = 2
// SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[0])
// SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[1])
// scLB_DisplayedData.displaySetup.iLayout = ENUM_TO_INT(SLOT_LAYOUT_3_STATS)
// //scLB_DisplayedData.displaySetup.iIcons[0] = ENUM_TO_INT(ICON_CROSSHAIR)
// //scLB_DisplayedData.displaySetup.iIcons[1] = ENUM_TO_INT(ICON_GUN)
// //scLB_DisplayedData.displaySetup.iIcons[2] = ENUM_TO_INT(ICON_POSITION)
// //scLB_DisplayedData.displaySetup.iIcons[3] = ENUM_TO_INT(ICON_NONE)
// scLB_DisplayedData.displaySetup.iColumnDisplayType[0] = ENUM_TO_INT(SCLB_DATA_TYPE_INT)
// scLB_DisplayedData.displaySetup.iColumnDisplayType[1] = ENUM_TO_INT(SCLB_DATA_TYPE_GUN)
// scLB_DisplayedData.displaySetup.iColumnDisplayType[2] = ENUM_TO_INT(SCLB_DATA_TYPE_INT)
// scLB_DisplayedData.displaySetup.iColumnDisplayType[3] = ENUM_TO_INT(SCLB_DATA_TYPE_NONE)
// RETURN TRUE
// BREAK
// CASE FMMC_TYPE_MG_RANGE_RANDOM
// scLB_control.ReadDataStruct.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_MINI_GAMES_SRANGE)
// scLB_Control.ReadDataStruct.m_Type = LEADERBOARD2_TYPE_GROUP_MEMBER
// scLB_Control.ReadDataStruct.m_GroupSelector.m_NumGroups = 2
// scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Category = "GameType"
// scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Id = "MP"
// scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[1].m_Category = "Type"
// scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[1].m_Id = "RANDOM"
// scLB_DisplayedData.displaySetup.iDisplayType = ENUM_TO_INT(DISPLAY_TYPE_MINIGAME)
// scLB_DisplayedData.displaySetup.sLeaderboardType = "HUD_MG_RANGE"
// scLB_DisplayedData.sColumnTextName[0] = "SCLB_C_SCORE"
// scLB_DisplayedData.sColumnTextName[1] = "SCLB_C_WEAP"
// scLB_DisplayedData.sColumnTextName[2] = "SCLB_C_RANK"
// scLB_DisplayedData.sColumnTextName[3] = ""
// scLB_DisplayedData.iReadColumns[0] = 0 //score
// scLB_DisplayedData.iReadColumns[1] = 1 //weapon
// scLB_DisplayedData.iReadColumns[2] = 0
// scLB_DisplayedData.iReadColumns[3] = 0
// scLB_DisplayedData.iNumNonRankColumnsToDisplay = 2
// SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[0])
// SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[1])
// scLB_DisplayedData.displaySetup.iLayout = ENUM_TO_INT(SLOT_LAYOUT_3_STATS)
// //scLB_DisplayedData.displaySetup.iIcons[0] = ENUM_TO_INT(ICON_CROSSHAIR)
// //scLB_DisplayedData.displaySetup.iIcons[1] = ENUM_TO_INT(ICON_GUN)
// //scLB_DisplayedData.displaySetup.iIcons[2] = ENUM_TO_INT(ICON_POSITION)
// //scLB_DisplayedData.displaySetup.iIcons[3] = ENUM_TO_INT(ICON_NONE)
// scLB_DisplayedData.displaySetup.iColumnDisplayType[0] = ENUM_TO_INT(SCLB_DATA_TYPE_INT)
// scLB_DisplayedData.displaySetup.iColumnDisplayType[1] = ENUM_TO_INT(SCLB_DATA_TYPE_GUN)
// scLB_DisplayedData.displaySetup.iColumnDisplayType[2] = ENUM_TO_INT(SCLB_DATA_TYPE_INT)
// scLB_DisplayedData.displaySetup.iColumnDisplayType[3] = ENUM_TO_INT(SCLB_DATA_TYPE_NONE)
// RETURN TRUE
// BREAK
CASE FMMC_TYPE_SP_RANGE_PISTOL_1
CASE FMMC_TYPE_SP_RANGE_PISTOL_2
CASE FMMC_TYPE_SP_RANGE_PISTOL_3
CASE FMMC_TYPE_SP_RANGE_SMG_1
CASE FMMC_TYPE_SP_RANGE_SMG_2
CASE FMMC_TYPE_SP_RANGE_SMG_3
CASE FMMC_TYPE_SP_RANGE_SHOTGUN_1
CASE FMMC_TYPE_SP_RANGE_SHOTGUN_2
CASE FMMC_TYPE_SP_RANGE_SHOTGUN_3
CASE FMMC_TYPE_SP_RANGE_AR_1
CASE FMMC_TYPE_SP_RANGE_AR_2
CASE FMMC_TYPE_SP_RANGE_AR_3
CASE FMMC_TYPE_SP_RANGE_LMG_1
CASE FMMC_TYPE_SP_RANGE_LMG_2
CASE FMMC_TYPE_SP_RANGE_LMG_3
CASE FMMC_TYPE_SP_RANGE_HEAVY_1
CASE FMMC_TYPE_SP_RANGE_HEAVY_2
CASE FMMC_TYPE_SP_RANGE_HEAVY_3
CASE FMMC_TYPE_SP_RANGE_RAILGUN_1
CASE FMMC_TYPE_SP_RANGE_RAILGUN_2
CASE FMMC_TYPE_SP_RANGE_RAILGUN_3
CASE FMMC_TYPE_SP_RANGE_RAILGUN_4
scLB_control.ReadDataStruct.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_MINI_GAMES_SRANGE)
scLB_Control.ReadDataStruct.m_Type = LEADERBOARD2_TYPE_GROUP_MEMBER
scLB_Control.ReadDataStruct.m_GroupSelector.m_NumGroups = 1
scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Category = "Type"
scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Id = UniqueLBGroup
scLB_DisplayedData.displaySetup.iDisplayType = ENUM_TO_INT(DISPLAY_TYPE_MULTIPLAYER)
scLB_DisplayedData.displaySetup.sLeaderboardType = "HUD_MG_RANGE"
scLB_DisplayedData.displaySetup.sLeaderboardName = GET_SHOOTING_RANGE_CHALLENGE_NAME(iMissionType)
scLB_DisplayedData.displaySetup.b_sLeaderboardNameLiteral = FALSE
scLB_DisplayedData.sColumnTextName[0] = "SCLB_C_SCORE"
scLB_DisplayedData.sColumnTextName[1] = "SCLB_C_WEAP"
// scLB_DisplayedData.sColumnTextName[2] = "SCLB_C_RANK"
// scLB_DisplayedData.sColumnTextName[3] = ""
scLB_DisplayedData.iReadColumns[0] = 0 //score
scLB_DisplayedData.iReadColumns[1] = 7 //weapon
// scLB_DisplayedData.iReadColumns[2] = 0
// scLB_DisplayedData.iReadColumns[3] = 0
scLB_DisplayedData.iNumNonRankColumnsToDisplay = 2
SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[0])
SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[1])
scLB_DisplayedData.displaySetup.iLayout = ENUM_TO_INT(SLOT_LAYOUT_3_STATS)
//scLB_DisplayedData.displaySetup.iIcons[0] = ENUM_TO_INT(ICON_CROSSHAIR)
//scLB_DisplayedData.displaySetup.iIcons[1] = ENUM_TO_INT(ICON_GUN)
// //scLB_DisplayedData.displaySetup.iIcons[2] = ENUM_TO_INT(ICON_POSITION)
// //scLB_DisplayedData.displaySetup.iIcons[3] = ENUM_TO_INT(ICON_NONE)
scLB_DisplayedData.displaySetup.iColumnDisplayType[0] = ENUM_TO_INT(SCLB_DATA_TYPE_INT)
scLB_DisplayedData.displaySetup.iColumnDisplayType[1] = ENUM_TO_INT(SCLB_DATA_TYPE_GUN)
// scLB_DisplayedData.displaySetup.iColumnDisplayType[2] = ENUM_TO_INT(SCLB_DATA_TYPE_INT)
// scLB_DisplayedData.displaySetup.iColumnDisplayType[3] = ENUM_TO_INT(SCLB_DATA_TYPE_NONE)
BREAK
CASE FMMC_TYPE_SP_TRI_ALAMO
CASE FMMC_TYPE_SP_TRI_LOSSANTOS
CASE FMMC_TYPE_SP_TRI_VESPUCCI
scLB_control.ReadDataStruct.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_MINI_GAMES_TRIATHLON)
scLB_Control.ReadDataStruct.m_Type = LEADERBOARD2_TYPE_GROUP_MEMBER
scLB_Control.ReadDataStruct.m_GroupSelector.m_NumGroups = 1
scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Category = "Location"
scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Id = UniqueLBGroup
scLB_DisplayedData.displaySetup.iDisplayType = ENUM_TO_INT(DISPLAY_TYPE_MULTIPLAYER)
scLB_DisplayedData.displaySetup.sLeaderboardType = "HUD_MG_TRI"
scLB_DisplayedData.displaySetup.sLeaderboardName = stMissionName
scLB_DisplayedData.displaySetup.b_sLeaderboardNameLiteral = FALSE
scLB_DisplayedData.sColumnTextName[0] = "SCLB_C_TIME"
scLB_DisplayedData.sColumnTextName[1] = "SCLB_C_RANK"
scLB_DisplayedData.sColumnTextName[2] = ""
scLB_DisplayedData.sColumnTextName[3] = ""
scLB_DisplayedData.iReadColumns[0] = 0 //time
scLB_DisplayedData.iReadColumns[1] = 0
scLB_DisplayedData.iReadColumns[2] = 0
scLB_DisplayedData.iReadColumns[3] = 0
scLB_DisplayedData.iNumNonRankColumnsToDisplay = 1
SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[0])
scLB_DisplayedData.displaySetup.iLayout = ENUM_TO_INT(SLOT_LAYOUT_2_STATS)
//scLB_DisplayedData.displaySetup.iIcons[0] = ENUM_TO_INT(ICON_TIME)
//scLB_DisplayedData.displaySetup.iIcons[1] = ENUM_TO_INT(ICON_POSITION)
//scLB_DisplayedData.displaySetup.iIcons[2] = ENUM_TO_INT(ICON_NONE)
//scLB_DisplayedData.displaySetup.iIcons[3] = ENUM_TO_INT(ICON_NONE)
scLB_DisplayedData.displaySetup.iColumnDisplayType[0] = ENUM_TO_INT(SCLB_DATA_TYPE_TIME_NEG_B4_DIS)//SCLB_DATA_TYPE_TIME)
scLB_DisplayedData.displaySetup.iColumnDisplayType[1] = ENUM_TO_INT(SCLB_DATA_TYPE_INT)
scLB_DisplayedData.displaySetup.iColumnDisplayType[2] = ENUM_TO_INT(SCLB_DATA_TYPE_NONE)
scLB_DisplayedData.displaySetup.iColumnDisplayType[3] = ENUM_TO_INT(SCLB_DATA_TYPE_NONE)
BREAK
CASE FMMC_TYPE_SP_OFFROAD_RACES
scLB_control.ReadDataStruct.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_MINI_GAMES_RACES)
scLB_Control.ReadDataStruct.m_Type = LEADERBOARD2_TYPE_GROUP_MEMBER
scLB_Control.ReadDataStruct.m_GroupSelector.m_NumGroups = 3
scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Category = "GameType"
scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Id = "SP"
scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[1].m_Category = "Location"
scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[1].m_Id = UniqueLBGroup
scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[2].m_Category = "Type"
scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[2].m_Id = "OffroadRace"
scLB_DisplayedData.displaySetup.b_sLeaderboardNameLiteral = FALSE
scLB_DisplayedData.displaySetup.iDisplayType = ENUM_TO_INT(DISPLAY_TYPE_MULTIPLAYER)
scLB_DisplayedData.displaySetup.sLeaderboardType = "OFFR_TITLE"
scLB_DisplayedData.displaySetup.sLeaderboardName = stMissionName
scLB_DisplayedData.sColumnTextName[0] = "SCLB_C_TIME"
//scLB_DisplayedData.sColumnTextName[1] = "SCLB_C_RANK"
scLB_DisplayedData.iReadColumns[0] = 3 //time
//scLB_DisplayedData.iReadColumns[1] = 1 //race rank (only takes 1 2 or 3)
scLB_DisplayedData.iNumNonRankColumnsToDisplay = 1
SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[0])
//SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[1])
scLB_DisplayedData.displaySetup.iLayout = ENUM_TO_INT(SLOT_LAYOUT_2_STATS)
// scLB_DisplayedData.displaySetup.iIcons[0] = ENUM_TO_INT(ICON_TIME)
// scLB_DisplayedData.displaySetup.iIcons[1] = ENUM_TO_INT(ICON_POSITION)
scLB_DisplayedData.displaySetup.iColumnDisplayType[0] = ENUM_TO_INT(SCLB_DATA_TYPE_TIME)
//scLB_DisplayedData.displaySetup.iColumnDisplayType[1] = ENUM_TO_INT(SCLB_DATA_TYPE_INT)
BREAK
CASE FMMC_TYPE_SURVIVAL
scLB_control.ReadDataStruct.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_FREEMODE_SURVIVAL)
scLB_Control.ReadDataStruct.m_Type = LEADERBOARD2_TYPE_GROUP_MEMBER
scLB_Control.ReadDataStruct.m_GroupSelector.m_NumGroups = 1
scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Category = "Mission"
scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Id = UniqueLBGroup
scLB_DisplayedData.displaySetup.iDisplayType = ENUM_TO_INT(DISPLAY_TYPE_MULTIPLAYER)
IF NOT IS_STRING_NULL_OR_EMPTY(stMissionName)
scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_HRD"
scLB_DisplayedData.displaySetup.sLeaderboardName = stMissionName
ELSE
scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_HRD_NN"
ENDIF
scLB_DisplayedData.sColumnTextName[0] = "SCLB_C_SCORE"
scLB_DisplayedData.sColumnTextName[1] = "SCLB_C_WAVE"
scLB_DisplayedData.sColumnTextName[2] = "SCLB_C_TKILLS"
scLB_DisplayedData.sColumnTextName[3] = "SCLB_C_TDEATH"
scLB_DisplayedData.iReadColumns[0] = 0
scLB_DisplayedData.iReadColumns[1] = 1 //waves
scLB_DisplayedData.iReadColumns[2] = 2 //kills
scLB_DisplayedData.iReadColumns[3] = 3 // deaths
scLB_DisplayedData.iNumNonRankColumnsToDisplay = 4
SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[0])
SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[1])
SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[2])
SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[3])
scLB_DisplayedData.displaySetup.iLayout = ENUM_TO_INT(SLOT_LAYOUT_4_STATS)
//scLB_DisplayedData.displaySetup.iIcons[0] = ENUM_TO_INT(ICON_LAP)
//scLB_DisplayedData.displaySetup.iIcons[1] = ENUM_TO_INT(ICON_KILLS)
//scLB_DisplayedData.displaySetup.iIcons[2] = ENUM_TO_INT(ICON_CROSSHAIR)
//scLB_DisplayedData.displaySetup.iIcons[3] = ENUM_TO_INT(ICON_POSITION)
scLB_DisplayedData.displaySetup.iColumnDisplayType[0] = ENUM_TO_INT(SCLB_DATA_TYPE_INT)
scLB_DisplayedData.displaySetup.iColumnDisplayType[1] = ENUM_TO_INT(SCLB_DATA_TYPE_INT)
scLB_DisplayedData.displaySetup.iColumnDisplayType[2] = ENUM_TO_INT(SCLB_DATA_TYPE_INT)
scLB_DisplayedData.displaySetup.iColumnDisplayType[3] = ENUM_TO_INT(SCLB_DATA_TYPE_INT)
BREAK
CASE FMMC_TYPE_MISSION
//1955210
IF iSubType = FMMC_MISSION_TYPE_PLANNING
OR iSubType = FMMC_MISSION_TYPE_HEIST
scLB_control.ReadDataStruct.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_FREEMODE_HEIST_MISSION)
scLB_Control.ReadDataStruct.m_Type = LEADERBOARD2_TYPE_GROUP_MEMBER
scLB_Control.ReadDataStruct.m_GroupSelector.m_NumGroups = 1
scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Category = "Mission"
scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Id = UniqueLBGroup
scLB_DisplayedData.displaySetup.iDisplayType = ENUM_TO_INT(DISPLAY_TYPE_MULTIPLAYER)
IF NOT IS_STRING_NULL_OR_EMPTY(stMissionName)
IF iSubType = FMMC_MISSION_TYPE_HEIST
scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_HEIST"
ELSE
scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_HEISTP"
ENDIF
scLB_DisplayedData.displaySetup.sLeaderboardName = stMissionName
ELSE
IF iSubType = FMMC_MISSION_TYPE_HEIST
scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_HEIST_NN"
ELSE
scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_HEISTPNN"
ENDIF
ENDIF
scLB_DisplayedData.sColumnTextName[0] = "SCLB_C_SCORE"
scLB_DisplayedData.sColumnTextName[1] = "SCLB_C_TIME"
scLB_DisplayedData.sColumnTextName[2] = "SCLB_ACC"
scLB_DisplayedData.sColumnTextName[3] = "SCLB_HEADSHOT"
scLB_DisplayedData.sColumnTextName[4] = "SCLB_C_KILLS"
scLB_DisplayedData.iReadColumns[0] = 0
scLB_DisplayedData.iReadColumns[1] = 1
scLB_DisplayedData.iReadColumns[2] = 4
scLB_DisplayedData.iReadColumns[3] = 5
scLB_DisplayedData.iReadColumns[4] = 6
scLB_DisplayedData.iNumNonRankColumnsToDisplay = 3
SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[0])
SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[1])
CLEAR_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[2])
SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[3])
SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[4])
scLB_DisplayedData.displaySetup.iLayout = ENUM_TO_INT(SLOT_LAYOUT_5_STATS)
scLB_DisplayedData.displaySetup.iColumnDisplayType[0] = ENUM_TO_INT(SCLB_DATA_TYPE_INT)
scLB_DisplayedData.displaySetup.iColumnDisplayType[1] = ENUM_TO_INT(SCLB_DATA_TYPE_TIME_POSITIVE)
scLB_DisplayedData.displaySetup.iColumnDisplayType[2] = ENUM_TO_INT(SCLB_DATA_TYPE_FLOAT)
scLB_DisplayedData.displaySetup.iColumnDisplayType[3] = ENUM_TO_INT(SCLB_DATA_TYPE_INT)
scLB_DisplayedData.displaySetup.iColumnDisplayType[4] = ENUM_TO_INT(SCLB_DATA_TYPE_INT)
ELIF g_FMMC_STRUCT.iMissionEndType = ciMISSION_SCORING_TYPE_TIME
// *SCORE_COLUMN( AGG_MAX ) : COLUMN_ID_LB_SCORE - LBCOLUMNTYPE_INT64
// KILLS( AGG_LAST ) : COLUMN_ID_LB_KILLS - LBCOLUMNTYPE_INT32
// DEATHS( AGG_LAST ) : COLUMN_ID_LB_DEATHS - LBCOLUMNTYPE_INT32
// KILL_DEATH_RATIO( AGG_LAST ) : COLUMN_ID_LB_KILL_DEATH_RATIO - LBCOLUMNTYPE_DOUBLE
//TOTAL_TIME( AGG_SUM ) : COLUMN_ID_LB_TOTAL_TIME - LBCOLUMNTYPE_INT64
//TOTAL_KILLS( AGG_SUM ) : COLUMN_ID_LB_KILLS - LBCOLUMNTYPE_INT32
//TOTAL_DEATHS( AGG_SUM ) : COLUMN_ID_LB_DEATHS - LBCOLUMNTYPE_INT32
//TOTAL_KILL_DEATH_RATIO( AGG_SUM ) : COLUMN_ID_LB_KILL_DEATH_RATIO - LBCOLUMNTYPE_DOUBLE
scLB_control.ReadDataStruct.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_FREEMODE_MISSIONS_BY_TIME)
scLB_Control.ReadDataStruct.m_Type = LEADERBOARD2_TYPE_GROUP_MEMBER
scLB_Control.ReadDataStruct.m_GroupSelector.m_NumGroups = 1
scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Category = "Mission"
scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Id = UniqueLBGroup
scLB_DisplayedData.displaySetup.iDisplayType = ENUM_TO_INT(DISPLAY_TYPE_MULTIPLAYER)
IF NOT IS_STRING_NULL_OR_EMPTY(stMissionName)
IF g_FMMC_STRUCT.iMissionSubType = FMMC_MISSION_TYPE_LTS
scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_LTS"
ELSE
scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_MIS"
ENDIF
scLB_DisplayedData.displaySetup.sLeaderboardName = stMissionName
ELSE
IF g_FMMC_STRUCT.iMissionSubType = FMMC_MISSION_TYPE_LTS
scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_LTS_NN"
ELSE
scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_MIS_NN"
ENDIF
ENDIF
scLB_DisplayedData.sColumnTextName[0] = "SCLB_C_TIME"
scLB_DisplayedData.sColumnTextName[1] = "SCLB_C_KILLS"
scLB_DisplayedData.sColumnTextName[2] = "SCLB_C_DEATH"
scLB_DisplayedData.sColumnTextName[3] = "SCLB_C_RANK"
scLB_DisplayedData.iReadColumns[0] = 0 //time
scLB_DisplayedData.iReadColumns[1] = 1 //kills
scLB_DisplayedData.iReadColumns[2] = 2 //deaths
scLB_DisplayedData.iReadColumns[3] = 0
scLB_DisplayedData.iNumNonRankColumnsToDisplay = 3
SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[0])
SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[1])
SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[2])
scLB_DisplayedData.displaySetup.iLayout = ENUM_TO_INT(SLOT_LAYOUT_4_STATS)
//scLB_DisplayedData.displaySetup.iIcons[0] = ENUM_TO_INT(ICON_TIME)
//scLB_DisplayedData.displaySetup.iIcons[1] = ENUM_TO_INT(ICON_KILLS)
//scLB_DisplayedData.displaySetup.iIcons[2] = ENUM_TO_INT(ICON_DEATHS)
//scLB_DisplayedData.displaySetup.iIcons[3] = ENUM_TO_INT(ICON_POSITION)
scLB_DisplayedData.displaySetup.iColumnDisplayType[0] = ENUM_TO_INT(SCLB_DATA_TYPE_TIME_NEG_B4_DIS)
scLB_DisplayedData.displaySetup.iColumnDisplayType[1] = ENUM_TO_INT(SCLB_DATA_TYPE_INT)
scLB_DisplayedData.displaySetup.iColumnDisplayType[2] = ENUM_TO_INT(SCLB_DATA_TYPE_INT)
scLB_DisplayedData.displaySetup.iColumnDisplayType[3] = ENUM_TO_INT(SCLB_DATA_TYPE_INT)
ELSE
// *SCORE_COLUMN( AGG_MAX ) : COLUMN_ID_LB_SCORE - LBCOLUMNTYPE_INT64
//KILLS( AGG_LAST ) : COLUMN_ID_LB_KILLS - LBCOLUMNTYPE_INT32
//DEATHS( AGG_LAST ) : COLUMN_ID_LB_DEATHS - LBCOLUMNTYPE_INT32
//KILL_DEATH_RATIO( AGG_LAST ) : COLUMN_ID_LB_KILL_DEATH_RATIO - LBCOLUMNTYPE_DOUBLE
scLB_control.ReadDataStruct.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_FREEMODE_MISSIONS_BY_BEST_SCORE)
scLB_Control.ReadDataStruct.m_Type = LEADERBOARD2_TYPE_GROUP_MEMBER
scLB_Control.ReadDataStruct.m_GroupSelector.m_NumGroups = 1
scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Category = "Mission"
scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Id = UniqueLBGroup
scLB_DisplayedData.displaySetup.iDisplayType = ENUM_TO_INT(DISPLAY_TYPE_MULTIPLAYER)
IF NOT IS_STRING_NULL_OR_EMPTY(stMissionName)
IF g_FMMC_STRUCT.iMissionSubType = FMMC_MISSION_TYPE_LTS
scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_LTS"
ELSE
scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_MIS"
ENDIF
scLB_DisplayedData.displaySetup.sLeaderboardName = stMissionName
ELSE
IF g_FMMC_STRUCT.iMissionSubType = FMMC_MISSION_TYPE_LTS
scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_LTS_NN"
ELSE
scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_MIS_NN"
ENDIF
ENDIF
IF IS_THIS_ROCKSTAR_MISSION_NEW_VS_TOUR_DE_FORCE(g_FMMC_STRUCT.iAdversaryModeType)
OR IS_THIS_ROCKSTAR_MISSION_NEW_VS_OVERTIME_ANY(g_FMMC_STRUCT.iAdversaryModeType)
scLB_DisplayedData.sColumnTextName[0] = "SCLB_C_SCORE"
scLB_DisplayedData.sColumnTextName[1] = "SCLB_C_DEATH"
scLB_DisplayedData.sColumnTextName[2] = "SCLB_C_RANK"
scLB_DisplayedData.iReadColumns[0] = 0 //Score
scLB_DisplayedData.iReadColumns[1] = 2 // deaths
scLB_DisplayedData.iReadColumns[2] = 0
scLB_DisplayedData.iNumNonRankColumnsToDisplay = 2
SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[0])
SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[1])
scLB_DisplayedData.displaySetup.iLayout = ENUM_TO_INT(SLOT_LAYOUT_3_STATS)
//scLB_DisplayedData.displaySetup.iIcons[0] = ENUM_TO_INT(ICON_CROWN)
//scLB_DisplayedData.displaySetup.iIcons[1] = ENUM_TO_INT(ICON_KILLS)
//scLB_DisplayedData.displaySetup.iIcons[2] = ENUM_TO_INT(ICON_DEATHS)
//scLB_DisplayedData.displaySetup.iIcons[3] = ENUM_TO_INT(ICON_POSITION)
scLB_DisplayedData.displaySetup.iColumnDisplayType[0] = ENUM_TO_INT(SCLB_DATA_TYPE_INT)
scLB_DisplayedData.displaySetup.iColumnDisplayType[1] = ENUM_TO_INT(SCLB_DATA_TYPE_INT)
scLB_DisplayedData.displaySetup.iColumnDisplayType[2] = ENUM_TO_INT(SCLB_DATA_TYPE_INT)
ELIF IS_THIS_ROCKSTAR_MISSION_NEW_VS_BOMB_FOOTBALL(g_FMMC_STRUCT.iAdversaryModeType)
scLB_DisplayedData.sColumnTextName[0] = "SCLB_C_SCORE"
scLB_DisplayedData.sColumnTextName[1] = "SCLB_C_DEATH"
scLB_DisplayedData.sColumnTextName[2] = "SCLB_C_RANK"
scLB_DisplayedData.iReadColumns[0] = 0 //Score
scLB_DisplayedData.iReadColumns[1] = 2 // deaths
scLB_DisplayedData.iReadColumns[2] = 0
scLB_DisplayedData.iNumNonRankColumnsToDisplay = 2
SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[0])
SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[1])
scLB_DisplayedData.displaySetup.iLayout = ENUM_TO_INT(SLOT_LAYOUT_3_STATS)
//scLB_DisplayedData.displaySetup.iIcons[0] = ENUM_TO_INT(ICON_CROWN)
//scLB_DisplayedData.displaySetup.iIcons[1] = ENUM_TO_INT(ICON_KILLS)
//scLB_DisplayedData.displaySetup.iIcons[2] = ENUM_TO_INT(ICON_DEATHS)
//scLB_DisplayedData.displaySetup.iIcons[3] = ENUM_TO_INT(ICON_POSITION)
scLB_DisplayedData.displaySetup.iColumnDisplayType[0] = ENUM_TO_INT(SCLB_DATA_TYPE_INT)
scLB_DisplayedData.displaySetup.iColumnDisplayType[1] = ENUM_TO_INT(SCLB_DATA_TYPE_INT)
scLB_DisplayedData.displaySetup.iColumnDisplayType[2] = ENUM_TO_INT(SCLB_DATA_TYPE_INT)
ELSE
scLB_DisplayedData.sColumnTextName[0] = "SCLB_C_SCORE"
scLB_DisplayedData.sColumnTextName[1] = "SCLB_C_KILLS"
scLB_DisplayedData.sColumnTextName[2] = "SCLB_C_DEATH"
scLB_DisplayedData.sColumnTextName[3] = "SCLB_C_RANK"
scLB_DisplayedData.iReadColumns[0] = 0 //Score
scLB_DisplayedData.iReadColumns[1] = 1 //kills
scLB_DisplayedData.iReadColumns[2] = 2 // deaths
scLB_DisplayedData.iReadColumns[3] = 0
scLB_DisplayedData.iNumNonRankColumnsToDisplay = 3
SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[0])
SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[1])
SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[2])
scLB_DisplayedData.displaySetup.iLayout = ENUM_TO_INT(SLOT_LAYOUT_4_STATS)
//scLB_DisplayedData.displaySetup.iIcons[0] = ENUM_TO_INT(ICON_CROWN)
//scLB_DisplayedData.displaySetup.iIcons[1] = ENUM_TO_INT(ICON_KILLS)
//scLB_DisplayedData.displaySetup.iIcons[2] = ENUM_TO_INT(ICON_DEATHS)
//scLB_DisplayedData.displaySetup.iIcons[3] = ENUM_TO_INT(ICON_POSITION)
scLB_DisplayedData.displaySetup.iColumnDisplayType[0] = ENUM_TO_INT(SCLB_DATA_TYPE_INT)
scLB_DisplayedData.displaySetup.iColumnDisplayType[1] = ENUM_TO_INT(SCLB_DATA_TYPE_INT)
scLB_DisplayedData.displaySetup.iColumnDisplayType[2] = ENUM_TO_INT(SCLB_DATA_TYPE_INT)
scLB_DisplayedData.displaySetup.iColumnDisplayType[3] = ENUM_TO_INT(SCLB_DATA_TYPE_INT)
ENDIF
ENDIF
BREAK
CASE FMMC_TYPE_BASE_JUMP
// *SCORE_COLUMN( AGG_MAX ) : COLUMN_ID_LB_SCORE - LBCOLUMNTYPE_INT64
// SCORE( AGG_LAST ) : COLUMN_ID_LB_JUMP_SCORE - LBCOLUMNTYPE_INT32
// TIME( AGG_LAST ) : COLUMN_ID_LB_TOTAL_TIME - LBCOLUMNTYPE_INT64
// JUMP_COUNT( AGG_SUM ) : COLUMN_ID_LB_NUM_POINTS - LBCOLUMNTYPE_INT32
scLB_control.ReadDataStruct.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_FREEMODE_BASEJUMPS)
scLB_Control.ReadDataStruct.m_Type = LEADERBOARD2_TYPE_GROUP_MEMBER
scLB_Control.ReadDataStruct.m_GroupSelector.m_NumGroups = 1
scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Category = "Mission"
scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Id = UniqueLBGroup
scLB_DisplayedData.displaySetup.iDisplayType = ENUM_TO_INT(DISPLAY_TYPE_MULTIPLAYER)
IF NOT IS_STRING_NULL_OR_EMPTY(stMissionName)
scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_BJ"
scLB_DisplayedData.displaySetup.sLeaderboardName = stMissionName
ELSE
scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_BJ_NN"
ENDIF
scLB_DisplayedData.sColumnTextName[0] = "SCLB_C_SCORE"
scLB_DisplayedData.sColumnTextName[1] = "SCLB_C_TIME"
scLB_DisplayedData.sColumnTextName[2] = "SCLB_C_JUMPS"
scLB_DisplayedData.sColumnTextName[3] = "SCLB_C_RANK"
scLB_DisplayedData.iReadColumns[0] = 0 //Score
//setting up invalid time data
scLB_DisplayedData.iReadColumns[1] = 1 //time
SET_BIT(scLB_DisplayedData.iInvalidDataSetBS,1)
scLB_DisplayedData.iInvalidDataInt[1] = -1
scLB_DisplayedData.iReadColumns[2] = 2 // # jumps
scLB_DisplayedData.iReadColumns[3] = 0
scLB_DisplayedData.iNumNonRankColumnsToDisplay = 3
SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[0])
SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[1])
SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[2])
scLB_DisplayedData.displaySetup.iLayout = ENUM_TO_INT(SLOT_LAYOUT_4_STATS)
//scLB_DisplayedData.displaySetup.iIcons[0] = ENUM_TO_INT(ICON_CROWN)
//scLB_DisplayedData.displaySetup.iIcons[1] = ENUM_TO_INT(ICON_TIME)
//scLB_DisplayedData.displaySetup.iIcons[2] = ENUM_TO_INT(ICON_CROWN)
//scLB_DisplayedData.displaySetup.iIcons[3] = ENUM_TO_INT(ICON_POSITION)
scLB_DisplayedData.displaySetup.iColumnDisplayType[0] = ENUM_TO_INT(SCLB_DATA_TYPE_INT)
scLB_DisplayedData.displaySetup.iColumnDisplayType[1] = ENUM_TO_INT(SCLB_DATA_TYPE_TIME_POSITIVE)
scLB_DisplayedData.displaySetup.iColumnDisplayType[2] = ENUM_TO_INT(SCLB_DATA_TYPE_INT)
scLB_DisplayedData.displaySetup.iColumnDisplayType[3] = ENUM_TO_INT(SCLB_DATA_TYPE_INT)
BREAK
CASE FMMC_TYPE_SP_BASEJUMP
scLB_control.ReadDataStruct.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_MINI_GAMES_BASE_JUMPING)
scLB_Control.ReadDataStruct.m_Type = LEADERBOARD2_TYPE_GROUP_MEMBER
scLB_Control.ReadDataStruct.m_GroupSelector.m_NumGroups = 1
scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Category = "Location"
scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Id = UniqueLBGroup
scLB_DisplayedData.displaySetup.iDisplayType = ENUM_TO_INT(DISPLAY_TYPE_MULTIPLAYER)
scLB_DisplayedData.displaySetup.b_sLeaderboardNameLiteral = FALSE
IF NOT IS_STRING_NULL_OR_EMPTY(stMissionName)
scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_BJ"
scLB_DisplayedData.displaySetup.sLeaderboardName = stMissionName
ELSE
scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_BJ_NN"
ENDIF
scLB_DisplayedData.sColumnTextName[0] = "SCLB_CASH"
scLB_DisplayedData.sColumnTextName[1] = "SCLB_TOTCASH"
scLB_DisplayedData.iReadColumns[0] = 0 //cash
scLB_DisplayedData.iReadColumns[1] = 3 //total cash
scLB_DisplayedData.iNumNonRankColumnsToDisplay = 2
SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[0])
SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[1])
scLB_DisplayedData.displaySetup.iLayout = ENUM_TO_INT(SLOT_LAYOUT_2_STATS)
scLB_DisplayedData.displaySetup.iColumnDisplayType[0] = ENUM_TO_INT(SCLB_DATA_TYPE_INT)
scLB_DisplayedData.displaySetup.iColumnDisplayType[1] = ENUM_TO_INT(SCLB_DATA_TYPE_INT)
BREAK
//pilot school
CASE FMMC_TYPE_MG_PILOT_SCHOOL
SWITCH INT_TO_ENUM(PILOT_SCHOOL_DLC_CLASSES_ENUM_NEW,iSubType)
CASE PSCD_DLC_OutsideLoop
CASE PSCD_DLC_FollowLeader
CASE PSCD_DLC_VehicleLanding
CASE PSCD_DLC_CollectFlags
SWITCH INT_TO_ENUM(PILOT_SCHOOL_DLC_CLASSES_ENUM_NEW,iSubType)
CASE PSCD_DLC_OutsideLoop scLB_control.ReadDataStruct.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_FLIGHT_SCHOOL_OUTSIDE_LOOP) BREAK
CASE PSCD_DLC_FollowLeader scLB_control.ReadDataStruct.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_FLIGHT_SCHOOL_FOLLOW_LEADER) BREAK
CASE PSCD_DLC_VehicleLanding scLB_control.ReadDataStruct.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_FLIGHT_SCHOOL_MOVING_LANDING) BREAK
CASE PSCD_DLC_CollectFlags scLB_control.ReadDataStruct.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_FLIGHT_SCHOOL_COLLECT_FLAGS) BREAK
ENDSWITCH
scLB_Control.ReadDataStruct.m_Type = LEADERBOARD2_TYPE_PLAYER
scLB_Control.ReadDataStruct.m_GroupSelector.m_NumGroups = 0
scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Category = ""
scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Id = ""
scLB_DisplayedData.displaySetup.iDisplayType = ENUM_TO_INT(DISPLAY_TYPE_MULTIPLAYER)
IF NOT IS_STRING_NULL_OR_EMPTY(stMissionName)
scLB_DisplayedData.displaySetup.sLeaderboardType = stMissionName
ELSE
scLB_DisplayedData.displaySetup.sLeaderboardType = "PS_TITLE"
ENDIF
scLB_DisplayedData.sColumnTextName[0] = "SCLB_C_TIME"
scLB_DisplayedData.sColumnTextName[1] = "SCLB_C_MEDAL1"
scLB_DisplayedData.sColumnTextName[2] = "SCLB_C_MEDAL2"
scLB_DisplayedData.sColumnTextName[3] = "SCLB_C_MEDAL3"
scLB_DisplayedData.iReadColumns[0] = 1
scLB_DisplayedData.iReadColumns[1] = 4
scLB_DisplayedData.iReadColumns[2] = 3
scLB_DisplayedData.iReadColumns[3] = 2
scLB_DisplayedData.iNumNonRankColumnsToDisplay = 4
SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[0])
SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[1])
SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[2])
SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[3])
//scLB_DisplayedData.displaySetup.iLayout = ENUM_TO_INT(SLOT_LAYOUT_2_STATS)
scLB_DisplayedData.displaySetup.iColumnDisplayType[0] = ENUM_TO_INT(SCLB_DATA_TYPE_TIME)
scLB_DisplayedData.displaySetup.iColumnDisplayType[1] = ENUM_TO_INT(SCLB_DATA_TYPE_INT)
scLB_DisplayedData.displaySetup.iColumnDisplayType[2] = ENUM_TO_INT(SCLB_DATA_TYPE_INT)
scLB_DisplayedData.displaySetup.iColumnDisplayType[3] = ENUM_TO_INT(SCLB_DATA_TYPE_INT)
BREAK
CASE PSCD_DLC_Engine_failure
CASE PSCD_DLC_ChaseParachute
CASE PSCD_DLC_CityLanding
SWITCH INT_TO_ENUM(PILOT_SCHOOL_DLC_CLASSES_ENUM_NEW,iSubType)
CASE PSCD_DLC_Engine_failure scLB_control.ReadDataStruct.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_FLIGHT_SCHOOL_ENGINE_FAILURE) BREAK
CASE PSCD_DLC_ChaseParachute scLB_control.ReadDataStruct.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_FLIGHT_SCHOOL_CHASE_PARACHUTE) BREAK
CASE PSCD_DLC_CityLanding scLB_control.ReadDataStruct.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_FLIGHT_SCHOOL_CITY_LANDING) BREAK
ENDSWITCH
scLB_Control.ReadDataStruct.m_Type = LEADERBOARD2_TYPE_PLAYER
scLB_Control.ReadDataStruct.m_GroupSelector.m_NumGroups = 0
scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Category = ""
scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Id = ""
scLB_DisplayedData.displaySetup.iDisplayType = ENUM_TO_INT(DISPLAY_TYPE_MULTIPLAYER)
IF NOT IS_STRING_NULL_OR_EMPTY(stMissionName)
scLB_DisplayedData.displaySetup.sLeaderboardType = stMissionName
ELSE
scLB_DisplayedData.displaySetup.sLeaderboardType = "PS_TITLE"
ENDIF
scLB_DisplayedData.sColumnTextName[0] = "SCLB_DIST"
scLB_DisplayedData.sColumnTextName[1] = "SCLB_C_MEDAL1"
scLB_DisplayedData.sColumnTextName[2] = "SCLB_C_MEDAL2"
scLB_DisplayedData.sColumnTextName[3] = "SCLB_C_MEDAL3"
scLB_DisplayedData.iReadColumns[0] = 1
scLB_DisplayedData.iReadColumns[1] = 4
scLB_DisplayedData.iReadColumns[2] = 3
scLB_DisplayedData.iReadColumns[3] = 2
scLB_DisplayedData.iNumNonRankColumnsToDisplay = 4
CLEAR_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[0])
SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[1])
SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[2])
SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[3])
//scLB_DisplayedData.displaySetup.iLayout = ENUM_TO_INT(SLOT_LAYOUT_2_STATS)
scLB_DisplayedData.displaySetup.iColumnDisplayType[0] = ENUM_TO_INT(SCLB_DATA_TYPE_FLOAT)
scLB_DisplayedData.displaySetup.iColumnDisplayType[1] = ENUM_TO_INT(SCLB_DATA_TYPE_INT)
scLB_DisplayedData.displaySetup.iColumnDisplayType[2] = ENUM_TO_INT(SCLB_DATA_TYPE_INT)
scLB_DisplayedData.displaySetup.iColumnDisplayType[3] = ENUM_TO_INT(SCLB_DATA_TYPE_INT)
BREAK
CASE PSCD_DLC_FlyLow
scLB_control.ReadDataStruct.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_FLIGHT_SCHOOL_GROUND_LEVEL)
scLB_Control.ReadDataStruct.m_Type = LEADERBOARD2_TYPE_PLAYER
scLB_Control.ReadDataStruct.m_GroupSelector.m_NumGroups = 0
scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Category = ""
scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Id = ""
scLB_DisplayedData.displaySetup.iDisplayType = ENUM_TO_INT(DISPLAY_TYPE_MULTIPLAYER)
IF NOT IS_STRING_NULL_OR_EMPTY(stMissionName)
scLB_DisplayedData.displaySetup.sLeaderboardType = stMissionName
ELSE
scLB_DisplayedData.displaySetup.sLeaderboardType = "PS_TITLE"
ENDIF
scLB_DisplayedData.sColumnTextName[0] = "SCLB_AVG_HEI"
scLB_DisplayedData.sColumnTextName[1] = "SCLB_C_MEDAL1"
scLB_DisplayedData.sColumnTextName[2] = "SCLB_C_MEDAL2"
scLB_DisplayedData.sColumnTextName[3] = "SCLB_C_MEDAL3"
scLB_DisplayedData.iReadColumns[0] = 1
scLB_DisplayedData.iReadColumns[1] = 4
scLB_DisplayedData.iReadColumns[2] = 3
scLB_DisplayedData.iReadColumns[3] = 2
scLB_DisplayedData.iNumNonRankColumnsToDisplay = 4
CLEAR_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[0])
SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[1])
SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[2])
SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[3])
//scLB_DisplayedData.displaySetup.iLayout = ENUM_TO_INT(SLOT_LAYOUT_2_STATS)
scLB_DisplayedData.displaySetup.iColumnDisplayType[0] = ENUM_TO_INT(SCLB_DATA_TYPE_FLOAT)
scLB_DisplayedData.displaySetup.iColumnDisplayType[1] = ENUM_TO_INT(SCLB_DATA_TYPE_INT)
scLB_DisplayedData.displaySetup.iColumnDisplayType[2] = ENUM_TO_INT(SCLB_DATA_TYPE_INT)
scLB_DisplayedData.displaySetup.iColumnDisplayType[3] = ENUM_TO_INT(SCLB_DATA_TYPE_INT)
BREAK
CASE PSCD_DLC_ShootingRange
CASE PSCD_DLC_Formation
SWITCH INT_TO_ENUM(PILOT_SCHOOL_DLC_CLASSES_ENUM_NEW,iSubType)
CASE PSCD_DLC_ShootingRange scLB_control.ReadDataStruct.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_FLIGHT_SCHOOL_SHOOTING_RANGE) BREAK
CASE PSCD_DLC_Formation scLB_control.ReadDataStruct.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_FLIGHT_SCHOOL_FORMATION_FLIGHT) BREAK
ENDSWITCH
scLB_Control.ReadDataStruct.m_Type = LEADERBOARD2_TYPE_PLAYER
scLB_Control.ReadDataStruct.m_GroupSelector.m_NumGroups = 0
scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Category = ""
scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Id = ""
scLB_DisplayedData.displaySetup.iDisplayType = ENUM_TO_INT(DISPLAY_TYPE_MULTIPLAYER)
IF NOT IS_STRING_NULL_OR_EMPTY(stMissionName)
scLB_DisplayedData.displaySetup.sLeaderboardType = stMissionName
ELSE
scLB_DisplayedData.displaySetup.sLeaderboardType = "PS_TITLE"
ENDIF
scLB_DisplayedData.sColumnTextName[0] = "SCLB_C_SCORE"
scLB_DisplayedData.sColumnTextName[1] = "SCLB_C_MEDAL1"
scLB_DisplayedData.sColumnTextName[2] = "SCLB_C_MEDAL2"
scLB_DisplayedData.sColumnTextName[3] = "SCLB_C_MEDAL3"
scLB_DisplayedData.iReadColumns[0] = 0
scLB_DisplayedData.iReadColumns[1] = 3
scLB_DisplayedData.iReadColumns[2] = 2
scLB_DisplayedData.iReadColumns[3] = 1
//scLB_DisplayedData.iReadColumns[3] = 2
scLB_DisplayedData.iNumNonRankColumnsToDisplay = 4
CLEAR_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[0])
SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[1])
SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[2])
SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[3])
//scLB_DisplayedData.displaySetup.iLayout = ENUM_TO_INT(SLOT_LAYOUT_2_STATS)
scLB_DisplayedData.displaySetup.iColumnDisplayType[0] = ENUM_TO_INT(SCLB_DATA_TYPE_FLOAT_TO_INT)
scLB_DisplayedData.displaySetup.iColumnDisplayType[1] = ENUM_TO_INT(SCLB_DATA_TYPE_INT)
scLB_DisplayedData.displaySetup.iColumnDisplayType[2] = ENUM_TO_INT(SCLB_DATA_TYPE_INT)
scLB_DisplayedData.displaySetup.iColumnDisplayType[3] = ENUM_TO_INT(SCLB_DATA_TYPE_INT)
BREAK
ENDSWITCH
BREAK
CASE FMMC_TYPE_SP_FLIGHT_SCHOOL_DIST
/*SCORE_COLUMN( AGG_SUM ) : COLUMN_ID_LB_SCORE - LBCOLUMNTYPE_INT64
BEST_TIME( AGG_MAX ) : COLUMN_ID_LB_BEST_TIME - LBCOLUMNTYPE_INT64
BEST_LANDING_ACC( AGG_MAX ) : COLUMN_ID_LB_LAND_ACCURACY - LBCOLUMNTYPE_INT32
NUMBER_GOLD_MEDALS( AGG_SUM ) : COLUMN_ID_LB_GOLD_MEDALS - LBCOLUMNTYPE_INT32*/
scLB_control.ReadDataStruct.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_MINI_GAMES_FLIGHT_SCHOOL_BY_DIST)
scLB_Control.ReadDataStruct.m_Type = LEADERBOARD2_TYPE_GROUP_MEMBER
scLB_Control.ReadDataStruct.m_GroupSelector.m_NumGroups = 1
scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Category = "Location" //not sure it needed this??
scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Id = UniqueLBGroup
scLB_DisplayedData.displaySetup.iDisplayType = ENUM_TO_INT(DISPLAY_TYPE_MULTIPLAYER)
IF NOT IS_STRING_NULL_OR_EMPTY(stMissionName)
scLB_DisplayedData.displaySetup.sLeaderboardType = stMissionName
ELSE
scLB_DisplayedData.displaySetup.sLeaderboardType = "PS_TITLE"
ENDIF
scLB_DisplayedData.sColumnTextName[0] = "SCLB_DIST"
//scLB_DisplayedData.sColumnTextName[1] = "SCLB_C_TIME"
scLB_DisplayedData.sColumnTextName[1] = "SCLB_C_MEDAL1"
scLB_DisplayedData.sColumnTextName[2] = "SCLB_C_MEDAL2"
scLB_DisplayedData.sColumnTextName[3] = "SCLB_C_MEDAL3"
scLB_DisplayedData.iReadColumns[0] = 2
//scLB_DisplayedData.iReadColumns[1] = 1
scLB_DisplayedData.iReadColumns[1] = 5
scLB_DisplayedData.iReadColumns[2] = 4
scLB_DisplayedData.iReadColumns[3] = 3
scLB_DisplayedData.iNumNonRankColumnsToDisplay = 4
CLEAR_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[0])
SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[1])
SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[2])
SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[3])
//scLB_DisplayedData.displaySetup.iLayout = ENUM_TO_INT(SLOT_LAYOUT_2_STATS)
scLB_DisplayedData.displaySetup.iColumnDisplayType[0] = ENUM_TO_INT(SCLB_DATA_TYPE_FLOAT_DIST_WITH_CONV_FT)
scLB_DisplayedData.displaySetup.iColumnDisplayType[1] = ENUM_TO_INT(SCLB_DATA_TYPE_INT)
scLB_DisplayedData.displaySetup.iColumnDisplayType[2] = ENUM_TO_INT(SCLB_DATA_TYPE_INT)
scLB_DisplayedData.displaySetup.iColumnDisplayType[3] = ENUM_TO_INT(SCLB_DATA_TYPE_INT)
BREAK
CASE FMMC_TYPE_SP_FLIGHT_SCHOOL_TIME
/*SCORE_COLUMN( AGG_SUM ) : COLUMN_ID_LB_SCORE - LBCOLUMNTYPE_INT64
BEST_TIME( AGG_MAX ) : COLUMN_ID_LB_BEST_TIME - LBCOLUMNTYPE_INT64
BEST_LANDING_ACC( AGG_MAX ) : COLUMN_ID_LB_LAND_ACCURACY - LBCOLUMNTYPE_INT32
NUMBER_GOLD_MEDALS( AGG_SUM ) : COLUMN_ID_LB_GOLD_MEDALS - LBCOLUMNTYPE_INT32*/
scLB_control.ReadDataStruct.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_MINI_GAMES_FLIGHT_SCHOOL_BY_TIME)
scLB_Control.ReadDataStruct.m_Type = LEADERBOARD2_TYPE_GROUP_MEMBER
scLB_Control.ReadDataStruct.m_GroupSelector.m_NumGroups = 1
scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Category = "Location" //not sure it needed this??
scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Id = UniqueLBGroup
scLB_DisplayedData.displaySetup.iDisplayType = ENUM_TO_INT(DISPLAY_TYPE_MULTIPLAYER)
scLB_DisplayedData.displaySetup.b_sLeaderboardNameLiteral = FALSE
IF NOT IS_STRING_NULL_OR_EMPTY(stMissionName)
scLB_DisplayedData.displaySetup.sLeaderboardType = stMissionName
ELSE
scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_MIS_NN"
ENDIF
scLB_DisplayedData.sColumnTextName[0] = "SCLB_C_TIME"
scLB_DisplayedData.sColumnTextName[1] = "SCLB_C_MEDAL1"
scLB_DisplayedData.sColumnTextName[2] = "SCLB_C_MEDAL2"
scLB_DisplayedData.sColumnTextName[3] = "SCLB_C_MEDAL3"
scLB_DisplayedData.iReadColumns[0] = 0
scLB_DisplayedData.iReadColumns[1] = 4
scLB_DisplayedData.iReadColumns[2] = 3
scLB_DisplayedData.iReadColumns[3] = 2
scLB_DisplayedData.iNumNonRankColumnsToDisplay = 4
SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[0])
SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[1])
SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[2])
SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[3])
//scLB_DisplayedData.displaySetup.iLayout = ENUM_TO_INT(SLOT_LAYOUT_2_STATS)
scLB_DisplayedData.displaySetup.iColumnDisplayType[0] = ENUM_TO_INT(SCLB_DATA_TYPE_TIME_NEG_B4_DIS_NO_MS)
scLB_DisplayedData.displaySetup.iColumnDisplayType[1] = ENUM_TO_INT(SCLB_DATA_TYPE_INT)
scLB_DisplayedData.displaySetup.iColumnDisplayType[2] = ENUM_TO_INT(SCLB_DATA_TYPE_INT)
scLB_DisplayedData.displaySetup.iColumnDisplayType[3] = ENUM_TO_INT(SCLB_DATA_TYPE_INT)
BREAK
CASE FMMC_TYPE_SP_FLIGHT_SCHOOL_RATING
/*SCORE_COLUMN( AGG_SUM ) : COLUMN_ID_LB_SCORE - LBCOLUMNTYPE_INT64
BEST_TIME( AGG_MAX ) : COLUMN_ID_LB_BEST_TIME - LBCOLUMNTYPE_INT64
BEST_LANDING_ACC( AGG_MAX ) : COLUMN_ID_LB_LAND_ACCURACY - LBCOLUMNTYPE_INT32
NUMBER_GOLD_MEDALS( AGG_SUM ) : COLUMN_ID_LB_GOLD_MEDALS - LBCOLUMNTYPE_INT32*/
scLB_control.ReadDataStruct.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_MINI_GAMES_FLIGHT_SCHOOL_BY_RATING)
scLB_Control.ReadDataStruct.m_Type = LEADERBOARD2_TYPE_GROUP_MEMBER
scLB_Control.ReadDataStruct.m_GroupSelector.m_NumGroups = 1
scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Category = "Location" //not sure it needed this??
scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Id = UniqueLBGroup
scLB_DisplayedData.displaySetup.iDisplayType = ENUM_TO_INT(DISPLAY_TYPE_MULTIPLAYER)
scLB_DisplayedData.displaySetup.b_sLeaderboardNameLiteral = FALSE
IF NOT IS_STRING_NULL_OR_EMPTY(stMissionName)
scLB_DisplayedData.displaySetup.sLeaderboardType = "PS_TITLE"
scLB_DisplayedData.displaySetup.sLeaderboardName = stMissionName
ELSE
scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_MIS_NN"
ENDIF
scLB_DisplayedData.sColumnTextName[0] = "SCLB_C_SCORE"
scLB_DisplayedData.sColumnTextName[1] = "SCLB_C_TIME"
scLB_DisplayedData.sColumnTextName[2] = "SCLB_ACC"
scLB_DisplayedData.sColumnTextName[3] = "SCLB_C_MEDAL1"
scLB_DisplayedData.sColumnTextName[4] = "SCLB_C_MEDAL2"
scLB_DisplayedData.sColumnTextName[4] = "SCLB_C_MEDAL3"
scLB_DisplayedData.iReadColumns[0] = 0
scLB_DisplayedData.iReadColumns[1] = 1
scLB_DisplayedData.iReadColumns[2] = 2
scLB_DisplayedData.iReadColumns[3] = 5
scLB_DisplayedData.iReadColumns[4] = 4
scLB_DisplayedData.iReadColumns[5] = 3
scLB_DisplayedData.iNumNonRankColumnsToDisplay = 6
CLEAR_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[0])
SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[1])
CLEAR_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[2])
SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[3])
SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[4])
SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[5])
//scLB_DisplayedData.displaySetup.iLayout = ENUM_TO_INT(SLOT_LAYOUT_2_STATS)
scLB_DisplayedData.displaySetup.iColumnDisplayType[0] = ENUM_TO_INT(SCLB_DATA_TYPE_FLOAT)
scLB_DisplayedData.displaySetup.iColumnDisplayType[1] = ENUM_TO_INT(SCLB_DATA_TYPE_TIME_NO_MS)
scLB_DisplayedData.displaySetup.iColumnDisplayType[2] = ENUM_TO_INT(SCLB_DATA_TYPE_FLOAT)
scLB_DisplayedData.displaySetup.iColumnDisplayType[3] = ENUM_TO_INT(SCLB_DATA_TYPE_INT)
scLB_DisplayedData.displaySetup.iColumnDisplayType[4] = ENUM_TO_INT(SCLB_DATA_TYPE_INT)
scLB_DisplayedData.displaySetup.iColumnDisplayType[5] = ENUM_TO_INT(SCLB_DATA_TYPE_INT)
BREAK
CASE FMMC_TYPE_SP_STUNT_PLANE_RACES
scLB_control.ReadDataStruct.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_MINI_GAMES_RACES)
scLB_Control.ReadDataStruct.m_Type = LEADERBOARD2_TYPE_GROUP_MEMBER
scLB_Control.ReadDataStruct.m_GroupSelector.m_NumGroups = 3
scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Category = "GameType"
scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Id = "SP"
scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[1].m_Category = "Location"
scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[1].m_Id = UniqueLBGroup
scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[2].m_Category = "Type"
scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[2].m_Id = "StuntPlaneRace"
scLB_DisplayedData.displaySetup.iDisplayType = ENUM_TO_INT(DISPLAY_TYPE_MULTIPLAYER)
scLB_DisplayedData.displaySetup.b_sLeaderboardNameLiteral = FALSE
IF NOT IS_STRING_NULL_OR_EMPTY(stMissionName)
scLB_DisplayedData.displaySetup.sLeaderboardType = stMissionName
ELSE
scLB_DisplayedData.displaySetup.sLeaderboardType = "SPR_TITLE"
ENDIF
scLB_DisplayedData.sColumnTextName[0] = "SCLB_C_TIME"
scLB_DisplayedData.iReadColumns[0] = 2 //time
scLB_DisplayedData.iNumNonRankColumnsToDisplay = 1
SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[0])
scLB_DisplayedData.displaySetup.iLayout = ENUM_TO_INT(SLOT_LAYOUT_2_STATS)
scLB_DisplayedData.displaySetup.iColumnDisplayType[0] = ENUM_TO_INT(SCLB_DATA_TYPE_TIME)
BREAK
CASE FMMC_TYPE_SP_STREET_RACE
scLB_control.ReadDataStruct.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_MINI_GAMES_RACES)
scLB_Control.ReadDataStruct.m_Type = LEADERBOARD2_TYPE_GROUP_MEMBER
scLB_Control.ReadDataStruct.m_GroupSelector.m_NumGroups = 3
scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Category = "GameType"
scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[1].m_Category = "Location"
scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[2].m_Category = "Type"
scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Id = "SP"
//scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_GRCE_NN"
scLB_DisplayedData.displaySetup.iDisplayType = ENUM_TO_INT(DISPLAY_TYPE_MULTIPLAYER)
IF iLaps <= 0
scLB_DisplayedData.sColumnTextName[0] = "SCLB_C_RT"
scLB_DisplayedData.sColumnTextName[1] = "SCLB_C_VEH"
scLB_DisplayedData.sColumnTextName[2] = ""//SCLB_C_RANK"
scLB_DisplayedData.sColumnTextName[3] = ""
scLB_DisplayedData.iReadColumns[0] = 3
scLB_DisplayedData.iReadColumns[1] = 4
scLB_DisplayedData.iReadColumns[2] = 1
scLB_DisplayedData.iReadColumns[3] = 0
scLB_DisplayedData.iCustomVehicleColumn = 6
scLB_DisplayedData.iNumNonRankColumnsToDisplay = 2//3
SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[0])
SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[1])
//SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[2])
scLB_DisplayedData.displaySetup.iLayout = ENUM_TO_INT(SLOT_LAYOUT_3_STATS)
////scLB_DisplayedData.displaySetup.iIcons[0] = ENUM_TO_INT(ICON_VEHICLE)
//scLB_DisplayedData.displaySetup.iIcons[0] = ENUM_TO_INT(ICON_LAP)
//scLB_DisplayedData.displaySetup.iIcons[1] = ENUM_TO_INT(ICON_VEHICLE)
//scLB_DisplayedData.displaySetup.iIcons[2] = ENUM_TO_INT(ICON_POSITION)
//scLB_DisplayedData.displaySetup.iColumnDisplayType[0] = ENUM_TO_INT(SCLB_DATA_TYPE_VEHICLE)
scLB_DisplayedData.displaySetup.iColumnDisplayType[0] = ENUM_TO_INT(SCLB_DATA_TYPE_TIME)
scLB_DisplayedData.displaySetup.iColumnDisplayType[1] = ENUM_TO_INT(SCLB_DATA_TYPE_VEHICLE)
//scLB_DisplayedData.displaySetup.iColumnDisplayType[2] = ENUM_TO_INT(SCLB_DATA_TYPE_INT)
ELSE
scLB_DisplayedData.sColumnTextName[0] = "SCLB_C_RT"
scLB_DisplayedData.sColumnTextName[1] = "SCLB_C_BL"
scLB_DisplayedData.sColumnTextName[2] = "SCLB_C_VEH"
scLB_DisplayedData.sColumnTextName[3] = ""//SCLB_C_RANK"
scLB_DisplayedData.iReadColumns[0] = 3
scLB_DisplayedData.iReadColumns[1] = 2
scLB_DisplayedData.iReadColumns[2] = 4
scLB_DisplayedData.iReadColumns[3] = 1
scLB_DisplayedData.iCustomVehicleColumn = 4
scLB_DisplayedData.iNumNonRankColumnsToDisplay = 3//4
SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[0])
SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[1])
SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[2])
//SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[3])
scLB_DisplayedData.displaySetup.iLayout = ENUM_TO_INT(SLOT_LAYOUT_4_STATS)
////scLB_DisplayedData.displaySetup.iIcons[0] = ENUM_TO_INT(ICON_VEHICLE)
//scLB_DisplayedData.displaySetup.iIcons[0] = ENUM_TO_INT(ICON_TIME)
//scLB_DisplayedData.displaySetup.iIcons[1] = ENUM_TO_INT(ICON_LAP)
//scLB_DisplayedData.displaySetup.iIcons[2] = ENUM_TO_INT(ICON_VEHICLE)
//scLB_DisplayedData.displaySetup.iIcons[3] = ENUM_TO_INT(ICON_POSITION)
//scLB_DisplayedData.displaySetup.iColumnDisplayType[0] = ENUM_TO_INT(SCLB_DATA_TYPE_VEHICLE)
scLB_DisplayedData.displaySetup.iColumnDisplayType[0] = ENUM_TO_INT(SCLB_DATA_TYPE_TIME)
scLB_DisplayedData.displaySetup.iColumnDisplayType[1] = ENUM_TO_INT(SCLB_DATA_TYPE_TIME)
scLB_DisplayedData.displaySetup.iColumnDisplayType[2] = ENUM_TO_INT(SCLB_DATA_TYPE_VEHICLE)
//scLB_DisplayedData.displaySetup.iColumnDisplayType[3] = ENUM_TO_INT(SCLB_DATA_TYPE_INT)
ENDIF
scLB_DisplayedData.iCoronaBoxColumn = 0
SWITCH iSubType
CASE 0
scLB_DisplayedData.displaySetup.sLeaderboardType = "MGCR_1"
scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[1].m_Id = "MGCR_1"
scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[2].m_Id = "StreetRace"
BREAK
CASE 1
scLB_DisplayedData.displaySetup.sLeaderboardType = "MGCR_2"
scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[1].m_Id = "MGCR_2"
scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[2].m_Id = "StreetRace"
BREAK
CASE 2
scLB_DisplayedData.displaySetup.sLeaderboardType = "MGCR_4"
scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[1].m_Id = "MGCR_4"
scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[2].m_Id = "StreetRace"
BREAK
CASE 3
scLB_DisplayedData.displaySetup.sLeaderboardType = "MGCR_5"
scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[1].m_Id = "MGCR_5"
scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[2].m_Id = "StreetRace"
BREAK
CASE 4
scLB_DisplayedData.displaySetup.sLeaderboardType = "MGCR_6"
scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[1].m_Id = "MGCR_6"
scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[2].m_Id = "StreetRace"
BREAK
CASE 5
scLB_DisplayedData.displaySetup.sLeaderboardType = "MGSR_1"
scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[1].m_Id = "MGSR_1"
scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[2].m_Id = "SeaRace"
BREAK
CASE 6
scLB_DisplayedData.displaySetup.sLeaderboardType = "MGSR_2"
scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[1].m_Id = "MGSR_2"
scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[2].m_Id = "SeaRace"
BREAK
CASE 7
scLB_DisplayedData.displaySetup.sLeaderboardType = "MGSR_3"
scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[1].m_Id = "MGSR_3"
scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[2].m_Id = "SeaRace"
BREAK
CASE 8
scLB_DisplayedData.displaySetup.sLeaderboardType = "MGSR_4"
scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[1].m_Id = "MGSR_4"
scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[2].m_Id = "SeaRace"
BREAK
DEFAULT
SCRIPT_ASSERT("FMMC_TYPE_SP_STREET_RACE iSubType was invalid")
BREAK
ENDSWITCH
BREAK
CASE SCLB_TYPE_ARENA_WARS_MODES
scLB_control.ReadDataStruct.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_FREEMODE_ARENA)
scLB_Control.ReadDataStruct.m_Type = LEADERBOARD2_TYPE_GROUP_MEMBER
scLB_Control.ReadDataStruct.m_GroupSelector.m_NumGroups = 1
scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Category = "ArenaMode"
scLB_DisplayedData.sColumnTextName[0] = "SCLB_C_WINS"
scLB_DisplayedData.sColumnTextName[2] = "SCLB_C_GAMES"
scLB_DisplayedData.iReadColumns[0] = 0 //wins
scLB_DisplayedData.iReadColumns[1] = 1 //Points (kills/flags/checkpints/passes)
scLB_DisplayedData.iReadColumns[2] = 2 //games played
scLB_DisplayedData.iReadColumns[3] = 3 //points2 (time survived/kills/damage/goals etc)
scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Id = GET_ARENA_WARS_MODE_NAME(iSubType)
scLB_DisplayedData.iNumNonRankColumnsToDisplay = 4
SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[0])
SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[1])
SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[2])
SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[3])
scLB_DisplayedData.displaySetup.iLayout = ENUM_TO_INT(SLOT_LAYOUT_4_STATS)
scLB_DisplayedData.displaySetup.iColumnDisplayType[0] = ENUM_TO_INT(SCLB_DATA_TYPE_INT)
scLB_DisplayedData.displaySetup.iColumnDisplayType[1] = ENUM_TO_INT(SCLB_DATA_TYPE_INT)
scLB_DisplayedData.displaySetup.iColumnDisplayType[2] = ENUM_TO_INT(SCLB_DATA_TYPE_INT)
scLB_DisplayedData.displaySetup.iColumnDisplayType[3] = ENUM_TO_INT(SCLB_DATA_TYPE_INT)
SWITCH iSubType
CASE SCLB_TYPE_ARENA_MODE_BUZZER_BEATER
scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_ARN_BUZZ"
scLB_DisplayedData.sColumnTextName[1] = "SCLB_C_KILLS"
scLB_DisplayedData.sColumnTextName[3] = "SCLB_C_TIMESUR"
scLB_DisplayedData.displaySetup.iColumnDisplayType[3] = ENUM_TO_INT(SCLB_DATA_TYPE_TIME_NO_MS)
BREAK
CASE SCLB_TYPE_ARENA_MODE_CARNAGE
scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_ARN_CARN"
scLB_DisplayedData.sColumnTextName[1] = "SCLB_C_KILLS"
scLB_DisplayedData.sColumnTextName[3] = "SCLB_C_DAMDEALT"
BREAK
CASE SCLB_TYPE_ARENA_MODE_FLAG_WAR
scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_ARN_FLAGW"
scLB_DisplayedData.sColumnTextName[1] = "SCLB_C_FLAGS"
scLB_DisplayedData.sColumnTextName[3] = "SCLB_C_KILLS"
BREAK
CASE SCLB_TYPE_ARENA_MODE_WRECK_IT
scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_ARN_WRECK"
scLB_DisplayedData.sColumnTextName[1] = "SCLB_C_KILLS"
scLB_DisplayedData.sColumnTextName[3] = "SCLB_C_DAMDEALT"
BREAK
CASE SCLB_TYPE_ARENA_MODE_BOMB_BALL
scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_ARN_BOMBB"
scLB_DisplayedData.sColumnTextName[1] = "SCLB_C_POINTS"
scLB_DisplayedData.sColumnTextName[3] = "SCLB_C_GOALS"
BREAK
CASE SCLB_TYPE_ARENA_MODE_GAMES_MASTERS
scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_ARN_GAMEM"
scLB_DisplayedData.sColumnTextName[1] = "SCLB_C_CPOINTS"
scLB_DisplayedData.sColumnTextName[3] = "SCLB_C_KILLS"
BREAK
CASE SCLB_TYPE_ARENA_MODE_MONSTERS
scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_ARN_MNSTR"
scLB_DisplayedData.sColumnTextName[1] = "SCLB_C_KILLS"
scLB_DisplayedData.sColumnTextName[3] = "SCLB_C_DAMDEALT"
BREAK
CASE SCLB_TYPE_ARENA_MODE_HOT_BOMB
scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_ARN_HOTB"
scLB_DisplayedData.sColumnTextName[1] = "SCLB_C_PASSES"
scLB_DisplayedData.sColumnTextName[3] = "SCLB_C_TIMESUR"
scLB_DisplayedData.displaySetup.iColumnDisplayType[3] = ENUM_TO_INT(SCLB_DATA_TYPE_TIME_NO_MS)
BREAK
CASE SCLB_TYPE_ARENA_MODE_TAG_TEAM
scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_ARN_TAGT"
scLB_DisplayedData.sColumnTextName[1] = "SCLB_C_KILLS"
scLB_DisplayedData.sColumnTextName[3] = "SCLB_C_TAGS"
BREAK
ENDSWITCH
scLB_DisplayedData.displaySetup.iDisplayType = ENUM_TO_INT(DISPLAY_TYPE_MULTIPLAYER)
scLB_DisplayedData.iNumNonRankColumnsToDisplay = 4
SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[0])
SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[1])
SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[2])
SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[3])
scLB_DisplayedData.displaySetup.iLayout = ENUM_TO_INT(SLOT_LAYOUT_4_STATS)
scLB_DisplayedData.displaySetup.iColumnDisplayType[0] = ENUM_TO_INT(SCLB_DATA_TYPE_INT)
scLB_DisplayedData.displaySetup.iColumnDisplayType[1] = ENUM_TO_INT(SCLB_DATA_TYPE_INT)
scLB_DisplayedData.displaySetup.iColumnDisplayType[2] = ENUM_TO_INT(SCLB_DATA_TYPE_INT)
scLB_DisplayedData.displaySetup.iColumnDisplayType[3] = ENUM_TO_INT(SCLB_DATA_TYPE_INT)
BREAK
CASE SCLB_TYPE_ARENA_WARS_CAREER
scLB_control.ReadDataStruct.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_FREEMODE_ARENA_CAREER)
scLB_Control.ReadDataStruct.m_Type = LEADERBOARD2_TYPE_PLAYER
scLB_Control.ReadDataStruct.m_GroupSelector.m_NumGroups = 0
scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Category = ""
scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Id = ""
scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_ARN_CAREER"
scLB_DisplayedData.sColumnTextName[0] = "SCLB_C_CARPT"
scLB_DisplayedData.sColumnTextName[1] = "SCLB_C_WLRAT"
scLB_DisplayedData.sColumnTextName[2] = "SCLB_C_MATCHES"
scLB_DisplayedData.sColumnTextName[3] = "SCLB_C_TITLE"
//scLB_DisplayedData.sColumnTextName[4] = "SCLB_C_VEH"
scLB_DisplayedData.iReadColumns[0] = 0 //score
scLB_DisplayedData.iReadColumns[1] = 1 //wins ratio
scLB_DisplayedData.iReadColumns[2] = 3 //# games
scLB_DisplayedData.iReadColumns[3] = 4 //title
//scLB_DisplayedData.iReadColumns[4] = 5 //vehicle
scLB_DisplayedData.displaySetup.iDisplayType = ENUM_TO_INT(DISPLAY_TYPE_MULTIPLAYER)
scLB_DisplayedData.iNumNonRankColumnsToDisplay = 4
scLB_DisplayedData.displaySetup.iLayout = ENUM_TO_INT(SLOT_LAYOUT_4_STATS)
SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[0])
CLEAR_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[1])
SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[2])
SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[3])
//SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[4])
scLB_DisplayedData.displaySetup.iLayout = ENUM_TO_INT(SLOT_LAYOUT_4_STATS)
scLB_DisplayedData.displaySetup.iColumnDisplayType[0] = ENUM_TO_INT(SCLB_DATA_TYPE_INT)
scLB_DisplayedData.displaySetup.iColumnDisplayType[1] = ENUM_TO_INT(SCLB_DATA_TYPE_FLOAT)
scLB_DisplayedData.displaySetup.iColumnDisplayType[2] = ENUM_TO_INT(SCLB_DATA_TYPE_INT)
scLB_DisplayedData.displaySetup.iColumnDisplayType[3] = ENUM_TO_INT(SCLB_DATA_TYPE_ARENA_TITLE)
//scLB_DisplayedData.displaySetup.iColumnDisplayType[4] = ENUM_TO_INT(SCLB_DATA_TYPE_VEHICLE)
BREAK
CASE SCLB_TYPE_CAR_MEET_MEMBERSHIP
scLB_control.ReadDataStruct.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_FREEMODE_TUNER_CAR_CLUB)
scLB_Control.ReadDataStruct.m_Type = LEADERBOARD2_TYPE_PLAYER
scLB_Control.ReadDataStruct.m_GroupSelector.m_NumGroups = 0
scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Category = ""
scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Id = ""
scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_CCM_CAREER"
scLB_DisplayedData.sColumnTextName[0] = "SCLB_C_CCMLVL"
scLB_DisplayedData.sColumnTextName[1] = "SCLB_C_WLRAT"
scLB_DisplayedData.sColumnTextName[2] = "SCLB_C_RACES"
//scLB_DisplayedData.sColumnTextName[4] = "SCLB_C_VEH"
scLB_DisplayedData.iReadColumns[0] = 0 //score
scLB_DisplayedData.iReadColumns[1] = 4 //wins ratio
scLB_DisplayedData.iReadColumns[2] = 3 //# races
//scLB_DisplayedData.iReadColumns[3] = 4 //title
//scLB_DisplayedData.iReadColumns[4] = 5 //vehicle
scLB_DisplayedData.displaySetup.iDisplayType = ENUM_TO_INT(DISPLAY_TYPE_MULTIPLAYER)
scLB_DisplayedData.iNumNonRankColumnsToDisplay = 3
scLB_DisplayedData.displaySetup.iLayout = ENUM_TO_INT(SLOT_LAYOUT_3_STATS)
SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[0])
CLEAR_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[1])
SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[2])
//SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[3])
//SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[4])
scLB_DisplayedData.displaySetup.iLayout = ENUM_TO_INT(SLOT_LAYOUT_3_STATS)
scLB_DisplayedData.displaySetup.iColumnDisplayType[0] = ENUM_TO_INT(SCLB_DATA_TYPE_CC_MEMBER_RANK)
scLB_DisplayedData.displaySetup.iColumnDisplayType[1] = ENUM_TO_INT(SCLB_DATA_TYPE_FLOAT)
scLB_DisplayedData.displaySetup.iColumnDisplayType[2] = ENUM_TO_INT(SCLB_DATA_TYPE_INT)
//scLB_DisplayedData.displaySetup.iColumnDisplayType[3] = ENUM_TO_INT(SCLB_DATA_TYPE_ARENA_TITLE)
//scLB_DisplayedData.displaySetup.iColumnDisplayType[4] = ENUM_TO_INT(SCLB_DATA_TYPE_VEHICLE)
BREAK
CASE FMMC_TYPE_SANDBOX_ACTIVITY
scLB_control.ReadDataStruct.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_FREEMODE_TUNER_RACES)
scLB_Control.ReadDataStruct.m_Type = LEADERBOARD2_TYPE_GROUP_MEMBER
scLB_Control.ReadDataStruct.m_GroupSelector.m_NumGroups = 1
scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Category = "GameType"
UniqueLBGroup = "TUNER_SANDB_SVAR"
IF iSubType = ENUM_TO_INT(SAS_HH_LOCATION_1)
OR iSubType = ENUM_TO_INT(SAS_HH_LOCATION_2)
UniqueLBGroup += ENUM_TO_INT(SAS_HH_LOCATION_1)
ELSE
UniqueLBGroup += iSubType
ENDIF
scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Id = UniqueLBGroup
scLB_DisplayedData.sColumnTextName[0] = "SCLB_C_BESTT"
scLB_DisplayedData.sColumnTextName[1] = "SCLB_C_WINS"
scLB_DisplayedData.sColumnTextName[2] = "SCLB_C_VEH"
scLB_DisplayedData.iReadColumns[0] = 0 //fastest time
scLB_DisplayedData.iReadColumns[1] = 2 //wins
scLB_DisplayedData.iReadColumns[2] = 3 //vehicle
scLB_DisplayedData.iCustomVehicleColumn = 4
SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[0])
SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[1])
SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[2])
//SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[3])
scLB_DisplayedData.iNumNonRankColumnsToDisplay = 3
scLB_DisplayedData.displaySetup.iLayout = ENUM_TO_INT(SLOT_LAYOUT_3_STATS)
scLB_DisplayedData.displaySetup.iColumnDisplayType[0] = ENUM_TO_INT(SCLB_DATA_TYPE_TIME_NEG_B4_DIS)
scLB_DisplayedData.displaySetup.iColumnDisplayType[1] = ENUM_TO_INT(SCLB_DATA_TYPE_INT)
scLB_DisplayedData.displaySetup.iColumnDisplayType[2] = ENUM_TO_INT(SCLB_DATA_TYPE_VEHICLE)
SWITCH INT_TO_ENUM(SANDBOX_ACTIVITY_SUBVARIATION,iSubType)
CASE SAS_TT_LOCATION_1
scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_T_TT"
scLB_DisplayedData.iReadColumns[0] = 0 //fastest time
scLB_DisplayedData.iReadColumns[1] = 3 //vehicle
scLB_DisplayedData.sColumnTextName[0] = "SCLB_C_BESTT"
scLB_DisplayedData.sColumnTextName[1] = "SCLB_C_VEH"
scLB_DisplayedData.sColumnTextName[2] = ""
scLB_DisplayedData.iNumNonRankColumnsToDisplay = 2
scLB_DisplayedData.displaySetup.iLayout = ENUM_TO_INT(SLOT_LAYOUT_2_STATS)
scLB_DisplayedData.displaySetup.iColumnDisplayType[0] = ENUM_TO_INT(SCLB_DATA_TYPE_TIME_NEG_B4_DIS)
scLB_DisplayedData.displaySetup.iColumnDisplayType[1] = ENUM_TO_INT(SCLB_DATA_TYPE_VEHICLE)
BREAK
CASE SAS_CD_LOCATION_1
scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_T_CD"
BREAK
CASE SAS_HH_LOCATION_1
CASE SAS_HH_LOCATION_2
scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_T_HH1"
BREAK
ENDSWITCH
BREAK
CASE FMMC_TYPE_STREET_RACE_SERIES
CASE FMMC_TYPE_PURSUIT_SERIES
scLB_control.ReadDataStruct.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_FREEMODE_TUNER_RACES)
scLB_Control.ReadDataStruct.m_Type = LEADERBOARD2_TYPE_GROUP_MEMBER
scLB_Control.ReadDataStruct.m_GroupSelector.m_NumGroups = 2
scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[1].m_Category = "Mission"
scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[1].m_Id = UniqueLBGroup
IF iMissionType = FMMC_TYPE_STREET_RACE_SERIES
scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Category = "GameType"
scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Id = "TUNER_SRS"
scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_T_SRS"
scLB_DisplayedData.sColumnTextName[0] = "SCLB_C_BL"
ELSE
scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Category = "GameType"
scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Id = "TUNER_PS"
scLB_DisplayedData.displaySetup.sLeaderboardType = "SCLB_T_PURS"
scLB_DisplayedData.sColumnTextName[0] = "SCLB_C_BESTT"
ENDIF
scLB_DisplayedData.displaySetup.sLeaderboardName = stMissionName
scLB_DisplayedData.sColumnTextName[1] = "SCLB_C_WINS"
scLB_DisplayedData.sColumnTextName[2] = "SCLB_C_VEH"
scLB_DisplayedData.iReadColumns[0] = 0 //fastest time
scLB_DisplayedData.iReadColumns[1] = 2 //wins
scLB_DisplayedData.iReadColumns[2] = 3 //vehicle
scLB_DisplayedData.iCustomVehicleColumn = 4
scLB_DisplayedData.iNumNonRankColumnsToDisplay = 3
SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[0])
SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[1])
SET_BIT(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[2])
scLB_DisplayedData.displaySetup.iLayout = ENUM_TO_INT(SLOT_LAYOUT_3_STATS)
scLB_DisplayedData.displaySetup.iColumnDisplayType[0] = ENUM_TO_INT(SCLB_DATA_TYPE_TIME_NEG_B4_DIS)
scLB_DisplayedData.displaySetup.iColumnDisplayType[1] = ENUM_TO_INT(SCLB_DATA_TYPE_INT)
scLB_DisplayedData.displaySetup.iColumnDisplayType[2] = ENUM_TO_INT(SCLB_DATA_TYPE_VEHICLE)
scLB_DisplayedData.displaySetup.iDisplayType = ENUM_TO_INT(DISPLAY_TYPE_MULTIPLAYER)
BREAK
ENDSWITCH
i = 0
REPEAT scLB_DisplayedData.iNumNonRankColumnsToDisplay i
//IF i < 5
IF IS_BIT_SET(scLB_DisplayedData.iReadColumnIsIntBS,scLB_DisplayedData.iReadColumns[i])
SET_BIT(scLB_DisplayedData.iDisplayColumnIsIntBS,i)
//println("scLB_DisplayedData.iDisplayColumnIsIntBS setting bit, ", i)
ENDIF
//ENDIF
ENDREPEAT
scLB_DisplayedData.iCacheHashID = SC_LC_GENERATE_ID_FOR_CACHE(UniqueLBGroup,scLB_control.ReadDataStruct.m_LeaderboardId,iMissionType,iSubType,iLaps,bCoDriver)
#IF IS_DEBUG_BUILD
PRINT_LEADERBOARD_SETUP_DETAILS(scLB_control,UniqueLBGroup,iMissionType,iSubType,iLaps,bCoDriver)
#ENDIF
ENDPROC
PROC SOCIAL_CLUB_CLEAR_NAVIGATION_STRUCT(SC_LEADERBOARD_CONTROL_STRUCT& scLB_control)
scLB_control.navigation.iButtonBS = 0
scLB_control.navigation.iCurrentVertSel = -1
scLB_control.navigation.iMaxVertSel = 0
RESET_NET_TIMER(scLB_control.navigation.menuNavDelay)
scLB_control.navigation.bShowingAProfile = FALSE
INT i
GAMER_HANDLE emptyHandle
REPEAT SC_LEADERBOARD_MAX_NUM_DISPLAYED_ROWS i
scLB_control.navigation.slotData[i].iSlot = -1
scLB_control.navigation.slotData[i].iFinalState = 0
scLB_control.navigation.slotData[i].playerGamerHandle = emptyHandle
ENDREPEAT
REPEAT 3 i
scLB_control.navigation.iSectionCounter[i] = 0
ENDREPEAT
println("SOCIAL_CLUB_CLEAR_NAVIGATION_STRUCT called")
ENDPROC
PROC SOCIAL_CLUB_CLEAR_DISPLAY_SETUP_STRUCT(SC_LEADERBOARD_DISPLAY_SETUP &displaySetup)
displaySetup.iDisplayType = 0
displaySetup.sLeaderboardType = ""
displaySetup.sLeaderboardName = ""
displaySetup.b_sLeaderboardNameLiteral = TRUE
displaySetup.iLaps = 0
displaySetup.bCoDriver = FALSE
displaySetup.iLayout = 0
INT i
REPEAT SC_LEADERBOARD_MAX_DISPLAYED_STATS i
displaySetup.iColumnDisplayType[i] = 0
displaySetup.iValidType[i] = 0
ENDREPEAT
ENDPROC
/// PURPOSE:
/// Clears the global SC leaderboard display struct
PROC SOCIAL_CLUB_CLEAR_DISPLAY_STRUCT()
INT i, j
SC_LEADERBOARD_DISPLAY_ROW_STRUCT tempRow
REPEAT 3 i
REPEAT SC_LEADERBOARD_MAX_NUM_DISPLAYED_ROWS j
scLB_DisplayedData.rowData[i][j] = tempRow
ENDREPEAT
scLB_DisplayedData.iSectionEntries[i] = 0
ENDREPEAT
scLB_DisplayedData.iNumNonRankColumnsToDisplay = 0
scLB_DisplayedData.iCustomVehicleColumn = 0
i = 0
REPEAT SC_LEADERBOARD_MAX_DISPLAYED_STATS i
scLB_DisplayedData.iReadColumns[i] = 0
scLB_DisplayedData.sColumnTextName[i] = ""
scLB_DisplayedData.iInvalidDataInt[i] = 0
scLB_DisplayedData.iInvalidDataFloat[i] = 0
ENDREPEAT
scLB_DisplayedData.iInvalidDataSetBS = 0
scLB_DisplayedData.iReadColumnIsIntBS = 0
scLB_DisplayedData.iDisplayColumnIsIntBS = 0
i= 0
REPEAT 3 i
scLB_DisplayedData.iPlayersRankForSection[i] = 0
scLB_DisplayedData.iPlayerIndexForSection[i] = 0
ENDREPEAT
scLB_DisplayedData.iCoronaBoxColumn = 0
SOCIAL_CLUB_CLEAR_DISPLAY_SETUP_STRUCT(scLB_DisplayedData.displaySetup)
RESET_NET_TIMER(scLB_DisplayedData.downloadingTimer)
scLB_DisplayedData.iLoadLoopCounter = -1
scLB_DisplayedData.iCacheHashID = 0
RESET_NET_TIMER(scLB_DisplayedData.optionChangeDelay)
scLB_DisplayedData.iCurrentViewID = 0
RESET_NET_TIMER(scLB_DisplayedData.failSafeTimer)
scLB_DisplayedData.iReadFailedBS = 0
scLB_DisplayedData.displaySetup.iLayout = ENUM_TO_INT(SLOT_LAYOUT_LABEL_NO_ICON)
scLB_DisplayedData.displaySetup.bCoDriver = FALSE
scLB_DisplayedData.bResetTriggered = FALSE
println("Clearing SC display struct")
ENDPROC
PROC CLEAR_RANK_PREDICTION_ROW(LeaderboardPredictionRow &Row)
INT i
Row.m_Id = 0
Row.m_NumColumns = 0
Row.m_ColumnsBitSets = 0
REPEAT MAX_COLUMNS i
Row.m_fColumnData[i] = 0
Row.m_iColumnData[i] = 0
ENDREPEAT
ENDPROC
PROC CLEAR_RANK_REDICTION_DETAILS()
sclb_rank_predict.iReadStage = 0
sclb_rank_predict.bFinishedRead = FALSE
sclb_rank_predict.bFinishedWrite = FALSE
sclb_rank_predict.bAssignedValuesInWrite = FALSE
sclb_rank_predict.bNoPreviousValue = FALSE
CLEAR_RANK_PREDICTION_ROW(scLB_rank_predict.readResult)
CLEAR_RANK_PREDICTION_ROW(sclb_rank_predict.currentResult)
CLEAR_RANK_PREDICTION_ROW(sclb_rank_predict.combinedResult)
CLEAR_RANK_PREDICTION_ROW(sclb_rank_predict.DifficultyCombinedResult)
sclb_rank_predict.coDriverName = ""
sclb_rank_predict.driverName = ""
CLEAR_GAMER_HANDLE_STRUCT(sclb_rank_predict.driverHandle)
sclb_rank_predict.iRankBeforePrediction = -1
sclb_useRankPrediction = FALSE
sclb_rankPredictionDataValid = FALSE
LeaderboardUpdateData emptyData
sclb_rank_predict.LBWriteDetails = emptyData
println("CLEAR_RANK_PREDICTION_DETAILS: Called by ", GET_THIS_SCRIPT_NAME())
#IF IS_DEBUG_BUILD
DEBUG_PRINTCALLSTACK()
#ENDIF
ENDPROC
/// PURPOSE:
/// Cleans up the social club leaderboard display struct and control struct. Also ends any on going reads.
/// PARAMS:
/// scLB_control - The control struct for loading the data
PROC CLEANUP_SOCIAL_CLUB_LEADERBOARD(SC_LEADERBOARD_CONTROL_STRUCT& scLB_control, BOOL bForceCleanup = FALSE)
IF scLB_control.iTempLoadStage != 0
println("Ending read in CLEANUP_SOCIAL_CLUB_LEADERBOARD in ", GET_THIS_SCRIPT_NAME() )
END_LEADERBOARD_READ(scLB_control.iTempLoadStage,scLB_control.bTempReadResult,scLB_control.ReadDataStruct)
ENDIF
IF scLB_control.iLoadStage[0] != 0
OR scLB_control.iLoadStage[1] != 0
OR scLB_control.iLoadStage[2] != 0
OR bForceCleanup = TRUE
SOCIAL_CLUB_CLEAR_CONTROL_STRUCT(scLB_control)
SOCIAL_CLUB_CLEAR_NAVIGATION_STRUCT(scLB_control)
CLEAR_FINAL_DATA_STRUCT(tempFinalData)
//println("CLEANUP_SOCIAL_CLUB_LEADERBOARD called")
#IF IS_DEBUG_BUILD
DEBUG_PRINTCALLSTACK()
#ENDIF
PRINTLN("CLEANUP_SOCIAL_CLUB_LEADERBOARD - called this frame")
ENDIF
IF scLB_DisplayedData.iNumNonRankColumnsToDisplay != 0
OR scLB_DisplayedData.bResetTriggered
SOCIAL_CLUB_CLEAR_DISPLAY_STRUCT()
ENDIF
IF IS_AUDIO_SCENE_ACTIVE("LEADERBOARD_SCENE")
STOP_AUDIO_SCENE("LEADERBOARD_SCENE")
ENDIF
IF NETWORK_IS_SIGNED_ONLINE()
RESET_NET_TIMER(scLBSignInWarn.signedOutTimer)
ENDIF
MPGlobalsAmbience.bPlayerViewingLeaderboard = FALSE
ENDPROC
PROC CLEANUP_CORONA_LEADERBOARD(BOOL& bDrawingMenu,BOOL& bMenuActive,SC_LEADERBOARD_CONTROL_STRUCT& scLB_control,SCALEFORM_INDEX& scaleformIndex[],SCALEFORM_INSTRUCTIONAL_BUTTONS& scaleformStruct, BOOL bInCorona = FALSE)
IF IS_BIT_SET(scLB_Control.ibs,SC_LEADERBOARD_CONTROL_SETUP_DATA_MENU)
OR IS_BIT_SET(scLB_Control.ibs,SC_LEADERBOARD_CONTROL_SETUP_LOADING_MENU)
IF HAS_SCALEFORM_MOVIE_LOADED(scaleformIndex[0])
SET_SCALEFORM_MOVIE_AS_NO_LONGER_NEEDED(scaleformIndex[0])
//println("CLEANUP_CORONA_LEADERBOARD called setting SC scaleform movie 0 as no longer needed")
ENDIF
//CLEAR_BIT(scLB_Control.ibs,SC_LEADERBOARD_CONTROL_SETUP_DATA_MENU)
//CLEAR_BIT(scLB_Control.ibs,SC_LEADERBOARD_CONTROL_SETUP_LOADING_MENU)
scLB_Control.ibs = 0
IF HAS_SCALEFORM_MOVIE_LOADED(scaleformIndex[1])
BEGIN_SCALEFORM_MOVIE_METHOD(scaleformIndex[1], "CLEAR_ALL")
END_SCALEFORM_MOVIE_METHOD()
ENDIF
IF bInCorona = FALSE
REFRESH_SCALEFORM_INSTRUCTIONAL_BUTTONS(scaleformStruct)
ENDIF
println("CLEANUP_CORONA_LEADERBOARD called")
ENDIF
SOCIAL_CLUB_CLEAR_NAVIGATION_STRUCT(scLB_control)
MPGlobalsAmbience.bPlayerViewingLeaderboard = FALSE
bMenuActive = FALSE
bDrawingMenu = FALSE
ENDPROC
FUNC BOOL SC_LB_OK_TO_ALLOW_MENU_NAVIGATION_AGAIN(SC_LEADERBOARD_CONTROL_STRUCT& scLB_control,CONTROL_ACTION theInput)
IF theInput = INPUT_FRONTEND_UP
OR theInput = INPUT_FRONTEND_DOWN
INT iL_LR, iL_UD, iR_LR, iR_UD
GET_CONTROL_VALUE_OF_ANALOGUE_STICKS(iL_LR, iL_UD, iR_LR, iR_UD)
IF ((NOT IS_CONTROL_PRESSED(FRONTEND_CONTROL,theInput)
AND NOT IS_DISABLED_CONTROL_PRESSED(FRONTEND_CONTROL,theInput)) AND (iL_UD < 75 and iL_UD > -75))
OR HAS_NET_TIMER_EXPIRED(scLB_control.navigation.menuNavDelay,250)
//#IF IS_DEBUG_BUILD
//IF theInput = INPUT_FRONTEND_DOWN
// println("OK to allow input: iL_UD = ", iL_UD)
// IF HAS_NET_TIMER_EXPIRED(scLB_control.navigation.menuNavDelay,250)
// println("OK to allow input: timer expired ")
// ENDIF
//ENDIF
//#ENDIF
RETURN TRUE
ENDIF
ELSE
IF (NOT IS_CONTROL_PRESSED(FRONTEND_CONTROL,theInput)
AND NOT IS_DISABLED_CONTROL_PRESSED(FRONTEND_CONTROL,theInput))
OR HAS_NET_TIMER_EXPIRED(scLB_control.navigation.menuNavDelay,250)
// IF HAS_NET_TIMER_EXPIRED(scLB_control.navigation.menuNavDelay,250)
// println("OK to allow input: timer expired ")
// ENDIF
RETURN TRUE
ENDIF
ENDIF
RETURN FALSE
ENDFUNC
//FUNC INT FIND_NO_ZERO_SLOT(SC_LEADERBOARD_CONTROL_STRUCT& scLB_control)
// REPEAT SC_LEADERBOARD_MAX_NUM_DISPLAYED_ROWS
// IF scLB_control.navigation.slotData[scLB_control.navigation.iCurrentVertSel].iSlot <= 0
// scLB_control.navigation.iCurrentVertSel++
// ENDIF
// ENDREPEAT
//ENDFUNC
PROC HANDLE_SELECTION_OF_PLAYERS_LISTED(SCALEFORM_INDEX& scaleFormID, SC_LEADERBOARD_CONTROL_STRUCT& scLB_control)
//SC_LEADERBOARD_CONTROL_STRUCT scLB_control
//SC_FINAL_DATA finaldata[]
BOOL bChanged
INT iTempVertSelection = scLB_control.navigation.iCurrentVertSel
// PC mouse support
IF IS_USING_KEYBOARD_AND_MOUSE(FRONTEND_CONTROL)
SET_MOUSE_CURSOR_THIS_FRAME()
SET_INPUT_EXCLUSIVE( FRONTEND_CONTROL, INPUT_CURSOR_X)
SET_INPUT_EXCLUSIVE( FRONTEND_CONTROL, INPUT_CURSOR_Y)
SET_INPUT_EXCLUSIVE( FRONTEND_CONTROL, INPUT_CURSOR_ACCEPT)
SET_INPUT_EXCLUSIVE( FRONTEND_CONTROL, INPUT_CURSOR_CANCEL)
DISABLE_CONTROL_ACTION( FRONTEND_CONTROL, INPUT_FRONTEND_PAUSE_ALTERNATE)
// Scroll up
IF IS_DISABLED_CONTROL_PRESSED(FRONTEND_CONTROL, INPUT_CURSOR_SCROLL_UP)
SET_CONTROL_VALUE_NEXT_FRAME(FRONTEND_CONTROL, INPUT_FRONTEND_UP, 1)
ENDIF
// Scroll down
IF IS_DISABLED_CONTROL_PRESSED(FRONTEND_CONTROL, INPUT_CURSOR_SCROLL_DOWN)
SET_CONTROL_VALUE_NEXT_FRAME(FRONTEND_CONTROL, INPUT_FRONTEND_DOWN, 1)
ENDIF
eMOUSE_EVT eMouseEvent
INT iUID
INT iContext
// Check mouse events
IF GET_MOUSE_EVENT(scaleFormID, eMouseEvent, iUID, iContext )
IF eMouseEvent = EVENT_TYPE_MOUSE_PRESS
IF iUID > scLB_control.navigation.iSectionCounter[0] // The iUID isn't in section 0 (global)
IF iUID <= scLB_control.navigation.iSectionCounter[0] + scLB_control.navigation.iSectionCounter[1] + 2 // The iUID is in section 1 (friends)
iUID -= 2 // Reduce the iUID by 2 blank rows
ELSE // The iUID is in section 2 (crew)
iUID -= 4 // Reduce the iUID by 4 blank rows
ENDIF
ENDIF
iUID -= 1 // Reduce the iUID by 1 so it syncs with scLB_control.navigation.iCurrentVertSel
println("HANDLE_SELECTION_OF_PLAYERS_LISTED iSectionCounter 0 = ", scLB_control.navigation.iSectionCounter[0], " iSectionCounter 1 = ", scLB_control.navigation.iSectionCounter[1], " iSectionCounter 2 = ", scLB_control.navigation.iSectionCounter[2], " iUID = ", iUID)
// Select new item
IF scLB_control.navigation.iCurrentVertSel != iUID
scLB_control.navigation.iCurrentVertSel = iUID
PLAY_SOUND_FRONTEND(-1, "NAV_UP_DOWN", "HUD_FRONTEND_DEFAULT_SOUNDSET")
bChanged = TRUE
ELSE
// Confirm current item to bring up social club profile
SET_CONTROL_VALUE_NEXT_FRAME(FRONTEND_CONTROL, INPUT_FRONTEND_SELECT, 1)
ENDIF
ENDIF
ENDIF
ENDIF
INT iL_LR, iL_UD, iR_LR, iR_UD
// Don't want these getting values when using keyboard and mouse
// as they can cause conflicts with the frontend controls. - Steve R LDS
IF NOT IS_USING_KEYBOARD_AND_MOUSE(FRONTEND_CONTROL)
GET_CONTROL_VALUE_OF_ANALOGUE_STICKS(iL_LR, iL_UD, iR_LR, iR_UD)
ENDIF
IF scLB_control.navigation.iMaxVertSel > 0
IF NOT IS_BIT_SET(scLB_control.navigation.iButtonBS,SC_LB_PRESSED_UP)
IF IS_CONTROL_PRESSED(FRONTEND_CONTROL,INPUT_FRONTEND_UP)
OR IS_DISABLED_CONTROL_PRESSED(FRONTEND_CONTROL,INPUT_FRONTEND_UP)
OR iL_UD < -100
PLAY_SOUND_FRONTEND(-1, "NAV_UP_DOWN", "HUD_FRONTEND_DEFAULT_SOUNDSET")
scLB_control.navigation.iCurrentVertSel += -1
SET_BIT(scLB_control.navigation.iButtonBS,SC_LB_PRESSED_UP)
RESET_NET_TIMER(scLB_control.navigation.menuNavDelay)
bChanged = TRUE
ENDIF
ELSE
IF SC_LB_OK_TO_ALLOW_MENU_NAVIGATION_AGAIN(scLB_control,INPUT_FRONTEND_UP)
CLEAR_BIT(scLB_control.navigation.iButtonBS,SC_LB_PRESSED_UP)
ENDIF
ENDIF
IF NOT IS_BIT_SET(scLB_control.navigation.iButtonBS,SC_LB_PRESSED_DOWN)
IF IS_CONTROL_PRESSED(FRONTEND_CONTROL,INPUT_FRONTEND_DOWN)
OR IS_DISABLED_CONTROL_PRESSED(FRONTEND_CONTROL,INPUT_FRONTEND_DOWN)
OR iL_UD > 100
PLAY_SOUND_FRONTEND(-1, "NAV_UP_DOWN", "HUD_FRONTEND_DEFAULT_SOUNDSET")
scLB_control.navigation.iCurrentVertSel += 1
SET_BIT(scLB_control.navigation.iButtonBS,SC_LB_PRESSED_DOWN)
RESET_NET_TIMER(scLB_control.navigation.menuNavDelay)
bChanged = TRUE
//println("Player pressed down on the social club leaderboard.")
ENDIF
ELSE
IF SC_LB_OK_TO_ALLOW_MENU_NAVIGATION_AGAIN(scLB_control,INPUT_FRONTEND_DOWN)
CLEAR_BIT(scLB_control.navigation.iButtonBS,SC_LB_PRESSED_DOWN)
ENDIF
ENDIF
ENDIF
IF bChanged
IF scLB_control.navigation.iCurrentVertSel < 0
scLB_control.navigation.iCurrentVertSel = scLB_control.navigation.iMaxVertSel-1
ENDIF
IF scLB_control.navigation.iCurrentVertSel >= scLB_control.navigation.iMaxVertSel
scLB_control.navigation.iCurrentVertSel = 0
ENDIF
ENDIF
IF NOT IS_BIT_SET(scLB_control.navigation.iButtonBS,SC_LB_PRESSED_Y)
IF IS_CONTROL_PRESSED(FRONTEND_CONTROL,INPUT_FRONTEND_Y)
OR IS_DISABLED_CONTROL_JUST_PRESSED(FRONTEND_CONTROL,INPUT_FRONTEND_Y)
OR IS_CONTROL_JUST_PRESSED(FRONTEND_CONTROL, INPUT_CURSOR_ACCEPT)
SET_BIT(scLB_control.navigation.iButtonBS,SC_LB_PRESSED_Y)
RESET_NET_TIMER(scLB_control.navigation.menuNavDelay)
bChanged = TRUE
ENDIF
ELSE
IF SC_LB_OK_TO_ALLOW_MENU_NAVIGATION_AGAIN(scLB_control,INPUT_FRONTEND_Y)
CLEAR_BIT(scLB_control.navigation.iButtonBS,SC_LB_PRESSED_Y)
ENDIF
ENDIF
IF scLB_control.navigation.iCurrentVertSel >= 0
IF scLB_control.navigation.iCurrentVertSel != iTempVertSelection
println("iTempVertSelection = ", iTempVertSelection," iCurrentVertSel = ", scLB_control.navigation.iCurrentVertSel," iSlot = ", scLB_control.navigation.slotData[scLB_control.navigation.iCurrentVertSel].iSlot)
//highlight appropriate slot/unhighlight last slot
IF iTempVertSelection >= 0
CLEAR_BIT(scLB_control.navigation.slotData[iTempVertSelection].iFinalState,SCLB_SLOT_STATE_BIT_SELECTED)
SET_SC_LEADERBOARD_SLOT_FINAL_STATE(scaleFormID,scLB_control.navigation.slotData[iTempVertSelection].iSlot,scLB_control.navigation.slotData[iTempVertSelection].iFinalState)
ENDIF
SET_BIT(scLB_control.navigation.slotData[scLB_control.navigation.iCurrentVertSel].iFinalState,SCLB_SLOT_STATE_BIT_SELECTED)
SET_SC_LEADERBOARD_SLOT_FINAL_STATE(scaleFormID,scLB_control.navigation.slotData[scLB_control.navigation.iCurrentVertSel].iSlot,scLB_control.navigation.slotData[scLB_control.navigation.iCurrentVertSel].iFinalState)
CLEAR_BIT(scLB_Control.ibs,SC_LEADERBOARD_CONTROL_SETUP_BUTTONS)
ENDIF
IF IS_GAMER_HANDLE_VALID(scLB_control.navigation.slotData[scLB_control.navigation.iCurrentVertSel].playerGamerHandle)
IF NOT IS_BIT_SET(scLB_control.navigation.iButtonBS,SC_LB_PRESSED_SELECT)
IF IS_CONTROL_PRESSED(FRONTEND_CONTROL,INPUT_FRONTEND_SELECT)
OR IS_DISABLED_CONTROL_JUST_PRESSED(FRONTEND_CONTROL,INPUT_FRONTEND_SELECT)
IF NOT IS_SYSTEM_UI_BEING_DISPLAYED()
PLAY_SOUND_FRONTEND(-1, "SELECT", "HUD_FRONTEND_MP_SOUNDSET")
SET_BIT(scLB_control.navigation.iButtonBS,SC_LB_PRESSED_SELECT)
NETWORK_SHOW_PROFILE_UI(scLB_control.navigation.slotData[scLB_control.navigation.iCurrentVertSel].playerGamerHandle)
PRINTLN("CDM: Activating profile UI for selected player")
ELSE
PRINTLN("CDM: System UI active not displaying profile UI")
ENDIF
ENDIF
ELSE
IF NOT IS_CONTROL_PRESSED(FRONTEND_CONTROL,INPUT_FRONTEND_SELECT)
CLEAR_BIT(scLB_control.navigation.iButtonBS,SC_LB_PRESSED_SELECT)
ENDIF
ENDIF
ENDIF
ENDIF
// BOOL scButtonActive
// IF NOT NETWORK_HAS_SOCIAL_CLUB_ACCOUNT()
// scButtonActive = TRUE
// ELSE
// IF NOT NETWORK_ARE_SOCIAL_CLUB_POLICIES_CURRENT()
// scButtonActive = TRUE
// ENDIF
// ENDIF
// IF scButtonActive
// IF NOT IS_BIT_SET(scLB_control.navigation.iButtonBS,SC_LB_PRESSED_ACCEPT)
// IF IS_CONTROL_JUST_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_ACCEPT)
// OR IS_DISABLED_CONTROL_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_ACCEPT)
// #IF IS_DEBUG_BUILD
// IF IS_CONTROL_JUST_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_ACCEPT)
// println("HANDLE_SELECTION_OF_PLAYERS_LISTED: IS_CONTROL_JUST_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_ACCEPT)")
// ENDIF
// IF IS_DISABLED_CONTROL_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_ACCEPT)
// println("HANDLE_SELECTION_OF_PLAYERS_LISTED:IS_DISABLED_CONTROL_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_ACCEPT)")
// ENDIF
// #ENDIF
// PLAY_SOUND_FRONTEND(-1, "ACCEPT","HUD_FRONTEND_MP_SOUNDSET")
// SET_BIT(scLB_control.navigation.iButtonBS,SC_LB_PRESSED_ACCEPT)
// println("HANDLE_SELECTION_OF_PLAYERS_LISTED player pressed cancel when on leaderboard")
// SET_SOCIAL_CLUB_TOUR("General")
// OPEN_SOCIAL_CLUB_MENU()
// SET_BIT(scLB_Control.ibs,SC_LEADERBOARD_CONTROL_SOCIAL_CLUB_TOUR)
// exit
// ENDIF
// ELSE
// IF NOT IS_CONTROL_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_CANCEL)
// AND NOT IS_DISABLED_CONTROL_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_CANCEL)
// CLEAR_BIT(scLB_control.navigation.iButtonBS,SC_LB_PRESSED_ACCEPT)
// ENDIF
// ENDIF
// ENDIF
ENDPROC
/// PURPOSE:
/// Function to indicate whether it is ok to show profile option or not.
/// PARAMS:
/// scLB_control - leaderboard control struct.
/// RETURNS:
/// True if it is ok to show the button
FUNC BOOL SHOULD_PROFILE_BUTTON_BE_AVAILABLE_FOR_LEADERBOARD(SC_LEADERBOARD_CONTROL_STRUCT& scLB_control)
IF IS_BIT_SET(scLB_Control.ibs,SC_LEADERBOARD_CONTROL_SETUP_DATA_MENU)
AND scLB_DisplayedData.iSectionEntries[0] > 0
AND scLB_control.navigation.iCurrentVertSel >= 0
RETURN TRUE
ENDIF
RETURN FALSE
ENDFUNC
/// PURPOSE:
/// Draws all the components of the SC board.
/// PARAMS:
/// scaleFormID - scaleform index of the SC leaderboard
/// scLB_control - control struct handling loading the data if needed
PROC DRAW_SC_SCALEFORM_LEADERBOARD(SCALEFORM_INDEX& scaleFormID,SC_LEADERBOARD_CONTROL_STRUCT& scLB_control)
INT i
INT iDisplayLoop
//BOOL highlightGlobalTop
//BOOl highlightFriendTop
//BOOL highlightCrewTop
INT iSectionCounter[3]
//
INT iSlotCounter
REINIT_NET_TIMER(scLBSignInWarn.signedOutTimer,TRUE)
BOOL bHighlightedARow
HIDE_HELP_TEXT_THIS_FRAME()
DISABLE_DPADDOWN_THIS_FRAME()
DISABLE_CELLPHONE_THIS_FRAME_ONLY()
HIDE_HUD_AND_RADAR_THIS_FRAME()
DISABLE_ALL_MP_HUD_THIS_FRAME()
HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_HELP_TEXT)
SET_INSTRUCTIONAL_BUTTONS_UNDER_HUD_THIS_FRAME()
SET_LOADING_ICON_SUBTITLES_OFFSET_SHIFT_THIS_FRAME()
IF NOT IS_PLAYER_ACTIVE_IN_CORONA()
IF NOT IS_AUDIO_SCENE_ACTIVE("LEADERBOARD_SCENE")
START_AUDIO_SCENE("LEADERBOARD_SCENE")
ENDIF
ENDIF
BOOL bInValidDataForThisColumn
#IF IS_DEBUG_BUILD
BOOL bDisplayedUIThisFrame = FALSE
#ENDIF
// IF IS_BIT_SET(scLB_Control.ibs,SC_LEADERBOARD_CONTROL_SOCIAL_CLUB_TOUR)
// IF NOT IS_SOCIAL_CLUB_ACTIVE()
// //AND NOT IS_PAUSE_MENU_ACTIVE()
// println("NOT IS_SOCIAL_CLUB_ACTIVE() clearing flag")
// CLEAR_BIT(scLB_Control.ibs,SC_LEADERBOARD_CONTROL_SOCIAL_CLUB_TOUR)
// ENDIF
// ELSE
TEXT_LABEL_63 tempText
TEXT_LABEL_7 emptyText
IF NOT IS_BIT_SET(scLB_Control.ibs,SC_LEADERBOARD_CONTROL_SETUP_REQUESTED_MOVIE)
scaleFormID = REQUEST_SC_LEADERBOARD_UI()
SET_BIT(scLB_Control.ibs,SC_LEADERBOARD_CONTROL_SETUP_REQUESTED_MOVIE)
ENDIF
BOOL bAddedSectionHeader[3]
//TEXT_LABEL_15 tempCrewTag[2]
INT iFinalState
GAMER_HANDLE localPlayerHandle = GET_GAMER_HANDLE_PLAYER(PLAYER_ID())
GAMER_USERID localUserID
IF HAS_SCALEFORM_MOVIE_LOADED(scaleFormID)
IF NOT NETWORK_HAS_VALID_ROS_CREDENTIALS()
OR NOT IS_PLAYER_ONLINE()
OR (NOT NETWORK_HAVE_ONLINE_PRIVILEGES() AND NETWORK_HAS_AGE_RESTRICTIONS())
OR scLB_DisplayedData.iReadFailedBS != 0
// IF NOT NETWORK_HAS_VALID_ROS_CREDENTIALS()
// PRINTLN("CDM: 1951069- NOT NETWORK_HAS_VALID_ROS_CREDENTIALS()")
// ENDIF
// IF NOT IS_PLAYER_ONLINE()
// PRINTLN("CDM: 1951069- NOT IS_PLAYER_ONLINE()")
// ENDIF
// IF NOT NETWORK_HAVE_ONLINE_PRIVILEGES()
// PRINTLN("CDM: 1951069- NOT NETWORK_HAVE_ONLINE_PRIVILEGES()")
// ENDIF
IF NOT IS_PLAYER_ONLINE()
IF scLB_DisplayedData.iCurrentViewID != SC_LB_VIEW_ID_NOT_ONLINE
CLEAR_BIT(scLB_Control.ibs,SC_LEADERBOARD_CONTROL_SETUP_DATA_MENU)
scLB_DisplayedData.iCurrentViewID = SC_LB_VIEW_ID_NOT_ONLINE
ENDIF
ELSE
IF (NOT NETWORK_HAVE_ONLINE_PRIVILEGES() AND NETWORK_HAS_AGE_RESTRICTIONS())
IF scLB_DisplayedData.iCurrentViewID != SC_LB_VIEW_ID_NO_PERMISSION
CLEAR_BIT(scLB_Control.ibs,SC_LEADERBOARD_CONTROL_SETUP_DATA_MENU)
scLB_DisplayedData.iCurrentViewID = SC_LB_VIEW_ID_NO_PERMISSION
ENDIF
ELSE
IF NOT NETWORK_HAS_VALID_ROS_CREDENTIALS()
IF scLB_DisplayedData.iCurrentViewID != SC_LB_VIEW_ID_NO_ROS
CLEAR_BIT(scLB_Control.ibs,SC_LEADERBOARD_CONTROL_SETUP_DATA_MENU)
scLB_DisplayedData.iCurrentViewID = SC_LB_VIEW_ID_NO_ROS
ENDIF
ELSE
IF scLB_DisplayedData.iReadFailedBS != 0
IF scLB_DisplayedData.iCurrentViewID != SC_LB_VIEW_ID_READ_FAILED
CLEAR_BIT(scLB_Control.ibs,SC_LEADERBOARD_CONTROL_SETUP_DATA_MENU)
scLB_DisplayedData.iCurrentViewID = SC_LB_VIEW_ID_READ_FAILED
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
//println("Player cannot view leaderboard.")
IF NOT IS_BIT_SET(scLB_Control.ibs,SC_LEADERBOARD_CONTROL_SETUP_DATA_MENU)
// IF scLB_DisplayedData.iCurrentViewID = SC_LB_VIEW_ID_NOT_ONLINE
// IF IS_SYSTEM_UI_BEING_DISPLAYED()
// EXIT
// ELSE
// IF HAS_NET_TIMER_EXPIRED()
//
// ENDIF
// ENDIF
// ENDIF
BEGIN_SCALEFORM_MOVIE_METHOD(scaleFormID,"CLEAR_ALL_SLOTS")
END_SCALEFORM_MOVIE_METHOD()
SET_SC_LEADERBOARD_DISPLAY_TYPE(scaleFormID,INT_TO_ENUM(DISPLAY_TYPES,scLB_DisplayedData.displaySetup.iDisplayType))
println("Setting LB display type = ",scLB_DisplayedData.displaySetup.iDisplayType )
IF DOES_TEXT_LABEL_EXIST(scLB_DisplayedData.displaySetup.sLeaderboardType)
IF NOT IS_SC_LEADERBOARD_A_RALLY(scLB_control.ReadDataStruct.m_LeaderboardId)
IF scLB_DisplayedData.displaySetup.iLaps > 0
tempText = scLB_DisplayedData.displaySetup.sLeaderboardName
//tempText += "- "
//temptext += scLB_DisplayedData.displaySetup.iLaps
SET_SC_LEADERBOARD_MULTIPLAYER_TITLE(scaleFormID,scLB_DisplayedData.displaySetup.sLeaderboardType,emptyText,temptext,scLB_DisplayedData.displaySetup.b_sLeaderboardNameLiteral,scLB_DisplayedData.displaySetup.iLaps)
ELSE
SET_SC_LEADERBOARD_MULTIPLAYER_TITLE(scaleFormID,scLB_DisplayedData.displaySetup.sLeaderboardType,emptyText,scLB_DisplayedData.displaySetup.sLeaderboardName,scLB_DisplayedData.displaySetup.b_sLeaderboardNameLiteral)
ENDIF
ELSE
IF NOT scLB_DisplayedData.displaySetup.bCoDriver
tempText = "FMMC_COR_SCLB5"
IF scLB_DisplayedData.displaySetup.iLaps > 0
SET_SC_LEADERBOARD_MULTIPLAYER_TITLE(scaleFormID,scLB_DisplayedData.displaySetup.sLeaderboardType,tempText,scLB_DisplayedData.displaySetup.sLeaderboardName,scLB_DisplayedData.displaySetup.b_sLeaderboardNameLiteral,scLB_DisplayedData.displaySetup.iLaps)
ELSE
SET_SC_LEADERBOARD_MULTIPLAYER_TITLE(scaleFormID,scLB_DisplayedData.displaySetup.sLeaderboardType,tempText,scLB_DisplayedData.displaySetup.sLeaderboardName,scLB_DisplayedData.displaySetup.b_sLeaderboardNameLiteral)
ENDIF
ELSE
tempText = "FMMC_COR_SCLB6"
IF scLB_DisplayedData.displaySetup.iLaps > 0
SET_SC_LEADERBOARD_MULTIPLAYER_TITLE(scaleFormID,scLB_DisplayedData.displaySetup.sLeaderboardType,tempText,scLB_DisplayedData.displaySetup.sLeaderboardName,scLB_DisplayedData.displaySetup.b_sLeaderboardNameLiteral,scLB_DisplayedData.displaySetup.iLaps)
ELSE
SET_SC_LEADERBOARD_MULTIPLAYER_TITLE(scaleFormID,scLB_DisplayedData.displaySetup.sLeaderboardType,tempText,scLB_DisplayedData.displaySetup.sLeaderboardName,scLB_DisplayedData.displaySetup.b_sLeaderboardNameLiteral)
ENDIF
ENDIF
ENDIF
SET_SC_LEADERBOARD_COLUMN_TITLES(scaleFormID,"SCLB_C_RANK",scLB_DisplayedData.sColumnTextName,scLB_DisplayedData.iNumNonRankColumnsToDisplay)
ENDIF
iFinalState = 0
SET_BIT(iFinalState,SCLB_SLOT_STATE_BIT_WORLD)
SET_SC_LEADERBOARD_SECTION_HEADER(scaleFormID,iSlotCounter,iFinalState,TRUE,TRUE)
//iSlotCounter++
iFinalState = 0
SET_BIT(iFinalState,SCLB_SLOT_STATE_BIT_FRIENDS)
SET_SC_LEADERBOARD_SECTION_HEADER(scaleFormID,iSlotCounter,iFinalState,TRUE,TRUE)
//iSlotCounter++
iFinalState = 0
SET_BIT(iFinalState,SCLB_SLOT_STATE_BIT_CREW)
SET_SC_LEADERBOARD_SECTION_HEADER(scaleFormID,iSlotCounter,iFinalState,TRUE,TRUE)
SET_BIT(scLB_Control.ibs,SC_LEADERBOARD_CONTROL_SETUP_DATA_MENU)
DISPLAY_SC_LEADERBOARD_UI(scaleFormID)
CLEAR_BIT(scLB_Control.ibs,SC_LEADERBOARD_CONTROL_SETUP_BUTTONS)
CLEAR_HELP()
ELSE
DISPLAY_SC_LEADERBOARD_UI(scaleFormID)
ENDIF
// IF NOT IS_PLAYER_ONLINE()
// IF NOT IS_BIT_SET(scLB_Control.ibs,SC_LEADERBOARD_CONTROL_SETUP_DATA_MENU)
// BEGIN_SCALEFORM_MOVIE_METHOD(scaleFormID,"CLEAR_ALL_SLOTS")
// END_SCALEFORM_MOVIE_METHOD()
// SET_SC_LEADERBOARD_DISPLAY_TYPE(scaleFormID,INT_TO_ENUM(DISPLAY_TYPES,scLB_DisplayedData.displaySetup.iDisplayType))
// println("Setting LB display type = ",scLB_DisplayedData.displaySetup.iDisplayType )
// IF DOES_TEXT_LABEL_EXIST(scLB_DisplayedData.displaySetup.sLeaderboardType)
// IF NOT IS_SC_LEADERBOARD_A_RALLY(scLB_control.ReadDataStruct.m_LeaderboardId)
// IF scLB_DisplayedData.displaySetup.iLaps > 0
// tempText = scLB_DisplayedData.displaySetup.sLeaderboardName
// //tempText += "- "
// //temptext += scLB_DisplayedData.displaySetup.iLaps
// SET_SC_LEADERBOARD_MULTIPLAYER_TITLE(scaleFormID,scLB_DisplayedData.displaySetup.sLeaderboardType,emptyText,temptext,scLB_DisplayedData.displaySetup.b_sLeaderboardNameLiteral,scLB_DisplayedData.displaySetup.iLaps)
// ELSE
// SET_SC_LEADERBOARD_MULTIPLAYER_TITLE(scaleFormID,scLB_DisplayedData.displaySetup.sLeaderboardType,emptyText,scLB_DisplayedData.displaySetup.sLeaderboardName,scLB_DisplayedData.displaySetup.b_sLeaderboardNameLiteral)
// ENDIF
// ELSE
// IF NOT scLB_DisplayedData.displaySetup.bCoDriver
// tempText = "FMMC_COR_SCLB5"
// //SET_SC_LEADERBOARD_MULTIPLAYER_TITLE(scaleFormID,scLB_DisplayedData.displaySetup.sLeaderboardType,temptext,FALSE)
// IF scLB_DisplayedData.displaySetup.iLaps > 0
// SET_SC_LEADERBOARD_MULTIPLAYER_TITLE(scaleFormID,scLB_DisplayedData.displaySetup.sLeaderboardType,tempText,scLB_DisplayedData.displaySetup.sLeaderboardName,scLB_DisplayedData.displaySetup.b_sLeaderboardNameLiteral,scLB_DisplayedData.displaySetup.iLaps)
// ELSE
// SET_SC_LEADERBOARD_MULTIPLAYER_TITLE(scaleFormID,scLB_DisplayedData.displaySetup.sLeaderboardType,tempText,scLB_DisplayedData.displaySetup.sLeaderboardName,scLB_DisplayedData.displaySetup.b_sLeaderboardNameLiteral)
// ENDIF
// ELSE
// tempText = "FMMC_COR_SCLB6"
// //SET_SC_LEADERBOARD_MULTIPLAYER_TITLE(scaleFormID,scLB_DisplayedData.displaySetup.sLeaderboardType,tempText,FALSE)
// IF scLB_DisplayedData.displaySetup.iLaps > 0
// SET_SC_LEADERBOARD_MULTIPLAYER_TITLE(scaleFormID,scLB_DisplayedData.displaySetup.sLeaderboardType,tempText,scLB_DisplayedData.displaySetup.sLeaderboardName,scLB_DisplayedData.displaySetup.b_sLeaderboardNameLiteral,scLB_DisplayedData.displaySetup.iLaps)
// ELSE
// SET_SC_LEADERBOARD_MULTIPLAYER_TITLE(scaleFormID,scLB_DisplayedData.displaySetup.sLeaderboardType,tempText,scLB_DisplayedData.displaySetup.sLeaderboardName,scLB_DisplayedData.displaySetup.b_sLeaderboardNameLiteral)
// ENDIF
// ENDIF
// ENDIF
// SET_SC_LEADERBOARD_COLUMN_TITLES(scaleFormID,"SCLB_C_RANK",scLB_DisplayedData.sColumnTextName,scLB_DisplayedData.iNumNonRankColumnsToDisplay)
// ENDIF
// iFinalState = 0
// SET_BIT(iFinalState,SCLB_SLOT_STATE_BIT_WORLD)
// SET_SC_LEADERBOARD_SECTION_HEADER(scaleFormID,iSlotCounter,iFinalState,TRUE,TRUE)
// //iSlotCounter++
// iFinalState = 0
// SET_BIT(iFinalState,SCLB_SLOT_STATE_BIT_FRIENDS)
// SET_SC_LEADERBOARD_SECTION_HEADER(scaleFormID,iSlotCounter,iFinalState,TRUE,TRUE)
// //iSlotCounter++
// iFinalState = 0
// SET_BIT(iFinalState,SCLB_SLOT_STATE_BIT_CREW)
// SET_SC_LEADERBOARD_SECTION_HEADER(scaleFormID,iSlotCounter,iFinalState,TRUE,TRUE)
// SET_BIT(scLB_Control.ibs,SC_LEADERBOARD_CONTROL_SETUP_DATA_MENU)
// DISPLAY_SC_LEADERBOARD_UI(scaleFormID)
// CLEAR_BIT(scLB_Control.ibs,SC_LEADERBOARD_CONTROL_SETUP_BUTTONS)
// CLEAR_HELP()
// ELSE
// DISPLAY_SC_LEADERBOARD_UI(scaleFormID)
// ENDIF
// ELIF NOT NETWORK_HAVE_ONLINE_PRIVILEGES()
// IF NOT IS_BIT_SET(scLB_Control.ibs,SC_LEADERBOARD_CONTROL_SETUP_DATA_MENU)
// BEGIN_SCALEFORM_MOVIE_METHOD(scaleFormID,"CLEAR_ALL_SLOTS")
// END_SCALEFORM_MOVIE_METHOD()
// SET_SC_LEADERBOARD_DISPLAY_TYPE(scaleFormID,INT_TO_ENUM(DISPLAY_TYPES,scLB_DisplayedData.displaySetup.iDisplayType))
// println("Setting LB display type = ",scLB_DisplayedData.displaySetup.iDisplayType )
// IF DOES_TEXT_LABEL_EXIST(scLB_DisplayedData.displaySetup.sLeaderboardType)
// IF NOT IS_SC_LEADERBOARD_A_RALLY(scLB_control.ReadDataStruct.m_LeaderboardId)
// IF scLB_DisplayedData.displaySetup.iLaps > 0
// tempText = scLB_DisplayedData.displaySetup.sLeaderboardName
// //tempText += "- "
// //temptext += scLB_DisplayedData.displaySetup.iLaps
// SET_SC_LEADERBOARD_MULTIPLAYER_TITLE(scaleFormID,scLB_DisplayedData.displaySetup.sLeaderboardType,emptyText,temptext,TRUE,scLB_DisplayedData.displaySetup.iLaps)
// ELSE
// SET_SC_LEADERBOARD_MULTIPLAYER_TITLE(scaleFormID,scLB_DisplayedData.displaySetup.sLeaderboardType,emptyText,scLB_DisplayedData.displaySetup.sLeaderboardName,scLB_DisplayedData.displaySetup.b_sLeaderboardNameLiteral)
// ENDIF
// ELSE
// IF NOT scLB_DisplayedData.displaySetup.bCoDriver
// tempText = "FMMC_COR_SCLB5"
// //SET_SC_LEADERBOARD_MULTIPLAYER_TITLE(scaleFormID,scLB_DisplayedData.displaySetup.sLeaderboardType,temptext,FALSE)
// IF scLB_DisplayedData.displaySetup.iLaps > 0
// SET_SC_LEADERBOARD_MULTIPLAYER_TITLE(scaleFormID,scLB_DisplayedData.displaySetup.sLeaderboardType,tempText,scLB_DisplayedData.displaySetup.sLeaderboardName,scLB_DisplayedData.displaySetup.b_sLeaderboardNameLiteral,scLB_DisplayedData.displaySetup.iLaps)
// ELSE
// SET_SC_LEADERBOARD_MULTIPLAYER_TITLE(scaleFormID,scLB_DisplayedData.displaySetup.sLeaderboardType,tempText,scLB_DisplayedData.displaySetup.sLeaderboardName,scLB_DisplayedData.displaySetup.b_sLeaderboardNameLiteral)
// ENDIF
// ELSE
// tempText = "FMMC_COR_SCLB6"
// //SET_SC_LEADERBOARD_MULTIPLAYER_TITLE(scaleFormID,scLB_DisplayedData.displaySetup.sLeaderboardType,tempText,FALSE)
// IF scLB_DisplayedData.displaySetup.iLaps > 0
// SET_SC_LEADERBOARD_MULTIPLAYER_TITLE(scaleFormID,scLB_DisplayedData.displaySetup.sLeaderboardType,tempText,scLB_DisplayedData.displaySetup.sLeaderboardName,scLB_DisplayedData.displaySetup.b_sLeaderboardNameLiteral,scLB_DisplayedData.displaySetup.iLaps)
// ELSE
// SET_SC_LEADERBOARD_MULTIPLAYER_TITLE(scaleFormID,scLB_DisplayedData.displaySetup.sLeaderboardType,tempText,scLB_DisplayedData.displaySetup.sLeaderboardName,scLB_DisplayedData.displaySetup.b_sLeaderboardNameLiteral)
// ENDIF
// ENDIF
// ENDIF
// SET_SC_LEADERBOARD_COLUMN_TITLES(scaleFormID,"SCLB_C_RANK",scLB_DisplayedData.sColumnTextName,scLB_DisplayedData.iNumNonRankColumnsToDisplay)
// ENDIF
// iFinalState = 0
// SET_BIT(iFinalState,SCLB_SLOT_STATE_BIT_WORLD)
// SET_SC_LEADERBOARD_SECTION_HEADER(scaleFormID,iSlotCounter,iFinalState,TRUE,TRUE)
// //iSlotCounter++
// iFinalState = 0
// SET_BIT(iFinalState,SCLB_SLOT_STATE_BIT_FRIENDS)
// SET_SC_LEADERBOARD_SECTION_HEADER(scaleFormID,iSlotCounter,iFinalState,TRUE,TRUE)
// //iSlotCounter++
// iFinalState = 0
// SET_BIT(iFinalState,SCLB_SLOT_STATE_BIT_CREW)
// SET_SC_LEADERBOARD_SECTION_HEADER(scaleFormID,iSlotCounter,iFinalState,TRUE,TRUE)
// SET_BIT(scLB_Control.ibs,SC_LEADERBOARD_CONTROL_SETUP_DATA_MENU)
// CLEAR_BIT(scLB_Control.ibs,SC_LEADERBOARD_CONTROL_SETUP_BUTTONS)
// DISPLAY_SC_LEADERBOARD_UI(scaleFormID)
// CLEAR_HELP()
// ELSE
// DISPLAY_SC_LEADERBOARD_UI(scaleFormID)
// ENDIF
ELSE
IF scLB_DisplayedData.iCurrentViewID != SC_LB_VIEW_ID_NORMAL
CLEAR_BIT(scLB_Control.ibs,SC_LEADERBOARD_CONTROL_SETUP_DATA_MENU)
scLB_DisplayedData.iCurrentViewID = SC_LB_VIEW_ID_NORMAL
ENDIF
IF NOT LOAD_SOCIAL_CLUB_LEADERBOARD_DATA(scLB_control)
scLB_control.navigation.iCurrentVertSel = -1
CLEAR_BIT(scLB_Control.ibs,SC_LEADERBOARD_CONTROL_SETUP_DATA_MENU)
IF NOT IS_BIT_SET(scLB_Control.ibs,SC_LEADERBOARD_CONTROL_SETUP_LOADING_MENU)
BEGIN_SCALEFORM_MOVIE_METHOD(scaleFormID,"CLEAR_ALL_SLOTS")
END_SCALEFORM_MOVIE_METHOD()
SET_SC_LEADERBOARD_DISPLAY_TYPE(scaleFormID,INT_TO_ENUM(DISPLAY_TYPES,scLB_DisplayedData.displaySetup.iDisplayType))
println("Setting LB display type = ",scLB_DisplayedData.displaySetup.iDisplayType )
IF DOES_TEXT_LABEL_EXIST(scLB_DisplayedData.displaySetup.sLeaderboardType)
IF NOT IS_SC_LEADERBOARD_A_RALLY(scLB_control.ReadDataStruct.m_LeaderboardId)
IF scLB_DisplayedData.displaySetup.iLaps > 0
tempText = scLB_DisplayedData.displaySetup.sLeaderboardName
//tempText += "- "
//temptext += scLB_DisplayedData.displaySetup.iLaps
SET_SC_LEADERBOARD_MULTIPLAYER_TITLE(scaleFormID,scLB_DisplayedData.displaySetup.sLeaderboardType,emptyText,temptext,TRUE,scLB_DisplayedData.displaySetup.iLaps)
ELSE
SET_SC_LEADERBOARD_MULTIPLAYER_TITLE(scaleFormID,scLB_DisplayedData.displaySetup.sLeaderboardType,emptyText,scLB_DisplayedData.displaySetup.sLeaderboardName,scLB_DisplayedData.displaySetup.b_sLeaderboardNameLiteral)
ENDIF
ELSE
IF NOT scLB_DisplayedData.displaySetup.bCoDriver
tempText = "FMMC_COR_SCLB5"
//SET_SC_LEADERBOARD_MULTIPLAYER_TITLE(scaleFormID,scLB_DisplayedData.displaySetup.sLeaderboardType,temptext,FALSE)
IF scLB_DisplayedData.displaySetup.iLaps > 0
SET_SC_LEADERBOARD_MULTIPLAYER_TITLE(scaleFormID,scLB_DisplayedData.displaySetup.sLeaderboardType,tempText,scLB_DisplayedData.displaySetup.sLeaderboardName,scLB_DisplayedData.displaySetup.b_sLeaderboardNameLiteral,scLB_DisplayedData.displaySetup.iLaps)
ELSE
SET_SC_LEADERBOARD_MULTIPLAYER_TITLE(scaleFormID,scLB_DisplayedData.displaySetup.sLeaderboardType,tempText,scLB_DisplayedData.displaySetup.sLeaderboardName,scLB_DisplayedData.displaySetup.b_sLeaderboardNameLiteral)
ENDIF
ELSE
tempText = "FMMC_COR_SCLB6"
//SET_SC_LEADERBOARD_MULTIPLAYER_TITLE(scaleFormID,scLB_DisplayedData.displaySetup.sLeaderboardType,tempText,FALSE)
IF scLB_DisplayedData.displaySetup.iLaps > 0
SET_SC_LEADERBOARD_MULTIPLAYER_TITLE(scaleFormID,scLB_DisplayedData.displaySetup.sLeaderboardType,tempText,scLB_DisplayedData.displaySetup.sLeaderboardName,scLB_DisplayedData.displaySetup.b_sLeaderboardNameLiteral,scLB_DisplayedData.displaySetup.iLaps)
ELSE
SET_SC_LEADERBOARD_MULTIPLAYER_TITLE(scaleFormID,scLB_DisplayedData.displaySetup.sLeaderboardType,tempText,scLB_DisplayedData.displaySetup.sLeaderboardName,scLB_DisplayedData.displaySetup.b_sLeaderboardNameLiteral)
ENDIF
ENDIF
ENDIF
SET_SC_LEADERBOARD_COLUMN_TITLES(scaleFormID,"SCLB_C_RANK",scLB_DisplayedData.sColumnTextName,scLB_DisplayedData.iNumNonRankColumnsToDisplay)
ENDIF
SET_BIT(scLB_Control.ibs,SC_LEADERBOARD_CONTROL_SETUP_LOADING_MENU)
CLEAR_BIT(scLB_Control.ibs,SC_LEADERBOARD_CONTROL_SETUP_BUTTONS)
ENDIF
iSlotCounter = 0
i = 0
IF scLB_DisplayedData.iLoadLoopCounter = -1
TEXT_LABEL_23 textLabel = "SC_LB_DL0"
REPEAT 3 i
IF i = 0
iFinalState = 0
SET_BIT(iFinalState,SCLB_SLOT_STATE_BIT_WORLD)
SET_SC_LEADERBOARD_SECTION_HEADER(scaleFormID,iSlotCounter,iFinalState,FALSE)
ELIF i = 1
iFinalState = 0
SET_BIT(iFinalState,SCLB_SLOT_STATE_BIT_FRIENDS)
SET_SC_LEADERBOARD_SECTION_HEADER(scaleFormID,iSlotCounter,iFinalState,FALSE)
ELIF i = 2
iFinalState = 0
SET_BIT(iFinalState,SCLB_SLOT_STATE_BIT_CREW)
SET_SC_LEADERBOARD_SECTION_HEADER(scaleFormID,iSlotCounter,iFinalState,FALSE)
ENDIF
//iSlotCounter++
iFinalState = 0
SET_BIT(iFinalState,SCLB_SLOT_STATE_BIT_DESCRIPTION)
SET_SC_LEADERBOARD_SLOT_TEXT_DESCRIPTION_ONLY(scaleFormID, iSlotCounter,iFinalState,textLabel)//,scLB_DisplayedData.iNumNonRankColumnsToDisplay)
iSlotCounter++
ENDREPEAT
scLB_DisplayedData.iLoadLoopCounter = 1
RESET_NET_TIMER(scLB_DisplayedData.downloadingTimer)
ELSE
IF HAS_NET_TIMER_EXPIRED(scLB_DisplayedData.downloadingTimer,300)
TEXT_LABEL_23 textLabel = "SC_LB_DL"
textLabel += scLB_DisplayedData.iLoadLoopCounter
REPEAT 3 i
IF i = 0
iFinalState = 0
SET_BIT(iFinalState,SCLB_SLOT_STATE_BIT_WORLD)
SET_SC_LEADERBOARD_SECTION_HEADER(scaleFormID,iSlotCounter,iFinalState,FALSE)
ELIF i = 1
iFinalState = 0
SET_BIT(iFinalState,SCLB_SLOT_STATE_BIT_FRIENDS)
SET_SC_LEADERBOARD_SECTION_HEADER(scaleFormID,iSlotCounter,iFinalState,FALSE)
ELIF i = 2
iFinalState = 0
SET_BIT(iFinalState,SCLB_SLOT_STATE_BIT_CREW)
SET_SC_LEADERBOARD_SECTION_HEADER(scaleFormID,iSlotCounter,iFinalState,FALSE)
ENDIF
//iSlotCounter++
iFinalState = 0
SET_BIT(iFinalState,SCLB_SLOT_STATE_BIT_DESCRIPTION)
SET_SC_LEADERBOARD_SLOT_TEXT_DESCRIPTION_ONLY(scaleFormID, iSlotCounter,iFinalState,textLabel)//,scLB_DisplayedData.iNumNonRankColumnsToDisplay)
iSlotCounter++
ENDREPEAT
scLB_DisplayedData.iLoadLoopCounter++
IF scLB_DisplayedData.iLoadLoopCounter > 3
scLB_DisplayedData.iLoadLoopCounter = 0
ENDIF
RESET_NET_TIMER(scLB_DisplayedData.downloadingTimer)
ENDIF
ENDIF
#IF IS_DEBUG_BUILD
bDisplayedUIThisFrame = TRUE
#ENDIF
DISPLAY_SC_LEADERBOARD_UI(scaleFormID)
ELSE
CLEAR_BIT(scLB_Control.ibs,SC_LEADERBOARD_CONTROL_SETUP_LOADING_MENU)
// bAddedSectionHeader[0] = FALSE
// bAddedSectionHeader[1] = FALSE
// bAddedSectionHeader[2] = FALSE
//scLB_control.navigation.iCurrentVertSel = -1
IF NOT IS_BIT_SET(scLB_Control.ibs,SC_LEADERBOARD_CONTROL_SETUP_DATA_MENU)
REPEAT 3 i
scLB_control.navigation.iSectionCounter[i] = 0
ENDREPEAT
BEGIN_SCALEFORM_MOVIE_METHOD(scaleFormID,"CLEAR_ALL_SLOTS")
END_SCALEFORM_MOVIE_METHOD()
SET_SC_LEADERBOARD_DISPLAY_TYPE(scaleFormID,INT_TO_ENUM(DISPLAY_TYPES,scLB_DisplayedData.displaySetup.iDisplayType))
println("Setting LB display type = ",scLB_DisplayedData.displaySetup.iDisplayType )
IF DOES_TEXT_LABEL_EXIST(scLB_DisplayedData.displaySetup.sLeaderboardType)
IF NOT IS_SC_LEADERBOARD_A_RALLY(scLB_control.ReadDataStruct.m_LeaderboardId)
IF scLB_DisplayedData.displaySetup.iLaps > 0
tempText = scLB_DisplayedData.displaySetup.sLeaderboardName
//tempText += "- "
//temptext += scLB_DisplayedData.displaySetup.iLaps
SET_SC_LEADERBOARD_MULTIPLAYER_TITLE(scaleFormID,scLB_DisplayedData.displaySetup.sLeaderboardType,emptyText,temptext,TRUE,scLB_DisplayedData.displaySetup.iLaps)
ELSE
SET_SC_LEADERBOARD_MULTIPLAYER_TITLE(scaleFormID,scLB_DisplayedData.displaySetup.sLeaderboardType,emptyText,scLB_DisplayedData.displaySetup.sLeaderboardName,scLB_DisplayedData.displaySetup.b_sLeaderboardNameLiteral)
ENDIF
ELSE
IF NOT scLB_DisplayedData.displaySetup.bCoDriver
tempText = "FMMC_COR_SCLB5"
//SET_SC_LEADERBOARD_MULTIPLAYER_TITLE(scaleFormID,scLB_DisplayedData.displaySetup.sLeaderboardType,temptext,FALSE)
IF scLB_DisplayedData.displaySetup.iLaps > 0
SET_SC_LEADERBOARD_MULTIPLAYER_TITLE(scaleFormID,scLB_DisplayedData.displaySetup.sLeaderboardType,tempText,scLB_DisplayedData.displaySetup.sLeaderboardName,scLB_DisplayedData.displaySetup.b_sLeaderboardNameLiteral,scLB_DisplayedData.displaySetup.iLaps)
ELSE
SET_SC_LEADERBOARD_MULTIPLAYER_TITLE(scaleFormID,scLB_DisplayedData.displaySetup.sLeaderboardType,tempText,scLB_DisplayedData.displaySetup.sLeaderboardName,scLB_DisplayedData.displaySetup.b_sLeaderboardNameLiteral)
ENDIF
ELSE
tempText = "FMMC_COR_SCLB6"
//SET_SC_LEADERBOARD_MULTIPLAYER_TITLE(scaleFormID,scLB_DisplayedData.displaySetup.sLeaderboardType,tempText,FALSE)
IF scLB_DisplayedData.displaySetup.iLaps > 0
SET_SC_LEADERBOARD_MULTIPLAYER_TITLE(scaleFormID,scLB_DisplayedData.displaySetup.sLeaderboardType,tempText,scLB_DisplayedData.displaySetup.sLeaderboardName,scLB_DisplayedData.displaySetup.b_sLeaderboardNameLiteral,scLB_DisplayedData.displaySetup.iLaps)
ELSE
SET_SC_LEADERBOARD_MULTIPLAYER_TITLE(scaleFormID,scLB_DisplayedData.displaySetup.sLeaderboardType,tempText,scLB_DisplayedData.displaySetup.sLeaderboardName,scLB_DisplayedData.displaySetup.b_sLeaderboardNameLiteral)
ENDIF
ENDIF
ENDIF
SET_SC_LEADERBOARD_COLUMN_TITLES(scaleFormID,"SCLB_C_RANK",scLB_DisplayedData.sColumnTextName,scLB_DisplayedData.iNumNonRankColumnsToDisplay)
ENDIF
//INT iGlobalCounter,iFriendCounter, iCrewCounter
IF NOT IS_BIT_SET(scLB_control.iBS,SC_LEADERBOARD_CONTROL_GENERATED_FINAL_LIST)
CLEAR_FINAL_DATA_STRUCT(tempFinalData)
GET_FINAL_DATA_LIST(scLB_control,tempFinalData)
ORDER_FINAL_LIST(scLB_control,tempFinalData)
ENDIF
iSlotCounter = 0
scLB_control.navigation.iMaxVertSel = 0
IF scLB_DisplayedData.iSectionEntries[0] > 1
OR (scLB_DisplayedData.iSectionEntries[0] > 0 AND scLB_DisplayedData.iPlayerIndexForSection[0] != -1)
OR (scLB_DisplayedData.iSectionEntries[0] > 0 AND scLB_DisplayedData.displaySetup.bCoDriver AND IS_SC_LEADERBOARD_A_RALLY(scLB_control.ReadDataStruct.m_LeaderboardId) AND scLB_DisplayedData.iPlayerIndexForSection[0] != -1)
scLB_control.navigation.iCurrentVertSel = -1
i = 0
REPEAT SC_LEADERBOARD_MAX_NUM_DISPLAYED_ROWS i
BOOL bSkipRow = FALSE
IF tempFinalData[i].iSection = 1
IF NOT bAddedSectionHeader[0]
iFinalState = 0
SET_BIT(iFinalState,SCLB_SLOT_STATE_BIT_WORLD)
SET_SC_LEADERBOARD_SECTION_HEADER(scaleFormID,iSlotCounter,iFinalState,FALSE)
//iSlotCounter++
bAddedSectionHeader[0] = TRUE
ENDIF
ELIF tempFinalData[i].iSection = 2
IF NOT bAddedSectionHeader[1]
iFinalState = 0
SET_BIT(iFinalState,SCLB_SLOT_STATE_BIT_FRIENDS)
IF scLB_DisplayedData.iSectionEntries[1] < 1
AND scLB_DisplayedData.iPlayerIndexForSection[1] = -1
AND NOT (scLB_DisplayedData.iSectionEntries[1] > 0 AND scLB_DisplayedData.displaySetup.bCoDriver AND IS_SC_LEADERBOARD_A_RALLY(scLB_control.ReadDataStruct.m_LeaderboardId) AND scLB_DisplayedData.iPlayerIndexForSection[1] != -1)
SET_SC_LEADERBOARD_SECTION_HEADER(scaleFormID,iSlotCounter,iFinalState,TRUE)
bSkipRow = TRUE
//bSkipRow = TRUE
ELSE
SET_SC_LEADERBOARD_SECTION_HEADER(scaleFormID,iSlotCounter,iFinalState,FALSE)
ENDIF
bAddedSectionHeader[1] = TRUE
ENDIF
ELIF tempFinalData[i].iSection = 3
IF NOT bAddedSectionHeader[2]
iFinalState = 0
SET_BIT(iFinalState,SCLB_SLOT_STATE_BIT_CREW)
IF NOT NETWORK_HAS_SOCIAL_CLUB_ACCOUNT()
bSkipRow = TRUE
ELSE
IF NOT NETWORK_ARE_SOCIAL_CLUB_POLICIES_CURRENT()
bSkipRow = TRUE
ENDIF
ENDIF
IF scLB_DisplayedData.iSectionEntries[2] < 2
AND scLB_DisplayedData.iPlayerIndexForSection[2] = -1
AND NOT (scLB_DisplayedData.iSectionEntries[2] > 0 AND scLB_DisplayedData.displaySetup.bCoDriver AND IS_SC_LEADERBOARD_A_RALLY(scLB_control.ReadDataStruct.m_LeaderboardId) AND scLB_DisplayedData.iPlayerIndexForSection[2] != -1)
bSkipRow = TRUE
ENDIF
IF bSkipRow
SET_SC_LEADERBOARD_SECTION_HEADER(scaleFormID,iSlotCounter,iFinalState,TRUE)
ELSE
SET_SC_LEADERBOARD_SECTION_HEADER(scaleFormID,iSlotCounter,iFinalState,FALSE)
ENDIF
bAddedSectionHeader[2] = TRUE
ENDIF
ENDIF
//IF NOT ARE_STRINGS_EQUAL(tempFinalData[i].rowData.tl23_ParticipantName,"")
IF IS_GAMER_HANDLE_VALID(tempFinalData[i].rowData.playerGamerHandle)
IF IS_SC_LEADERBOARD_A_RALLY(scLB_control.ReadDataStruct.m_LeaderboardId)
NETWORK_PLAYER_GET_USERID(PLAYER_ID(),localUserID)
IF NOT tempFinalData[i].rowData.bValidData
AND ARE_STRINGS_EQUAL(scLB_Control.ReadDataStruct.m_GroupSelector.m_Group[1].m_Id,localUserID.Name)
bSkipRow = TRUE
ENDIF
ENDIF
IF NOT bSkipRow
iFinalState = 0
IF NOT scLB_DisplayedData.displaySetup.bCoDriver
//IF ARE_STRINGS_EQUAL(tempFinalData[i].rowData.tl23_ParticipantName,GET_PLAYER_NAME(PLAYER_ID()))
IF SCLB_CHECK_HANDLES_ARE_THE_SAME(tempFinalData[i].rowData.playerGamerHandle,localPlayerHandle)
SET_BIT(iFinalState,SCLB_SLOT_STATE_BIT_IS_PLAYER)
IF scLB_control.navigation.iCurrentVertSel = -1
bHighlightedARow = TRUE
scLB_control.navigation.iCurrentVertSel = i
SET_BIT(iFinalState,SCLB_SLOT_STATE_BIT_SELECTED)
//SET_SC_LEADERBOARD_SLOT_FINAL_STATE(scaleFormID,scLB_control.navigation.slotData[scLB_control.navigation.iCurrentVertSel].iSlot,scLB_control.navigation.slotData[scLB_control.navigation.iCurrentVertSel].iFinalState)
ENDIF
ENDIF
ENDIF
IF IS_SC_LEADERBOARD_A_RALLY(scLB_control.ReadDataStruct.m_LeaderboardId)
tempText = tempFinalData[i].rowData.tl23_ParticipantName
IF NOT IS_STRING_NULL_OR_EMPTY(tempFinalData[i].coDriverDisplayName)
AND NOT ARE_STRINGS_EQUAL(tempFinalData[i].coDriverDisplayName,"")
temptext += "/"
tempText += tempFinalData[i].coDriverDisplayName
ENDIF
//GET_GAMER_HANDLE_CREW_TAG_FOR_SCALEFORM(tempFinalData[i].rowData.playerGamerHandle,tempCrewTag[0])
println("Entry for slot : ",iSlotCounter, " CrewID = ",tempFinalData[i].crewTag)
//GET_GAMER_HANDLE_CREW_TAG_FOR_SCALEFORM(GET_GAMER_HANDLE_STRING(finalData[i].rowData.tl31_CoDriver),tempCrewTag[1])
START_SC_LEADERBOARD_SLOT(scaleFormID,iSlotCounter,iFinalState,tempFinalData[i].rowData.iRank,
tempText,tempFinalData[i].crewTag)//tempCrewTag[0])
scLB_control.navigation.slotData[i].iSlot = iSlotCounter
println("scLB_control.navigation.slotData[",i,"].iSlot = ",scLB_control.navigation.slotData[i].iSlot)
scLB_control.navigation.slotData[i].iFinalState = iFinalState
scLB_control.navigation.slotData[i].playerGamerHandle = tempFinalData[i].rowData.playerGamerHandle
scLB_control.navigation.iMaxVertSel++
ELSE
//GET_GAMER_HANDLE_CREW_TAG_FOR_SCALEFORM(tempFinalData[i].rowData.playerGamerHandle,tempFinalData[i].crewTag)//tempCrewTag[0])
println("Entry for slot : ",iSlotCounter, " CrewID = ",tempFinalData[i].crewTag)//tempCrewTag[0])
START_SC_LEADERBOARD_SLOT(scaleFormID,iSlotCounter,iFinalState,tempFinalData[i].rowData.iRank,
tempFinalData[i].rowData.tl23_ParticipantName,tempFinalData[i].crewTag)//tempCrewTag[0])
scLB_control.navigation.slotData[i].iSlot = iSlotCounter
println("scLB_control.navigation.slotData[",i,"].iSlot = ",scLB_control.navigation.slotData[i].iSlot)
scLB_control.navigation.slotData[i].iFinalState = iFinalState
scLB_control.navigation.slotData[i].playerGamerHandle = tempFinalData[i].rowData.playerGamerHandle
scLB_control.navigation.iMaxVertSel++
ENDIF
REPEAT scLB_DisplayedData.iNumNonRankColumnsToDisplay iDisplayLoop
//IF IS_LEADERBOARD_COLUMN_INT(scLB_control.ReadDataStruct.m_LeaderboardId,scLB_Control.ReadDataStruct.m_Type,scLB_DisplayedData.iReadColumns[iDisplayLoop])
bInValidDataForThisColumn = FALSE
IF IS_BIT_SET(scLB_DisplayedData.iDisplayColumnIsIntBS,iDisplayLoop)
IF IS_BIT_SET(scLB_DisplayedData.iInvalidDataSetBS,iDisplayLoop)
IF scLB_DisplayedData.iInvalidDataInt[iDisplayLoop] = tempFinalData[i].rowData.icolumnData[iDisplayLoop]
bInValidDataForThisColumn = TRUE
ENDIF
// println("CDM: Latest scLB_DisplayedData.iInvalidDataInt[iDisplayLoop] = ",scLB_DisplayedData.iInvalidDataInt[iDisplayLoop])
// println("CDM: Latest tempFinalData[i].rowData.icolumnData[iDisplayLoop] = ",tempFinalData[i].rowData.icolumnData[iDisplayLoop])
ENDIF
IF bInValidDataForThisColumn
ADD_SC_LEADERBOARD_COLUMN_DATA_INT(scLB_DisplayedData.displaySetup,iDisplayLoop,tempFinalData[i].rowData.icolumnData[iDisplayLoop],FALSE,tempFinalData[i].rowData.bCustomVehicle)
ELSE
ADD_SC_LEADERBOARD_COLUMN_DATA_INT(scLB_DisplayedData.displaySetup,iDisplayLoop,tempFinalData[i].rowData.icolumnData[iDisplayLoop],tempFinalData[i].rowData.bValidData,tempFinalData[i].rowData.bCustomVehicle)
ENDIF
println("ADD_SC_LEADERBOARD_COLUMN_DATA_INT: ", tempFinalData[i].rowData.icolumnData[iDisplayLoop])
ELSE
IF IS_BIT_SET(scLB_DisplayedData.iInvalidDataSetBS,iDisplayLoop)
IF scLB_DisplayedData.iInvalidDataFloat[iDisplayLoop] = tempFinalData[i].rowData.icolumnData[iDisplayLoop]
bInValidDataForThisColumn = TRUE
ENDIF
ENDIF
IF bInValidDataForThisColumn
ADD_SC_LEADERBOARD_COLUMN_DATA_FLOAT(scLB_DisplayedData.displaySetup,iDisplayLoop,tempFinalData[i].rowData.fcolumnData[iDisplayLoop],FALSE)
ELSE
ADD_SC_LEADERBOARD_COLUMN_DATA_FLOAT(scLB_DisplayedData.displaySetup,iDisplayLoop,tempFinalData[i].rowData.fcolumnData[iDisplayLoop],tempFinalData[i].rowData.bValidData)
ENDIF
println("ADD_SC_LEADERBOARD_COLUMN_DATA_FLOAT: ", tempFinalData[i].rowData.fcolumnData[iDisplayLoop])
ENDIF
ENDREPEAT
STOP_SC_LEADERBOARD_SLOT()
iSectionCounter[tempFinalData[i].iSection-1]++
IF iSectionCounter[tempFinalData[i].iSection-1] = 2
IF tempFinalData[i].rowData.iRank > 2
SET_BIT(iFinalState,SCLB_SLOT_STATE_BIT_OUTLINE)
SET_BIT(scLB_control.navigation.slotData[0].iFinalState,SCLB_SLOT_STATE_BIT_OUTLINE)
SET_SC_LEADERBOARD_SLOT_FINAL_STATE(scaleFormID,iSlotCounter-1,iFinalState)
ENDIF
ENDIF
iSlotCounter++
ENDIF
ENDIF
ENDREPEAT
i =0
REPEAT 3 i
scLB_control.navigation.iSectionCounter[i] = iSectionCounter[i]
ENDREPEAT
ELSE
iFinalState = 0
SET_BIT(iFinalState,SCLB_SLOT_STATE_BIT_WORLD)
SET_SC_LEADERBOARD_SECTION_HEADER(scaleFormID,iSlotCounter,iFinalState,TRUE)
//iSlotCounter++
iFinalState = 0
SET_BIT(iFinalState,SCLB_SLOT_STATE_BIT_FRIENDS)
SET_SC_LEADERBOARD_SECTION_HEADER(scaleFormID,iSlotCounter,iFinalState,TRUE)
//iSlotCounter++
iFinalState = 0
SET_BIT(iFinalState,SCLB_SLOT_STATE_BIT_CREW)
SET_SC_LEADERBOARD_SECTION_HEADER(scaleFormID,iSlotCounter,iFinalState,TRUE)
//iSlotCounter++
//println("DRAW_SC_SCALEFORM_LEADERBOARD: empty leaderboard")
ENDIF
SET_BIT(scLB_Control.ibs,SC_LEADERBOARD_CONTROL_SETUP_DATA_MENU)
CLEAR_BIT(scLB_Control.ibs,SC_LEADERBOARD_CONTROL_SETUP_BUTTONS)
#IF IS_DEBUG_BUILD
bDisplayedUIThisFrame = TRUE
#ENDIF
DISPLAY_SC_LEADERBOARD_UI(scaleFormID)
CLEAR_HELP()
//println("Setup social club leaderboard")
IF scLB_control.navigation.iCurrentVertSel = -1
AND NOT bHighlightedARow = TRUE
IF scLB_DisplayedData.iSectionEntries[0] > 1
scLB_control.navigation.iCurrentVertSel = 0
SET_BIT(scLB_control.navigation.slotData[scLB_control.navigation.iCurrentVertSel].iFinalState,SCLB_SLOT_STATE_BIT_SELECTED)
SET_SC_LEADERBOARD_SLOT_FINAL_STATE(scaleFormID,scLB_control.navigation.slotData[scLB_control.navigation.iCurrentVertSel].iSlot,scLB_control.navigation.slotData[scLB_control.navigation.iCurrentVertSel].iFinalState)
ENDIF
ENDIF
ELSE
#IF IS_DEBUG_BUILD
bDisplayedUIThisFrame = TRUE
#ENDIF
DISPLAY_SC_LEADERBOARD_UI(scaleFormID)
HANDLE_SELECTION_OF_PLAYERS_LISTED(scaleformID, scLB_control)
ENDIF
ENDIF
ENDIF
ENDIF
//ENDIF
#IF IS_DEBUG_BUILD
IF bDisplayedUIThisFrame
//println("DRAW_SC_SCALEFORM_LEADERBOARD: called this frame but bDisplayedUIThisFrame = FALSE")
//IF SHOULD_PROFILE_BUTTON_BE_AVAILABLE_FOR_LEADERBOARD(scLB_control)
// println("SHOULD_PROFILE_BUTTON_BE_AVAILABLE_FOR_LEADERBOARD = TRUE")
//ENDIF
ENDIF
#ENDIF
ENDPROC
/// PURPOSE:
/// Draws the social club leaderboards and disables control actions
/// PARAMS:
/// scLB_control - The control struct for the leaderboard
/// scaleformIndex - The scaleform index for the leaderboard movie
PROC DRAW_SOCIAL_CLUB_LEADERBOARD(SC_LEADERBOARD_CONTROL_STRUCT& scLB_control, SCALEFORM_INDEX& scaleformIndex[])
IF NOT IS_PLAYER_TARGETTING_ANYTHING(PLAYER_ID())
AND NOT IS_PLAYER_FREE_AIMING(PLAYER_ID())
HIDE_HUD_COMPONENT_THIS_FRAME(NEW_HUD_WEAPON_ICON)
ENDIF
DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_ATTACK)
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_BLOCK)
DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_SELECT_NEXT_WEAPON)
DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_SELECT_PREV_WEAPON)
DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_WEAPON_WHEEL_NEXT)
DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_WEAPON_WHEEL_PREV)
DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_SELECT_WEAPON)
DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_WEAPON_WHEEL_UD)
DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_WEAPON_WHEEL_LR)
DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_RELOAD)
DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_JUMP)
DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_ENTER)
DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_NEXT_CAMERA)
IF IS_USING_KEYBOARD_AND_MOUSE(FRONTEND_CONTROL)
DISABLE_CONTROL_ACTION(PLAYER_CONTROL, INPUT_FRONTEND_PAUSE_ALTERNATE) // B*2223500
ENDIF
MPGlobalsAmbience.bPlayerViewingLeaderboard = TRUE
g_bDisableVoteThisFrame = TRUE
DRAW_SC_SCALEFORM_LEADERBOARD(scaleformIndex[0],scLB_control)
ENDPROC
FUNC BOOL SAFE_TO_SC_LEADERBOARD()
IF IS_CUSTOM_MENU_SAFE_TO_DRAW()
RETURN TRUE
ELSE
IF IS_PLAYER_ACTIVE_IN_CORONA()
IF NOT IS_SCREEN_FADED_IN()
//OR (IS_SCRIPT_HUD_DISPLAYING(HUDPART_TRANSITIONHUD) AND GET_CURRENT_TRANSITION_STATE() != TRANSITION_STATE_WAITING_FOR_EXTERNAL_TERMINATION_CALL)
OR (IS_PAUSE_MENU_ACTIVE())
//OR (IS_PLAYER_SWITCH_IN_PROGRESS()) //MP Player Switch is happening.
OR (IS_COMMERCE_STORE_OPEN())
OR (g_bResultScreenDisplaying)
OR (g_sMenuData.bDisableMenu)
RETURN FALSE
ENDIF
ENDIF
ENDIF
RETURN TRUE
ENDFUNC
PROC HANDLE_SOCIAL_CLUB_LEADERBOARD_CORONA(INT& iButtonBS,BOOL& bDrawingMenu,BOOL& bMenuActive,BOOL& bDrawGlobalBoard,BOOL& bDrawCoDriverBoard, INT& iState, INT &iRangeWeap, SC_LEADERBOARD_CONTROL_STRUCT& scLB_control, SCALEFORM_INDEX& scaleformIndex[],SCALEFORM_INSTRUCTIONAL_BUTTONS& scaleformStruct, BOOL bInCorona = FALSE)
// IF IS_BIT_SET(scLB_Control.ibs,SC_LEADERBOARD_CONTROL_SOCIAL_CLUB_TOUR)
// IF NOT IS_SOCIAL_CLUB_ACTIVE()
// //AND NOT IS_PAUSE_MENU_ACTIVE()
// println("NOT IS_SOCIAL_CLUB_ACTIVE() clearing flag")
// CLEAR_BIT(scLB_Control.ibs,SC_LEADERBOARD_CONTROL_SOCIAL_CLUB_TOUR)
// ENDIF
// ELSE
IF bDrawingMenu
IF SAFE_TO_SC_LEADERBOARD()
DRAW_SOCIAL_CLUB_LEADERBOARD(scLB_control,scaleformIndex)
IF IS_BIT_SET(scLB_Control.ibs,SC_LEADERBOARD_CONTROL_SETUP_LOADING_MENU)
OR IS_BIT_SET(scLB_Control.ibs,SC_LEADERBOARD_CONTROL_SETUP_DATA_MENU)
//Deal with the buttons
IF bInCorona = FALSE
SPRITE_PLACEMENT ScaleformSprite
ScaleformSprite = GET_SCALEFORM_INSTRUCTIONAL_BUTTON_POSITION()
IF NOT IS_BIT_SET(scLB_Control.ibs,SC_LEADERBOARD_CONTROL_SETUP_BUTTONS)
REFRESH_SCALEFORM_INSTRUCTIONAL_BUTTONS(scaleformStruct)
SET_BIT(scLB_Control.ibs,SC_LEADERBOARD_CONTROL_SETUP_BUTTONS)
// IF NOT NETWORK_HAS_SOCIAL_CLUB_ACCOUNT()
// ADD_SCALEFORM_INSTRUCTIONAL_BUTTON(GET_CONTROL_INSTRUCTIONAL_BUTTONS_STRING(FRONTEND_CONTROL, INPUT_FRONTEND_ACCEPT),"IB_SOCIAL_CLUB",scaleformStruct)
// ELSE
// IF NOT NETWORK_ARE_SOCIAL_CLUB_POLICIES_CURRENT()
// ADD_SCALEFORM_INSTRUCTIONAL_BUTTON(GET_CONTROL_INSTRUCTIONAL_BUTTONS_STRING(FRONTEND_CONTROL, INPUT_FRONTEND_ACCEPT),"SCLB_SIGNIN",scaleformStruct)
// ENDIF
// ENDIF
IF IS_BIT_SET(scLB_Control.ibs,SC_LEADERBOARD_CONTROL_SETUP_DATA_MENU)
AND scLB_DisplayedData.iSectionEntries[0] > 0
AND scLB_control.navigation.iCurrentVertSel >= 0
ADD_SCALEFORM_INSTRUCTIONAL_INPUT(FRONTEND_CONTROL, INPUT_FRONTEND_SELECT,"SCLB_PROFILE",scaleformStruct, TRUE)
ENDIF
ADD_SCALEFORM_INSTRUCTIONAL_INPUT(FRONTEND_CONTROL, INPUT_FRONTEND_CANCEL,"BB_BACK",scaleformStruct, TRUE)
IF IS_SC_LEADERBOARD_A_RACE(scLB_control.ReadDataStruct.m_LeaderboardId)
AND NOT IS_THIS_RACE_A_POINT_2_POINT_RACE()
IF bDrawGlobalBoard
ADD_SCALEFORM_INSTRUCTIONAL_BUTTON(GET_CONTROL_INSTRUCTIONAL_BUTTONS_STRING(FRONTEND_CONTROL, INPUT_FRONTEND_X),"FMMC_COR_SCLB2",scaleformStruct)
ELSE
ADD_SCALEFORM_INSTRUCTIONAL_BUTTON(GET_CONTROL_INSTRUCTIONAL_BUTTONS_STRING(FRONTEND_CONTROL, INPUT_FRONTEND_X),"FMMC_COR_SCLB1",scaleformStruct)
ENDIF
ENDIF
IF IS_SC_LEADERBOARD_A_RALLY(scLB_control.ReadDataStruct.m_LeaderboardId)
IF bDrawCoDriverBoard
ADD_SCALEFORM_INSTRUCTIONAL_BUTTON(GET_CONTROL_INSTRUCTIONAL_BUTTONS_STRING(FRONTEND_CONTROL, INPUT_FRONTEND_Y),"FMMC_COR_SCLB5",scaleformStruct)
ELSE
ADD_SCALEFORM_INSTRUCTIONAL_BUTTON(GET_CONTROL_INSTRUCTIONAL_BUTTONS_STRING(FRONTEND_CONTROL, INPUT_FRONTEND_Y),"FMMC_COR_SCLB6",scaleformStruct)
ENDIF
ENDIF
IF scLB_control.ReadDataStruct.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_MINI_GAMES_MP_SRANGE)
SWITCH iState
CASE 0
ADD_SCALEFORM_INSTRUCTIONAL_BUTTON(GET_CONTROL_INSTRUCTIONAL_BUTTONS_STRING(FRONTEND_CONTROL, INPUT_FRONTEND_X),"FMMC_COR_SCLB7a",scaleformStruct)
BREAK
CASE 1
ADD_SCALEFORM_INSTRUCTIONAL_BUTTON(GET_CONTROL_INSTRUCTIONAL_BUTTONS_STRING(FRONTEND_CONTROL, INPUT_FRONTEND_X),"FMMC_COR_SCLB7b",scaleformStruct)
BREAK
CASE 2
ADD_SCALEFORM_INSTRUCTIONAL_BUTTON(GET_CONTROL_INSTRUCTIONAL_BUTTONS_STRING(FRONTEND_CONTROL, INPUT_FRONTEND_X),"FMMC_COR_SCLB7c",scaleformStruct)
BREAK
ENDSWITCH
SWITCH iRangeWeap
CASE 0
ADD_SCALEFORM_INSTRUCTIONAL_BUTTON(GET_CONTROL_INSTRUCTIONAL_BUTTONS_STRING(FRONTEND_CONTROL, INPUT_FRONTEND_Y),"HUD_MG_SMG",scaleformStruct) //off by one as this is for NEXT selection not current
BREAK
CASE 1
ADD_SCALEFORM_INSTRUCTIONAL_BUTTON(GET_CONTROL_INSTRUCTIONAL_BUTTONS_STRING(FRONTEND_CONTROL, INPUT_FRONTEND_Y),"HUD_MG_ASSAULT",scaleformStruct) //off by one as this is for NEXT selection not current
BREAK
CASE 2
ADD_SCALEFORM_INSTRUCTIONAL_BUTTON(GET_CONTROL_INSTRUCTIONAL_BUTTONS_STRING(FRONTEND_CONTROL, INPUT_FRONTEND_Y),"HUD_MG_SHOTGUN",scaleformStruct) //off by one as this is for NEXT selection not current
BREAK
CASE 3
ADD_SCALEFORM_INSTRUCTIONAL_BUTTON(GET_CONTROL_INSTRUCTIONAL_BUTTONS_STRING(FRONTEND_CONTROL, INPUT_FRONTEND_Y),"HUD_MG_LMG",scaleformStruct) //off by one as this is for NEXT selection not current
BREAK
CASE 4
ADD_SCALEFORM_INSTRUCTIONAL_BUTTON(GET_CONTROL_INSTRUCTIONAL_BUTTONS_STRING(FRONTEND_CONTROL, INPUT_FRONTEND_Y),"HUD_MG_HEAVY",scaleformStruct) //off by one as this is for NEXT selection not current
BREAK
CASE 5
ADD_SCALEFORM_INSTRUCTIONAL_BUTTON(GET_CONTROL_INSTRUCTIONAL_BUTTONS_STRING(FRONTEND_CONTROL, INPUT_FRONTEND_Y),"HUD_MG_PISTOL",scaleformStruct) //off by one as this is for NEXT selection not current
BREAK
ENDSWiTCH
ENDIF
// IF IS_BIT_SET(scLB_Control.ibs,SC_LEADERBOARD_CONTROL_SETUP_DATA_MENU)
// AND scLB_DisplayedData.iSectionEntries[0] > 0
// ADD_SCALEFORM_INSTRUCTIONAL_BUTTON(ICON_DPAD_UPDOWN,"SCLB_NAVIGATE",scaleformStruct)
// ENDIF
ENDIF
//println("Setup the button options.")
RUN_SCALEFORM_INSTRUCTIONAL_BUTTONS(scaleformIndex[1], ScaleformSprite, scaleformStruct)
//ELSE
// RUN_SCALEFORM_INSTRUCTIONAL_BUTTONS(scaleformIndex[1], ScaleformSprite, scaleformStruct)
//ENDIF
ENDIF
ELSE
println("HANDLE_SOCIAL_CLUB_LEADERBOARD_CORONA: waiting for menu to be setup before drawing buttons.")
ENDIF
// #IF IS_DEBUG_BUILD
// ELSE
// println("HANDLE_SOCIAL_CLUB_LEADERBOARD_CORONA: can't draw IS_CUSTOM_MENU_SAFE_TO_DRAW() = FALSE!!!")
// IF NOT IS_SCREEN_FADED_IN()
// println("HANDLE_SOCIAL_CLUB_LEADERBOARD_CORONA: because screen is not faded in")
// ENDIF
// IF (IS_SCRIPT_HUD_DISPLAYING(HUDPART_TRANSITIONHUD) AND GET_CURRENT_TRANSITION_STATE() != TRANSITION_STATE_WAITING_FOR_EXTERNAL_TERMINATION_CALL)
// println("HANDLE_SOCIAL_CLUB_LEADERBOARD_CORONA: because (IS_SCRIPT_HUD_DISPLAYING(HUDPART_TRANSITIONHUD) AND GET_CURRENT_TRANSITION_STATE() != TRANSITION_STATE_WAITING_FOR_EXTERNAL_TERMINATION_CALL)")
// ENDIF
// IF (IS_PAUSE_MENU_ACTIVE())
// println("HANDLE_SOCIAL_CLUB_LEADERBOARD_CORONA: because IS_PAUSE_MENU_ACTIVE())")
// ENDIF
// IF (IS_COMMERCE_STORE_OPEN())
// println("HANDLE_SOCIAL_CLUB_LEADERBOARD_CORONA: because IS_COMMERCE_STORE_OPEN())")
// ENDIF
// IF (g_bResultScreenDisplaying)
// println("HANDLE_SOCIAL_CLUB_LEADERBOARD_CORONA: because g_bResultScreenDisplaying")
// ENDIF
// IF (IS_PLAYER_SWITCH_IN_PROGRESS()) //MP Player Switch is happening.
// println("HANDLE_SOCIAL_CLUB_LEADERBOARD_CORONA: because IS_PLAYER_SWITCH_IN_PROGRESS()")
// ENDIF
// IF (g_sMenuData.bDisableMenu)
// println("HANDLE_SOCIAL_CLUB_LEADERBOARD_CORONA: because g_sMenuData.bDisableMenu)")
// ENDIF
// #ENDIF
ENDIF
IF NOT IS_BIT_SET(iButtonBS,FM_PRESSED_BS_CIRCLE)
IF IS_CONTROL_JUST_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_CANCEL)
OR IS_DISABLED_CONTROL_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_CANCEL)
// #IF IS_DEBUG_BUILD
// IF IS_CONTROL_JUST_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_CANCEL)
// println("HANDLE_SOCIAL_CLUB_LEADERBOARD_CORONA: IS_CONTROL_JUST_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_CANCEL)")
// ENDIF
// IF IS_DISABLED_CONTROL_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_CANCEL)
// println("HANDLE_SOCIAL_CLUB_LEADERBOARD_CORONA:IS_DISABLED_CONTROL_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_CANCEL)")
// ENDIF
// #ENDIF
PLAY_SOUND_FRONTEND(-1, "BACK","HUD_FRONTEND_MP_SOUNDSET")
SET_BIT(iButtonBS,FM_PRESSED_BS_CIRCLE)
println("CLEANUP_CORONA_LEADERBOARD: player pressed cancel when on leaderboard")
CLEANUP_CORONA_LEADERBOARD(bDrawingMenu,bMenuActive,scLB_Control,scaleformIndex,scaleformStruct)
exit
ENDIF
ELSE
IF NOT IS_CONTROL_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_CANCEL)
AND NOT IS_DISABLED_CONTROL_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_CANCEL)
CLEAR_BIT(iButtonBS,FM_PRESSED_BS_CIRCLE)
ENDIF
ENDIF
IF IS_SC_LEADERBOARD_A_RACE(scLB_control.ReadDataStruct.m_LeaderboardId)
AND NOT IS_THIS_RACE_A_POINT_2_POINT_RACE()
IF NOT IS_BIT_SET(iButtonBS,FM_PRESSED_BS_X)
IF IS_CONTROL_JUST_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_X)
OR IS_DISABLED_CONTROL_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_X)
PLAY_SOUND_FRONTEND(-1, "SELECT","HUD_FRONTEND_MP_SOUNDSET")
SET_BIT(iButtonBS,FM_PRESSED_BS_X)
IF bDrawGlobalBoard
bDrawGlobalBoard = FALSE
ELSE
bDrawGlobalBoard = TRUE
ENDIF
println("global board = ",bDrawGlobalBoard)
CLEAR_BIT(scLB_Control.ibs,SC_LEADERBOARD_CONTROL_SETUP_BUTTONS)
CLEAR_BIT(scLB_Control.ibs,SC_LEADERBOARD_CONTROL_SETUP_LOADING_MENU)
CLEAR_BIT(scLB_Control.ibs,SC_LEADERBOARD_CONTROL_SETUP_DATA_MENU)
ENDIF
ELSE
IF NOT IS_CONTROL_JUST_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_X)
AND NOT IS_DISABLED_CONTROL_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_X)
CLEAR_BIT(iButtonBS,FM_PRESSED_BS_X)
ENDIF
ENDIF
ENDIF
IF scLB_control.ReadDataStruct.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_MINI_GAMES_MP_SRANGE)
IF NOT IS_BIT_SET(iButtonBS,FM_PRESSED_BS_X)
IF IS_CONTROL_JUST_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_X)
OR IS_DISABLED_CONTROL_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_X)
PLAY_SOUND_FRONTEND(-1, "SELECT","HUD_FRONTEND_MP_SOUNDSET")
SET_BIT(iButtonBS,FM_PRESSED_BS_X)
iState++
IF iState > 2
iState = 0
ENDIF
CLEAR_BIT(scLB_Control.ibs,SC_LEADERBOARD_CONTROL_SETUP_LOADING_MENU)
CLEAR_BIT(scLB_Control.ibs,SC_LEADERBOARD_CONTROL_SETUP_DATA_MENU)
CLEAR_BIT(scLB_Control.ibs,SC_LEADERBOARD_CONTROL_SETUP_BUTTONS)
println("HANDLE_SOCIAL_CLUB_LEADERBOARD_CORONA: shooting range moving to state: ", iState)
ENDIF
ELSE
IF NOT IS_CONTROL_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_X)
AND NOT IS_DISABLED_CONTROL_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_X)
CLEAR_BIT(iButtonBS,FM_PRESSED_BS_X)
ENDIF
ENDIF
IF NOT IS_BIT_SET(iButtonBS,FM_PRESSED_BS_Y)
IF IS_CONTROL_JUST_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_Y)
OR IS_DISABLED_CONTROL_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_Y)
PLAY_SOUND_FRONTEND(-1, "SELECT","HUD_FRONTEND_MP_SOUNDSET")
SET_BIT(iButtonBS,FM_PRESSED_BS_Y)
iRangeWeap++
IF iRangeWeap > 5
iRangeWeap = 0
ENDIF
CLEAR_BIT(scLB_Control.ibs,SC_LEADERBOARD_CONTROL_SETUP_LOADING_MENU)
CLEAR_BIT(scLB_Control.ibs,SC_LEADERBOARD_CONTROL_SETUP_DATA_MENU)
CLEAR_BIT(scLB_Control.ibs,SC_LEADERBOARD_CONTROL_SETUP_BUTTONS)
println("HANDLE_SOCIAL_CLUB_LEADERBOARD_CORONA: shooting range moving to weapon: ", iRangeWeap)
ENDIF
ELSE
IF NOT IS_CONTROL_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_Y)
AND NOT IS_DISABLED_CONTROL_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_Y)
CLEAR_BIT(iButtonBS,FM_PRESSED_BS_Y)
ENDIF
ENDIF
ENDIF
//BOOL bTemp
//IF bTemp = TRUE
IF IS_SC_LEADERBOARD_A_RALLY(scLB_control.ReadDataStruct.m_LeaderboardId)
IF NOT IS_BIT_SET(iButtonBS,FM_PRESSED_BS_Y)
IF IS_CONTROL_JUST_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_Y)
OR IS_DISABLED_CONTROL_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_Y)
PLAY_SOUND_FRONTEND(-1, "SELECT","HUD_FRONTEND_MP_SOUNDSET")
SET_BIT(iButtonBS,FM_PRESSED_BS_Y)
IF bDrawCoDriverBoard
bDrawCoDriverBoard = FALSE
ELSE
bDrawCoDriverBoard = TRUE
ENDIF
println("bDrawCoDriverBoard = ",bDrawCoDriverBoard )
CLEAR_BIT(scLB_Control.ibs,SC_LEADERBOARD_CONTROL_SETUP_BUTTONS)
CLEAR_BIT(scLB_Control.ibs,SC_LEADERBOARD_CONTROL_SETUP_LOADING_MENU)
CLEAR_BIT(scLB_Control.ibs,SC_LEADERBOARD_CONTROL_SETUP_DATA_MENU)
ENDIF
ELSE
IF NOT IS_CONTROL_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_Y)
AND NOT IS_DISABLED_CONTROL_PRESSED(FRONTEND_CONTROL, INPUT_FRONTEND_Y)
CLEAR_BIT(iButtonBS,FM_PRESSED_BS_y)
ENDIF
ENDIF
//ENDIF
ENDIF
ENDIF
//ENDIF
ENDPROC
FUNC STRING CONVERT_TEXT_LABEL_TO_LITERAL_STRING(STRING theString)
RETURN theString
ENDFUNC
STRUCT BEST_LAPS_DISPLAY_NAME_STRUCT
TEXT_LABEL_63 tl63_names[2]
GAMER_HANDLE gh_handles[2]
INT iQueryProgress[2]
//for the request on durango
TEXT_LABEL_63 tl63_namesTemp[2]
GAMER_HANDLE gh_handlesTemp[2]
INT iNumHandles
INT iRequestID
ENDSTRUCT
FUNC BOOL GET_DISPLAY_NAMES_FOR_BEST_LAP_TIMES(BEST_LAPS_DISPLAY_NAME_STRUCT &theStruct)
INT i
INT iResult
INT iCounter
IF IS_PC_VERSION()
PRINTLN("GET_DISPLAY_NAMES_FOR_BEST_LAP_TIMES: bypassing for PC build.")
RETURN TRUE
ELIF IS_XBOX_PLATFORM()
OR IS_PLAYSTATION_PLATFORM()
SWITCH theStruct.iQueryProgress[0]
CASE 0
theStruct.iNumHandles = 0
theStruct.iRequestID = -1
REPEAT 2 i
theStruct.tl63_namesTemp[i] = ""
CLEAR_GAMER_HANDLE_STRUCT(theStruct.gh_handlesTemp[i])
IF IS_GAMER_HANDLE_VALID(theStruct.gh_handles[i])
theStruct.gh_handlesTemp[theStruct.iNumHandles] = theStruct.gh_handles[i]
theStruct.iNumHandles++
ENDIF
ENDREPEAT
IF theStruct.iNumHandles > 0
theStruct.iRequestID = NETWORK_DISPLAYNAMES_FROM_HANDLES_START(theStruct.gh_handlesTemp,theStruct.iNumHandles)
theStruct.iQueryProgress[0] = 1
ELSE
theStruct.iQueryProgress[0] = 2
ENDIF
BREAK
CASE 1
iResult = NETWORK_GET_DISPLAYNAMES_FROM_HANDLES(theStruct.iRequestID,theStruct.tl63_namesTemp,theStruct.iNumHandles)
IF iResult = 0
PRINTLN("GET_DISPLAY_NAMES_FOR_BEST_LAP_TIMES- SUCCEEDED!")
REPEAT 2 i
IF IS_GAMER_HANDLE_VALID(theStruct.gh_handles[i])
theStruct.tl63_names[i] = theStruct.tl63_namesTemp[iCounter]
PRINTLN("GET_DISPLAY_NAMES_FOR_BEST_LAP_TIMES PlayerName = ",theStruct.tl63_names[i] )
iCounter++
ENDIF
ENDREPEAT
theStruct.iQueryProgress[0] = 2
ELIF iResult = -1
PRINTLN("GET_DISPLAY_NAMES_FOR_BEST_LAP_TIMES- FAILED!")
theStruct.iQueryProgress[0] = 2
ELSE
PRINTLN("GET_DISPLAY_NAMES_FOR_BEST_LAP_TIMES: waiting for display name request: iResult = ",iResult)
RETURN FALSE
ENDIF
BREAK
CASE 2
theStruct.iRequestID = -1
RETURN TRUE
BREAK
ENDSWITCH
ELSE
REPEAT 2 i
IF NOT GET_GAMER_NAME_FROM_HANDLE(theStruct.iQueryProgress[i],theStruct.gh_handles[i],theStruct.tl63_names[i])
RETURN FALSE
ENDIF
ENDREPEAT
RETURN TRUE
ENDIF
RETURN FALSE
ENDFUNC
/// PURPOSE:
/// Gets the personal/global/crew best lap times
FUNC BOOL GET_RACE_BEST_LAP_TIMES(INT& iReadStage, INT& iLoadStage,BOOL& bSuccessful, INT iRaceType,INT& iGlobalBest, INT& iPersonalBest,INT& iComparisonBest,RACE_CHECKPOINTS_LOAD_STRUCT &raceStoredDataStruct,TEXT_LABEL_31& worldRecordHolderName, TEXT_LABEL_31& compareRecordHolderName,BEST_LAPS_DISPLAY_NAME_STRUCT &displayNamesQuery)
IF IS_STRING_NULL_OR_EMPTY(g_FMMC_STRUCT.tl31LoadedContentID)
println("GET_RACE_BEST_LAP_TIMES: exited as current file name is empty")
RETURN TRUE
ENDIF
Leaderboard2ReadData lbReadData
Leaderboard2ReadData emptyData
//LeaderboardRowData tempRowData[1]
LeaderboardRowData initRowData
LeaderboardReadInfo readInfo
INT iLoopRowMax = 50
INT iNumOfFriends
INT iRowIndex
GAMER_HANDLE gamerHandle
gamerHandle = GET_GAMER_HANDLE_PLAYER(PLAYER_ID())
NETWORK_CLAN_DESC clanDesc
Leaderboard2GroupHandle groupHandleData[1]
INT iIndex = 0
TEXT_LABEL_31 createdGroupText
createdGroupText = g_FMMC_STRUCT.tl31LoadedContentID
SWITCH iRaceType
CASE ciRACE_SUB_TYPE_STANDARD
CASE ciRACE_SUB_TYPE_GTA
CASE ciRACE_SUB_TYPE_NON_CONTACT
IF GlobalServerBD_Races.iRaceMode = ciRACE_SUB_TYPE_STANDARD
lbReadData.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_FREEMODE_RACES)
ENDIF
IF GlobalServerBD_Races.iRaceMode = ciRACE_SUB_TYPE_GTA
lbReadData.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_FREEMODE_GTA_RACES)
ENDIF
IF GlobalServerBD_Races.iRaceMode = ciRACE_SUB_TYPE_NON_CONTACT
lbReadData.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_FREEMODE_NON_CONTACT_RACES)
ENDIF
lbReadData.m_Type = LEADERBOARD2_TYPE_GROUP_MEMBER
lbReadData.m_GroupSelector.m_NumGroups = 1
lbReadData.m_GroupSelector.m_Group[0].m_Category = "Mission"
lbReadData.m_GroupSelector.m_Group[0].m_Id = createdGroupText
BREAK
CASE ciRACE_SUB_TYPE_RALLY
lbReadData.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_FREEMODE_RALLY)
lbReadData.m_Type = LEADERBOARD2_TYPE_GROUP_MEMBER
lbReadData.m_GroupSelector.m_NumGroups = 2
lbReadData.m_GroupSelector.m_Group[0].m_Category = "Mission"
lbReadData.m_GroupSelector.m_Group[0].m_Id = createdGroupText
lbReadData.m_GroupSelector.m_Group[1].m_Category = "CoDriver"
lbReadData.m_GroupSelector.m_Group[1].m_Id = ""
BREAK
ENDSWITCH
// IF iRaceType = ciRACE_SUB_TYPE_STANDARD
// lbReadData.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_FREEMODE_RACES)
// ELIF iRaceType = ciRACE_SUB_TYPE_GTA
// lbReadData.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_FREEMODE_GTA_RACES)
// ELIF iRaceType = ciRACE_SUB_TYPE_RALLY
// lbReadData.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_FREEMODE_RALLY)
// ENDIF
// lbReadData.m_Type = LEADERBOARD2_TYPE_GROUP_MEMBER
// lbReadData.m_GroupSelector.m_NumGroups = 1
// lbReadData.m_GroupSelector.m_Group[0].m_Category = "Mission"
// lbReadData.m_GroupSelector.m_Group[0].m_Id = createdGroupText
//
SWITCH iReadStage
CASE 0
displayNamesQuery.iQueryProgress[0] = 0
displayNamesQuery.iQueryProgress[1] = 0
IF START_SC_LEADERBOARD_READ_BY_RANK(iLoadStage,bSuccessful,lbReadData,1,1)
#IF IS_DEBUG_BUILD
println("GET_RACE_BEST_LAP_TIMES: Global best LEADERBOARD ID = ", lbReadData.m_LeaderboardId, " groupHandle = ",lbReadData.m_GroupSelector.m_Group[0].m_Id)
#ENDIF
FILL_READ_INFO_STRUCT(readInfo,lbReadData)
IF bSuccessful
AND LEADERBOARDS2_READ_GET_ROW_DATA_START(readInfo)
IF readInfo.m_ReturnedRows > 0
LEADERBOARDS2_READ_GET_ROW_DATA_INFO(0, initRowData)
//IF ARE_STRINGS_EQUAL(initRowData.m_GamerName, "")
IF NOT IS_GAMER_HANDLE_VALID(initRowData.m_GamerHandle)
println("GET_RACE_BEST_LAP_TIMES: Global best -- moving to stage 99 no global data - A")
iGlobalBest = RACE_LEADERBOARD_NO_DATA_RESULT
iReadStage = 99
ELSE
iGlobalBest = LEADERBOARDS2_READ_GET_ROW_DATA_INT(0, 0)
println("GET_RACE_BEST_LAP_TIMES: Global best Before= ",iGlobalBest)
IF iGlobalBest < 0
iGlobalBest = -iGlobalBest
ENDIF
displayNamesQuery.gh_handles[0] = initRowData.m_GamerHandle
println("GET_RACE_BEST_LAP_TIMES: Global best AFTER= ",iGlobalBest)
//worldRecordHolderName = CONVERT_TEXT_LABEL_TO_LITERAL_STRING(initRowData.m_GamerName)
worldRecordHolderName = initRowData.m_GamerName
//stoopid compiler!
IF IS_STRING_NULL(worldRecordHolderName)
///
ENDIF
println("GET_RACE_BEST_LAP_TIMES: Global best --moving to stage 1 world record holder name = ", worldRecordHolderName)
iReadStage = 1
ENDIF
//println("Ending read in READ_BY_RANK in ", GET_THIS_SCRIPT_NAME() )
ELSE
println("GET_RACE_BEST_LAP_TIMES: Global best -- moving to stage 99 no global data - B")
iGlobalBest = -1
iReadStage = 99
ENDIF
LEADERBOARDS2_READ_GET_ROW_DATA_END( )
ELSE
iGlobalBest = -1
println("GET_RACE_BEST_LAP_TIMES: Global best -- moving to stage 99 no global data - C")
iReadStage = 99
ENDIF
END_LEADERBOARD_READ(iLoadStage,bSuccessful,lbReadData)
lbReadData = emptyData
ENDIF
BREAK
CASE 1
IF START_SC_LEADERBOARD_READ_BY_HANDLE(iLoadStage,bSuccessful,lbReadData,gamerHandle)
#IF IS_DEBUG_BUILD
println("GET_RACE_BEST_LAP_TIMES: Personal best LEADERBOARD ID = ", lbReadData.m_LeaderboardId," groupHandle = ",lbReadData.m_GroupSelector.m_Group[0].m_Id)
#ENDIF
FILL_READ_INFO_STRUCT(readInfo,lbReadData)
IF bSuccessful
AND LEADERBOARDS2_READ_GET_ROW_DATA_START(readInfo)
IF readInfo.m_ReturnedRows > 0
LEADERBOARDS2_READ_GET_ROW_DATA_INFO(0, initRowData)
//IF ARE_STRINGS_EQUAL(initRowData.m_GamerName, "")
IF NOT IS_GAMER_HANDLE_VALID(initRowData.m_GamerHandle)
println("GET_RACE_BEST_LAP_TIMES: Personal best -- moving to stage 2 no data for local player -A")
iPersonalBest = RACE_LEADERBOARD_NO_DATA_RESULT
iReadStage = 2
ELSE
iPersonalBest = LEADERBOARDS2_READ_GET_ROW_DATA_INT(0, 0)
displayNamesQuery.gh_handles[1] = initRowData.m_GamerHandle
println("GET_RACE_BEST_LAP_TIMES: Personal best- Before= ",iPersonalBest)
IF iPersonalBest < 0
iPersonalBest = -iPersonalBest
ENDIF
println("GET_RACE_BEST_LAP_TIMES: Personal best-AFTERe= ",iPersonalBest)
println("GET_RACE_BEST_LAP_TIMES: Personal best-- moving to stage 2 got data for local player -B")
iReadStage = 2
ENDIF
ELSE
iPersonalBest = -1
println("GET_RACE_BEST_LAP_TIMES: Personal best -- moving to stage 2 no data for local player -C")
iReadStage = 2
ENDIF
LEADERBOARDS2_READ_GET_ROW_DATA_END( )
ELSE
iPersonalBest = -1
println("GET_RACE_BEST_LAP_TIMES: Personal best -- moving to stage 2 no data for local player -D")
iReadStage = 2
ENDIF
//println("Ending read in READ_BY_HANDLE in ", GET_THIS_SCRIPT_NAME() )
END_LEADERBOARD_READ(iLoadStage,bSuccessful,lbReadData)
lbReadData = emptyData
ENDIF
BREAK
CASE 2
println("GET_RACE_BEST_LAP_TIMES: Checkpoints type: ",raceStoredDataStruct.iCheckPointType)
SWITCH raceStoredDataStruct.iCheckPointType
CASE RACE_SPLIT_COMPARISON_CREW
iReadStage = 3
println("GET_RACE_BEST_LAP_TIMES: moving to stage 3 GET crew time")
BREAK
CASE RACE_SPLIT_COMPARISON_WORLD
compareRecordHolderName = worldRecordHolderName
iComparisonBest = iGlobalBest
iReadStage = 5
println("GET_RACE_BEST_LAP_TIMES: moving to stage 5 already got global best")
BREAK
CASE RACE_SPLIT_COMPARISON_PERSONAL
compareRecordHolderName = GET_PLAYER_NAME(PLAYER_ID())
iComparisonBest = iPersonalBest
iReadStage = 5
println("GET_RACE_BEST_LAP_TIMES: moving to stage 5 already got personal")
BREAK
CASE RACE_SPLIT_COMPARISON_FRIEND
iReadStage = 4
println("GET_RACE_BEST_LAP_TIMES: moving to stage 4 GET friend time ")
BREAK
ENDSWITCH
BREAK
CASE 3
IF NETWORK_CLAN_SERVICE_IS_VALID()
IF NETWORK_CLAN_PLAYER_IS_ACTIVE(gamerHandle)
IF raceStoredDataStruct.m_ClanId = 0
IF NETWORK_CLAN_PLAYER_GET_DESC(clanDesc, SIZE_OF(clanDesc), gamerHandle)
//println("GET_RACE_CHECKPOINT_DATA got players active crew details. moving to stage 1 ")
raceStoredDataStruct.m_ClanId = clanDesc.Id
ENDIF
println("GET_RACE_BEST_LAP_TIMES: Crew best waiting raceStoredDataStruct.m_ClanId = 0")
RETURN FALSE
ENDIF
ELSE
println("GET_RACE_BEST_LAP_TIMES: Crew best exiting NETWORK_CLAN_PLAYER_IS_ACTIVE is false")
RETURN TRUE
ENDIF
ELSE
println("GET_RACE_BEST_LAP_TIMES: Crew best exiting N NETWORK_CLAN_SERVICE_IS_VALID is false")
RETURN TRUE
ENDIF
lbReadData.m_ClanId = raceStoredDataStruct.m_ClanId
lbReadData.m_Type = LEADERBOARD2_TYPE_CLAN_MEMBER
IF START_SC_LEADERBOARD_READ_BY_RANK(iLoadStage,bSuccessful,lbReadData,1,1)
#IF IS_DEBUG_BUILD
println("GET_RACE_BEST_LAP_TIMES: Crew best LEADERBOARD ID = ", lbReadData.m_LeaderboardId," groupHandle = ",lbReadData.m_GroupSelector.m_Group[0].m_Id)
#ENDIF
FILL_READ_INFO_STRUCT(readInfo,lbReadData)
IF bSuccessful
AND LEADERBOARDS2_READ_GET_ROW_DATA_START(readInfo)
IF readInfo.m_ReturnedRows > 0
LEADERBOARDS2_READ_GET_ROW_DATA_INFO(0, initRowData)
//IF ARE_STRINGS_EQUAL(initRowData.m_GamerName, "")
IF NOT IS_GAMER_HANDLE_VALID(initRowData.m_GamerHandle)
println("GET_RACE_BEST_LAP_TIMES: Crew best -- moving to stage 5 no data -A")
iComparisonBest = RACE_LEADERBOARD_NO_DATA_RESULT
iReadStage = 5
ELSE
iComparisonBest = LEADERBOARDS2_READ_GET_ROW_DATA_INT(0, 0)
displayNamesQuery.gh_handles[1] = initRowData.m_GamerHandle
println("GET_RACE_BEST_LAP_TIMES: Crew best Before= ",iComparisonBest)
IF iComparisonBest < 0
iComparisonBest = -iComparisonBest
ENDIF
println("GET_RACE_BEST_LAP_TIMES: Crew best AFTER= ",iComparisonBest)
println("GET_RACE_BEST_LAP_TIMES: Crew best-- moving to stage 5 got data -B")
iReadStage = 5
ENDIF
ELSE
iComparisonBest = -1
println("GET_RACE_BEST_LAP_TIMES: Crew best -- moving to stage 5 no data -C")
iReadStage = 5
ENDIF
LEADERBOARDS2_READ_GET_ROW_DATA_END( )
ELSE
iComparisonBest = -1
println("GET_RACE_BEST_LAP_TIMES: Crew best -- moving to stage 5 no data -D")
iReadStage = 5
ENDIF
END_LEADERBOARD_READ(iLoadStage,bSuccessful,lbReadData)
lbReadData = emptyData
ENDIF
BREAK
CASE 4
//getting information about local player
iNumOfFriends = NETWORK_GET_FRIEND_COUNT()
IF iNumOfFriends > 0
iRowIndex = raceStoredDataStruct.iFriendLoopCounter*iLoopRowMax
IF START_SC_LEADERBOARD_READ_FRIENDS_BY_ROW(iLoadStage,bSuccessful,
lbReadData,groupHandleData,
groupHandleData[0].m_NumGroups,TRUE,iRowIndex,iLoopRowMax)
#IF IS_DEBUG_BUILD
DEBUG_START_LEADERBOARD_PRINT_RESULTS("GET_RACE_BEST_LAP_TIMES: Friend best Getinng Friend Data",lbReadData)
#ENDIF
FILL_READ_INFO_STRUCT(readInfo,lbReadData)
IF bSuccessful
AND LEADERBOARDS2_READ_GET_ROW_DATA_START(readInfo)
IF readInfo.m_ReturnedRows > 0
iIndex = 0
//repeat through all row before player
println("readInfo.m_ReturnedRows: ", readInfo.m_ReturnedRows)
REPEAT readInfo.m_ReturnedRows iIndex
LEADERBOARDS2_READ_GET_ROW_DATA_INFO(iIndex, initRowData)
//IF readInfo.m_LocalGamerRowNumber != iIndex
IF initRowData.m_Rank > 0
IF raceStoredDataStruct.iBestLapTime = 0
OR raceStoredDataStruct.iBestLapTime < LEADERBOARDS2_READ_GET_ROW_DATA_INT(iIndex, 0)
compareRecordHolderName = initRowData.m_GamerName
displayNamesQuery.gh_handles[1] = initRowData.m_GamerHandle
raceStoredDataStruct.iBestLapTime = LEADERBOARDS2_READ_GET_ROW_DATA_INT(iIndex, 0)
iComparisonBest = LEADERBOARDS2_READ_GET_ROW_DATA_INT(0,0)
IF iComparisonBest< 0
iComparisonBest = -(iComparisonBest)
ENDIF
println("Setting current best lap for Checkspoint to ", raceStoredDataStruct.iBestLapTime)
ENDIF
ENDIF
//ELSE
// println("This is the local player's row ignoring")
//ENDIF
ENDREPEAT
CLEAR_ROW_DATA_INFO_STRUCT(initRowData)
LEADERBOARDS2_READ_GET_ROW_DATA_END( )
END_LEADERBOARD_READ(iLoadStage,bSuccessful,lbReadData)
raceStoredDataStruct.iFriendLoopCounter++
IF iNumOfFriends > raceStoredDataStruct.iFriendLoopCounter*iLoopRowMax
iReadStage = 4
println("GET_RACE_BEST_LAP_TIMES: Friend best friend data moving to ",raceStoredDataStruct.iFriendLoopCounter," loop")
ELSE
println("GET_RACE_BEST_LAP_TIMES: Friend best friend data finished looping returning true")
iReadStage = 5
ENDIF
ELSE
CLEAR_ROW_DATA_INFO_STRUCT(initRowData)
LEADERBOARDS2_READ_GET_ROW_DATA_END( )
END_LEADERBOARD_READ(iLoadStage,bSuccessful,lbReadData)
raceStoredDataStruct.iFriendLoopCounter++
IF iNumOfFriends > raceStoredDataStruct.iFriendLoopCounter*iLoopRowMax
iReadStage = 4
println("GET_RACE_BEST_LAP_TIMES: Friend best friend data no friend in first group of friends moving to ",raceStoredDataStruct.iFriendLoopCounter ," loop")
ELSE
iReadStage = 5
ENDIF
ENDIF
ELSE
println("GET_RACE_BEST_LAP_TIMES: Friend best friend data no friends data skiping to end stage 1 (no row data) ")
END_LEADERBOARD_READ(iLoadStage,bSuccessful,lbReadData)
iReadStage = 5
ENDIF
ENDIF
ELSE
println("GET_RACE_BEST_LAP_TIMES: Friend best friend data no friends data skiping to end stage 1 (friend count is 0)")
END_LEADERBOARD_READ(iLoadStage,bSuccessful,lbReadData)
iReadStage = 5
ENDIF
BREAK
CASE 5
IF GET_DISPLAY_NAMES_FOR_BEST_LAP_TIMES(displayNamesQuery)
IF NOT IS_STRING_NULL_OR_EMPTY(displayNamesQuery.tl63_names[0])
worldRecordHolderName = displayNamesQuery.tl63_names[0]
println("GET_RACE_BEST_LAP_TIMES: world record = ",worldRecordHolderName)
IF raceStoredDataStruct.iCheckPointType = RACE_SPLIT_COMPARISON_WORLD
compareRecordHolderName = displayNamesQuery.tl63_names[0]
println("GET_RACE_BEST_LAP_TIMES: compare record = ",compareRecordHolderName)
ELSE
IF NOT IS_STRING_NULL_OR_EMPTY(displayNamesQuery.tl63_names[1])
compareRecordHolderName = displayNamesQuery.tl63_names[1]
println("GET_RACE_BEST_LAP_TIMES: compare record = ",compareRecordHolderName)
ENDIF
ENDIF
ENDIF
iReadStage = 99
ENDIF
BREAK
CASE 99
RETURN TRUE
BREAK
ENDSWITCH
RETURN FALSE
ENDFUNC
PROC CLEANUP_RACE_BEST_LAP_TIMES(INT& iReadStage, INT& iLoadStage, BOOL& bResult, INT& iGlobalBest, INT& iPersonalBest,INT& iComparisonBest,Leaderboard2ReadData lbReadData)
iReadStage = 0
iGlobalBest = 0
iPersonalBest = 0
iComparisonBest = 0
IF iLoadStage != 0
println("Ending read in CLEANUP_RACE_BEST_LAP_TIMES in ", GET_THIS_SCRIPT_NAME() )
END_LEADERBOARD_READ(iLoadStage,bResult, lbReadData)
ENDIF
iLoadStage = 0
ENDPROC
//FUNC BOOL GET_RACE_CHECKPOINT_DATA(INT& iReadStage, INT& iLoadStage,BOOL& bSuccessful, INT iRaceType,INT iCheckpoints,INT &iCheckpointTimes[],RACE_CHECKPOINTS_LOAD_STRUCT &raceStoredDataStruct, INT &iComparisonTimeTotal, TEXT_LABEL_31& checkpointRecordHolderName)
//
// //Remove this and put in actual time
// UNUSED_PARAMETER(iComparisonTimeTotal)
//
// //println("GET_RACE_CHECKPOINT_DATA - Called this frame")
// //println("GET_RACE_CHECKPOINT_DATA -iRaceType = ",iRaceType)
// //println("GET_RACE_CHECKPOINT_DATA -iCheckpoints = ",iCheckpoints)
// //println("GET_RACE_CHECKPOINT_DATA -iComparisonTimeTotal = ",iComparisonTimeTotal)
// Leaderboard2ReadData lbReadData
// Leaderboard2ReadData emptyData
// LeaderboardRowData initRowData
// LeaderboardReadInfo readInfo
// INT i
//
// INT iLoopRowMax = 50
// INT iNumOfFriends
// INT iRowIndex
//
// GAMER_HANDLE gamerHandle
// NETWORK_CLAN_DESC clanDesc
//
// Leaderboard2GroupHandle groupHandleData[1]
//
// INT iIndex = 0
//
// TEXT_LABEL_31 createdGroupText
// createdGroupText = g_FMMC_STRUCT.tl31LoadedContentID
// IF iCheckpoints = 0
// ENDIF
// SWITCH iRaceType
// CASE ciRACE_SUB_TYPE_STANDARD
// CASE ciRACE_SUB_TYPE_GTA
// CASE ciRACE_SUB_TYPE_RALLY
// IF GlobalServerBD_Races.iRaceMode = ciRACE_SUB_TYPE_STANDARD
// lbReadData.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_FREEMODE_RACE_CHECKPOINTS)
// ENDIF
// IF GlobalServerBD_Races.iRaceMode = ciRACE_SUB_TYPE_GTA
// lbReadData.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_FREEMODE_GTA_RACE_CHECKPOINTS)
// ENDIF
// IF GlobalServerBD_Races.iRaceMode = ciRACE_SUB_TYPE_RALLY
// lbReadData.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_FREEMODE_RALLY_CHECKPOINTS)
// ENDIF
// lbReadData.m_Type = LEADERBOARD2_TYPE_GROUP_MEMBER
// lbReadData.m_GroupSelector.m_NumGroups = 1
// lbReadData.m_GroupSelector.m_Group[0].m_Category = "Mission"
// lbReadData.m_GroupSelector.m_Group[0].m_Id = createdGroupText
// BREAK
// DEFAULT
// IF iReadStage > 0
// END_LEADERBOARD_READ(iLoadStage,bSuccessful,lbReadData)
// ENDIF
// RETURN FALSE
// BREAK
// ENDSWITCH
//
// IF IS_STRING_NULL_OR_EMPTY(g_FMMC_STRUCT.tl31LoadedContentID)
// //println("GET_RACE_CHECKPOINT_DATA: exited as current file name is empty")
// IF iReadStage > 0
// END_LEADERBOARD_READ(iLoadStage,bSuccessful,lbReadData)
// ENDIF
// RETURN TRUE
// ENDIF
//
// gamerHandle = GET_GAMER_HANDLE_PLAYER(PLAYER_ID())
// IF raceStoredDataStruct.iCheckPointType = RACE_SPLIT_COMPARISON_CREW
// lbReadData.m_Type = LEADERBOARD2_TYPE_CLAN_MEMBER
// lbReadData.m_ClanId = raceStoredDataStruct.m_ClanId
// ENDIF
// IF IS_STRING_NULL(checkpointRecordHolderName)
// //compiler doesn't like it without this
// ENDIF
// IF NOT raceStoredDataStruct.bInitComplete
// IF raceStoredDataStruct.iCheckPointType = RACE_SPLIT_COMPARISON_CREW
//
// IF NETWORK_CLAN_SERVICE_IS_VALID()
// IF NETWORK_CLAN_PLAYER_IS_ACTIVE(gamerHandle)
// IF raceStoredDataStruct.m_ClanId = 0
// IF NETWORK_CLAN_PLAYER_GET_DESC(clanDesc, SIZE_OF(clanDesc), gamerHandle)
// //println("GET_RACE_CHECKPOINT_DATA got players active crew details. moving to stage 1 ")
// lbReadData.m_ClanId = clanDesc.Id
// raceStoredDataStruct.m_ClanId = clanDesc.Id
// ENDIF
// println("GET_RACE_CHECKPOINT_DATA waiting raceStoredDataStruct.m_ClanId = 0")
// RETURN FALSE
// ENDIF
// ELSE
// println("GET_RACE_CHECKPOINT_DATA exiting NETWORK_CLAN_PLAYER_IS_ACTIVE is false")
// RETURN TRUE
// ENDIF
// ELSE
// println("GET_RACE_CHECKPOINT_DATA exiting NETWORK_CLAN_SERVICE_IS_VALID is false")
// RETURN TRUE
// ENDIF
// ENDIF
// SWITCH raceStoredDataStruct.iCheckPointType
// CASE RACE_SPLIT_COMPARISON_CREW
// CASE RACE_SPLIT_COMPARISON_WORLD
// iReadStage = 1
// println("GET_RACE_CHECKPOINT_DATA: setting read stage = 1 Checkpoints type: ",raceStoredDataStruct.iCheckPointType)
// BREAK
// CASE RACE_SPLIT_COMPARISON_PERSONAL
// iReadStage = 2
// println("GET_RACE_CHECKPOINT_DATA: setting read stage = 4 Checkpoints type: ",raceStoredDataStruct.iCheckPointType)
// BREAK
// CASE RACE_SPLIT_COMPARISON_FRIEND
// iReadStage = 3
// println("GET_RACE_CHECKPOINT_DATA: setting read stage = 2 Checkpoints type: ",raceStoredDataStruct.iCheckPointType)
// BREAK
// ENDSWITCH
// raceStoredDataStruct.bInitComplete = TRUE
// ENDIF
// SWITCH iReadStage
// CASE 1
// IF START_SC_LEADERBOARD_READ_BY_RANK(iLoadStage,bSuccessful,lbReadData,1,1)
// #IF IS_DEBUG_BUILD
// println("GET_RACE_CHECKPOINT_DATA: LEADERBOARD ID = ", lbReadData.m_LeaderboardId)
// println("GET_RACE_CHECKPOINT_DATA: LEADERBOARD Category 1 = ",lbReadData.m_GroupSelector.m_Group[0].m_Category)
// println("GET_RACE_CHECKPOINT_DATA: LEADERBOARD groupHandle 1 = ",lbReadData.m_GroupSelector.m_Group[0].m_Id)
// println("GET_RACE_CHECKPOINT_DATA: iCheckpoints = ",iCheckPoints)
// //println("GET_RACE_CHECKPOINT_DATA: LEADERBOARD Category 2 = ",lbReadData.m_GroupSelector.m_Group[1].m_Category)
// //println("GET_RACE_CHECKPOINT_DATA: LEADERBOARD groupHandle 2 = ",lbReadData.m_GroupSelector.m_Group[1].m_Id)
// #ENDIF
// FILL_READ_INFO_STRUCT(readInfo,lbReadData)
// IF bSuccessful
// AND LEADERBOARDS2_READ_GET_ROW_DATA_START(readInfo)
// IF readInfo.m_ReturnedRows > 0
// LEADERBOARDS2_READ_GET_ROW_DATA_INFO(0, initRowData)
// //IF ARE_STRINGS_EQUAL(initRowData.m_GamerName, "")
// IF NOT IS_GAMER_HANDLE_VALID(initRowData.m_GamerHandle)
// println("GET_RACE_CHECKPOINT_DATA -- moving to stage 99 no data (name invalid) Checkpoint Type: ",raceStoredDataStruct.iCheckPointType )
// iReadStage = 99
// ELSE
// iComparisonTimeTotal = LEADERBOARDS2_READ_GET_ROW_DATA_INT(0,0)
// checkpointRecordHolderName = initRowData.m_GamerName
// IF iComparisonTimeTotal< 0
// iComparisonTimeTotal = -(iComparisonTimeTotal)
// ENDIF
// #IF IS_DEBUG_BUILD
// IF initRowData.m_NumColumnValues-1 != iCheckpoints
// println("GET_RACE_CHECKPOINT_DATA: initRowData.m_NumColumnValues != iCheckpoints")
// println("GET_RACE_CHECKPOINT_DATA: initRowData.m_NumColumnValues (including total time 0) = ",initRowData.m_NumColumnValues )
// println("GET_RACE_CHECKPOINT_DATA: iCheckpoints = ", iCheckpoints)
// SCRIPT_ASSERT("GET_RACE_CHECKPOINT_DATA: initRowData.m_NumColumnValues != iCheckpoints")
// ENDIF
// #ENDIF
// REPEAT initRowData.m_NumColumnValues-1 i
// iCheckpointTimes[i] = LEADERBOARDS2_READ_GET_ROW_DATA_INT(0, i+1)
// println("LEADERBOARDS2_READ_GET_ROW_DATA_INFO: Row: ", 0, " Column: ", i+1, " Time: ", iCheckpointTimes[i])
// ENDREPEAT
// println("GET_RACE_CHECKPOINT_DATA-- moving to stage 99 got best Checkpoint Type: ",raceStoredDataStruct.iCheckPointType )
// iReadStage = 99
// ENDIF
// println("Ending read in READ_BY_RANK in ", GET_THIS_SCRIPT_NAME() )
// ELSE
// println("GET_RACE_CHECKPOINT_DATA -- moving to stage 99 no data (no rows returned) Checkpoint Type: ",raceStoredDataStruct.iCheckPointType )
// iReadStage = 99
// ENDIF
// LEADERBOARDS2_READ_GET_ROW_DATA_END( )
// ELSE
// println("GET_RACE_CHECKPOINT_DATA -- moving to stage 99 no data (read failed) Checkpoint Type: ",raceStoredDataStruct.iCheckPointType )
// iReadStage = 99
// ENDIF
// END_LEADERBOARD_READ(iLoadStage,bSuccessful,lbReadData)
// lbReadData = emptyData
// ENDIF
// BREAK
//
// CASE 2
// IF START_SC_LEADERBOARD_READ_BY_HANDLE(iLoadStage,bSuccessful,lbReadData,gamerHandle)
// #IF IS_DEBUG_BUILD
// println("GET_RACE_CHECKPOINT_DATA: LEADERBOARD ID = ", lbReadData.m_LeaderboardId)
// println("GET_RACE_CHECKPOINT_DATA: LEADERBOARD Category 1 = ",lbReadData.m_GroupSelector.m_Group[0].m_Category)
// println("GET_RACE_CHECKPOINT_DATA: LEADERBOARD groupHandle 1 = ",lbReadData.m_GroupSelector.m_Group[0].m_Id)
// println("GET_RACE_CHECKPOINT_DATA: iCheckpoints = ",iCheckPoints)
// //println("GET_RACE_CHECKPOINT_DATA: LEADERBOARD Category 2 = ",lbReadData.m_GroupSelector.m_Group[1].m_Category)
// //println("GET_RACE_CHECKPOINT_DATA: LEADERBOARD groupHandle 2 = ",lbReadData.m_GroupSelector.m_Group[1].m_Id)
// #ENDIF
// FILL_READ_INFO_STRUCT(readInfo,lbReadData)
// IF bSuccessful
// AND LEADERBOARDS2_READ_GET_ROW_DATA_START(readInfo)
// IF readInfo.m_ReturnedRows > 0
// LEADERBOARDS2_READ_GET_ROW_DATA_INFO(0, initRowData)
// //IF ARE_STRINGS_EQUAL(initRowData.m_GamerName, "")
// IF NOT IS_GAMER_HANDLE_VALID(initRowData.m_GamerHandle)
// println("GET_RACE_CHECKPOINT_DATA -- moving to stage 99 no data (name invalid) Checkpoint Type: ",raceStoredDataStruct.iCheckPointType )
// iReadStage = 99
// ELSE
// checkpointRecordHolderName = initRowData.m_GamerName
// iComparisonTimeTotal = LEADERBOARDS2_READ_GET_ROW_DATA_INT(0,0)
// IF iComparisonTimeTotal< 0
// iComparisonTimeTotal = -(iComparisonTimeTotal)
// ENDIF
// #IF IS_DEBUG_BUILD
// IF initRowData.m_NumColumnValues-1 != iCheckpoints
// println("GET_RACE_CHECKPOINT_DATA: initRowData.m_NumColumnValues != iCheckpoints")
// println("GET_RACE_CHECKPOINT_DATA: initRowData.m_NumColumnValues (including total time 0) = ",initRowData.m_NumColumnValues )
// println("GET_RACE_CHECKPOINT_DATA: iCheckpoints = ", iCheckpoints)
// SCRIPT_ASSERT("GET_RACE_CHECKPOINT_DATA: initRowData.m_NumColumnValues != iCheckpoints")
// ENDIF
// #ENDIF
// REPEAT initRowData.m_NumColumnValues-1 i
// iCheckpointTimes[i] = LEADERBOARDS2_READ_GET_ROW_DATA_INT(0, i+1)
// println("LEADERBOARDS2_READ_GET_ROW_DATA_INFO: Row: ", 0, " Column: ", i+1, " Time: ", iCheckpointTimes[i])
//
// ENDREPEAT
// iReadStage = 99
// println("GET_RACE_CHECKPOINT_DATA-- moving to stage 99 got best Checkpoint Type: ",raceStoredDataStruct.iCheckPointType )
// ENDIF
// println("Ending read in READ_BY_RANK in ", GET_THIS_SCRIPT_NAME() )
// ELSE
// println("GET_RACE_CHECKPOINT_DATA -- moving to stage 99 no data (no rows returned) Checkpoint Type: ",raceStoredDataStruct.iCheckPointType )
// iReadStage = 99
// ENDIF
// LEADERBOARDS2_READ_GET_ROW_DATA_END( )
// ELSE
// println("GET_RACE_CHECKPOINT_DATA -- moving to stage 99 no data (read failed) Checkpoint Type: ",raceStoredDataStruct.iCheckPointType )
// iReadStage = 99
// ENDIF
// END_LEADERBOARD_READ(iLoadStage,bSuccessful,lbReadData)
// lbReadData = emptyData
// ENDIF
// BREAK
//
// CASE 3
// //getting information about local player
// iNumOfFriends = NETWORK_GET_FRIEND_COUNT()
// IF iNumOfFriends > 0
// iRowIndex = raceStoredDataStruct.iFriendLoopCounter*iLoopRowMax
// IF START_SC_LEADERBOARD_READ_FRIENDS_BY_ROW(iLoadStage,bSuccessful,
// lbReadData,groupHandleData,
// groupHandleData[0].m_NumGroups,TRUE,iRowIndex,iLoopRowMax)
// #IF IS_DEBUG_BUILD
// DEBUG_START_LEADERBOARD_PRINT_RESULTS("GET_RACE_CHECKPOINT_DATA: Getinng Friend Data",lbReadData)
// #ENDIF
// FILL_READ_INFO_STRUCT(readInfo,lbReadData)
// println("GET_RACE_CHECKPOINT_DATA: iCheckpoints = ",iCheckPoints)
// IF bSuccessful
// AND LEADERBOARDS2_READ_GET_ROW_DATA_START(readInfo)
// IF readInfo.m_ReturnedRows > 0
// iIndex = 0
// //repeat through all row before player
// println("readInfo.m_ReturnedRows: ", readInfo.m_ReturnedRows)
// REPEAT readInfo.m_ReturnedRows iIndex
// LEADERBOARDS2_READ_GET_ROW_DATA_INFO(iIndex, initRowData)
// //IF readInfo.m_LocalGamerRowNumber != iIndex
// IF initRowData.m_Rank > 0
// checkpointRecordHolderName = initRowData.m_GamerName
// IF raceStoredDataStruct.iBestLapTime = 0
// OR raceStoredDataStruct.iBestLapTime < LEADERBOARDS2_READ_GET_ROW_DATA_INT(iIndex, 0)
// raceStoredDataStruct.iBestLapTime = LEADERBOARDS2_READ_GET_ROW_DATA_INT(iIndex, 0)
// iComparisonTimeTotal = LEADERBOARDS2_READ_GET_ROW_DATA_INT(0,0)
// IF iComparisonTimeTotal< 0
// iComparisonTimeTotal = -(iComparisonTimeTotal)
// ENDIF
// println("Setting current best lap for Checkspoint to ", raceStoredDataStruct.iBestLapTime)
// #IF IS_DEBUG_BUILD
// IF initRowData.m_NumColumnValues-1 != iCheckpoints
// println("GET_RACE_CHECKPOINT_DATA: initRowData.m_NumColumnValues != iCheckpoints")
// println("GET_RACE_CHECKPOINT_DATA: initRowData.m_NumColumnValues (including total time 0) = ",initRowData.m_NumColumnValues )
// println("GET_RACE_CHECKPOINT_DATA: iCheckpoints = ", iCheckpoints)
// SCRIPT_ASSERT("GET_RACE_CHECKPOINT_DATA: initRowData.m_NumColumnValues != iCheckpoints")
// ENDIF
// #ENDIF
// REPEAT initRowData.m_NumColumnValues-1 i
// iCheckpointTimes[i] = LEADERBOARDS2_READ_GET_ROW_DATA_INT(0, i+1)
// println("LEADERBOARDS2_READ_GET_ROW_DATA_INFO: Row: ", 0, " Column: ", i+1, " Time: ", iCheckpointTimes[i])
// println("GET_RACE_CHECKPOINT_DATA-- friend data filling best lap time: ",raceStoredDataStruct.iCheckPointType )
// ENDREPEAT
// ENDIF
// ENDIF
// //ELSE
// // println("This is the local player's row ignoring")
// //ENDIF
// ENDREPEAT
//
// CLEAR_ROW_DATA_INFO_STRUCT(initRowData)
// LEADERBOARDS2_READ_GET_ROW_DATA_END( )
// END_LEADERBOARD_READ(iLoadStage,bSuccessful,lbReadData)
// raceStoredDataStruct.iFriendLoopCounter++
// IF iNumOfFriends > raceStoredDataStruct.iFriendLoopCounter*iLoopRowMax
// iReadStage = 3
// println("GET_RACE_CHECKPOINT_DATA friend data moving to ",raceStoredDataStruct.iFriendLoopCounter," loop")
// RETURN FALSE
// ELSE
// println("GET_RACE_CHECKPOINT_DATA friend data finished looping returning true")
// iReadStage = 99
// RETURN FALSE
// ENDIF
// ELSE
// CLEAR_ROW_DATA_INFO_STRUCT(initRowData)
// LEADERBOARDS2_READ_GET_ROW_DATA_END( )
// END_LEADERBOARD_READ(iLoadStage,bSuccessful,lbReadData)
// raceStoredDataStruct.iFriendLoopCounter++
// IF iNumOfFriends > raceStoredDataStruct.iFriendLoopCounter*iLoopRowMax
// iReadStage = 3
// println("GET_RACE_CHECKPOINT_DATA friend data no friend in first group of friends moving to ",raceStoredDataStruct.iFriendLoopCounter ," loop")
// ENDIF
// RETURN TRUE
// ENDIF
// ELSE
// println("GET_RACE_CHECKPOINT_DATA friend data no friends data skiping to end stage 1 (no row data) ")
// END_LEADERBOARD_READ(iLoadStage,bSuccessful,lbReadData)
// iReadStage = 99
// RETURN TRUE
// ENDIF
// ENDIF
// ELSE
// println("GET_RACE_CHECKPOINT_DATA friend data no friends data skiping to end stage 1 (friend count is 0)")
// END_LEADERBOARD_READ(iLoadStage,bSuccessful,lbReadData)
// iReadStage = 99
// RETURN TRUE
// ENDIF
// BREAK
//
// CASE 99
// RETURN TRUE
// BREAK
// ENDSWITCH
// RETURN FALSE
//ENDFUNC
//
//PROC CLEANUP_GET_RACE_CHECKPOINT_DATA(INT& iReadStage, INT& iLoadStage,BOOL& bSuccessful,Leaderboard2ReadData lbReadData)
// iReadStage = 0
// IF iLoadStage != 0
// println("Ending read in CLEANUP_GET_RACE_CHECKPOINT_DATA in ", GET_THIS_SCRIPT_NAME() )
// END_LEADERBOARD_READ(iLoadStage,bSuccessful,lbReadData)
// ENDIF
// iLoadStage = 0
//ENDPROC
FUNC BOOL GET_FREEMODE_DATA_LEADERBOARD_VALUES()
LeaderboardReadInfo readInfo
LeaderboardRowData initRowData
GAMER_HANDLE gamerHandle
INT i
SWITCH freemodeDataLB.iLoadStage
//get TOTAL XP value on leaderboard
CASE 0
freemodeDataLB.iTotalLB_XP = 0
freemodeDataLB.iTotalLB_Time = 0
REPEAT MAX_STORED_CREWS i
freemodeDataLB.iCrewLB_XP[i] = 0
freemodeDataLB.iCrewLB_Time[i] = 0
ENDREPEAT
freemodeDataLB.iLoadStage = 1
BREAK
CASE 1
gamerHandle = GET_GAMER_HANDLE_PLAYER(PLAYER_ID())
freemodeDataLB.ReadDataStruct.m_LeaderboardID = ENUM_TO_INT(LEADERBOARD_FREEMODE_PLAYER_XP)
freemodeDataLB.ReadDataStruct.m_type = LEADERBOARD2_TYPE_PLAYER
readInfo.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_FREEMODE_PLAYER_XP)
readInfo.m_LeaderboardType = ENUM_TO_INT(LEADERBOARD2_TYPE_PLAYER)
IF START_SC_LEADERBOARD_READ_BY_HANDLE(freemodeDataLB.iTempLoadStage,freemodeDataLB.bTempReadResult ,freemodeDataLB.ReadDataStruct,gamerHandle)
#IF IS_DEBUG_BUILD
DEBUG_START_LEADERBOARD_PRINT_RESULTS("GET_FREEMODE_DATA_LEADERBOARD_VALUES (crew) ",freemodeDataLB.ReadDataStruct)
#ENDIF
FILL_READ_INFO_STRUCT(readInfo,freemodeDataLB.ReadDataStruct)
IF freemodeDataLB.bTempReadResult
AND LEADERBOARDS2_READ_GET_ROW_DATA_START(readInfo)
IF readInfo.m_ReturnedRows > 0
LEADERBOARDS2_READ_GET_ROW_DATA_INFO(0, initRowData)
//XP
//println("LEADERBOARDS2_READ_GET_ROW_DATA_INFO: Row: ", 0, " Column: ", FREEMODE_DATA_LB_COLUMN_XP)
freemodeDataLB.iTotalLB_XP = LEADERBOARDS2_READ_GET_ROW_DATA_INT(0,FREEMODE_DATA_LB_COLUMN_XP)
println("GET_FREEMODE_DATA_LEADERBOARD_VALUES-- total XP = ",freemodeDataLB.iTotalLB_XP," moving to stage 2 ")
IF freemodeDataLB.iTotalLB_XP < 0
freemodeDataLB.iTotalLB_XP = 0
ENDIF
//TIME
//println("LEADERBOARDS2_READ_GET_ROW_DATA_INFO: Row: ", 0, " Column: ", FREEMODE_DATA_LB_COLUMN_TIME)
freemodeDataLB.iTotalLB_Time = LEADERBOARDS2_READ_GET_ROW_DATA_INT(0,FREEMODE_DATA_LB_COLUMN_TIME)
println("GET_FREEMODE_DATA_LEADERBOARD_VALUES-- total TIME = ",freemodeDataLB.iTotalLB_Time," moving to stage 3 ")
IF freemodeDataLB.iTotalLB_Time < 0
freemodeDataLB.iTotalLB_Time = 0
ENDIF
ELSE
println("GET_FREEMODE_DATA_LEADERBOARD_VALUES-- no data available for local player moving to stage 2 (no rows returned)")
ENDIF
ELSE
println("GET_FREEMODE_DATA_LEADERBOARD_VALUES-- no data available for local player moving to stage 2 (read failed)")
ENDIF
freemodeDataLB.iLoadStage = 2
CLEAR_ROW_DATA_INFO_STRUCT(initRowData)
IF freemodeDataLB.bTempReadResult
LEADERBOARDS2_READ_GET_ROW_DATA_END( )
ENDIF
END_LEADERBOARD_READ(freemodeDataLB.iTempLoadStage,freemodeDataLB.bTempReadResult,freemodeDataLB.ReadDataStruct)
ENDIF
BREAK
CASE 2
IF NETWORK_CLAN_SERVICE_IS_VALID()
freemodeDataLB.ReadDataStruct.m_ClanId = GET_CREW_ID_FROM_SLOT(freemodeDataLB.iCrewSlotForLoop)
IF freemodeDataLB.ReadDataStruct.m_ClanId != 0
AND freemodeDataLB.ReadDataStruct.m_ClanId != -1
println("GET_FREEMODE_DATA_LEADERBOARD_VALUES got crew ID for slot: ",freemodeDataLB.iCrewSlotForLoop," Value of: ",freemodeDataLB.ReadDataStruct.m_ClanId )
freemodeDataLB.iLoadStage = 3
ELSE
println("GET_FREEMODE_DATA_LEADERBOARD_VALUES crew ID for slot: ",freemodeDataLB.iCrewSlotForLoop, " is 0 or -1 looping to next crew ID")
freemodeDataLB.iCrewSlotForLoop++
IF freemodeDataLB.iCrewSlotForLoop >= MAX_STORED_CREWS
println("GET_FREEMODE_DATA_LEADERBOARD_VALUES freemodeDataLB.iCrewSlotForLoop >= MAX_STORED_CREWS moving to stage 4")
freemodeDataLB.iLoadStage = 4
ENDIF
ENDIF
ELSE
println("GET_FREEMODE_DATA_LEADERBOARD_VALUES exiting NETWORK_CLAN_SERVICE_IS_VALID is false")
RETURN TRUE
ENDIF
BREAK
//get CREW XP value on leaderboard
CASE 3
gamerHandle = GET_GAMER_HANDLE_PLAYER(PLAYER_ID())
freemodeDataLB.ReadDataStruct.m_LeaderboardID = ENUM_TO_INT(LEADERBOARD_FREEMODE_PLAYER_XP)
freemodeDataLB.ReadDataStruct.m_type = LEADERBOARD2_TYPE_CLAN_MEMBER
readInfo.m_LeaderboardId = freemodeDataLB.ReadDataStruct.m_LeaderboardId
readInfo.m_LeaderboardType = ENUM_TO_INT(LEADERBOARD2_TYPE_CLAN_MEMBER)
IF START_SC_LEADERBOARD_READ_BY_HANDLE(freemodeDataLB.iTempLoadStage,freemodeDataLB.bTempReadResult ,freemodeDataLB.ReadDataStruct,gamerHandle)
#IF IS_DEBUG_BUILD
DEBUG_START_LEADERBOARD_PRINT_RESULTS("GET_FREEMODE_DATA_LEADERBOARD_VALUES (crew) ",freemodeDataLB.ReadDataStruct)
#ENDIF
FILL_READ_INFO_STRUCT(readInfo,freemodeDataLB.ReadDataStruct)
IF freemodeDataLB.bTempReadResult
AND LEADERBOARDS2_READ_GET_ROW_DATA_START(readInfo)
IF readInfo.m_ReturnedRows > 0
LEADERBOARDS2_READ_GET_ROW_DATA_INFO(0, initRowData)
//XP
//println("LEADERBOARDS2_READ_GET_ROW_DATA_INFO: Row: ", 0, " Column: ", FREEMODE_DATA_LB_COLUMN_XP)
freemodeDataLB.iCrewLB_XP[freemodeDataLB.iCrewSlotForLoop] = LEADERBOARDS2_READ_GET_ROW_DATA_INT(0,FREEMODE_DATA_LB_COLUMN_XP)
println("GET_FREEMODE_DATA_LEADERBOARD_VALUES-- freemodeDataLB.iCrewLB_XP[",freemodeDataLB.iCrewSlotForLoop,"] = ",freemodeDataLB.iCrewLB_XP[freemodeDataLB.iCrewSlotForLoop])
IF freemodeDataLB.iCrewLB_XP[freemodeDataLB.iCrewSlotForLoop] < 0
freemodeDataLB.iCrewLB_XP[freemodeDataLB.iCrewSlotForLoop] = 0
ENDIF
//TIME
//println("LEADERBOARDS2_READ_GET_ROW_DATA_INFO: Row: ", 0, " Column: ", FREEMODE_DATA_LB_COLUMN_TIME)
freemodeDataLB.iCrewLB_Time[freemodeDataLB.iCrewSlotForLoop] = LEADERBOARDS2_READ_GET_ROW_DATA_INT(0,FREEMODE_DATA_LB_COLUMN_TIME)
println("GET_FREEMODE_DATA_LEADERBOARD_VALUES-- freemodeDataLB.iCrewLB_Time[",freemodeDataLB.iCrewSlotForLoop,"] = ",freemodeDataLB.iCrewLB_Time[freemodeDataLB.iCrewSlotForLoop])
IF freemodeDataLB.iCrewLB_Time[freemodeDataLB.iCrewSlotForLoop] < 0
freemodeDataLB.iCrewLB_Time[freemodeDataLB.iCrewSlotForLoop] = 0
ENDIF
ELSE
println("GET_FREEMODE_DATA_LEADERBOARD_VALUES-- no data available for local player moving to stage 2 (no rows returned)")
ENDIF
ELSE
println("GET_FREEMODE_DATA_LEADERBOARD_VALUES-- no data available for local player moving to stage 2 (read failed)")
ENDIF
freemodeDataLB.iLoadStage = 2
CLEAR_ROW_DATA_INFO_STRUCT(initRowData)
IF freemodeDataLB.bTempReadResult
LEADERBOARDS2_READ_GET_ROW_DATA_END( )
ENDIF
END_LEADERBOARD_READ(freemodeDataLB.iTempLoadStage,freemodeDataLB.bTempReadResult,freemodeDataLB.ReadDataStruct)
freemodeDataLB.iCrewSlotForLoop++
IF freemodeDataLB.iCrewSlotForLoop >= MAX_STORED_CREWS
println("GET_FREEMODE_DATA_LEADERBOARD_VALUES freemodeDataLB.iCrewSlotForLoop >= MAX_STORED_CREWS moving to stage 4")
freemodeDataLB.iLoadStage = 4
ENDIF
ENDIF
BREAK
CASE 4
RETURN TRUE
BREAK
ENDSWITCH
RETURN FALSE
ENDFUNC
PROC WRITE_FREEMODE_DATA_LEADERBOARD_MAINTAINENCE_UPDATE()
TEXT_LABEL_31 categoryNames[1]
TEXT_LABEL_23 uniqueIdentifiers[1]
INT i
REPEAT MAX_STORED_CREWS i
IF freemodeDataLB.iCrewLB_Time[i] != 0
OR freemodeDataLB.iCrewLB_XP[i] > 0
INT iCrewID = GET_CREW_ID_FROM_SLOT(i)
IF iCrewID != 0
AND iCrewID != -1
IF INIT_LEADERBOARD_WRITE(LEADERBOARD_FREEMODE_PLAYER_XP,uniqueIdentifiers,categoryNames,0,iCrewID)
// Write XP (score)
println("WRITE_FREEMODE_DATA_LEADERBOARD_MAINTAINENCE_UPDATE: writing UPDATE crew XP= ", freemodeDataLB.iCrewLB_XP[i],"time = ",freemodeDataLB.iCrewLB_Time[i])
LEADERBOARDS_WRITE_ADD_COLUMN(LB_INPUT_COL_SCORE,freemodeDataLB.iCrewLB_XP[i],0)
// Write time
LEADERBOARDS_WRITE_ADD_COLUMN(LB_INPUT_COL_TOTAL_TIME, freemodeDataLB.iCrewLB_Time[i],0)
// Write session
LEADERBOARDS_WRITE_ADD_COLUMN(LB_INPUT_COL_NUM_MATCHES, 0,0)
ENDIF
ENDIF
ENDIF
ENDREPEAT
IF freemodeDataLB.iTotalLB_XP > 0
OR freemodeDataLB.iTotalLB_Time != 0
IF INIT_LEADERBOARD_WRITE(LEADERBOARD_FREEMODE_PLAYER_XP,uniqueIdentifiers,categoryNames,0,0)
// Write XP (score)
LEADERBOARDS_WRITE_ADD_COLUMN(LB_INPUT_COL_SCORE,freemodeDataLB.iTotalLB_XP,0)
// Write time
println("WRITE_FREEMODE_DATA_LEADERBOARD_MAINTAINENCE_UPDATE: writing UPDATE TOTAL XP = ",freemodeDataLB.iTotalLB_XP," TIME = ",freemodeDataLB.iTotalLB_Time)
LEADERBOARDS_WRITE_ADD_COLUMN(LB_INPUT_COL_TOTAL_TIME, freemodeDataLB.iTotalLB_Time,0)
// Write session
LEADERBOARDS_WRITE_ADD_COLUMN(LB_INPUT_COL_NUM_MATCHES, 0,0)
ENDIF
ENDIF
ENDPROC
PROC WRITE_TO_FREEMODE_DATA_LEADERBOARD()
TEXT_LABEL_31 categoryNames[1]
TEXT_LABEL_23 uniqueIdentifiers[1]
INT iXPdifference
INT iTimeDifference
INT iCurXP = GET_MP_INT_PLAYER_STAT(MPPLY_GLOBALXP)
INT iCurTime = GET_TOTAL_NUMBER_OF_MINUTES_FOR_FREEMODE_PLAY_TIME()
//1199053
//Freemode XP
iXPdifference = iCurXP - freemodeDataLB.lastWrite.iXpLast
iTimeDifference = iCurTime - freemodeDataLB.lastWrite.iTimeLAst
//PLAYER
IF iXPdifference > 0
IF INIT_LEADERBOARD_WRITE(LEADERBOARD_FREEMODE_PLAYER_XP,uniqueIdentifiers,categoryNames,0)
// Write XP (score)
println("WRITE_TO_GLOBAL_XP_LEADERBOARD: stat = ", iCurXP," iXPlast = ",freemodeDataLB.lastWrite.iXpLast," difference = ", iXPdifference)
LEADERBOARDS_WRITE_ADD_COLUMN(LB_INPUT_COL_SCORE,iXPdifference,0)
// Write time
println("WRITE_TO_GLOBAL_XP_LEADERBOARD: stat = ", iCurTime," iTimeLAst = ",freemodeDataLB.lastWrite.iTimeLAst," difference = ", iTimeDifference)
LEADERBOARDS_WRITE_ADD_COLUMN(LB_INPUT_COL_TOTAL_TIME, iTimeDifference,0)
// Write session
LEADERBOARDS_WRITE_ADD_COLUMN(LB_INPUT_COL_NUM_MATCHES, 0,0)
freemodeDataLB.lastWrite.iXpLast = iCurXP
freemodeDataLB.lastWrite.iTimeLAst = iCurTime
ENDIF
// ELSE
// freemodeDataLB.lastWrite.iXpLast = iCurXP
// freemodeDataLB.lastWrite.iTimeLAst = iCurTime
ENDIF
ENDPROC
//Stick validation of the local data versus board here.
FUNC BOOL GLOBAL_XP_IS_LOCAL_VALUE_VALID(INT iLocal_Value, INT iLB_Value)
IF ABSI(iLocal_Value - iLB_Value) > 0
RETURN TRUE
ENDIF
RETURN FALSE
ENDFUNC
FUNC INT CREW_FREEMODE_DATA_LB_GLOBAL_VALUE_FOR_SLOT(INT iSlot)
SWITCH iSlot
CASE 0
RETURN g_MPPLY_CREW_LOCAL_XP_0
BREAK
CASE 1
RETURN g_MPPLY_CREW_LOCAL_XP_1
BREAK
CASE 2
RETURN g_MPPLY_CREW_LOCAL_XP_2
BREAK
CASE 3
RETURN g_MPPLY_CREW_LOCAL_XP_3
BREAK
CASE 4
RETURN g_MPPLY_CREW_LOCAL_XP_4
BREAK
ENDSWITCH
RETURN g_MPPLY_CREW_LOCAL_XP_0
ENDFUNC
FUNC MPPLY_INT_STATS CREW_FREEMODE_DATA_LB_STAT_ENUM_FOR_SLOT(INT iSlot, BOOL bXP)
SWITCH iSlot
CASE 0
IF bXP
RETURN MPPLY_CREW_LOCAL_XP_0
ELSE
RETURN MPPLY_CREW_LOCAL_TIME_0
ENDIF
BREAK
CASE 1
IF bXP
RETURN MPPLY_CREW_LOCAL_XP_1
ELSE
RETURN MPPLY_CREW_LOCAL_TIME_1
ENDIF
BREAK
CASE 2
IF bXP
RETURN MPPLY_CREW_LOCAL_XP_2
ELSE
RETURN MPPLY_CREW_LOCAL_TIME_2
ENDIF
BREAK
CASE 3
IF bXP
RETURN MPPLY_CREW_LOCAL_XP_3
ELSE
RETURN MPPLY_CREW_LOCAL_TIME_3
ENDIF
BREAK
CASE 4
IF bXP
RETURN MPPLY_CREW_LOCAL_XP_4
ELSE
RETURN MPPLY_CREW_LOCAL_TIME_4
ENDIF
BREAK
ENDSWITCH
RETURN MPPLY_CREW_LOCAL_XP_0
ENDFUNC
/// PURPOSE:
/// Initialises crew stats slots
PROC INITIALISE_PLAYERS_CREW_STAT_SLOTS()
GAMER_HANDLE playersgamerhandle= GET_GAMER_HANDLE_PLAYER(PLAYER_ID())
GET_PLAYER_CLAN_ID(playersgamerhandle)
NETWORK_CLAN_DESC PlayerClan
INT iLoop = NETWORK_CLAN_GET_LOCAL_MEMBERSHIPS_COUNT()
INT i
MPPLY_INT_STATS playerstat
NET_PRINT("INITIALISE_PLAYERS_CREW_STAT_SLOTS: ")
IF iLoop > 0
REPEAT iLoop i
NETWORK_CLAN_GET_MEMBERSHIP_DESC(PlayerClan, i)
IF IS_PLAYER_ALREADY_IN_THIS_CLAN(PlayerClan.Id)
IF iLoop = 0
playerstat = MPPLY_CREW_0_ID
SET_HEAVILY_ACCESSED_MP_INT_PLAYER_STAT(playerstat, PlayerClan.Id)
//NET_PRINT("SLOT 0 = : ")
//NET_PRINT_INT(GET_MP_INT_PLAYER_STAT(playerstat))
ELIF iLoop = 1
playerstat = MPPLY_CREW_1_ID
SET_HEAVILY_ACCESSED_MP_INT_PLAYER_STAT(playerstat, PlayerClan.Id)
// NET_PRINT("SLOT 1 = : ")
//NET_PRINT_INT(GET_MP_INT_PLAYER_STAT(playerstat))
ELIF iLoop = 2
playerstat = MPPLY_CREW_2_ID
SET_HEAVILY_ACCESSED_MP_INT_PLAYER_STAT(playerstat, PlayerClan.Id)
// NET_PRINT("SLOT 2 = : ")
//NET_PRINT_INT(GET_MP_INT_PLAYER_STAT(playerstat))
ELIF iLoop = 3
playerstat = MPPLY_CREW_3_ID
SET_HEAVILY_ACCESSED_MP_INT_PLAYER_STAT(playerstat, PlayerClan.Id)
// NET_PRINT("SLOT 3 = : ")
//NET_PRINT_INT(GET_MP_INT_PLAYER_STAT(playerstat))
ELIF iLoop = 4
playerstat = MPPLY_CREW_4_ID
SET_HEAVILY_ACCESSED_MP_INT_PLAYER_STAT(playerstat, PlayerClan.Id)
// NET_PRINT("SLOT 4 = : ")
//NET_PRINT_INT(GET_MP_INT_PLAYER_STAT(playerstat))
ELSE
//NET_PRINT("iloop is out of range ")
ENDIF
ELSE
//NET_PRINT("IS_PLAYER_ALREADY_IN_THIS_CLAN = FALSE ")
ENDIF
ENDREPEAT
ENDIF
ENDPROC
PROC REWARD_PLAYER_HAS_LINKED_ACCOUNT_TO_SOCIAL_CLUB()
IF NOT GET_MP_BOOL_PLAYER_STAT(MPPLY_XP_REWARD_PLAYER_IN_CREW)
GAMER_HANDLE player_handle
player_handle = GET_GAMER_HANDLE_PLAYER(PLAYER_ID())
IF NETWORK_CLAN_SERVICE_IS_VALID()
IF NETWORK_CLAN_PLAYER_IS_ACTIVE(player_handle)
SET_MP_BOOL_PLAYER_STAT(MPPLY_XP_REWARD_PLAYER_IN_CREW,TRUE)
GIVE_LOCAL_PLAYER_XP(eXPTYPE_STANDARD, "REWLINKCRE", XPTYPE_SOCIALCLUB, XPCATEGORY_SOCIALCLUB_JOINED_CREW, 2000, 1)
NET_PRINT("\n REWARD_PLAYER_HAS_LINKED_ACCOUNT_TO_SOCIAL_CLUB Player joined a crew REWARD: 2000\n ")
ENDIF
ENDIF
ENDIF
ENDPROC
FUNC BOOL SHOULD_STATS_BE_MAINTAINED()
//IF GET_MILLISECONDS_IN_DAYS(ABSI(GET_CLOUD_TIME_AS_INT() - g_savedMPGlobalsNew.g_savedMPGlobals[GET_SAVE_GAME_ARRAY_SLOT()].MpSavedGeneral.iLastFreemodeDataLBMaintenance)) >= 1
IF GET_MILLISECONDS_IN_DAYS(ABSI(GET_CLOUD_TIME_AS_INT() - GET_MP_INT_CHARACTER_STAT(MP_STAT_MAINTAIN_XP_WITH_LEADB))) >= g_sMPTunables.iFREEMODE_XP_MAINTAIN_TIME_IN_DAYS
RETURN TRUE
ENDIF
RETURN FALSE
ENDFUNC
PROC SET_FREEMODE_DATA_LB_STAGE(INT iStage)
#IF IS_DEBUG_BUILD
SWITCH iStage
CASE FREEMODE_DATA_LB_MAINTAIN_STAGE_INIT
println("SET_FREEMODE_DATA_LB_STAGE- FREEMODE_DATA_LB_MAINTAIN_STAGE_INIT")
BREAK
CASE FREEMODE_DATA_LB_MAINTAIN_STAGE_UPDATE_WRITE
println("SET_FREEMODE_DATA_LB_STAGE- FREEMODE_DATA_LB_MAINTAIN_STAGE_UPDATE_WRITEE")
BREAK
CASE FREEMODE_DATA_LB_MAINTAIN_STAGE_CHECKS
println("SET_FREEMODE_DATA_LB_STAGE- FREEMODE_DATA_LB_MAINTAIN_STAGE_CHECKS")
BREAK
CASE FREEMODE_DATA_LB_MAINTAIN_STAGE_WRITE
println("SET_FREEMODE_DATA_LB_STAGE- FREEMODE_DATA_LB_MAINTAIN_STAGE_WRITE")
BREAK
ENDSWITCH
#ENDIF
freemodeDataLB.iMaintainStage = iStage
ENDPROC
PROC INIT_WRITE_VALUES()
freemodeDataLB.lastWrite.iXpLast = GET_MP_INT_PLAYER_STAT(MPPLY_GLOBALXP)
freemodeDataLB.lastWrite.iTimeLast = GET_TOTAL_NUMBER_OF_MINUTES_FOR_FREEMODE_PLAY_TIME()
println("INIT_WRITE_VALUES: iXpLast = ",freemodeDataLB.lastWrite.iXpLast," iTimeLast = ",freemodeDataLB.lastWrite.iTimeLast)
ENDPROC
/// PURPOSE:
/// Used in freemode to maintain read/writes to XP board
/// PARAMS:
/// freemodeDataLB - control/data struct
PROC MAINTAIN_FREEMODE_DATA_LEADERBOARD_READ_WRITE()
INT i
INT iCurrentStatValue
BOOl bUpdatedStats
BOOL bUpdateLB
#IF IS_DEBUG_BUILD
STRING state
#ENDIF
IF IS_NET_PLAYER_OK(PLAYER_ID())
IF NOT freemodeDataLB.bFilledCrewSlots
GAMER_HANDLE gamerHandle = GET_GAMER_HANDLE_PLAYER(PLAYER_ID())
INT iCurrentCrew = GET_PLAYER_CLAN_ID(gamerHandle)
INT iCurrentCrewSlot = GET_CURRENT_CREW_SLOT_FROM_ID(iCurrentCrew)
IF iCurrentCrewSlot = -1 // will have to assign this. Talk to Brenda, Conor
IF NETWORK_CLAN_SERVICE_IS_VALID()
IF NETWORK_CLAN_PLAYER_IS_ACTIVE(gamerHandle)
IF iCurrentCrew != -1
SET_CREW_ID_IN_VALID_CREW_STAT(iCurrentCrew)
REWARD_PLAYER_HAS_LINKED_ACCOUNT_TO_SOCIAL_CLUB()
freemodeDataLB.bFilledCrewSlots = TRUE
ENDIF
ENDIF
ELSE
EXIT
ENDIF
ELSE
freemodeDataLB.bFilledCrewSlots = TRUE
ENDIF
ENDIF
SWITCH freemodeDataLB.iMaintainStage
CASE FREEMODE_DATA_LB_MAINTAIN_STAGE_INIT
//println("---FREEMODE_DATA_LB_MAINTAIN_STAGE_INIT--- running.")
IF NOT SHOULD_STATS_BE_MAINTAINED()
INIT_WRITE_VALUES()
println("---FREEMODE_DATA_LB_MAINTAIN_STAGE_INIT--- NOT SHOULD_STATS_BE_MAINTAINED()")
SET_FREEMODE_DATA_LB_STAGE(FREEMODE_DATA_LB_MAINTAIN_STAGE_CHECKS)
EXIT
ENDIF
IF NOT NETWORK_CLAN_SERVICE_IS_VALID()
//println("---FREEMODE_DATA_LB_MAINTAIN_STAGE_INIT--- clan service not valid")
EXIT
ENDIF
IF NOT GET_FREEMODE_DATA_LEADERBOARD_VALUES()
//println("---FREEMODE_DATA_LB_MAINTAIN_STAGE_INIT--- waiting for GET_FREEMODE_DATA_LEADERBOARD_VALUES()")
EXIT
ENDIF
freemodeDataLB.iUpdateTotalLB_XP = 0
freemodeDataLB.iUpdateTotalLB_Time = 0
REPEAT MAX_STORED_CREWS i
freemodeDataLB.iUpdateCrewLB_XP[i] = 0
freemodeDataLB.iUpdateCrewLB_Time[i] = 0
ENDREPEAT
iCurrentStatValue = GET_MP_INT_PLAYER_STAT(MPPLY_GLOBALXP)
//IF LB TOTAL = STAT TOTAL
IF freemodeDataLB.iTotalLB_XP = iCurrentStatValue
#IF IS_DEBUG_BUILD
state = "total XP Value on LB matches"
println("CDM---FREEMODE DATA LB--- ",state)
#ENDIF
//IF LB TOTAL > STAT TOTAL
ELIF freemodeDataLB.iTotalLB_XP > iCurrentStatValue
//UPDATE STAT
SET_MP_INT_PLAYER_STAT(MPPLY_GLOBALXP,freemodeDataLB.iTotalLB_XP)
#IF IS_DEBUG_BUILD
state = "total XP Value on LB is greater"
println("CDM---FREEMODE DATA LB--- ",state,"updating total STAT to = ", freemodeDataLB.iTotalLB_XP)
#ENDIF
bUpdatedStats = TRUE
//LB TOTAL < STAT TOTAL
ELSE
//UPDATE LB
freemodeDataLB.iUpdateTotalLB_XP = iCurrentStatValue - freemodeDataLB.iTotalLB_XP
#IF IS_DEBUG_BUILD
state = "total XP Value on LB is less"
println("CDM---FREEMODE DATA LB--- ",state,"updating total LB by = ", freemodeDataLB.iUpdateTotalLB_XP)
#ENDIF
bUpdateLB = TRUE
ENDIF
//CHECK CREW VALUES
REPEAT MAX_STORED_CREWS i
iCurrentStatValue = CREW_FREEMODE_DATA_LB_GLOBAL_VALUE_FOR_SLOT(i)
//IF LB IS HIGHER
IF freemodeDataLB.iCrewLB_XP[i] > iCurrentStatValue
//CREW STAT = LB
SET_HEAVILY_ACCESSED_MP_INT_PLAYER_STAT(CREW_FREEMODE_DATA_LB_STAT_ENUM_FOR_SLOT(i,TRUE),freemodeDataLB.iCrewLB_XP[i])
println("CDM---FREEMODE DATA LB---",state," for slot", i," the XP STAT is less than LB setting to = ", freemodeDataLB.iCrewLB_XP[i])
bUpdatedStats = TRUE
//LB IS LOWER
ELIF freemodeDataLB.iCrewLB_XP[i] < iCurrentStatValue
//WRITE TO LB WITH THAT CREW
freemodeDataLB.iUpdateCrewLB_XP[i] = iCurrentStatValue - freemodeDataLB.iCrewLB_XP[i]
println("CDM---FREEMODE DATA LB---",state," for slot",i," the XP STAT is greater than LB writing new value to LB = ", freemodeDataLB.iUpdateCrewLB_XP[i])
//MINUS WRITTEN VALUE FROM TOTAL LB VALUE
freemodeDataLB.iUpdateTotalLB_XP += -freemodeDataLB.iUpdateCrewLB_XP[i]
println("CDM---FREEMODE DATA LB---",state," for slot",i," the XP STAT is greater than LB incrementing LB update value by = ", -freemodeDataLB.iUpdateCrewLB_XP[i])
println("CDM---FREEMODE DATA LB--- total XP Value update is now ",freemodeDataLB.iUpdateTotalLB_XP)
bUpdateLB = TRUE
ENDIF
ENDREPEAT
iCurrentStatValue = GET_TOTAL_NUMBER_OF_MINUTES_FOR_FREEMODE_PLAY_TIME()
//IF LB TOTAL = STAT TOTAL
IF freemodeDataLB.iTotalLB_Time = iCurrentStatValue
#IF IS_DEBUG_BUILD
state = "total TIME Value on LB matches"
println("CDM---FREEMODE DATA LB--- ",state)
#ENDIF
//IF LB TOTAL > STAT TOTAL
ELIF freemodeDataLB.iTotalLB_Time > iCurrentStatValue
//UPDATE STAT
//SET_MP_INT_PLAYER_STAT(MPPLY_TOTAL_TIME_SPENT_FREEMODE,freemodeDataLB.iTotalLB_Time*60*1000) //we store minutes
#IF IS_DEBUG_BUILD
state = "total TIME Value on LB is greater"
println("CDM---FREEMODE DATA LB--- ",state,"updating total STAT to = ", freemodeDataLB.iTotalLB_Time*60*1000) //we store minutes
#ENDIF
bUpdatedStats = TRUE
//LB TOTAL < STAT TOTAL
ELSE
//UPDATE LB
freemodeDataLB.iUpdateTotalLB_Time = iCurrentStatValue - freemodeDataLB.iTotalLB_Time
#IF IS_DEBUG_BUILD
state = "total TIME Value on LB is less"
println("CDM---FREEMODE DATA LB--- ",state,"updating total LB by = ", freemodeDataLB.iUpdateTotalLB_Time)
#ENDIF
bUpdateLB = TRUE
ENDIF
//CHECK CREW VALUES
REPEAT MAX_STORED_CREWS i
iCurrentStatValue = GET_TOTAL_NUMBER_OF_MINUTES_FOR_MP_UNSIGNED_INT_PLAYER_STAT(CREW_FREEMODE_DATA_LB_STAT_ENUM_FOR_SLOT(i,FALSE))
//IF LB IS HIGHER
IF freemodeDataLB.iCrewLB_Time[i] > iCurrentStatValue
//CREW STAT = LB
SET_MP_INT_PLAYER_STAT(CREW_FREEMODE_DATA_LB_STAT_ENUM_FOR_SLOT(i,FALSE),freemodeDataLB.iCrewLB_Time[i])
println("CDM---FREEMODE DATA LB---",state," for slot", i," the TIME STAT is less than LB setting to = ", freemodeDataLB.iCrewLB_Time[i])
bUpdatedStats = TRUE
//LB IS LOWER
ELIF freemodeDataLB.iCrewLB_Time[i] < iCurrentStatValue
//WRITE TO LB WITH THAT CREW
freemodeDataLB.iUpdateCrewLB_Time[i] = iCurrentStatValue - freemodeDataLB.iCrewLB_Time[i]
println("CDM---FREEMODE DATA LB---",state," for slot",i," the TIME STAT is greater than LB writing new value to LB = ", freemodeDataLB.iUpdateCrewLB_Time[i])
//MINUS WRITTEN VALUE FROM TOTAL LB VALUE
freemodeDataLB.iUpdateTotalLB_Time += -freemodeDataLB.iUpdateCrewLB_Time[i]
println("CDM---FREEMODE DATA LB---",state," for slot",i," the TIME STAT is greater than LB incrementing LB update value by = ", -freemodeDataLB.iUpdateCrewLB_Time[i])
println("CDM---FREEMODE DATA LB--- total TIME Value update is now ",freemodeDataLB.iUpdateTotalLB_Time)
bUpdateLB = TRUE
ENDIF
ENDREPEAT
IF bUpdateLB
IF bUpdatedStats
SET_BIT(freemodeDataLB.iBS, FREEMODE_DATA_LB_BS_UPDATE_STAT)
ENDIF
SET_FREEMODE_DATA_LB_STAGE(FREEMODE_DATA_LB_MAINTAIN_STAGE_UPDATE_WRITE)
ELSE
INIT_WRITE_VALUES()
//g_savedMPGlobalsNew.g_savedMPGlobals[GET_SAVE_GAME_ARRAY_SLOT()].MpSavedGeneral.iLastFreemodeDataLBMaintenance =
SET_MP_INT_CHARACTER_STAT(MP_STAT_MAINTAIN_XP_WITH_LEADB,GET_CLOUD_TIME_AS_INT())
//REQUEST_SAVE(STAT_SAVETYPE_SCRIPT_MP_GLOBALS)
SET_FREEMODE_DATA_LB_STAGE(FREEMODE_DATA_LB_MAINTAIN_STAGE_CHECKS)
ENDIF
//PSEUDOCODE FOR REFERENCE
//IF LB TOTAL = STAT TOTAL
//CHECK CREW VALUES
//IF THEY MATCH--- DONE
//EXIT
//ELSE THEY DONT MATCH
//IF LB IS HIGHER
//CREW STAT = LB
//ELSE LB IS LOWER
//WRITE TO LB WITH THAT CREW
//MINUS WRITTEN VALUE FROM TOTAL LB VALUE
//END
//END
//END
//ELSE LB TOTAL != STAT TOTAL
//IF LB TOTAL > STAT TOTAL
//UPDATE STAT VALUE
//CHECK CREW VALUES
//UPDATE MIS-MATCHED CREW VALUES
//END
//ELSE LB TOTAL < STAT TOTAL
//CHECK CREW VALUES
//IF THEY MATCH
//UPDATE TOTAL VALUE ON LB
//ELSE
//UPDATE MIS-MATCHED CREW VALUES ANY OVER TOTAL WRITE MINUS
//END
//END
//END
//END
BREAK
CASE FREEMODE_DATA_LB_MAINTAIN_STAGE_UPDATE_WRITE
IF NOT SHOULD_ALL_SCRIPT_LEADERBOARD_READS_TERMINATE()
WRITE_FREEMODE_DATA_LEADERBOARD_MAINTAINENCE_UPDATE()
INIT_WRITE_VALUES()
SET_MP_INT_CHARACTER_STAT(MP_STAT_MAINTAIN_XP_WITH_LEADB,GET_CLOUD_TIME_AS_INT())
//g_savedMPGlobalsNew.g_savedMPGlobals[GET_SAVE_GAME_ARRAY_SLOT()].MpSavedGeneral.iLastFreemodeDataLBMaintenance = GET_CLOUD_TIME_AS_INT()
//REQUEST_SAVE(STAT_SAVETYPE_SCRIPT_MP_GLOBALS)
SET_FREEMODE_DATA_LB_STAGE(FREEMODE_DATA_LB_MAINTAIN_STAGE_CHECKS)
ENDIF
BREAK
CASE FREEMODE_DATA_LB_MAINTAIN_STAGE_CHECKS
INT iXPdifference
IF NOT freemodeDataLB.bFinishedInitialLeaderboardCheck
println("MAINTAIN_FREEMODE_DATA_LEADERBOARD_READ_WRITE: freemodeDataLB.bFinishedInitialLeaderboardCheck = TRUE")
freemodeDataLB.bFinishedInitialLeaderboardCheck = TRUE
ENDIF
IF NOT HAS_NET_TIMER_STARTED(freemodeDataLB.updateTimer)
START_NET_TIMER(freemodeDataLB.updateTimer,TRUE)
// record players Crew XP at start
ELSE
IF HAS_NET_TIMER_EXPIRED(freemodeDataLB.updateTimer,30000,TRUE) //at least 30 seconds between writes no matter what.
iXPdifference = GET_MP_INT_PLAYER_STAT(MPPLY_GLOBALXP) - freemodeDataLB.lastWrite.iXpLast
IF HAS_NET_TIMER_EXPIRED(freemodeDataLB.updateTimer,g_sMPTunables.iFREEMODE_DATA_LB_PERIODIC_WRITE_TIME,TRUE)
println("MAINTAIN_FREEMODE_DATA_LEADERBOARD_READ_WRITE writing stats as timer expired")
WRITE_TO_FREEMODE_DATA_LEADERBOARD()
RESET_NET_TIMER(freemodeDataLB.updateTimer)
EXIT
ENDIF
IF iXPdifference > g_sMPTunables.iFREEMODE_DATA_LB_WRITE_XP_THRESHOLD
println("MAINTAIN_FREEMODE_DATA_LEADERBOARD_READ_WRITE xp difference is > than threshold: ", iXPdifference)
WRITE_TO_FREEMODE_DATA_LEADERBOARD()
RESET_NET_TIMER(freemodeDataLB.updateTimer)
ENDIF
ENDIF
ENDIF
BREAK
ENDSWITCH
ENDIF
ENDPROC
FUNC BOOL IS_PLAYER_IN_EXCLUDED_LIST(GAMER_HANDLE gamerHandle, GAMER_HANDLE &excludeGamer[])
INT i
IF IS_GAMER_HANDLE_VALID(gamerHandle)
REPEAT NUM_NETWORK_PLAYERS i
IF IS_GAMER_HANDLE_VALID(excludeGamer[i])
IF NETWORK_ARE_HANDLES_THE_SAME(gamerHandle,excludeGamer[i])
RETURN TRUE
ENDIF
ENDIF
ENDREPEAT
ENDIF
RETURN FALSE
ENDFUNC
//Example use of below function
//SC_LEADERBOARD_CONTROL_STRUCT scLB_control
//SETUP_SOCIAL_CLUB_LEADERBOARD_READ_DATA(scLB_control,FMMC_TYPE_RACE,"RaceName","DisplayName",ciRACE_SUB_TYPE_STANDARD,5,FALSE)
//IF SOCIAL_CLUB_COMPARE_FRIENDS_SEND_MESSAGE(scLB_control)
// //finished
//ENDIF
//once finished SOCIAL_CLUB_CLEAR_CONTROL_STRUCT(scLB_control)
/// PURPOSE:
/// To compare friends and send message if you have beaten them
/// PARAMS:
/// scLB_control -
FUNC BOOL SOCIAL_CLUB_COMPARE_FRIENDS_SEND_MESSAGE(SC_LEADERBOARD_CONTROL_STRUCT &scLB_control, UGCStateUpdate_Data& ugcdata, BOOL &bHaveFriendsToSendTo, INT iMyPreviousScore, INT iMyCurrentScore, INT iMissionType, INT iMissionSubType, INT iLaps, STRING stMissionName, GAMER_HANDLE &excludeGamer[])
IF IS_GAMER_HANDLE_VALID(excludeGamer[0])
// Added so compiles, Conor remove this once you've used this data properly.
ENDIF
LeaderboardRowData initRowData
LeaderboardReadInfo readInfo
//INT i
INT iNumOfFriends
//INT iPlayerRow = -1
INT iRowIndex
INT iIndex
INT iLoopRowMax = 100
INT iFriendScore
SWITCH scLB_control.iLoadStage[SC_LB_SECTION_FRIEND]
CASE 0
//getting information about local player
iNumOfFriends = NETWORK_GET_FRIEND_COUNT()
IF iNumOfFriends > 0
iRowIndex = scLB_control.iLoopCounter*iLoopRowMax
IF START_SC_LEADERBOARD_READ_FRIENDS_BY_ROW(scLB_control.iTempLoadStage,scLB_control.bTempReadResult,scLB_control.ReadDataStruct,scLB_control.groupHandle,scLB_control.groupHandle[0].m_NumGroups,TRUE,iRowIndex,iLoopRowMax)
#IF IS_DEBUG_BUILD
DEBUG_START_LEADERBOARD_PRINT_RESULTS("SOCIAL_CLUB_COMPARE_FRIENDS_SEND_MESSAGE",scLB_control.ReadDataStruct)
#ENDIF
FILL_READ_INFO_STRUCT(readInfo,scLB_control.ReadDataStruct)
IF scLB_control.bTempReadResult
AND LEADERBOARDS2_READ_GET_ROW_DATA_START(readInfo)
println("readInfo.m_ReturnedRows: ", readInfo.m_ReturnedRows)
IF readInfo.m_ReturnedRows > 0
iIndex = 0
//repeat through all row before player
REPEAT readInfo.m_ReturnedRows iIndex
LEADERBOARDS2_READ_GET_ROW_DATA_INFO(iIndex, initRowData)
IF readInfo.m_LocalGamerRowNumber != iIndex
IF initRowData.m_Rank > 0
IF NOT IS_PLAYER_IN_EXCLUDED_LIST(initRowData.m_GamerHandle,excludeGamer)
iFriendScore = LEADERBOARDS2_READ_GET_ROW_DATA_INT(iIndex, 0)
println("Previous Score: ", iMyPreviousScore," Current Score: ", iMyCurrentScore,"Their Score: ", iFriendScore)
IF iMyPreviousScore < 0
iMyPreviousScore = iMyPreviousScore*-1
//println("Your Previous Score (UPDATED): ", iMyPreviousScore)
ENDIF
IF iMyCurrentScore < 0
iMyCurrentScore = iMyCurrentScore*-1
//println("Your Current Score (UPDATED): ", iMyCurrentScore)
ENDIF
IF iFriendScore < 0
iFriendScore = iFriendScore *-1
//println("Their Score (UPDATED): ", iFriendScore)
ENDIF
IF iFriendScore > iMyCurrentScore
AND ((iMyPreviousScore > iFriendScore) OR (iMyPreviousScore = 0))
//IF NOT ARE_STRINGS_EQUAL(initRowData.m_GamerName, "")
IF IS_GAMER_HANDLE_VALID(initRowData.m_GamerHandle)
SC_INBOX_MESSAGE_PUSH_GAMER_T0_RECIP_LIST(initRowData.m_GamerHandle)
bHaveFriendsToSendTo = TRUE
println("You placed higher than a friend named ",initRowData.m_GamerName, "congrats!")
ENDIF
ENDIF
ELSE
println("Gamer is in exlcuded list ignoring for messaging name = ",initRowData.m_GamerName)
ENDIF
ENDIF
ELSE
println("This is the local player's row ignoring")
ENDIF
ENDREPEAT
CLEAR_ROW_DATA_INFO_STRUCT(initRowData)
LEADERBOARDS2_READ_GET_ROW_DATA_END( )
END_LEADERBOARD_READ(scLB_control.iTempLoadStage,scLB_control.bTempReadResult,scLB_control.ReadDataStruct)
scLB_control.iLoopCounter++
IF iNumOfFriends > scLB_control.iLoopCounter*iLoopRowMax
scLB_control.iLoadStage[SC_LB_SECTION_FRIEND] = 0
println("SOCIAL_CLUB_COMPARE_FRIENDS_SEND_MESSAGE moving to ",scLB_control.iLoopCounter ," loop")
RETURN FALSE
ELSE
println("SOCIAL_CLUB_COMPARE_FRIENDS_SEND_MESSAGE finished looping returning true")
scLB_control.iLoadStage[SC_LB_SECTION_FRIEND] = 1
RETURN FALSE
ENDIF
ELSE
CLEAR_ROW_DATA_INFO_STRUCT(initRowData)
LEADERBOARDS2_READ_GET_ROW_DATA_END( )
END_LEADERBOARD_READ(scLB_control.iTempLoadStage,scLB_control.bTempReadResult,scLB_control.ReadDataStruct)
scLB_control.iLoopCounter++
IF iNumOfFriends > scLB_control.iLoopCounter*iLoopRowMax
scLB_control.iLoadStage[SC_LB_SECTION_FRIEND] = 0
println("SOCIAL_CLUB_COMPARE_FRIENDS_SEND_MESSAGE no friend in first group of friends moving to ",scLB_control.iLoopCounter ," loop")
ENDIF
println("SOCIAL_CLUB_COMPARE_FRIENDS_SEND_MESSAGE no rows returned ")
RETURN TRUE
ENDIF
ELSE
println("SOCIAL_CLUB_COMPARE_FRIENDS_SEND_MESSAGE no friends data skiping to end stage 1 (no row data) ")
END_LEADERBOARD_READ(scLB_control.iTempLoadStage,scLB_control.bTempReadResult,scLB_control.ReadDataStruct)
scLB_control.iLoadStage[SC_LB_SECTION_FRIEND] = 1
RETURN TRUE
ENDIF
ENDIF
ELSE
println("SOCIAL_CLUB_COMPARE_FRIENDS_SEND_MESSAGE no friends data skiping to end stage 1 (friend count is 0)")
END_LEADERBOARD_READ(scLB_control.iTempLoadStage,scLB_control.bTempReadResult,scLB_control.ReadDataStruct)
scLB_control.iLoadStage[SC_LB_SECTION_FRIEND] = 1
RETURN TRUE
ENDIF
BREAK
CASE 1
IF bHaveFriendsToSendTo
NET_PRINT("[WJK] - SOCIAL_CLUB_COMPARE_FRIENDS_SEND_MESSAGE - bHaveFriendsToSendTo = TRUE")NET_NL()
ugcdata.tl31MissionContentId = scLB_control.ReadDataStruct.m_GroupSelector.m_Group[0].m_Id
ugcdata.Score = iMyCurrentScore
ugcdata.tl31MissionName = stMissionName
ugcdata.tl31CoPlayerName = " "
ugcdata.MissionType = iMissionType
ugcdata.MissionSubType = iMissionSubType
ugcdata.Laps = iLaps
ugcdata.bSwapSenderWithCoPlayer = FALSE
NET_PRINT("[WJK] - ugcdata data:")NET_NL()
NET_PRINT("[WJK] - tl31MissionContentId:") NET_PRINT(ugcdata.tl31MissionContentId) NET_NL()
NET_PRINT("[WJK] - Score:") NET_PRINT_INT(ugcdata.Score) NET_NL()
NET_PRINT("[WJK] - tl31MissionName:") NET_PRINT(ugcdata.tl31MissionName) NET_NL()
NET_PRINT("[WJK] - tl31CoPlayerName:") NET_PRINT(ugcdata.tl31CoPlayerName) NET_NL()
NET_PRINT("[WJK] - MissionType:") NET_PRINT_INT(ugcdata.MissionType) NET_NL()
NET_PRINT("[WJK] - MissionSubType:") NET_PRINT_INT(ugcdata.MissionSubType) NET_NL()
NET_PRINT("[WJK] - Laps:") NET_PRINT_INT(ugcdata.Laps) NET_NL()
NET_PRINT("[WJK] - bSwapSenderWithCoPlayer:")
IF ugcdata.bSwapSenderWithCoPlayer
NET_PRINT("TRUE")
ELSE
NET_PRINT("FALSE")
ENDIF
NET_NL()
SC_INBOX_SEND_UGCSTATUPDATE_TO_RECIP_LIST(ugcdata)
ELSE
NET_PRINT("[WJK] - SOCIAL_CLUB_COMPARE_FRIENDS_SEND_MESSAGE - bHaveFriendsToSendTo = FALSE")NET_NL()
ENDIF
scLB_control.iLoadStage[SC_LB_SECTION_FRIEND] = 2
RETURN TRUE
BREAK
CASE 2
RETURN TRUE
BREAK
ENDSWITCH
RETURN FALSE
ENDFUNC
FUNC INT SC_LB_GET_GLOBAL_LEADERBOARD_FROM_MODE_LB(INT iCurrentModeLB)
SWITCH INT_TO_ENUM(LEADERBOARDS_ENUM,iCurrentModeLB)
CASE LEADERBOARD_MINI_GAMES_DARTS
CASE LEADERBOARD_MINI_GAMES_GOLF
CASE LEADERBOARD_MINI_GAMES_MP_SRANGE
CASE LEADERBOARD_MINI_GAMES_TENNIS
CASE LEADERBOARD_MINI_GAMES_ARM_WRESTLING
CASE LEADERBOARD_FREEMODE_MISSIONS_BY_TIME
// CASE LEADERBOARD_FREEMODE_MISSIONS_BY_SCORE
CASE LEADERBOARD_FREEMODE_MISSIONS_BY_BEST_SCORE
CASE LEADERBOARD_FREEMODE_SURVIVAL
CASE LEADERBOARD_FREEMODE_RACE_TOURNAMENT_QUALIFICATION
RETURN iCurrentModeLB
BREAK
CASE LEADERBOARD_FREEMODE_DEATHMATCH
CASE LEADERBOARD_FREEMODE_DEATHMATCH_OVERALL
RETURN ENUM_TO_INT(LEADERBOARD_FREEMODE_DEATHMATCH_OVERALL)
BREAK
CASE LEADERBOARD_FREEMODE_TEAM_DEATHMATCH
CASE LEADERBOARD_FREEMODE_TEAM_DEATHMATCH_OVERALL
RETURN ENUM_TO_INT(LEADERBOARD_FREEMODE_TEAM_DEATHMATCH_OVERALL)
BREAK
CASE LEADERBOARD_FREEMODE_VEHICLE_DEATHMATCH
CASE LEADERBOARD_FREEMODE_VEHICLE_DEATHMATCH_OVERALL
RETURN ENUM_TO_INT(LEADERBOARD_FREEMODE_VEHICLE_DEATHMATCH_OVERALL)
BREAK
CASE LEADERBOARD_FREEMODE_BASEJUMPS
CASE LEADERBOARD_FREEMODE_BASEJUMPS_OVERALL
RETURN ENUM_TO_INT(LEADERBOARD_FREEMODE_BASEJUMPS_OVERALL)
BREAK
CASE LEADERBOARD_FREEMODE_RACES
CASE LEADERBOARD_FREEMODE_RACES_OVERALL
CASE LEADERBOARD_FREEMODE_RACES_LAPS
RETURN ENUM_TO_INT(LEADERBOARD_FREEMODE_RACES_OVERALL)
BREAK
CASE LEADERBOARD_FREEMODE_GTA_RACES
CASE LEADERBOARD_FREEMODE_GTA_RACES_OVERALL
CASE LEADERBOARD_FREEMODE_GTA_RACES_LAPS
RETURN ENUM_TO_INT(LEADERBOARD_FREEMODE_GTA_RACES_OVERALL)
BREAK
CASE LEADERBOARD_FREEMODE_RALLY
CASE LEADERBOARD_FREEMODE_RALLY_LAPS
CASE LEADERBOARD_FREEMODE_RALLY_OVERALL
CASE LEADERBOARD_FREEMODE_RALLY_CODRIVER_OVERALL
RETURN ENUM_TO_INT(LEADERBOARD_FREEMODE_RALLY_OVERALL)
BREAK
CASE LEADERBOARD_FREEMODE_ON_FOOT_RACE
CASE LEADERBOARD_FREEMODE_ON_FOOT_RACE_OVERALL
CASE LEADERBOARD_FREEMODE_ON_FOOT_RACE_LAPS
RETURN ENUM_TO_INT(LEADERBOARD_FREEMODE_ON_FOOT_RACE_OVERALL)
BREAK
// CASE LEADERBOARD_FREEMODE_CREW_CHALLENGES
// CASE LEADERBOARD_FREEMODE_CREW_CHALLENGES_H2H
// RETURN ENUM_TO_INT(LEADERBOARD_FREEMODE_CREW_CHALLENGES_OVERALL)
// BREAK
CASE LEADERBOARD_FREEMODE_NON_CONTACT_RACES
CASE LEADERBOARD_FREEMODE_NON_CONTACT_RACES_OVERALL
RETURN ENUM_TO_INT(LEADERBOARD_FREEMODE_NON_CONTACT_RACES_OVERALL)
BREAK
ENDSWITCH
IF iCurrentModeLB >= ENUM_TO_INT(LEADERBOARD_FREEMODE_NON_CONTACT_RACES_1_LAPS)
AND iCurrentModeLB <= ENUM_TO_INT(LEADERBOARD_FREEMODE_ELO_NON_CONTACT_RACES_OVERALL_SEASON50)
RETURN ENUM_TO_INT(LEADERBOARD_FREEMODE_NON_CONTACT_RACES_OVERALL)
ENDIF
#IF IS_DEBUG_BUILD
println("SC_LB_GET_GLOBAL_LEADERBOARD_FROM_MODE_LB: trying to get global LB from an invalid mode ID. Mode ID = ", iCurrentModeLB)
SCRIPT_ASSERT("SC_LB_GET_GLOBAL_LEADERBOARD_FROM_MODE_LB: trying to get global LB from an invalid mode ID. See Conor")
#ENDIF
RETURN -1
ENDFUNC
PROC RESET_MATCHED_CREWS(SC_MATCHED_CREWS &matchedCrew)
INT i
matchedCrew.iLoadStage = 0
matchedCrew.iTempLoadStage = 0
matchedCrew.bFinished = FALSE
REPEAT MAX_SC_MATCHED_CREWS i
matchedCrew.CrewData[i].Name = ""
matchedCrew.CrewData[i].Tag = ""
matchedCrew.CrewData[i].iID = 0
ENDREPEAT
ENDPROC
FUNC BOOL GET_MATCHED_CREWS_FOR_GAME_MODE(MISSION_TO_LAUNCH_DETAILS &sLaunchMissionDetails,SC_LEADERBOARD_CONTROL_STRUCT &scLB_control, SC_MATCHED_CREWS &matchedCrew)
GAMER_HANDLE gamerHandle
LeaderboardRowData initRowData
LeaderboardReadInfo readInfo
NETWORK_CLAN_DESC clanDesc
IF sLaunchMissionDetails.iCreatorID = FMMC_ROCKSTAR_CREATOR_ID
OR sLaunchMissionDetails.iCreatorID = FMMC_ROCKSTAR_CANDIDATE_CREATOR_ID
OR sLaunchMissionDetails.iCreatorID = FMMC_ROCKSTAR_HIDEOUT_CREATOR_ID
OR sLaunchMissionDetails.iCreatorID = FMMC_MINI_GAME_CREATOR_ID
ELSE
matchedCrew.iLoadStage = 0
matchedCrew.bFinished = TRUE
RETURN TRUE
ENDIF
INT i
INT iCounter
#IF IS_DEBUG_BUILD
STRING funcName = "GET_MATCHED_CREWS_FOR_GAME_MODE"
//DEBUG_PRINT_LEADERBOARD_READ_DATA_STRUCT(funcName,scLB_control.ReadDataStruct)
#ENDIF
IF NOT matchedCrew.bFinished
SWITCH matchedCrew.iLoadStage
CASE 0
IF NETWORK_CLAN_SERVICE_IS_VALID()
gamerHandle = GET_GAMER_HANDLE_PLAYER(PLAYER_ID())
IF NETWORK_CLAN_PLAYER_IS_ACTIVE(gamerHandle)
IF NETWORK_CLAN_PLAYER_GET_DESC(clanDesc, SIZE_OF(clanDesc), gamerHandle)
println(funcName," moving to stage 1 ")
matchedCrew.ReadDataStruct.m_LeaderboardId = SC_LB_GET_GLOBAL_LEADERBOARD_FROM_MODE_LB(scLB_control.ReadDataStruct.m_LeaderboardId)
matchedCrew.ReadDataStruct.m_ClanId = clanDesc.Id
matchedCrew.ReadDataStruct.m_type = LEADERBOARD2_TYPE_CLAN
matchedCrew.iLoadStage = 1
RETURN FALSE
ENDIF
ELSE
println(funcName," moving to stage 2 NETWORK_CLAN_PLAYER_IS_ACTIVE is false")
matchedCrew.iLoadStage = 2
RETURN TRUE
ENDIF
ELSE
println(funcName," moving to stage 2 NETWORK_CLAN_SERVICE_IS_VALID is false")
matchedCrew.iLoadStage = 2
RETURN TRUE
ENDIF
BREAK
CASE 1
matchedCrew.ReadDataStruct.m_Type = LEADERBOARD2_TYPE_CLAN
gamerHandle = GET_GAMER_HANDLE_PLAYER(PLAYER_ID())
iCounter = 0
IF START_SC_LEADERBOARD_READ_BY_RADIUS(matchedCrew.iTempLoadStage,matchedCrew.bTempReadResult,matchedCrew.ReadDataStruct,8,gamerHandle)
#IF IS_DEBUG_BUILD
DEBUG_START_LEADERBOARD_PRINT_RESULTS(funcName,matchedCrew.ReadDataStruct)
#ENDIF
FILL_READ_INFO_STRUCT(readInfo,matchedCrew.ReadDataStruct)
IF matchedCrew.bTempReadResult
AND LEADERBOARDS2_READ_GET_ROW_DATA_START(readInfo)
IF readInfo.m_ReturnedRows > 0
REPEAT readInfo.m_ReturnedRows i
LEADERBOARDS2_READ_GET_ROW_DATA_INFO(i, initRowData)
IF initRowData.m_ClanId != matchedCrew.ReadDataStruct.m_ClanId
IF iCounter < MAX_SC_MATCHED_CREWS
matchedCrew.CrewData[iCounter].iID = initRowData.m_ClanId
matchedCrew.CrewData[iCounter].Name = initRowData.m_ClanName
matchedCrew.CrewData[iCounter].Tag = initRowData.m_ClanTag
println(funcName, "-- matchedCrew.CrewData[",iCounter,"].iID = ", matchedCrew.CrewData[iCounter].iID,
" Name = ", matchedCrew.CrewData[iCounter].Name,
" Tag = ",matchedCrew.CrewData[iCounter].Tag)
iCounter++
ENDIF
ENDIF
CLEAR_ROW_DATA_INFO_STRUCT(initRowData)
ENDREPEAT
LEADERBOARDS2_READ_GET_ROW_DATA_END( )
END_LEADERBOARD_READ(matchedCrew.iTempLoadStage,matchedCrew.bTempReadResult,matchedCrew.ReadDataStruct)
matchedCrew.iLoadStage = 2
println(funcName," -- found matched crews moving to stage 2")
ELSE
LEADERBOARDS2_READ_GET_ROW_DATA_END( )
END_LEADERBOARD_READ(matchedCrew.iTempLoadStage,matchedCrew.bTempReadResult,matchedCrew.ReadDataStruct)
matchedCrew.iLoadStage = 2
println(funcName," -- no rows returned moving to stage 2")
ENDIF
ELSE
END_LEADERBOARD_READ(matchedCrew.iTempLoadStage,matchedCrew.bTempReadResult,matchedCrew.ReadDataStruct)
matchedCrew.iLoadStage = 2
println(funcName," -- no matched crews found moving to stage 2")
ENDIF
ENDIF
BREAK
CASE 2
println(funcName," finishing generating matched crew list")
matchedCrew.iLoadStage = 0
matchedCrew.bFinished = TRUE
BREAK
ENDSWITCH
ELSE
RETURN TRUE
ENDIF
RETURN TRUE
ENDFUNC
/// PURPOSE:
/// To get the global and personal best for a given race in SP.
/// PARAMS:
/// iReadStage - this is just needs to be an int defined in the script that will retain its value over more than a frame (i.e. dont just define it before calling this)
/// iLoadStage - this is just needs to be an int defined in the script that will retain its value over more than a frame (i.e. dont just define it before calling this)
/// bSuccessful - this is just needs to be an bool defined in the script that will retain its value over more than a frame (i.e. dont just define it before calling this)
/// iRaceType - the number indicating the race (NOTE: OFFROAD RACES offset is 100)
/// iGlobalBest - when function returns true this will be the global best
/// iPersonalBest - when function returns true this will be the personal best
/// RETURNS:
/// True when it's finished. Note this should always return true even if it finds no records and the values remain 0.
FUNC BOOL GET_SP_RACE_PERSONAL_GLOBAL_BEST(INT& iReadStage, INT& iLoadStage,BOOL& bSuccessful, INT iRaceID,INT& iGlobalBest, INT& iPersonalBest)
Leaderboard2ReadData lbReadData
Leaderboard2ReadData emptyData
//LeaderboardRowData tempRowData[1]
LeaderboardRowData initRowData
LeaderboardReadInfo readInfo
GAMER_HANDLE gamerHandle
gamerHandle = GET_GAMER_HANDLE_PLAYER(PLAYER_ID())
lbReadData.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_MINI_GAMES_RACES)
lbReadData.m_Type = LEADERBOARD2_TYPE_GROUP_MEMBER
lbReadData.m_GroupSelector.m_NumGroups = 3
lbReadData.m_GroupSelector.m_Group[0].m_Category = "GameType"
lbReadData.m_GroupSelector.m_Group[1].m_Category = "Location"
lbReadData.m_GroupSelector.m_Group[2].m_Category = "Type"
lbReadData.m_GroupSelector.m_Group[0].m_Id = "SP"
SWITCH iRaceID
CASE 0
lbReadData.m_GroupSelector.m_Group[1].m_Id = "MGCR_1"
lbReadData.m_GroupSelector.m_Group[2].m_Id = "StreetRace"
BREAK
CASE 1
lbReadData.m_GroupSelector.m_Group[1].m_Id = "MGCR_2"
lbReadData.m_GroupSelector.m_Group[2].m_Id = "StreetRace"
BREAK
CASE 2
lbReadData.m_GroupSelector.m_Group[1].m_Id = "MGCR_4"
lbReadData.m_GroupSelector.m_Group[2].m_Id = "StreetRace"
BREAK
CASE 3
lbReadData.m_GroupSelector.m_Group[1].m_Id = "MGCR_5"
lbReadData.m_GroupSelector.m_Group[2].m_Id = "StreetRace"
BREAK
CASE 4
lbReadData.m_GroupSelector.m_Group[1].m_Id = "MGCR_6"
lbReadData.m_GroupSelector.m_Group[2].m_Id = "StreetRace"
BREAK
CASE 5
lbReadData.m_GroupSelector.m_Group[1].m_Id = "MGSR_1"
lbReadData.m_GroupSelector.m_Group[2].m_Id = "SeaRace"
BREAK
CASE 6
lbReadData.m_GroupSelector.m_Group[1].m_Id = "MGSR_2"
lbReadData.m_GroupSelector.m_Group[2].m_Id = "SeaRace"
BREAK
CASE 7
lbReadData.m_GroupSelector.m_Group[1].m_Id = "MGSR_3"
lbReadData.m_GroupSelector.m_Group[2].m_Id = "SeaRace"
BREAK
CASE 8
lbReadData.m_GroupSelector.m_Group[1].m_Id = "MGSR_4"
lbReadData.m_GroupSelector.m_Group[2].m_Id = "SeaRace"
BREAK
CASE 100
lbReadData.m_GroupSelector.m_Group[1].m_Id = "OR_RACE_01" //Canyon Cliffs
lbReadData.m_GroupSelector.m_Group[2].m_Id = "OffroadRace"
BREAK
CASE 101
lbReadData.m_GroupSelector.m_Group[1].m_Id = "OR_RACE_02" //Ridge Run
lbReadData.m_GroupSelector.m_Group[2].m_Id = "OffroadRace"
BREAK
CASE 102
lbReadData.m_GroupSelector.m_Group[1].m_Id = "OR_RACE_03" //Valley Trail
lbReadData.m_GroupSelector.m_Group[2].m_Id = "OffroadRace"
BREAK
CASE 103
lbReadData.m_GroupSelector.m_Group[1].m_Id = "OR_RACE_04" //Lakeside Splash
lbReadData.m_GroupSelector.m_Group[2].m_Id = "OffroadRace"
BREAK
CASE 104
lbReadData.m_GroupSelector.m_Group[1].m_Id = "OR_RACE_05" //Eco Friendly
lbReadData.m_GroupSelector.m_Group[2].m_Id = "OffroadRace"
BREAK
CASE 105
lbReadData.m_GroupSelector.m_Group[1].m_Id = "OR_RACE_06" //Mineward Spiral
lbReadData.m_GroupSelector.m_Group[2].m_Id = "OffroadRace"
BREAK
DEFAULT
SCRIPT_ASSERT("GET_SP_RACE_PERSONAL_GLOBAL_BEST iRaceType was invalid")
BREAK
ENDSWITCH
//
SWITCH iReadStage
CASE 0
IF START_SC_LEADERBOARD_READ_BY_RANK(iLoadStage,bSuccessful,lbReadData,1,1)
#IF IS_DEBUG_BUILD
println("GET_SP_RACE_GLOBAL_BEST: LEADERBOARD ID = ", lbReadData.m_LeaderboardId)
println("groupHandle[0] = ",lbReadData.m_GroupSelector.m_Group[0].m_Id
," groupHandle[1] = ",lbReadData.m_GroupSelector.m_Group[1].m_Id
," groupHandle[2] = ",lbReadData.m_GroupSelector.m_Group[2].m_Id)
#ENDIF
FILL_READ_INFO_STRUCT(readInfo,lbReadData)
IF bSuccessful
AND LEADERBOARDS2_READ_GET_ROW_DATA_START(readInfo)
IF readInfo.m_ReturnedRows > 0
LEADERBOARDS2_READ_GET_ROW_DATA_INFO(0, initRowData)
//IF ARE_STRINGS_EQUAL(initRowData.m_GamerName, "")
IF NOT IS_GAMER_HANDLE_VALID(initRowData.m_GamerHandle)
println("GET_SP_RACE_GLOBAL_BEST -- moving to stage 2 no global data ")
iReadStage = 2
ELSE
iGlobalBest = LEADERBOARDS2_READ_GET_ROW_DATA_INT(0, 3)
println("Global best is for player name: ", initRowData.m_GamerName, " is - ",iGlobalBest)
iReadStage = 1
ENDIF
//println("Ending read in READ_BY_RANK in ", GET_THIS_SCRIPT_NAME() )
ELSE
println("GET_SP_RACE_GLOBAL_BEST -- moving to stage 2 no global data ")
iReadStage = 2
ENDIF
LEADERBOARDS2_READ_GET_ROW_DATA_END( )
ELSE
println("GET_SP_RACE_GLOBAL_BEST -- moving to stage 2 no global data ")
iReadStage = 2
ENDIF
END_LEADERBOARD_READ(iLoadStage,bSuccessful,lbReadData)
lbReadData = emptyData
ENDIF
BREAK
CASE 1
IF START_SC_LEADERBOARD_READ_BY_HANDLE(iLoadStage,bSuccessful,lbReadData,gamerHandle)
#IF IS_DEBUG_BUILD
println("GET_SP_RACE_PERSONAL_BEST: LEADERBOARD ID = ", lbReadData.m_LeaderboardId, " groupHandle = ",lbReadData.m_GroupSelector.m_Group[0].m_Id)
#ENDIF
FILL_READ_INFO_STRUCT(readInfo,lbReadData)
IF bSuccessful
AND LEADERBOARDS2_READ_GET_ROW_DATA_START(readInfo)
IF readInfo.m_ReturnedRows > 0
LEADERBOARDS2_READ_GET_ROW_DATA_INFO(0, initRowData)
//IF ARE_STRINGS_EQUAL(initRowData.m_GamerName, "")
IF NOT IS_GAMER_HANDLE_VALID(initRowData.m_GamerHandle)
println("GET_SP_RACE_PERSONAL_BEST -- moving to stage 2 no data for local player ")
iReadStage = 2
ELSE
iPersonalBest = LEADERBOARDS2_READ_GET_ROW_DATA_INT(0, 3)
println("Personal best is for player name: ", initRowData.m_GamerName, " is - ",iPersonalBest )
iReadStage = 2
ENDIF
ELSE
println("GET_SP_RACE_PERSONAL_BEST -- moving to stage 2 no data for local player ")
iReadStage = 2
ENDIF
LEADERBOARDS2_READ_GET_ROW_DATA_END( )
ELSE
println("GET_SP_RACE_PERSONAL_BEST -- moving to stage 2 no data for local player ")
iReadStage = 2
ENDIF
println("Ending read in READ_BY_HANDLE in ", GET_THIS_SCRIPT_NAME() )
END_LEADERBOARD_READ(iLoadStage,bSuccessful,lbReadData)
lbReadData = emptyData
ENDIF
BREAK
CASE 2
RETURN TRUE
BREAK
ENDSWITCH
RETURN FALSE
ENDFUNC
PROC CLEANUP_SP_RACE_PERSONAL_GLOBAL_BEST(INT& iReadStage, INT& iLoadStage, BOOL& bResult, INT& iGlobalBest, INT& iPersonalBest)
iReadStage = 0
iLoadStage = 0
iGlobalBest = 0
bResult = FALSE
iPersonalBest = 0
ENDPROC
FUNC BOOL DO_SIGNED_OUT_WARNING(INT& iBS, BOOL bStoreMessage = FALSE)
FE_WARNING_FLAGS iButtonBS = FE_WARNING_OK
IF scLBSignInWarn.iFrameLastCalled + 5 < GET_FRAME_COUNT()
AND scLBSignInWarn.iFrameLastCalled > 0
RESET_NET_TIMER(scLBSignInWarn.signInDelay)
RESET_NET_TIMER(scLBSignInWarn.signedOutTimer)
iBS = 0
scLBSignInWarn.iFrameLastCalled = 0
SET_LOADING_ICON_INACTIVE()
println("DO_SIGNED_OUT_WARNING: reseting more than 5 frames since last called")
ENDIF
scLBSignInWarn.iFrameLastCalled = GET_FRAME_COUNT()
NP_UNAVAILABILITY_REASON reason = REASON_INVALID
IF IS_PLAYSTATION_PLATFORM()
IF NETWORK_IS_NP_AVAILABLE() = FALSE
reason = NETWORK_GET_NP_UNAVAILABLE_REASON()
ENDIF
ENDIF
IF (IS_PLAYSTATION_PLATFORM() AND
(reason = REASON_AGE OR reason = REASON_GAME_UPDATE OR reason = REASON_SYSTEM_UPDATE OR reason = REASON_CONNECTION))
OR (NOT SCRIPT_IS_CLOUD_AVAILABLE() AND NETWORK_IS_SIGNED_ONLINE())
// wait for ros refresh
IF NETWORK_IS_REFRESHING_ROS_CREDENTIALS()
println("DO_SIGNED_OUT_WARNING: refreshing ROS credentials")
RUN_SCALEFORM_LOADING_ICON(scLBSignInWarn.loadingIcon, SHOULD_REFRESH_SCALEFORM_LOADING_ICON(scLBSignInWarn.loadingIcon))
IF NOT IS_BIT_SET(iBs,4)
SET_BIT(iBs,4)
scLBSignInWarn.loadingIcon.sMainStringSlot = ""
REFRESH_SCALEFORM_LOADING_ICON(scLBSignInWarn.loadingIcon)
ENDIF
ELSE
IF reason = REASON_AGE
SET_WARNING_MESSAGE_WITH_HEADER("PM_INF_QMFT", "HUD_PROFILECHNG",iButtonBS)
ELIF reason = REASON_GAME_UPDATE
SET_WARNING_MESSAGE_WITH_HEADER("PM_INF_QMFT", "HUD_GAMEUPD_G",iButtonBS)
ELIF reason= REASON_SYSTEM_UPDATE
SET_WARNING_MESSAGE_WITH_HEADER("PM_INF_QMFT", "HUD_SYSTUPD_G",iButtonBS)
ELIF reason= REASON_CONNECTION
SET_WARNING_MESSAGE_WITH_HEADER("PM_INF_QMFT", "SCLB_NO_INT",iButtonBS)
ELIF NOT SCRIPT_IS_CLOUD_AVAILABLE()
SET_WARNING_MESSAGE_WITH_HEADER("PM_INF_QMFT", "SCLB_NO_ROS",iButtonBS)
ENDIF
println("DO_SIGNED_OUT_WARNING: warning signed in no cloud")
IF NOT IS_BIT_SET(iBS, 0)
IF NOT IS_CONTROL_PRESSED(FRONTEND_CONTROL,INPUT_FRONTEND_ACCEPT)
SET_BIT(iBS, 0)
ENDIF
ELSE
IF IS_CONTROL_JUST_RELEASED(FRONTEND_CONTROL,INPUT_FRONTEND_ACCEPT)
RESET_NET_TIMER(scLBSignInWarn.signedOutTimer)
RESET_NET_TIMER(scLBSignInWarn.signInDelay)
iBS = 0
scLBSignInWarn.iFrameLastCalled = 0
SET_LOADING_ICON_INACTIVE()
println("DO_SIGNED_OUT_WARNING: pressed accept killing warning")
RETURN TRUE
ENDIF
ENDIF
ENDIF
ELSE
RUN_SCALEFORM_LOADING_ICON(scLBSignInWarn.loadingIcon, SHOULD_REFRESH_SCALEFORM_LOADING_ICON(scLBSignInWarn.loadingIcon))
IF (HAS_NET_TIMER_STARTED(scLBSignInWarn.signedOutTimer) AND NOT HAS_NET_TIMER_EXPIRED(scLBSignInWarn.signedOutTimer,2000,TRUE))
AND NOT NETWORK_IS_SIGNED_ONLINE()
SET_BIT(iBS,3)
scLBSignInWarn.loadingIcon.sMainStringSlot = ""
REFRESH_SCALEFORM_LOADING_ICON(scLBSignInWarn.loadingIcon)
println("DO_SIGNED_OUT_WARNING: not signed in doing loading icon")
ELSE
IF NOT IS_BIT_SET(iBS,3)
IF NOT IS_BIT_SET(iBS,1)
DISPLAY_SYSTEM_SIGNIN_UI()
SET_BIT(iBS,1)
scLBSignInWarn.loadingIcon.sMainStringSlot = ""
REFRESH_SCALEFORM_LOADING_ICON(scLBSignInWarn.loadingIcon)
println("DO_SIGNED_OUT_WARNING: showing sign in warning")
ELSE
// IF NOT IS_BIT_SET(iBS,2)
// REINIT_NET_TIMER(scLBSignInWarn.signInDelay,TRUE)
// IF NOT IS_SYSTEM_UI_BEING_DISPLAYED()
// SET_BIT(iBS,2)
// println("DO_SIGNED_OUT_WARNING: UI no longer being displayed allow timer to progress")
// ENDIF
// ENDIF
ENDIF
ENDIF
ENDIF
BOOL bDisplaySpinner
IF HAS_NET_TIMER_STARTED(scLBSignInWarn.signInDelay)
IF NOT HAS_NET_TIMER_EXPIRED(scLBSignInWarn.signInDelay,4000,TRUE)
bDisplaySpinner = TRUE
ENDIF
ENDIF
IF NOT bDisplaySpinner
IF bStoreMessage
IF NOT NETWORK_IS_SIGNED_ONLINE()
IF NETWORK_IS_CABLE_CONNECTED()
SET_WARNING_MESSAGE_WITH_HEADER("PM_INF_QMFT", "STORE_NOT_ONL",iButtonBS)
ELSE
SET_WARNING_MESSAGE_WITH_HEADER("PM_INF_QMFT", "SCLB_NO_INT",iButtonBS)
ENDIF
println("DO_SIGNED_OUT_WARNING: store warning not signed in online")
IF NOT IS_SYSTEM_UI_BEING_DISPLAYED()
IF NOT IS_BIT_SET(iBS, 0)
IF NOT IS_CONTROL_PRESSED(FRONTEND_CONTROL,INPUT_FRONTEND_ACCEPT)
SET_BIT(iBS, 0)
ENDIF
ELSE
IF IS_CONTROL_JUST_RELEASED(FRONTEND_CONTROL,INPUT_FRONTEND_ACCEPT)
RESET_NET_TIMER(scLBSignInWarn.signInDelay)
iBS = 0
scLBSignInWarn.iFrameLastCalled = 0
SET_LOADING_ICON_INACTIVE()
RETURN TRUE
ENDIF
ENDIF
ENDIF
ELSE
RESET_NET_TIMER(scLBSignInWarn.signInDelay)
iBS = 0
scLBSignInWarn.iFrameLastCalled = 0
SET_LOADING_ICON_INACTIVE()
RETURN TRUE
ENDIF
ELSE
IF IS_BIT_SET(iBS,3)
IF NETWORK_IS_CABLE_CONNECTED()
SET_WARNING_MESSAGE_WITH_HEADER("PM_INF_QMFT", "SCLB_SIGN_OUT",iButtonBS)
ELSE
SET_WARNING_MESSAGE_WITH_HEADER("PM_INF_QMFT", "SCLB_NO_INT",iButtonBS)
ENDIF
println("DO_SIGNED_OUT_WARNING: non store warning signed out")
IF NOT IS_BIT_SET(iBS, 0)
IF NOT IS_CONTROL_PRESSED(FRONTEND_CONTROL,INPUT_FRONTEND_ACCEPT)
SET_BIT(iBS, 0)
ENDIF
ELSE
IF IS_CONTROL_JUST_RELEASED(FRONTEND_CONTROL,INPUT_FRONTEND_ACCEPT)
RESET_NET_TIMER(scLBSignInWarn.signedOutTimer)
RESET_NET_TIMER(scLBSignInWarn.signInDelay)
iBS = 0
scLBSignInWarn.iFrameLastCalled = 0
SET_LOADING_ICON_INACTIVE()
RETURN TRUE
ENDIF
ENDIF
ELSE
IF NETWORK_IS_CABLE_CONNECTED()
SET_WARNING_MESSAGE_WITH_HEADER("PM_INF_QMFT", "SCLB_NOT_ONL",iButtonBS)
ELSE
SET_WARNING_MESSAGE_WITH_HEADER("PM_INF_QMFT", "SCLB_NO_INT",iButtonBS)
ENDIF
println("DO_SIGNED_OUT_WARNING: non store warning not online")
IF NOT IS_SYSTEM_UI_BEING_DISPLAYED()
IF NOT IS_BIT_SET(iBS, 0)
IF NOT IS_CONTROL_PRESSED(FRONTEND_CONTROL,INPUT_FRONTEND_ACCEPT)
SET_BIT(iBS, 0)
ENDIF
ELSE
IF IS_CONTROL_JUST_RELEASED(FRONTEND_CONTROL,INPUT_FRONTEND_ACCEPT)
RESET_NET_TIMER(scLBSignInWarn.signedOutTimer)
RESET_NET_TIMER(scLBSignInWarn.signInDelay)
iBS = 0
scLBSignInWarn.iFrameLastCalled = 0
SET_LOADING_ICON_INACTIVE()
RETURN TRUE
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
//ELSE
//display spinner
ENDIF
ENDIF
RETURN FALSE
ENDFUNC
PROC INIT_RANK_PREDICTION_COMMON_VALUES()
sclb_rank_predict.readResult.m_Id = sclb_rank_predict.currentResult.m_Id
sclb_rank_predict.readResult.m_NumColumns = sclb_rank_predict.currentResult.m_NumColumns
sclb_rank_predict.readResult.m_ColumnsBitSets = sclb_rank_predict.currentResult.m_ColumnsBitSets
sclb_rank_predict.combinedResult.m_Id = sclb_rank_predict.currentResult.m_Id
sclb_rank_predict.combinedResult.m_NumColumns = sclb_rank_predict.currentResult.m_NumColumns
sclb_rank_predict.combinedResult.m_ColumnsBitSets = sclb_rank_predict.currentResult.m_ColumnsBitSets
ENDPROC
#IF IS_DEBUG_BUILD
PROC PRINT_RANK_PREDICTION_STRUCT(LeaderboardPredictionRow &Row)
INT i
println("Leaderboard ID: ",Row.m_Id)
println("Num columns: ",Row.m_NumColumns)
REPEAT 32 i
println("Row.m_ColumnsBitSets BIT[",i,"] = ", IS_BIT_SET(Row.m_ColumnsBitSets,i))
ENDREPEAT
REPEAT MAX_COLUMNS i
println("Row.m_fColumnData[",i,"] = ", Row.m_fColumnData[i])
println("Row.m_iColumnData[",i,"] = ", Row.m_iColumnData[i])
ENDREPEAT
println("--END PRINT_RANK_PREDICTION_STRUCT---")
ENDPROC
#ENDIF
PROC FIX_PREDICTED_RATIO_VALUES_AS_NEEDED(INT iLeaderboardID,LeaderboardPredictionRow &combinedResult)
FLOAT fDivisor
//Special Cases
IF iLeaderboardID = ENUM_TO_INT(LEADERBOARD_MINI_GAMES_DARTS)
IF combinedResult.m_fColumnData[0] >= HIGHEST_INT
fDivisor = TO_FLOAT(combinedResult.m_iColumnData[5])
IF fDivisor <= 0
fDivisor = 1
ENDIF
combinedResult.m_fColumnData[0] = TO_FLOAT(combinedResult.m_iColumnData[7])/fDivisor
ENDIF
ENDIF
ENDPROC
FUNC BOOL SHOULD_RANK_PREDICTION_SKIP_MERGE_IS_NO_PREVIOUS_DATA(INT iLeaderboardID)
SWITCH INT_TO_ENUM(LEADERBOARDS_ENUM, iLeaderboardID)
CASE LEADERBOARD_MINI_GAMES_RACES
CASE LEADERBOARD_MINI_GAMES_FLIGHT_SCHOOL_BY_TIME
CASE LEADERBOARD_FREEMODE_GTA_RACES
CASE LEADERBOARD_FREEMODE_GTA_RACES_LAPS
CASE LEADERBOARD_FREEMODE_RACES
CASE LEADERBOARD_FREEMODE_RACES_LAPS
CASE LEADERBOARD_FREEMODE_MISSIONS_BY_TIME
CASE LEADERBOARD_FREEMODE_RALLY
CASE LEADERBOARD_FREEMODE_RALLY_LAPS
CASE LEADERBOARD_FREEMODE_ON_FOOT_RACE
CASE LEADERBOARD_FREEMODE_ON_FOOT_RACE_LAPS
CASE LEADERBOARD_FREEMODE_BASEJUMPS
CASE LEADERBOARD_MINI_GAMES_TRIATHLON
CASE LEADERBOARD_MINI_GAMES_HUNTING
CASE LEADERBOARD_MINI_GAMES_GOLF
CASE LEADERBOARD_FREEMODE_NON_CONTACT_RACES
CASE LEADERBOARD_FREEMODE_NON_CONTACT_RACES_OVERALL
CASE LEADERBOARD_FLIGHT_SCHOOL_CHASE_PARACHUTE
CASE LEADERBOARD_FLIGHT_SCHOOL_CITY_LANDING
CASE LEADERBOARD_FLIGHT_SCHOOL_COLLECT_FLAGS
CASE LEADERBOARD_FLIGHT_SCHOOL_ENGINE_FAILURE
CASE LEADERBOARD_FLIGHT_SCHOOL_FOLLOW_LEADER
CASE LEADERBOARD_FLIGHT_SCHOOL_FORMATION_FLIGHT
CASE LEADERBOARD_FLIGHT_SCHOOL_GROUND_LEVEL
CASE LEADERBOARD_FLIGHT_SCHOOL_MOVING_LANDING
CASE LEADERBOARD_FLIGHT_SCHOOL_OUTSIDE_LOOP
CASE LEADERBOARD_FLIGHT_SCHOOL_SHOOTING_RANGE
RETURN TRUE
BREAK
ENDSWITCH
IF iLeaderboardID >= ENUM_TO_INT(LEADERBOARD_FREEMODE_NON_CONTACT_RACES_1_LAPS)
AND iLeaderboardID <= ENUM_TO_INT(LEADERBOARD_FREEMODE_ELO_NON_CONTACT_RACES_OVERALL_SEASON50)
RETURN TRUE
ENDIF
RETURN FALSE
ENDFUNC
FUNC BOOL SHOULD_RANK_PREDICTION_SKIP_READ_COLUMN(INT iLeaderboardID, INT iCol)
IF LEADERBOARDS_GET_COLUMN_ID(iLeaderboardID,LEADERBOARD2_TYPE_GROUP,iCol) = ENUM_TO_INT(LB_INPUT_COL_MATCH_ID)
RETURN TRUE
ENDIF
SWITCH INT_TO_ENUM(LEADERBOARDS_ENUM, iLeaderboardID)
CASE LEADERBOARD_MINI_GAMES_MP_SRANGE
IF iCol = 5
RETURN TRUE
ENDIF
BREAK
CASE LEADERBOARD_FREEMODE_MISSIONS_BY_BEST_SCORE
IF iCol = 4
RETURN TRUE
ENDIF
BREAK
CASE LEADERBOARD_FREEMODE_HEIST_MISSION
IF iCol = 5
RETURN TRUE
ENDIF
BREAK
ENDSWITCH
RETURN FALSE
ENDFUNC
FUNC BOOL GET_RANK_PREDICTION_DETAILS(SC_LEADERBOARD_CONTROL_STRUCT& scLB_control)
//Leaderboard2ReadData lbReadData
//Leaderboard2ReadData emptyData
//LeaderboardRowData tempRowData[1]
LeaderboardRowData initRowData
LeaderboardReadInfo readInfo
LeaderboardPredictionRow emptyRow
GAMER_HANDLE gamerHandle
IF IS_SC_LEADERBOARD_A_RALLY(scLB_control.ReadDataStruct.m_LeaderboardId)
gamerHandle = sclb_rank_predict.driverHandle
ELSE
gamerHandle = GET_GAMER_HANDLE_PLAYER(PLAYER_ID())
ENDIF
INT i
println("sclb_rank_predict.currentResult.m_Id = ", sclb_rank_predict.currentResult.m_Id)
SWITCH sclb_rank_predict.iReadStage
CASE 0
IF START_SC_LEADERBOARD_READ_BY_HANDLE(scLB_control.iTempLoadStage,scLB_control.bTempReadResult,scLB_control.ReadDataStruct,gamerHandle)
println("GET_RANK_PREDICTION_DETAILS: Called by ", GET_THIS_SCRIPT_NAME())
// #IF IS_DEBUG_BUILD
// println("GET_RANK_PREDICTION_DETAILS: LEADERBOARD ID = ", scLB_control.ReadDataStruct.m_LeaderboardId)
// #ENDIF
FILL_READ_INFO_STRUCT(readInfo,scLB_control.ReadDataStruct)
sclb_rank_predict.currentResult.m_Id = scLB_control.ReadDataStruct.m_LeaderboardId
PRINTLN("GET_RANK_PREDICTION_DETAILS: sclb_rank_predict.currentResult.m_Id = ",sclb_rank_predict.currentResult.m_Id)
sclb_rank_predict.currentResult.m_NumColumns = LEADERBOARDS_GET_NUMBER_OF_COLUMNS(scLB_control.ReadDataStruct.m_LeaderboardId,LEADERBOARD_TYPE_GROUP)
REPEAT sclb_rank_predict.currentResult.m_NumColumns i
IF NOT SHOULD_RANK_PREDICTION_SKIP_READ_COLUMN(scLB_control.ReadDataStruct.m_LeaderboardId,i)
IF IS_LEADERBOARD_COLUMN_INT(scLB_control.ReadDataStruct.m_LeaderboardId,LEADERBOARD2_TYPE_GROUP,i)
SET_BIT(sclb_rank_predict.currentResult.m_ColumnsBitSets,i)
ELSE
CLEAR_BIT(sclb_rank_predict.currentResult.m_ColumnsBitSets,i)
ENDIF
ENDIF
ENDREPEAT
PRINTLN("GET_RANK_PREDICTION_DETAILS: m_ColumnsBitSets = ",sclb_rank_predict.currentResult.m_ColumnsBitSets)
IF scLB_control.bTempReadResult
AND LEADERBOARDS2_READ_GET_ROW_DATA_START(readInfo)
IF readInfo.m_ReturnedRows > 0
LEADERBOARDS2_READ_GET_ROW_DATA_INFO(0, initRowData)
println("GET_RANK_PREDICTION_DETAILS: ",sclb_rank_predict.currentResult.m_NumColumns)
//IF ARE_STRINGS_EQUAL(initRowData.m_GamerName, "")
IF initRowData.m_NumColumnValues != sclb_rank_predict.currentResult.m_NumColumns
#IF IS_DEBUG_BUILD
println("GET_RANK_PREDICTION_DETAILS: sclb_rank_predict.currentResult.m_NumColumns = ",sclb_rank_predict.currentResult.m_NumColumns," initRowData.m_NumColumnValues = ",initRowData.m_NumColumnValues)
//SCRIPT_ASSERT("GET_RANK_PREDICTION_DETAILS: columns returned != num columns setup")
#ENDIF
ENDIF
IF NOT IS_GAMER_HANDLE_VALID(initRowData.m_GamerHandle)
scLB_rank_predict.bNoPreviousValue = TRUE
println("GET_RANK_PREDICTION_DETAILS -- moving to stage 1 no data for local player ")
ELSE
REPEAT sclb_rank_predict.currentResult.m_NumColumns i
IF NOT SHOULD_RANK_PREDICTION_SKIP_READ_COLUMN(scLB_control.ReadDataStruct.m_LeaderboardId,i)
println("LEADERBOARDS2_READ_GET_ROW_DATA_INFO: Row: ", 0, " Column: ",i)
IF IS_LEADERBOARD_COLUMN_INT(scLB_control.ReadDataStruct.m_LeaderboardId,LEADERBOARD2_TYPE_GROUP,i)
scLB_rank_predict.readResult.m_iColumnData[i] = LEADERBOARDS2_READ_GET_ROW_DATA_INT(0, i)
IF scLB_rank_predict.readResult.m_iColumnData[i] = -1
IF i > initRowData.m_NumColumnValues
println("GET_RANK_PREDICTION_DETAILS: hit failsafe setting column (INT): ",i,"to 0")
scLB_rank_predict.readResult.m_iColumnData[i] = 0
ENDIF
ENDIF
#IF IS_DEBUG_BUILD
DEBUG_PRINT_SC_LB_RETURNED_VALUES("GET_RANK_PREDICTION_DETAILS","Current Run",0,i,
scLB_rank_predict.readResult.m_iColumnData[i],0.0,FALSE,TRUE )
#ENDIF
ELSE
scLB_rank_predict.readResult.m_fColumnData[i] = LEADERBOARDS2_READ_GET_ROW_DATA_FLOAT(0, i)
IF scLB_rank_predict.readResult.m_fColumnData[i] = -1.0
IF i > initRowData.m_NumColumnValues
println("GET_RANK_PREDICTION_DETAILS: hit failsafe setting column (FLOAT): ",i,"to 0")
scLB_rank_predict.readResult.m_fColumnData[i] = 0
ENDIF
ENDIF
#IF IS_DEBUG_BUILD
DEBUG_PRINT_SC_LB_RETURNED_VALUES("GET_RANK_PREDICTION_DETAILS","Current Run",0,i,
0,scLB_rank_predict.readResult.m_fColumnData[i],TRUE,TRUE )
#ENDIF
ENDIF
ENDIF
ENDREPEAT
println("GET_RANK_PREDICTION_DETAILS -- moving to stage 1 got data for local player ")
ENDIF
ELSE
scLB_rank_predict.bNoPreviousValue = TRUE
println("GET_RANK_PREDICTION_DETAILS -- moving to stage 1 no data for local player ")
ENDIF
LEADERBOARDS2_READ_GET_ROW_DATA_END( )
ELSE
scLB_rank_predict.bNoPreviousValue = TRUE
println("GET_RANK_PREDICTION_DETAILS -- moving to stage 1 no data for local player ")
ENDIF
sclb_rank_predict.iReadStage = 1
println("Ending read in READ_BY_HANDLE in ", GET_THIS_SCRIPT_NAME() )
END_LEADERBOARD_READ(scLB_control.iTempLoadStage,scLB_control.bTempReadResult,scLB_control.ReadDataStruct)
ENDIF
BREAK
CASE 1
//Wait for the rank prediction write
scLB_rank_predict.bFinishedRead = TRUE
IF scLB_rank_predict.bFinishedWrite
INIT_RANK_PREDICTION_COMMON_VALUES()
#IF IS_DEBUG_BUILD
println("GET_RANK_PREDICTION_DETAILS finished write for current run ", GET_THIS_SCRIPT_NAME() )
println("READ RESULT" )
PRINT_RANK_PREDICTION_STRUCT(scLB_rank_predict.readResult)
println("CURRENT RUN" )
PRINT_RANK_PREDICTION_STRUCT(scLB_rank_predict.currentResult)
#ENDIF
IF scLB_rank_predict.bNoPreviousValue
IF SHOULD_RANK_PREDICTION_SKIP_MERGE_IS_NO_PREVIOUS_DATA(scLB_control.ReadDataStruct.m_LeaderboardId)
sclb_rank_predict.iReadStage = 3
println("GET_RANK_PREDICTION_DETAILS -- moving to stage 3 no previous run data SHOULD_RANK_PREDICTION_SKIP_MERGE_IS_NO_PREVIOUS_DATA = TRUE")
ELSE
sclb_rank_predict.iReadStage = 2
println("GET_RANK_PREDICTION_DETAILS -- moving to stage 2 no previous run data ")
ENDIF
ELSE
sclb_rank_predict.iReadStage = 2
println("GET_RANK_PREDICTION_DETAILS -- moving to stage 2 previous run data ")
ENDIF
ENDIF
BREAK
CASE 2
LEADERBOARDS2_READ_RANK_PREDICTION(scLB_rank_predict.readResult,scLB_rank_predict.currentResult,scLB_rank_predict.combinedResult)
//println("GET_RANK_PREDICTION_DETAILS -- combined the result moving to stage 4")
//FIX_PREDICTED_RATIO_VALUES_AS_NEEDED(sclb_rank_predict.currentResult.m_Id,scLB_rank_predict.readResult)
sclb_rank_predict.iReadStage = 4
#IF IS_DEBUG_BUILD
println("GET_RANK_PREDICTION_DETAILS COMBINED values " )
PRINT_RANK_PREDICTION_STRUCT(scLB_rank_predict.combinedResult)
#ENDIF
scLB_control.iTempLoadStage = 0
scLB_control.bTempReadResult = FALSE
BREAK
CASE 3
scLB_rank_predict.combinedResult = scLB_rank_predict.currentResult
//println("GET_RANK_PREDICTION_DETAILS -- combined the result moving to stage 4 (NO PREVIOUS DATA!)")
sclb_rank_predict.iReadStage = 4
#IF IS_DEBUG_BUILD
println("GET_RANK_PREDICTION_DETAILS COMBINED values (NO PREVIOUS DATA!)" )
PRINT_RANK_PREDICTION_STRUCT(scLB_rank_predict.combinedResult)
#ENDIF
scLB_control.iTempLoadStage = 0
scLB_control.bTempReadResult = FALSE
BREAK
CASE 4
IF NETWORK_IS_GAME_IN_PROGRESS()
AND HAS_UGC_GLOBAL_BLOCK_LOADED()
IF IS_PLAYLIST_SETTING_CHALLENGE_TIME()
sclb_rank_predict.iReadStage = 99
println("GET_RANK_PREDICTION_DETAILS: IS_PLAYLIST_SETTING_CHALLENGE_TIME: retrieving LB data" )
ELSE
println("GET_RANK_PREDICTION_DETAILS: NOT IS_PLAYLIST_SETTING_CHALLENGE_TIME() proceeding normally" )
sclb_rank_predict.iReadStage = 999
RETURN TRUE
ENDIF
ELSE
println("GET_RANK_PREDICTION_DETAILS: NOT NETWORK_IS_GAME_IN_PROGRESS() proceeding normally" )
sclb_rank_predict.iReadStage = 999
RETURN TRUE
ENDIF
BREAK
CASE 99
IF SHOULD_RANK_PREDICTION_SKIP_MERGE_IS_NO_PREVIOUS_DATA(scLB_control.ReadDataStruct.m_LeaderboardId)
scLB_rank_predict.DifficultyCombinedResult = scLB_rank_predict.currentResult
println("GET_RANK_PREDICTION_DETAILS -- combined the result moving to stage 4 (NOT COMBINING DATA!)")
ELSE
emptyRow.m_Id = scLB_rank_predict.currentResult.m_Id
emptyRow.m_NumColumns = scLB_rank_predict.currentResult.m_NumColumns
emptyRow.m_ColumnsBitSets = scLB_rank_predict.currentResult.m_ColumnsBitSets
LEADERBOARDS2_READ_RANK_PREDICTION(emptyRow,scLB_rank_predict.currentResult,scLB_rank_predict.DifficultyCombinedResult)
println("GET_RANK_PREDICTION_DETAILS -- combined the result moving to stage 100")
ENDIF
sclb_rank_predict.iReadStage = 100
#IF IS_DEBUG_BUILD
println("GET_RANK_PREDICTION_DETAILS COMBINED values " )
PRINT_RANK_PREDICTION_STRUCT(scLB_rank_predict.combinedResult)
#ENDIF
scLB_control.iTempLoadStage = 0
scLB_control.bTempReadResult = FALSE
BREAK
CASE 100
IF START_SC_LEADERBOARD_READ_BY_RADIUS(scLB_control.iTempLoadStage,scLB_control.bTempReadResult,scLB_control.ReadDataStruct,1,gamerHandle,TRUE,
TRUE,scLB_rank_predict.DifficultyCombinedResult.m_iColumnData[0],scLB_rank_predict.DifficultyCombinedResult.m_fColumnData[0])
println("GET_RANK_PREDICTION_DETAILS: Called by ", GET_THIS_SCRIPT_NAME())
#IF IS_DEBUG_BUILD
println("GET_RANK_PREDICTION_DETAILS: LEADERBOARD ID = ", scLB_control.ReadDataStruct.m_LeaderboardId)
#ENDIF
FILL_READ_INFO_STRUCT(readInfo,scLB_control.ReadDataStruct)
IF scLB_control.bTempReadResult
AND LEADERBOARDS2_READ_GET_ROW_DATA_START(readInfo)
IF readInfo.m_ReturnedRows > 0
LEADERBOARDS2_READ_GET_ROW_DATA_INFO(0, initRowData)
IF ARE_STRINGS_EQUAL(initRowData.m_GamerName, "")
g_sCHALLENGE_DIFFICULTY.iMyRankPrediction = -1
println("GET_RANK_PREDICTION_DETAILS -- moving to stage 1 no data for local player g_sCHALLENGE_DIFFICULTY.iMyRankPrediction = ",g_sCHALLENGE_DIFFICULTY.iMyRankPrediction)
ELSE
g_sCHALLENGE_DIFFICULTY.iMyRankPrediction = initRowData.m_Rank
println("GET_RANK_PREDICTION_DETAILS -- moving to stage 1 got data for local player g_sCHALLENGE_DIFFICULTY.iMyRankPrediction = ",g_sCHALLENGE_DIFFICULTY.iMyRankPrediction)
ENDIF
ELSE
g_sCHALLENGE_DIFFICULTY.iMyRankPrediction = -1
println("GET_RANK_PREDICTION_DETAILS -- moving to stage 1 no data for local player g_sCHALLENGE_DIFFICULTY.iMyRankPrediction = ",g_sCHALLENGE_DIFFICULTY.iMyRankPrediction)
ENDIF
LEADERBOARDS2_READ_GET_ROW_DATA_END( )
ELSE
g_sCHALLENGE_DIFFICULTY.iMyRankPrediction = -1
println("GET_RANK_PREDICTION_DETAILS -- moving to stage 1 no data for local player g_sCHALLENGE_DIFFICULTY.iMyRankPrediction = ",g_sCHALLENGE_DIFFICULTY.iMyRankPrediction)
ENDIF
sclb_rank_predict.iReadStage = 999
println("Ending read in READ_BY_RADIUS in ", GET_THIS_SCRIPT_NAME() )
END_LEADERBOARD_READ(scLB_control.iTempLoadStage,scLB_control.bTempReadResult,scLB_control.ReadDataStruct)
ENDIF
BREAK
CASE 999
RETURN TRUE
BREAK
ENDSWITCH
RETURN FALSE
ENDFUNC
FUNC STORED_ELO_ENUM GET_STORED_ELO_ENUM_FOR_LEADERBOARD(LEADERBOARDS_ENUM leaderboard)
SWITCH leaderboard
CASE LEADERBOARD_FREEMODE_ELO_DEATHMATCH_OVERALL RETURN SCLB_ELO_DM
CASE LEADERBOARD_FREEMODE_ELO_TEAM_DEATHMATCH_OVERALL RETURN SCLB_ELO_TEAM_DM
CASE LEADERBOARD_FREEMODE_ELO_VEHICLE_DEATHMATCH_OVERALL RETURN SCLB_ELO_VEH_DM
CASE LEADERBOARD_FREEMODE_ELO_BASEJUMPS_OVERALL RETURN SCLB_ELO_BASEJ
CASE LEADERBOARD_FREEMODE_ELO_RACES_OVERALL RETURN SCLB_ELO_RACE
CASE LEADERBOARD_FREEMODE_ELO_GTA_RACES_OVERALL RETURN SCLB_ELO_GTA_RACE
CASE LEADERBOARD_FREEMODE_ELO_RALLY_OVERALL RETURN SCLB_ELO_RALLY
CASE LEADERBOARD_FREEMODE_ELO_RALLY_CODRIVER_OVERALL RETURN SCLB_ELO_RALLY_CODRIVER
CASE LEADERBOARD_FREEMODE_ELO_ON_FOOT_RACE_OVERALL RETURN SCLB_ELO_ONFOOT_RACE
ENDSWITCH
IF ENUM_TO_INT(leaderboard) >= ENUM_TO_INT(LEADERBOARD_FREEMODE_ELO_NON_CONTACT_RACES_OVERALL_SEASON1)
AND ENUM_TO_INT(leaderboard) <= ENUM_TO_INT(LEADERBOARD_FREEMODE_ELO_NON_CONTACT_RACES_OVERALL_SEASON50)
RETURN SCLB_ELO_NONCONTACT_RACE
ENDIF
RETURN SCLB_ELO_INVALID
ENDFUNC
PROC CLEAR_GET_PLAYER_ELO_FOR_MODE_FLAGS(INT& iReadStage, INT& iLoadStage,BOOL& bSuccessful)
iReadStage = 0
iLoadStage = 0
bSuccessful = FALSE
ENDPROC
FUNC BOOL UPDATE_STORED_ELO(LEADERBOARDS_ENUM leaderboard,INT &iELOUpdate)
STORED_ELO_ENUM eloEnum
eloEnum = GET_STORED_ELO_ENUM_FOR_LEADERBOARD(leaderboard)
IF NOT storedELOData.bReadFinished[eloEnum]
#IF IS_DEBUG_BUILD
println("UPDATE_STORED_ELO: ELO READ NOT FINSIHED!(",iELOUpdate,") for board ",leaderboard)
SCRIPT_ASSERT("UPDATE_STORED_ELO: player has attempted to update elo but read not finished. Not storing!")
#ENDIF
RETURN FALSE
ELIF storedELOData.bReadFailed[eloEnum]
#IF IS_DEBUG_BUILD
println("UPDATE_STORED_ELO: ELO READ FAILED!(",iELOUpdate,") for board ",leaderboard)
SCRIPT_ASSERT("UPDATE_STORED_ELO: player has attempted to update elo but read failed. Not storing!")
#ENDIF
RETURN FALSE
ELIF storedELOData.iLastReadSeason[eloEnum] != g_sMPTunables.iEloSeason
#IF IS_DEBUG_BUILD
println("UPDATE_STORED_ELO: for board ",leaderboard,"storedELOData.iLastReadSeason[",eloEnum,"] = ",storedELOData.iLastReadSeason[eloEnum]," and g_sMPTunables.iEloSeason = ",g_sMPTunables.iEloSeason)
SCRIPT_ASSERT("UPDATE_STORED_ELO: player has attempted to update elo but season has changed. Not storing!")
#ENDIF
RETURN FALSE
// ELIF storedELOData.bIsELO_ActuallyZero[eloEnum] = TRUE
// println("UPDATE_STORED_ELO: ELO WAS ZERO BEFORE UPDATE")
// println("UPDATE_STORED_ELO: ELO WAS UPDATED BY MORE THAN 1000!! (",iLocalUpdate,") for board ",leaderboard)
// storedELOData.iELO[eloEnum] = iLocalUpdate
// RETURN TRUE
ELSE
storedELOData.iELO[eloEnum] += iELOUpdate
println("UPDATE_STORED_ELO: LB ",leaderboard," stored ELO now = ",storedELOData.iELO[eloEnum])
RETURN TRUE
ENDIF
RETURN FALSE
ENDFUNC
FUNC BOOL GET_PLAYER_ELO_FOR_MODE(LEADERBOARDS_ENUM leaderboard, INT& iReadStage, INT& iLoadStage,BOOL& bSuccessful, INT &iCurrentELO)
STORED_ELO_ENUM eloEnum
eloEnum = GET_STORED_ELO_ENUM_FOR_LEADERBOARD(leaderboard)
//BOOL bNoData
IF eloEnum = SCLB_ELO_INVALID
#IF IS_DEBUG_BUILD
println("GET_PLAYER_ELO_FOR_MODE: trying to get elo for invalid leaderboard! Leaderboard = ", leaderboard)
SCRIPT_ASSERT("GET_PLAYER_ELO_FOR_MODE: trying to get elo for invalid leaderboard! See Conor!")
#ENDIF
ELSE
IF NOT IS_THIS_A_RSTAR_ACTIVITY()
storedELOData.bReadFailed[eloEnum] = TRUE
storedELOData.bReadFinished[eloEnum] = FALSE
println("GET_PLAYER_ELO_FOR_MODE: NOT IS_THIS_A_RSTAR_ACTIVITY EXITING!")
RETURN TRUE
ENDIF
IF NOT storedELOData.bReadFailed[eloEnum] AND storedELOData.bReadFinished[eloEnum]
AND storedELOData.iLastReadSeason[eloEnum] = g_sMPTunables.iEloSeason
iCurrentELO = storedELOData.iELO[eloEnum]
println("GET_PLAYER_ELO_FOR_MODE: player has stored ELO value for leaderboard #",ENUM_TO_INT(leaderboard)," returning that value: ",iCurrentELO)
RETURN TRUE
ELSE
Leaderboard2ReadData lbReadData
Leaderboard2ReadData emptyData
LeaderboardRowData initRowData
LeaderboardReadInfo readInfo
GAMER_HANDLE gamerHandle
gamerHandle = GET_GAMER_HANDLE_PLAYER(PLAYER_ID())
lbReadData.m_LeaderboardId = ENUM_TO_INT(leaderboard)
IF lbReadData.m_LeaderboardId >= ENUM_TO_INT(LEADERBOARD_FREEMODE_ELO_NON_CONTACT_RACES_OVERALL_SEASON1)
AND lbReadData.m_LeaderboardId <= ENUM_TO_INT(LEADERBOARD_FREEMODE_ELO_NON_CONTACT_RACES_OVERALL_SEASON50)
lbReadData.m_Type = LEADERBOARD2_TYPE_PLAYER
lbReadData.m_GroupSelector.m_NumGroups = 0
ELSE
lbReadData.m_Type = LEADERBOARD2_TYPE_GROUP_MEMBER
lbReadData.m_GroupSelector.m_NumGroups = 1
lbReadData.m_GroupSelector.m_Group[0].m_Category = "SeasonId"
lbReadData.m_GroupSelector.m_Group[0].m_Id = ""
lbReadData.m_GroupSelector.m_Group[0].m_Id += g_sMPTunables.iEloSeason
ENDIF
SWITCH iReadStage
CASE 0
println("GET_PLAYER_ELO_FOR_MODE: getting ELO for leaderboardd #",ENUM_TO_INT(leaderboard)," season: ",lbReadData.m_GroupSelector.m_Group[0].m_Id)
IF START_SC_LEADERBOARD_READ_BY_HANDLE(iLoadStage,bSuccessful,lbReadData,gamerHandle)
#IF IS_DEBUG_BUILD
println("GET_PLAYER_ELO_FOR_MODE: LEADERBOARD ID = ", lbReadData.m_LeaderboardId," groupHandle = ",lbReadData.m_GroupSelector.m_Group[0].m_Id)
#ENDIF
FILL_READ_INFO_STRUCT(readInfo,lbReadData)
IF bSuccessful
AND LEADERBOARDS2_READ_GET_ROW_DATA_START(readInfo)
IF readInfo.m_ReturnedRows > 0
LEADERBOARDS2_READ_GET_ROW_DATA_INFO(0, initRowData)
IF ARE_STRINGS_EQUAL(initRowData.m_GamerName, "")
println("GET_PLAYER_ELO_FOR_MODE:-- moving to stage 1 no data for local player -A ")
iReadStage = 1
iCurrentELO = 0
ELSE
iCurrentELO = LEADERBOARDS2_READ_GET_ROW_DATA_INT(0, 0)
println("GET_PLAYER_ELO_FOR_MODE: player ", initRowData.m_GamerName," ELO = ",iCurrentELO)
iReadStage = 1
ENDIF
ELSE
println("GET_PLAYER_ELO_FOR_MODE: -- moving to stage 1 no data for local player - B")
iReadStage = 1
iCurrentELO = 0
ENDIF
storedELOData.iELO[eloEnum] = iCurrentELO
storedELOData.iLastReadSeason[eloEnum] = g_sMPTunables.iEloSeason
storedELOData.bReadFailed[eloEnum] = FALSE
LEADERBOARDS2_READ_GET_ROW_DATA_END( )
ELSE
println("GET_PLAYER_ELO_FOR_MODE: -- moving to stage 1 no data for local player (READ FAILED) ")
iReadStage = 1
//IF storedELOData.iELO[eloEnum] = 0
storedELOData.bReadFailed[eloEnum] = TRUE
ENDIF
storedELOData.bReadFinished[eloEnum] = TRUE
println("Ending read in READ_BY_HANDLE in ", GET_THIS_SCRIPT_NAME() )
END_LEADERBOARD_READ(iLoadStage,bSuccessful,lbReadData)
lbReadData = emptyData
ENDIF
BREAK
CASE 1
RETURN TRUE
BREAK
ENDSWITCH
ENDIF
ENDIF
RETURN FALSE
ENDFUNC
/// PURPOSE:
/// To get the global best for a flight school lesson
/// PARAMS:
/// iReadStage - this is just needs to be an int defined in the script that will retain its value over more than a frame (i.e. dont just define it before calling this)
/// iLoadStage - this is just needs to be an int defined in the script that will retain its value over more than a frame (i.e. dont just define it before calling this)
/// bSuccessful - this is just needs to be an bool defined in the script that will retain its value over more than a frame (i.e. dont just define it before calling this)
/// iLesson - the number indicating the lession IS
/// fGlobalBest - when function returns true this will be the global best
/// bGotResultFromLB - true if read was successful. Read may not be successful
/// RETURNS:
/// True when it's finished. Note this should always return true even if it finds no records and the values remain 0.
FUNC BOOL GET_FLIGHT_SCHOOL_LESSON_GLOBAL_BEST(INT& iReadStage, INT& iLoadStage,BOOL& bSuccessful, INT iLesson,FLOAT& fGlobalBest, BOOL &bGotResultFromLB)
Leaderboard2ReadData lbReadData
Leaderboard2ReadData emptyData
//LeaderboardRowData tempRowData[1]
LeaderboardRowData initRowData
LeaderboardReadInfo readInfo
BOOL bInt = FALSE
SWITCH INT_TO_ENUM(PILOT_SCHOOL_DLC_CLASSES_ENUM_NEW,iLesson)
CASE PSCD_DLC_OutsideLoop
lbReadData.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_FLIGHT_SCHOOL_OUTSIDE_LOOP)
BREAK
CASE PSCD_DLC_FollowLeader
lbReadData.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_FLIGHT_SCHOOL_FOLLOW_LEADER)
BREAK
CASE PSCD_DLC_VehicleLanding
lbReadData.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_FLIGHT_SCHOOL_MOVING_LANDING)
BREAK
CASE PSCD_DLC_CollectFlags
lbReadData.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_FLIGHT_SCHOOL_COLLECT_FLAGS)
BREAK
CASE PSCD_DLC_Engine_failure
lbReadData.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_FLIGHT_SCHOOL_ENGINE_FAILURE)
BREAK
CASE PSCD_DLC_ChaseParachute
lbReadData.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_FLIGHT_SCHOOL_CHASE_PARACHUTE)
BREAK
CASE PSCD_DLC_CityLanding
lbReadData.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_FLIGHT_SCHOOL_CITY_LANDING)
BREAK
CASE PSCD_DLC_FlyLow
lbReadData.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_FLIGHT_SCHOOL_GROUND_LEVEL)
BREAK
CASE PSCD_DLC_ShootingRange
lbReadData.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_FLIGHT_SCHOOL_SHOOTING_RANGE)
BREAK
CASE PSCD_DLC_Formation
lbReadData.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_FLIGHT_SCHOOL_FORMATION_FLIGHT)
BREAK
DEFAULT
PRINTLN("GET_FLIGHT_SCHOOL_LESSON_GLOBAL_BEST- passed in invalid lesson ID! ID: ",iLesson)
SCRIPT_ASSERT("GET_FLIGHT_SCHOOL_LESSON_GLOBAL_BEST- passed in invalid lesson ID!")
BREAK
ENDSWITCH
lbReadData.m_Type = LEADERBOARD2_TYPE_PLAYER
lbReadData.m_GroupSelector.m_NumGroups = 0
lbReadData.m_GroupSelector.m_Group[0].m_Category = ""
lbReadData.m_GroupSelector.m_Group[0].m_Id = ""
SWITCH iReadStage
CASE 0
IF START_SC_LEADERBOARD_READ_BY_RANK(iLoadStage,bSuccessful,lbReadData,1,1)
#IF IS_DEBUG_BUILD
println("GET_FLIGHT_SCHOOL_LESSON_GLOBAL_BEST: LEADERBOARD ID = ", lbReadData.m_LeaderboardId)
#ENDIF
FILL_READ_INFO_STRUCT(readInfo,lbReadData)
IF bSuccessful
AND LEADERBOARDS2_READ_GET_ROW_DATA_START(readInfo)
IF readInfo.m_ReturnedRows > 0
LEADERBOARDS2_READ_GET_ROW_DATA_INFO(0, initRowData)
IF NOT IS_GAMER_HANDLE_VALID(initRowData.m_GamerHandle)
println("GET_FLIGHT_SCHOOL_LESSON_GLOBAL_BEST -- no global data C")
ELSE
IF bInt
fGlobalBest = TO_FLOAT(LEADERBOARDS2_READ_GET_ROW_DATA_INT(0, 0))
ELSE
fGlobalBest = LEADERBOARDS2_READ_GET_ROW_DATA_FLOAT(0, 0)
ENDIF
println("Global best is for player name: ", initRowData.m_GamerName, " is - ",fGlobalBest)
ENDIF
ELSE
println("GET_FLIGHT_SCHOOL_LESSON_GLOBAL_BEST -- no global data A ")
ENDIF
LEADERBOARDS2_READ_GET_ROW_DATA_END()
ELSE
println("GET_FLIGHT_SCHOOL_LESSON_GLOBAL_BEST -- no global data B ")
ENDIF
bGotResultFromLB = bSuccessful
iReadStage = 2
END_LEADERBOARD_READ(iLoadStage,bSuccessful,lbReadData)
lbReadData = emptyData
ENDIF
BREAK
CASE 2
RETURN TRUE
BREAK
ENDSWITCH
RETURN FALSE
ENDFUNC
PROC CLEANUP_FLIGHT_SCHOOL_LESSON_GLOBAL_BEST(INT iLesson,INT& iReadStage, INT& iLoadStage, BOOL& bResult)
IF iLoadStage != 0
Leaderboard2ReadData lbReadData
SWITCH INT_TO_ENUM(PILOT_SCHOOL_DLC_CLASSES_ENUM_NEW,iLesson)
CASE PSCD_DLC_OutsideLoop
lbReadData.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_FLIGHT_SCHOOL_OUTSIDE_LOOP)
BREAK
CASE PSCD_DLC_FollowLeader
lbReadData.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_FLIGHT_SCHOOL_FOLLOW_LEADER)
BREAK
CASE PSCD_DLC_VehicleLanding
lbReadData.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_FLIGHT_SCHOOL_MOVING_LANDING)
BREAK
CASE PSCD_DLC_CollectFlags
lbReadData.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_FLIGHT_SCHOOL_COLLECT_FLAGS)
BREAK
CASE PSCD_DLC_Engine_failure
lbReadData.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_FLIGHT_SCHOOL_ENGINE_FAILURE)
BREAK
CASE PSCD_DLC_ChaseParachute
lbReadData.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_FLIGHT_SCHOOL_CHASE_PARACHUTE)
BREAK
CASE PSCD_DLC_CityLanding
lbReadData.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_FLIGHT_SCHOOL_CITY_LANDING)
BREAK
CASE PSCD_DLC_FlyLow
lbReadData.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_FLIGHT_SCHOOL_GROUND_LEVEL)
BREAK
CASE PSCD_DLC_ShootingRange
lbReadData.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_FLIGHT_SCHOOL_SHOOTING_RANGE)
BREAK
CASE PSCD_DLC_Formation
lbReadData.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_FLIGHT_SCHOOL_FORMATION_FLIGHT)
BREAK
DEFAULT
PRINTLN("GET_FLIGHT_SCHOOL_LESSON_GLOBAL_BEST- passed in invalid lesson ID! ID: ",iLesson)
SCRIPT_ASSERT("GET_FLIGHT_SCHOOL_LESSON_GLOBAL_BEST- passed in invalid lesson ID!")
BREAK
ENDSWITCH
lbReadData.m_Type = LEADERBOARD2_TYPE_PLAYER
lbReadData.m_GroupSelector.m_NumGroups = 0
lbReadData.m_GroupSelector.m_Group[0].m_Category = ""
lbReadData.m_GroupSelector.m_Group[0].m_Id = ""
println("Ending read in CLEANUP_RACE_BEST_LAP_TIMES in ", GET_THIS_SCRIPT_NAME() )
END_LEADERBOARD_READ(iLoadStage,bResult, lbReadData)
ENDIF
iReadStage = 0
iLoadStage = 0
bResult = FALSE
PRINTLN("CLEANUP_FLIGHT_SCHOOL_LESSON_GLOBAL_BEST- Called")
ENDPROC
PROC CLEAR_LIMITED_EDITION_ITEM_LB_DETAILS(LIMITED_EDITION_ITEM_LB_DETAILS &itemDetails)
INT i
itemDetails.iTotalStage = 0
itemDetails.iReadStage = 0
itemDetails.bSuccessful = FALSE
REPEAT MAX_LIMITED_EDITION_ITEMS i
itemDetails.iID[i] = 0
itemDetails.iStockSold[i] = 0
itemDetails.iTotalStock[i] = 0
ENDREPEAT
ENDPROC
#IF IS_DEBUG_BUILD
PROC DEBUG_PRINT_LIMITED_EDITION_INFORMATION(LIMITED_EDITION_ITEM_LB_DETAILS &itemDetails)
println("READ- ",itemDetails.bSuccessful)
INT i
REPEAT MAX_LIMITED_EDITION_ITEMS i
println("itemDetails.iID[",i,"] = ",itemDetails.iID[i], "iStockSold = ",itemDetails.iStockSold[i], "iTotalStock = ",itemDetails.iTotalStock[i])
ENDREPEAT
println("----------------END DEBUG_PRINT_LIMITED_EDITION_INFORMATION------------------------")
ENDPROC
#ENDIF
FUNC INT GET_LIMITED_EDITION_ITEM_INDEX(TEXT_LABEL_31 &tl_31)
TEXT_LABEL_31 tempLabel
INT i = 0
REPEAT MAX_LIMITED_EDITION_ITEMS i
tempLabel = ""
tempLabel += g_sMPTunables.ilimitededitionitemid[i] //i
println("GET_LIMITED_EDITION_ITEM_INDEX: tl_31:",tl_31, " tempLabel: ",tempLabel)
IF ARE_STRINGS_EQUAL(tl_31,tempLabel)
println("GET_LIMITED_EDITION_ITEM_INDEX: ",tl_31, " at Index = ",i)
RETURN i
ENDIF
ENDREPEAT
#IF IS_DEBUG_BUILD
println("GET_LIMITED_EDITION_ITEM_INDEX: trying to get index of invalid item! Item ID = ",tl_31)
#ENDIF
RETURN -1
ENDFUNC
/// PURPOSE:
/// Returns the details about the limited edition items
/// PARAMS:
/// itemDetails - all the details you need as well as control for the leaderboard read
/// RETURNS:
/// TRUE when finished (this will always return true even if LB read fails
FUNC BOOL GET_LIMITED_EDITION_ITEMS(LIMITED_EDITION_ITEM_LB_DETAILS &itemDetails)
TEXT_LABEL_31 categoryNames[MAX_LIMITED_EDITION_ITEMS]
TEXT_LABEL_23 uniqueIdentifiers[MAX_LIMITED_EDITION_ITEMS]
INT iCategoriesToCheck
INT i
REPEAT MAX_LIMITED_EDITION_ITEMS i
itemDetails.iID[i] = g_sMPTunables.ilimitededitionitemid[i] //i
itemDetails.iStockSold[i] = 0
itemDetails.iTotalStock[i] = ROUND(g_sMPTunables.flimitededitiontunableamount[i]) //50
IF itemDetails.iTotalStock[i] != -1
AND g_sMPTunables.ilimitededitionitemid[i] != 0
categoryNames[iCategoriesToCheck] = "ItemId"
uniqueIdentifiers[iCategoriesToCheck] = ""
uniqueIdentifiers[iCategoriesToCheck] += g_sMPTunables.ilimitededitionitemid[i] //i
iCategoriesToCheck++
ENDIF
ENDREPEAT
LeaderboardRowData initRowData
LeaderboardReadInfo readInfo
Leaderboard2ReadData lbReadData
lbReadData.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_FREEMODE_LIMITED_EDITION)
lbReadData.m_Type = LEADERBOARD2_TYPE_GROUP
lbReadData.m_GroupSelector.m_NumGroups = 1
lbReadData.m_GroupSelector.m_Group[0].m_Category = ""
lbReadData.m_GroupSelector.m_Group[0].m_Id = ""
i = 0
GAMER_HANDLE noGamer[1]
LeaderboardClanIds clanIDs[1]
Leaderboard2GroupHandle groupHandle[MAX_LIMITED_EDITION_ITEMS]
REPEAT iCategoriesToCheck i
groupHandle[i].m_Group[0].m_Category = categoryNames[i]
groupHandle[i].m_Group[0].m_Id = uniqueIdentifiers[i]
groupHandle[i].m_NumGroups = 1
ENDREPEAT
INT iIndex
SWITCH itemDetails.iTotalStage
CASE 0
IF START_SC_LEADERBOARD_READ_BY_ROW(itemDetails.iReadStage,itemDetails.bSuccessful,lbReadData,
noGamer,0,
clanIDs,0,
groupHandle, iCategoriesToCheck)
//println("GET_LIMITED_EDITION_ITEMS: Called by ", GET_THIS_SCRIPT_NAME())
#IF IS_DEBUG_BUILD
println("GET_LIMITED_EDITION_ITEMS LEADERBOARD ID = ", lbReadData.m_LeaderboardId)
#ENDIF
FILL_READ_INFO_STRUCT(readInfo,lbReadData)
IF itemDetails.bSuccessful
AND LEADERBOARDS2_READ_GET_ROW_DATA_START(readInfo)
IF readInfo.m_ReturnedRows > 0
i = 0
iIndex = 0
REPEAT readInfo.m_ReturnedRows i
LEADERBOARDS2_READ_GET_ROW_DATA_INFO(i, initRowData)
iIndex = GET_LIMITED_EDITION_ITEM_INDEX(initRowData.m_GroupSelector.m_Group[0].m_Id)
IF iIndex >= 0
itemDetails.iStockSold[iIndex] = LEADERBOARDS2_READ_GET_ROW_DATA_INT(i, 0)
println("LEADERBOARDS2_READ_GET_ROW_DATA_INFO: Row: ", i, " Column: ",0)
#IF IS_DEBUG_BUILD
DEBUG_PRINT_SC_LB_RETURNED_VALUES("TEST_LIMITED_SHOP_ITEMS","Current Run",i,0,
itemDetails.iStockSold[iIndex],0.0,TRUE )
#ENDIF
ENDIF
ENDREPEAT
ELSE
println("GET_LIMITED_EDITION_ITEMS -- moving to stage 1 no data ")
ENDIF
LEADERBOARDS2_READ_GET_ROW_DATA_END( )
ELSE
println("GET_LIMITED_EDITION_ITEMS -- moving to stage 1 no data ")
ENDIF
itemDetails.iTotalStage = 1
#IF IS_DEBUG_BUILD
DEBUG_PRINT_LIMITED_EDITION_INFORMATION(itemDetails)
#ENDIF
END_LEADERBOARD_READ(itemDetails.iReadStage,itemDetails.bSuccessful,lbReadData)
ENDIF
BREAK
CASE 1
RETURN TRUE
BREAK
ENDSWITCH
RETURN FALSE
ENDFUNC
/// PURPOSE:
/// Writes to the leaderboard for limited edition items
/// PARAMS:
/// iID - the id of the items you are purchasing
/// iAmount - the amount of items you are purchasing
PROC WRITE_PURCHASE_OF_LIMITED_EDITION_ITEMS(INT iID, INT iAmount = 1)
TEXT_LABEL_31 categoryNames[1]
TEXT_LABEL_23 uniqueIdentifiers[1]
categoryNames[0] = "ItemId"
uniqueIdentifiers[0] = ""
uniqueIdentifiers[0] += iID
IF INIT_LEADERBOARD_WRITE(LEADERBOARD_FREEMODE_LIMITED_EDITION,uniqueIdentifiers,categoryNames,1)
println(" WRITE_PURCHASE_OF_LIMITED_EDITION_ITEMS: purchasing item ID: ", iID, " and Amount: ",iAmount)
LEADERBOARDS_WRITE_ADD_COLUMN(LB_INPUT_COL_SCORE,iAmount,0)
ENDIF
ENDPROC
#IF IS_DEBUG_BUILD
PROC TEST_ELO_LEADERBOARDS()
IF debugELOLeaderboard.bReadData
IF GET_PLAYER_ELO_FOR_MODE(LEADERBOARD_FREEMODE_ELO_DEATHMATCH_OVERALL, debugELOLeaderboard.iReadStage, debugELOLeaderboard.iTempLoadStage,debugELOLeaderboard.bTempReadResult, debugELOLeaderboard.iReturnedELO)
CLEAR_GET_PLAYER_ELO_FOR_MODE_FLAGS(debugELOLeaderboard.iReadStage, debugELOLeaderboard.iTempLoadStage,debugELOLeaderboard.bTempReadResult)
debugELOLeaderboard.bReadData = FALSE
ENDIF
ENDIF
TEXT_LABEL_31 categoryNames[1]
TEXT_LABEL_23 uniqueIdentifiers[1]
INT iELOUpdate = debugELOLeaderboard.iWriteNewEloValue
IF debugELOLeaderboard.bWriteData
categoryNames[0] = "SeasonId"
uniqueIdentifiers[0] = g_sMPTunables.iEloSeason
IF INIT_LEADERBOARD_WRITE(LEADERBOARD_FREEMODE_ELO_DEATHMATCH_OVERALL,uniqueIdentifiers,categoryNames,1)
IF UPDATE_STORED_ELO(LEADERBOARD_FREEMODE_ELO_DEATHMATCH_OVERALL,iELOUpdate)
LEADERBOARDS_WRITE_ADD_COLUMN(LB_INPUT_COL_SCORE,iELOUpdate,0)
println("LEADERBOARDS_WRITE_ADD_COLUMN writing ELO update to LB ",iELOUpdate)
ELSE
LEADERBOARDS_WRITE_ADD_COLUMN(LB_INPUT_COL_SCORE,0,0)
//println("LEADERBOARDS_WRITE_ADD_COLUMN: UPDATE_STORED_ELO failed not updating LB!")
ENDIF
// Write kills
LEADERBOARDS_WRITE_ADD_COLUMN(LB_INPUT_COL_KILLS,0,0)
//println("LEADERBOARDS_WRITE_ADD_COLUMN writing to col # 1 COL_KILLS ",0 )
// Write deaths
LEADERBOARDS_WRITE_ADD_COLUMN(LB_INPUT_COL_DEATHS,0,0)
//println("LEADERBOARDS_WRITE_ADD_COLUMN writing to col # 2 COL_DEATHS ",0)
// Write wins
LEADERBOARDS_WRITE_ADD_COLUMN(LB_INPUT_COL_NUM_WINS,0,0)
//println("LEADERBOARDS_WRITE_ADD_COLUMN writing to col # 2 COL_WINS ",0)
// Write wins
LEADERBOARDS_WRITE_ADD_COLUMN(LB_INPUT_COL_NUM_MATCHES,0,0)
//println("LEADERBOARDS_WRITE_ADD_COLUMN writing to col # 2 COL_MATCHES ",0)
// Write wins
LEADERBOARDS_WRITE_ADD_COLUMN(LB_INPUT_COL_NUM_MATCHES_LOST,0,0)
//println("LEADERBOARDS_WRITE_ADD_COLUMN writing to col # 2 COL_LOSES ",0)
// Write time //NEED TO ADD TRACKING FOR THIS REF# 12345232312
LEADERBOARDS_WRITE_ADD_COLUMN(LB_INPUT_TOTAL_TIME_ELO_RACE,0,0)
ENDIF
debugELOLeaderboard.bWriteData = FALSE
ENDIF
ENDPROC
PROC CLEAR_TEST_LIMITED_SHOP_ITEMS_LEADERBOARD_READ_STRUCT()
debugLimitedShopItems.bReadLeaderboardValues = FALSE
debugLimitedShopItems.iReadStage = 0
debugLimitedShopItems.iTempLoadStage = 0
debugLimitedShopItems.bTempReadResult = FALSE
ENDPROC
PROC TEST_LIMITED_SHOP_ITEMS() //1445116
// INT iItemID[10]
// INT iItemAmount[10]
// INT i
//TEXT_LABEL_31 categoryNames[1]
//TEXT_LABEL_23 uniqueIdentifiers[0]
// REPEAT 10 i
// iItemID[i] = i
// iItemAmount[i] = 10*i
// categoryNames[i] = "ItemId"
// uniqueIdentifiers[i] = ""
// uniqueIdentifiers[i] += i
// ENDREPEAT
//
// LeaderboardRowData initRowData
// LeaderboardReadInfo readInfo
//
// Leaderboard2ReadData lbReadData
//
//
IF debugLimitedShopItems.bTriggerPurchase
WRITE_PURCHASE_OF_LIMITED_EDITION_ITEMS(debugLimitedShopItems.iPurchaseItemID,debugLimitedShopItems.iPurchaseAmount)
debugLimitedShopItems.bTriggerPurchase = FALSE
ELIF debugLimitedShopItems.bReadLeaderboardValues
IF GET_LIMITED_EDITION_ITEMS(debugTextLimEdItems)
CLEAR_LIMITED_EDITION_ITEM_LB_DETAILS(debugTextLimEdItems)
debugLimitedShopItems.bReadLeaderboardValues = FALSE
ENDIF
ENDIF
// lbReadData.m_LeaderboardId = LEADERBOARD_FREEMODE_LIMITED_EDITION
// lbReadData.m_Type = LEADERBOARD_TYPE_GROUP
// lbReadData.m_GroupSelector.m_NumGroups = 4
// i = 0
// GAMER_HANDLE noGamer[1]
// LeaderboardClanIds clanIDs[1]
// Leaderboard2GroupHandle groupHandle
//
// REPEAT lbReadData.m_GroupSelector.m_NumGroups i
// lbReadData.m_GroupSelector.m_Group[i].m_Category = categoryNames[i]
// lbReadData.m_GroupSelector.m_Group[i].m_Id = uniqueIdentifiers[i]
// groupHandle.m_Group[i].m_Category = categoryNames[i]
// groupHandle.m_Group[i].m_Id = uniqueIdentifiers[i]
// ENDREPEAT
// groupHandle.m_NumGroups = lbReadData.m_GroupSelector.m_NumGroups
//
// IF debugLimitedShopItems.bReadLeaderboardValues
// SWITCH debugLimitedShopItems.iReadStage
// CASE 0
// IF START_SC_LEADERBOARD_READ_BY_ROW(debugLimitedShopItems.iTempLoadStage,debugLimitedShopItems.bTempReadResult,lbReadData,noGamer,0,clanIDs,0,groupHandle,groupHandle.m_NumGroups)
// println("TEST_LIMITED_SHOP_ITEMS: Called by ", GET_THIS_SCRIPT_NAME())
// #IF IS_DEBUG_BUILD
// println("TEST_LIMITED_SHOP_ITEMS LEADERBOARD ID = ", lbReadData.m_LeaderboardId)
// #ENDIF
// FILL_READ_INFO_STRUCT(readInfo,lbReadData)
//
// IF debugLimitedShopItems.bTempReadResult
// AND LEADERBOARDS2_READ_GET_ROW_DATA_START(readInfo)
// IF readInfo.m_ReturnedRows > 0
// i = 0
// REPEAT readInfo.m_ReturnedRows i
// LEADERBOARDS2_READ_GET_ROW_DATA_INFO(i, initRowData)
// println("LEADERBOARDS2_READ_GET_ROW_DATA_INFO: Row: ", i, " Column: ",0)
// #IF IS_DEBUG_BUILD
// DEBUG_PRINT_SC_LB_RETURNED_VALUES("TEST_LIMITED_SHOP_ITEMS","Current Run",i,0,
// LEADERBOARDS2_READ_GET_ROW_DATA_INT(i, 0),0.0,TRUE )
// #ENDIF
// ENDREPEAT
// ELSE
// println("TEST_LIMITED_SHOP_ITEMS -- moving to stage 1 no data for local player ")
// ENDIF
//
// LEADERBOARDS2_READ_GET_ROW_DATA_END( )
// ELSE
// println("TEST_LIMITED_SHOP_ITEMS -- moving to stage 1 no data for local player ")
// ENDIF
// debugLimitedShopItems.iReadStage = 1
// END_LEADERBOARD_READ(debugLimitedShopItems.iTempLoadStage,debugLimitedShopItems.bTempReadResult,lbReadData)
// ENDIF
// BREAK
//
// CASE 1
// CLEAR_TEST_LIMITED_SHOP_ITEMS_LEADERBOARD_READ_STRUCT()
// BREAK
// ENDSWITCH
// ENDIF
// ENDIF
ENDPROC
#ENDIF
//PURPOSE: Checks if a Lottery Leaderboard Read is successful. Making sure the Leaderboard is okay to be used.
FUNC INT HAS_LOTTERY_LEADERBOARD_TEST_PASSED(INT &iTempLoadStage, BOOL &bTempReadResult)
LeaderboardReadInfo readInfo
LeaderboardRowData initRowData
Leaderboard2ReadData ReadDataStruct
GAMER_HANDLE gamerHandle
gamerHandle = GET_GAMER_HANDLE_PLAYER(PLAYER_ID())
ReadDataStruct.m_LeaderboardID = ENUM_TO_INT(LEADERBOARD_FREEMODE_LOTTERY_TICKET)
ReadDataStruct.m_type = LEADERBOARD2_TYPE_PLAYER
readInfo.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_FREEMODE_LOTTERY_TICKET)
readInfo.m_LeaderboardType = ENUM_TO_INT(LEADERBOARD2_TYPE_PLAYER)
IF START_SC_LEADERBOARD_READ_BY_HANDLE(iTempLoadStage, bTempReadResult, ReadDataStruct, gamerHandle)
#IF IS_DEBUG_BUILD
DEBUG_START_LEADERBOARD_PRINT_RESULTS("HAS_LOTTERY_LEADERBOARD_TEST_PASSED (ReadDataStruct) ", ReadDataStruct)
#ENDIF
FILL_READ_INFO_STRUCT(readInfo, ReadDataStruct)
CLEAR_ROW_DATA_INFO_STRUCT(initRowData)
END_LEADERBOARD_READ(iTempLoadStage, bTempReadResult, ReadDataStruct)
IF bTempReadResult = TRUE
PRINTLN(" LOTTERY - HAS_LOTTERY_LEADERBOARD_TEST_PASSED = TRUE")
RETURN 1
ELSE
PRINTLN(" LOTTERY - HAS_LOTTERY_LEADERBOARD_TEST_PASSED = FALSE")
RETURN -1
ENDIF
ENDIF
//PRINTLN(" LOTTERY - HAS_LOTTERY_LEADERBOARD_TEST_PASSED = PENDING")
RETURN 0
ENDFUNC
FUNC BOOL START_SC_LEADERBOARD_READ_BY_PLATFORM(INT &iLoadStage,BOOL &bSuccessful, Leaderboard2ReadData &lbReadData, STRING handleData,STRING platform)
#IF IS_DEBUG_BUILD
STRING procName = "START_SC_LEADERBOARD_READ_BY_PLATFORM"
#ENDIF
SWITCH iLoadStage
CASE 0
IF NOT IS_ANY_LEADERBOARD_READ_BEING_PROCESSED()//LEADERBOARDS_READ_EXISTS(lbReadData.m_LeaderboardId, lbReadData.m_Type)
AND NOT SHOULD_ALL_SCRIPT_LEADERBOARD_READS_TERMINATE()
#IF IS_DEBUG_BUILD
DEBUG_PRINT_LEADERBOARD_READ_DATA_STRUCT(procName,lbReadData)
#ENDIF
START_LEADERBOARD_READ(lbReadData)
IF LEADERBOARDS2_READ_BY_PLAFORM(lbReadData, handleData, platform)
iLoadStage++
#IF IS_DEBUG_BUILD
DEBUG_PRINT_LB_READ_PROGRESS(procName, 1)
#ENDIF
ELSE
#IF IS_DEBUG_BUILD
//println()
println("LEADERBOARDS2_READ_BY_PLAFORM FAILED!! start See Conor")
println(procname, ": ID :", lbReadData.m_LeaderboardId, ": Type: ",lbReadData.m_Type)
//println()
//SCRIPT_ASSERT("LEADERBOARDS2_READ_BY_HANDLE FAILED!! See Conor")
DEBUG_PRINT_READ_RESULT_STATUS(procName,lbReadData,FALSE)
DEBUG_PRINT_LB_READ_PROGRESS(procName,3)
#ENDIF
bSuccessful = FALSE
iLoadStage=3
ENDIF
#IF IS_DEBUG_BUILD
ELSE
IF g_DBb_OutputLeaderboardReadErrors
DEBUG_PRINT_WAITING_FOR_READ_TO_FINISH(lbReadData)//"START_SC_LEADERBOARD_READ_BY_HANDLE",
ENDIF
#ENDIF
ENDIF
BREAK
CASE 1
IF NOT LEADERBOARDS_READ_PENDING(lbReadData.m_LeaderboardId, lbReadData.m_Type)
iLoadStage++
#IF IS_DEBUG_BUILD
DEBUG_PRINT_LB_READ_PROGRESS(procName,2)
#ENDIF
ENDIF
BREAK
CASE 2
IF LEADERBOARDS_READ_SUCCESSFUL(lbReadData.m_LeaderboardId, lbReadData.m_Type)
#IF IS_DEBUG_BUILD
DEBUG_PRINT_READ_RESULT_STATUS(procName,lbReadData,TRUE)
DEBUG_PRINT_LB_READ_PROGRESS(procName,3)
#ENDIF
bSuccessful = TRUE
iLoadStage++
ELSE
#IF IS_DEBUG_BUILD
//println()
println("LEADERBOARD READ FAILED!! See Conor")
println(procname, ": ID :", lbReadData.m_LeaderboardId, ": Type: ",lbReadData.m_Type)
//println()
//SCRIPT_ASSERT("LEADERBOARD READ FAILED!! See Conor")
DEBUG_PRINT_READ_RESULT_STATUS(procName,lbReadData,FALSE)
DEBUG_PRINT_LB_READ_PROGRESS(procName,3)
#ENDIF
bSuccessful = FALSE
iLoadStage++
ENDIF
BREAK
CASE 3
RETURN TRUE
BREAK
ENDSWITCH
RETURN FALSE
ENDFUNC
PROC RESET_PLATFORM_UPGRADE_LB_CHECK_STRUCT(PLATFORM_UPGRADE_LB_CHECKS &sPlatformUpdateLBData)
PRINTLN("Resetting PLATFORM_UPGRADE_LB_CHECKS struct.")
Leaderboard2ReadData lbReadData
lbReadData.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_COMMERCE)
lbReadData.m_Type = LEADERBOARD2_TYPE_PLAYER
END_LEADERBOARD_READ(sPlatformUpdateLBData.iReadStage,sPlatformUpdateLBData.bSuccessful,lbReadData)
sPlatformUpdateLBData.iTotalStage = 0
sPlatformUpdateLBData.iReadStage = 0
sPlatformUpdateLBData.bSuccessful = FALSE
sPlatformUpdateLBData.bComplete = FALSE
ENDPROC
FUNC BOOL RUN_PLATFORM_UPGRADE_LB_CHECKS(PLATFORM_UPGRADE_LB_CHECKS &iPlatformUpdateLBData, BOOL bSPCheck = FALSE)
IF iPlatformUpdateLBData.iFrameCheck+10 < GET_FRAME_COUNT()
RESET_PLATFORM_UPGRADE_LB_CHECK_STRUCT(iPlatformUpdateLBData)
PRINTLN("RUN_PLATFORM_UPGRADE_LB_CHECKS - Resetting due to inactivity.")
#IF USE_FINAL_PRINTS
PRINTLN_FINAL("[LASTGEN][SE-CE] RUN_PLATFORM_UPGRADE_LB_CHECKS - Resetting due to inactivity.")
#ENDIF
ENDIF
iPlatformUpdateLBData.iFrameCheck = GET_FRAME_COUNT()
#IF IS_DEBUG_BUILD
IF NOT bSPCheck
PRINTLN("RUN_PLATFORM_UPGRADE_LB_CHECKS - Running MP check variation.")
ELSE
PRINTLN("RUN_PLATFORM_UPGRADE_LB_CHECKS - Running SP check variation.")
ENDIF
#ENDIF
#IF USE_FINAL_PRINTS
IF NOT bSPCheck
PRINTLN_FINAL("[LASTGEN][SE-CE] RUN_PLATFORM_UPGRADE_LB_CHECKS - Running MP check variation.")
ELSE
PRINTLN_FINAL("[LASTGEN][SE-CE] RUN_PLATFORM_UPGRADE_LB_CHECKS - Running SP check variation.")
ENDIF
#ENDIF
IF (g_struct_Save_transfer_data_PS3.m_totalProgressMadeInSp <= 0
OR IS_STRING_NULL_OR_EMPTY(g_struct_Save_transfer_data_PS3.m_gamerHandle))
AND (g_struct_Save_transfer_data_XBOX360.m_totalProgressMadeInSp <= 0
OR IS_STRING_NULL_OR_EMPTY(g_struct_Save_transfer_data_XBOX360.m_gamerHandle))
PRINTLN("RUN_PLATFORM_UPGRADE_LB_CHECKS- no valid migration data returning true")
#IF USE_FINAL_PRINTS
PRINTLN_FINAL("[LASTGEN][SE-CE] RUN_PLATFORM_UPGRADE_LB_CHECKS - No valid migration data returning true.")
#ENDIF
RETURN TRUE
ENDIF
LeaderboardRowData initRowData
LeaderboardReadInfo readInfo
Leaderboard2ReadData lbReadData
TEXT_LABEL_63 gamerName
STRING platform
lbReadData.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_COMMERCE)
lbReadData.m_Type = LEADERBOARD2_TYPE_PLAYER
INT iChecksStatus
IF NOT bSPCheck
iChecksStatus = GET_MP_INT_PLAYER_STAT(MPPLY_PLAT_UP_LB_CHECK)
ELSE
iChecksStatus = 0 //Whenever we rerun this function in SP we want to rerun all tests.
//Pull the current profile settings so we don't lose any values as we update bits.
IF ARE_PROFILE_SETTINGS_VALID()
CDEBUG1LN(DEBUG_LASTGEN, "<LastGen-SE-CE> Loaded current profile settings.")
#IF USE_FINAL_PRINTS
PRINTLN_FINAL("[LASTGEN][SE-CE] Loaded current profile settings.")
#ENDIF
g_iPlayerHasLastGenSpecialContentBitset = GET_PROFILE_SETTING(GAMER_HAS_SPECIALEDITION_CONTENT)
ENDIF
ENDIF
//platform matches STAT_MIGRATE_SAVEGAME_START()
IF IS_BIT_SET(iChecksStatus,ENUM_TO_INT(PLATFORM_UPGRADE_LB_CHECK_PS3_BLIMP))
AND IS_BIT_SET(iChecksStatus,ENUM_TO_INT(PLATFORM_UPGRADE_LB_CHECK_PS3_COLLECT))
AND IS_BIT_SET(iChecksStatus,ENUM_TO_INT(PLATFORM_UPGRADE_LB_CHECK_PS3_SPECIAL))
AND IS_BIT_SET(iChecksStatus,ENUM_TO_INT(PLATFORM_UPGRADE_LB_CHECK_XBOX360_BLIMP))
AND IS_BIT_SET(iChecksStatus,ENUM_TO_INT(PLATFORM_UPGRADE_LB_CHECK_XBOX360_COLLECT))
AND IS_BIT_SET(iChecksStatus,ENUM_TO_INT(PLATFORM_UPGRADE_LB_CHECK_XBOX360_SPECIAL))
PRINTLN("RUN_PLATFORM_UPGRADE_LB_CHECKS- all checks complete returning true")
#IF USE_FINAL_PRINTS
PRINTLN_FINAL("[LASTGEN][SE-CE] RUN_PLATFORM_UPGRADE_LB_CHECKS - All checks complete returning true.")
#ENDIF
RETURN TRUE
ENDIF
SWITCH iPlatformUpdateLBData.iTotalStage
CASE 0
IF g_struct_Save_transfer_data_PS3.m_totalProgressMadeInSp <= 0
OR IS_STRING_NULL_OR_EMPTY(g_struct_Save_transfer_data_PS3.m_gamerHandle)
PRINTLN("RUN_PLATFORM_UPGRADE_LB_CHECKS - PS3 SP progress made: ", g_struct_Save_transfer_data_PS3.m_totalProgressMadeInSp)
PRINTLN("RUN_PLATFORM_UPGRADE_LB_CHECKS - PS3 gamer handle: ", g_struct_Save_transfer_data_PS3.m_gamerHandle)
PRINTLN("RUN_PLATFORM_UPGRADE_LB_CHECKS - PS3 gamer-handle invalid. Skipping PS3 checks.")
#IF USE_FINAL_PRINTS
PRINTLN_FINAL("[LASTGEN][SE-CE] PS3 SP progress made: ", g_struct_Save_transfer_data_PS3.m_totalProgressMadeInSp)
PRINTLN_FINAL("[LASTGEN][SE-CE] PS3 gamer handle: ", g_struct_Save_transfer_data_PS3.m_gamerHandle)
PRINTLN_FINAL("[LASTGEN][SE-CE] PS3 gamer-handle invalid. Skipping PS3 checks.")
#ENDIF
iPlatformUpdateLBData.iTotalStage = 3
RETURN FALSE
ENDIF
gamerName = g_struct_Save_transfer_data_PS3.m_gamerHandle
platform = ("ps3")
lbReadData.m_GroupSelector.m_NumGroups = 1
lbReadData.m_GroupSelector.m_Group[0].m_Category = "ProductId"
lbReadData.m_GroupSelector.m_Group[0].m_Id = "preorder_pack"
#IF USE_FINAL_PRINTS
PRINTLN_FINAL("[LASTGEN][SE-CE] ------- Leaderboard Query -------")
PRINTLN_FINAL("[LASTGEN][SE-CE] GamerHandle: ", gamerName)
PRINTLN_FINAL("[LASTGEN][SE-CE] Platform: ", platform)
PRINTLN_FINAL("[LASTGEN][SE-CE] Id: ", lbReadData.m_GroupSelector.m_Group[0].m_Id)
PRINTLN_FINAL("[LASTGEN][SE-CE] Category: ", lbReadData.m_GroupSelector.m_Group[0].m_Category)
PRINTLN_FINAL("[LASTGEN][SE-CE] NumbeOfGroups: ", lbReadData.m_GroupSelector.m_NumGroups)
PRINTLN_FINAL("[LASTGEN][SE-CE] ---------------------------------")
#ENDIF
IF NOT IS_BIT_SET(iChecksStatus,ENUM_TO_INT(PLATFORM_UPGRADE_LB_CHECK_PS3_BLIMP))
IF START_SC_LEADERBOARD_READ_BY_PLATFORM(iPlatformUpdateLBData.iReadStage,iPlatformUpdateLBData.bSuccessful,lbReadData,
gamerName,platform)
PRINTLN("RUN_PLATFORM_UPGRADE_LB_CHECKS LEADERBOARD ID = ", lbReadData.m_LeaderboardId)
#IF USE_FINAL_PRINTS
PRINTLN_FINAL("[LASTGEN][SE-CE] RUN_PLATFORM_UPGRADE_LB_CHECKS LEADERBOARD ID = ", lbReadData.m_LeaderboardId)
#ENDIF
FILL_READ_INFO_STRUCT(readInfo,lbReadData)
IF iPlatformUpdateLBData.bSuccessful
AND LEADERBOARDS2_READ_GET_ROW_DATA_START(readInfo)
IF readInfo.m_ReturnedRows > 0
LEADERBOARDS2_READ_GET_ROW_DATA_INFO(0, initRowData)
IF LEADERBOARDS2_READ_GET_ROW_DATA_INT(0, 0) > 0
PRINTLN("START_SC_LEADERBOARD_READ_BY_PLATFORM: Row: ",0, " Column: ",0)
#IF IS_DEBUG_BUILD
DEBUG_PRINT_SC_LB_RETURNED_VALUES("RUN_PLATFORM_UPGRADE_LB_CHECKS","Current Run",0,0,
LEADERBOARDS2_READ_GET_ROW_DATA_INT(0, 0),0.0,TRUE )
#ENDIF
PRINTLN("RUN_PLATFORM_UPGRADE_LB_CHECKS - Setting player has PS3 BLIMP.")
#IF USE_FINAL_PRINTS
PRINTLN_FINAL("[LASTGEN][SE-CE] Setting player has PS3 BLIMP.")
#ENDIF
SET_BIT(iChecksStatus,ENUM_TO_INT(PLATFORM_UPGRADE_LB_HAS_BLIMP))
IF NOT bSPCheck
SET_MP_INT_PLAYER_STAT(MPPLY_PLAT_UP_LB_CHECK,iChecksStatus)
ENDIF
ELSE
PRINTLN("RUN_PLATFORM_UPGRADE_LB_CHECKS - No data found for PS3 BLIMP. (C)")
#IF USE_FINAL_PRINTS
PRINTLN_FINAL("[LASTGEN][SE-CE] No data found for PS3 BLIMP. (C)")
#ENDIF
ENDIF
ELSE
PRINTLN("RUN_PLATFORM_UPGRADE_LB_CHECKS - No data found for PS3 BLIMP. (B)")
#IF USE_FINAL_PRINTS
PRINTLN_FINAL("[LASTGEN][SE-CE] No data found for PS3 BLIMP. (B)")
#ENDIF
ENDIF
SET_BIT(iChecksStatus,ENUM_TO_INT(PLATFORM_UPGRADE_LB_CHECK_PS3_BLIMP))
LEADERBOARDS2_READ_GET_ROW_DATA_END( )
ELSE
PRINTLN("RUN_PLATFORM_UPGRADE_LB_CHECKS - No data found for PS3 BLIMP. (A)")
PRINTLN("RUN_PLATFORM_UPGRADE_LB_CHECKS - iPlatformUpdateLBData.bSuccessful = ", iPlatformUpdateLBData.bSuccessful)
PRINTLN("RUN_PLATFORM_UPGRADE_LB_CHECKS - LEADERBOARDS2_READ_GET_ROW_DATA_START(readInfo) = ", LEADERBOARDS2_READ_GET_ROW_DATA_START(readInfo))
#IF USE_FINAL_PRINTS
PRINTLN_FINAL("[LASTGEN][SE-CE] No data found for PS3 BLIMP. (A)")
PRINTLN_FINAL("[LASTGEN][SE-CE] iPlatformUpdateLBData.bSuccessful = ", iPlatformUpdateLBData.bSuccessful)
PRINTLN_FINAL("[LASTGEN][SE-CE] LEADERBOARDS2_READ_GET_ROW_DATA_START(readInfo) = ", LEADERBOARDS2_READ_GET_ROW_DATA_START(readInfo))
#ENDIF
ENDIF
iPlatformUpdateLBData.bSuccessful = FALSE
iPlatformUpdateLBData.iTotalStage = 1
END_LEADERBOARD_READ(iPlatformUpdateLBData.iReadStage,iPlatformUpdateLBData.bSuccessful,lbReadData)
ENDIF
ELSE
PRINTLN("RUN_PLATFORM_UPGRADE_LB_CHECKS - Already run check for PS3 BLIMP. Moving to next check.")
#IF USE_FINAL_PRINTS
PRINTLN_FINAL("[LASTGEN][SE-CE] Already run check for PS3 BLIMP. Moving to next check.")
#ENDIF
iPlatformUpdateLBData.bSuccessful = FALSE
iPlatformUpdateLBData.iTotalStage = 1
ENDIF
BREAK
CASE 1
gamerName = g_struct_Save_transfer_data_PS3.m_gamerHandle
platform = ("ps3")
lbReadData.m_GroupSelector.m_NumGroups = 1
lbReadData.m_GroupSelector.m_Group[0].m_Category = "ProductId"
lbReadData.m_GroupSelector.m_Group[0].m_Id = "collectors_ed"
#IF USE_FINAL_PRINTS
PRINTLN_FINAL("[LASTGEN][SE-CE] ------- Leaderboard Query -------")
PRINTLN_FINAL("[LASTGEN][SE-CE] GamerHandle: ", gamerName)
PRINTLN_FINAL("[LASTGEN][SE-CE] Platform: ", platform)
PRINTLN_FINAL("[LASTGEN][SE-CE] Id: ", lbReadData.m_GroupSelector.m_Group[0].m_Id)
PRINTLN_FINAL("[LASTGEN][SE-CE] Category: ", lbReadData.m_GroupSelector.m_Group[0].m_Category)
PRINTLN_FINAL("[LASTGEN][SE-CE] NumbeOfGroups: ", lbReadData.m_GroupSelector.m_NumGroups)
PRINTLN_FINAL("[LASTGEN][SE-CE] ---------------------------------")
#ENDIF
CLEAR_BIT(g_iPlayerHasLastGenSpecialContentBitset, BIT_LAST_GEN_SPECIAL_CONTENT_PS3_COLLECTORS)
IF NOT IS_BIT_SET(iChecksStatus,ENUM_TO_INT(PLATFORM_UPGRADE_LB_CHECK_PS3_COLLECT))
IF START_SC_LEADERBOARD_READ_BY_PLATFORM(iPlatformUpdateLBData.iReadStage,iPlatformUpdateLBData.bSuccessful,lbReadData,
gamerName,platform)
#IF IS_DEBUG_BUILD
println("RUN_PLATFORM_UPGRADE_LB_CHECKS LEADERBOARD ID = ", lbReadData.m_LeaderboardId)
#ENDIF
FILL_READ_INFO_STRUCT(readInfo,lbReadData)
PRINTLN("RUN_PLATFORM_UPGRADE_LB_CHECKS readInfo.m_LeaderboardId = ", readInfo.m_LeaderboardId)
PRINTLN("RUN_PLATFORM_UPGRADE_LB_CHECKS readInfo.m_LeaderboardType = ", readInfo.m_LeaderboardType)
IF iPlatformUpdateLBData.bSuccessful
AND LEADERBOARDS2_READ_GET_ROW_DATA_START(readInfo)
IF readInfo.m_ReturnedRows > 0
LEADERBOARDS2_READ_GET_ROW_DATA_INFO(0, initRowData)
IF LEADERBOARDS2_READ_GET_ROW_DATA_INT(0, 0) > 0
println("START_SC_LEADERBOARD_READ_BY_PLATFORM: Row: ", 0, " Column: ",0)
#IF IS_DEBUG_BUILD
DEBUG_PRINT_SC_LB_RETURNED_VALUES("RUN_PLATFORM_UPGRADE_LB_CHECKS","Current Run",0,0,
LEADERBOARDS2_READ_GET_ROW_DATA_INT(0, 0),0.0,TRUE )
#ENDIF
PRINTLN("[LASTGEN][SE-CE] RUN_PLATFORM_UPGRADE_LB_CHECKS - Setting player has PS3 COLLECTORS.")
#IF USE_FINAL_PRINTS
PRINTLN_FINAL("[LASTGEN][SE-CE] Setting player has PS3 COLLECTORS.")
#ENDIF
SET_BIT(iChecksStatus,ENUM_TO_INT(PLATFORM_UPGRADE_LB_HAS_COLLECT))
SET_BIT(g_iPlayerHasLastGenSpecialContentBitset, BIT_LAST_GEN_SPECIAL_CONTENT_PS3_COLLECTORS)
IF NOT bSPCheck
SET_MP_INT_PLAYER_STAT(MPPLY_PLAT_UP_LB_CHECK,iChecksStatus)
ELSE
CPRINTLN(DEBUG_LASTGEN, "<LastGen-SE-CE> Flagging that player's last gen account had PS3 COLLECTORS in SP stat.")
#IF USE_FINAL_PRINTS
PRINTLN_FINAL("[LASTGEN][SE-CE] Flagging that player's last gen account had PS3 COLLECTORS in SP stat.")
#ENDIF
IF ARE_PROFILE_SETTINGS_VALID()
CPRINTLN(DEBUG_LASTGEN, "<LastGen-SE-CE> Updated profile settings.")
#IF USE_FINAL_PRINTS
PRINTLN_FINAL("[LASTGEN][SE-CE] Updated profile settings.")
#ENDIF
SET_HAS_SPECIALEDITION_CONTENT(g_iPlayerHasLastGenSpecialContentBitset)
ENDIF
ENDIF
ELSE
PRINTLN("[LASTGEN][SE-CE] RUN_PLATFORM_UPGRADE_LB_CHECKS - No data found for PS3 COLLECTORS. (C)")
#IF USE_FINAL_PRINTS
PRINTLN_FINAL("[LASTGEN][SE-CE] No data found for PS3 COLLECTORS. (C)")
#ENDIF
ENDIF
ELSE
PRINTLN("[LASTGEN][SE-CE] RUN_PLATFORM_UPGRADE_LB_CHECKS - No data found for PS3 COLLECTORS. (B)")
#IF USE_FINAL_PRINTS
PRINTLN_FINAL("[LASTGEN][SE-CE] No data found for PS3 COLLECTORS. (B)")
#ENDIF
ENDIF
SET_BIT(g_iPlayerHasLastGenSpecialContentBitset,BIT_LAST_GEN_SPECIAL_CONTENT_STAT_STORED_COLLECTOR)
STAT_SET_INT(SP_UNLOCK_EXCLUS_CONTENT, g_iPlayerHasLastGenSpecialContentBitset)
CPRINTLN(DEBUG_LASTGEN, "[LASTGEN][SE-CE] PS3 STAT_STORED_COLLECTOR Set g_iPlayerHasLastGenSpecialContentBitset = ", g_iPlayerHasLastGenSpecialContentBitset, " " )
SET_BIT(iChecksStatus,ENUM_TO_INT(PLATFORM_UPGRADE_LB_CHECK_PS3_COLLECT))
LEADERBOARDS2_READ_GET_ROW_DATA_END( )
ELSE
PRINTLN("RUN_PLATFORM_UPGRADE_LB_CHECKS - No data found for PS3 COLLECTORS. (A)")
PRINTLN("RUN_PLATFORM_UPGRADE_LB_CHECKS - iPlatformUpdateLBData.bSuccessful = ", iPlatformUpdateLBData.bSuccessful)
PRINTLN("RUN_PLATFORM_UPGRADE_LB_CHECKS - LEADERBOARDS2_READ_GET_ROW_DATA_START(readInfo) = ", LEADERBOARDS2_READ_GET_ROW_DATA_START(readInfo))
#IF USE_FINAL_PRINTS
PRINTLN_FINAL("[LASTGEN][SE-CE] No data found for PS3 COLLECTORS. (A)")
PRINTLN_FINAL("[LASTGEN][SE-CE] iPlatformUpdateLBData.bSuccessful = ", iPlatformUpdateLBData.bSuccessful)
PRINTLN_FINAL("[LASTGEN][SE-CE] LEADERBOARDS2_READ_GET_ROW_DATA_START(readInfo) = ", LEADERBOARDS2_READ_GET_ROW_DATA_START(readInfo))
#ENDIF
ENDIF
iPlatformUpdateLBData.bSuccessful = FALSE
iPlatformUpdateLBData.iTotalStage = 2
END_LEADERBOARD_READ(iPlatformUpdateLBData.iReadStage,iPlatformUpdateLBData.bSuccessful,lbReadData)
ENDIF
ELSE
PRINTLN("RUN_PLATFORM_UPGRADE_LB_CHECKS - Already run check for PS3 COLLECTORS. Moving to next check.")
#IF USE_FINAL_PRINTS
PRINTLN_FINAL("[LASTGEN][SE-CE] Already run check for PS3 COLLECTORS. Moving to next check.")
#ENDIF
iPlatformUpdateLBData.bSuccessful = FALSE
iPlatformUpdateLBData.iTotalStage = 2
ENDIF
BREAK
CASE 2
gamerName = g_struct_Save_transfer_data_PS3.m_gamerHandle
platform = ("ps3")
lbReadData.m_GroupSelector.m_NumGroups = 1
lbReadData.m_GroupSelector.m_Group[0].m_Category = "ProductId"
lbReadData.m_GroupSelector.m_Group[0].m_Id = "special_ed"
#IF USE_FINAL_PRINTS
PRINTLN_FINAL("[LASTGEN][SE-CE] ------- Leaderboard Query -------")
PRINTLN_FINAL("[LASTGEN][SE-CE] GamerHandle: ", gamerName)
PRINTLN_FINAL("[LASTGEN][SE-CE] Platform: ", platform)
PRINTLN_FINAL("[LASTGEN][SE-CE] Id: ", lbReadData.m_GroupSelector.m_Group[0].m_Id)
PRINTLN_FINAL("[LASTGEN][SE-CE] Category: ", lbReadData.m_GroupSelector.m_Group[0].m_Category)
PRINTLN_FINAL("[LASTGEN][SE-CE] NumbeOfGroups: ", lbReadData.m_GroupSelector.m_NumGroups)
PRINTLN_FINAL("[LASTGEN][SE-CE] ---------------------------------")
#ENDIF
CLEAR_BIT(g_iPlayerHasLastGenSpecialContentBitset, BIT_LAST_GEN_SPECIAL_CONTENT_PS3_SPECIAL)
IF NOT IS_BIT_SET(iChecksStatus,ENUM_TO_INT(PLATFORM_UPGRADE_LB_CHECK_PS3_SPECIAL))
IF START_SC_LEADERBOARD_READ_BY_PLATFORM(iPlatformUpdateLBData.iReadStage,iPlatformUpdateLBData.bSuccessful,lbReadData,
gamerName,platform)
#IF IS_DEBUG_BUILD
println("RUN_PLATFORM_UPGRADE_LB_CHECKS LEADERBOARD ID = ", lbReadData.m_LeaderboardId)
#ENDIF
FILL_READ_INFO_STRUCT(readInfo,lbReadData)
IF iPlatformUpdateLBData.bSuccessful
AND LEADERBOARDS2_READ_GET_ROW_DATA_START(readInfo)
IF readInfo.m_ReturnedRows > 0
LEADERBOARDS2_READ_GET_ROW_DATA_INFO(0, initRowData)
IF LEADERBOARDS2_READ_GET_ROW_DATA_INT(0, 0) > 0
println("START_SC_LEADERBOARD_READ_BY_PLATFORM: Row: ", 0, " Column: ",0)
#IF IS_DEBUG_BUILD
DEBUG_PRINT_SC_LB_RETURNED_VALUES("RUN_PLATFORM_UPGRADE_LB_CHECKS","Current Run",0,0,
LEADERBOARDS2_READ_GET_ROW_DATA_INT(0, 0),0.0,TRUE )
#ENDIF
PRINTLN("[LASTGEN][SE-CE] RUN_PLATFORM_UPGRADE_LB_CHECKS - Setting player has PS3 SPECIAL.")
#IF USE_FINAL_PRINTS
PRINTLN_FINAL("[LASTGEN][SE-CE] Setting player has PS3 SPECIAL.")
#ENDIF
SET_BIT(iChecksStatus,ENUM_TO_INT(PLATFORM_UPGRADE_LB_HAS_SPECIAL))
SET_BIT(g_iPlayerHasLastGenSpecialContentBitset, BIT_LAST_GEN_SPECIAL_CONTENT_PS3_SPECIAL)
IF NOT bSPCheck
SET_MP_INT_PLAYER_STAT(MPPLY_PLAT_UP_LB_CHECK,iChecksStatus)
ELSE
CPRINTLN(DEBUG_LASTGEN, "<LastGen-SE-CE> Flagging that player's last gen account had PS3 SPECIAL in SP stat.")
#IF USE_FINAL_PRINTS
PRINTLN_FINAL("[LASTGEN][SE-CE] Flagging that player's last gen account had PS3 SPECIAL in SP stat.")
#ENDIF
IF ARE_PROFILE_SETTINGS_VALID()
CPRINTLN(DEBUG_LASTGEN, "<LastGen-SE-CE> Updated profile settings.")
#IF USE_FINAL_PRINTS
PRINTLN_FINAL("[LASTGEN][SE-CE] Updated profile settings.")
#ENDIF
SET_HAS_SPECIALEDITION_CONTENT(g_iPlayerHasLastGenSpecialContentBitset)
ENDIF
ENDIF
ELSE
PRINTLN("[LASTGEN][SE-CE] RUN_PLATFORM_UPGRADE_LB_CHECKS - No data found for PS3 SPECIAL. (C)")
#IF USE_FINAL_PRINTS
PRINTLN_FINAL("[LASTGEN][SE-CE] No data found for PS3 SPECIAL. (C)")
#ENDIF
ENDIF
ELSE
PRINTLN("[LASTGEN][SE-CE] RUN_PLATFORM_UPGRADE_LB_CHECKS - No data found for PS3 SPECIAL. (B)")
#IF USE_FINAL_PRINTS
PRINTLN_FINAL("[LASTGEN][SE-CE] No data found for PS3 SPECIAL. (B)")
#ENDIF
ENDIF
SET_BIT(g_iPlayerHasLastGenSpecialContentBitset,BIT_LAST_GEN_SPECIAL_CONTENT_STAT_STORED_SPECIAL)
STAT_SET_INT(SP_UNLOCK_EXCLUS_CONTENT, g_iPlayerHasLastGenSpecialContentBitset)
CPRINTLN(DEBUG_LASTGEN, "[LASTGEN][SE-CE] PS3 STAT_STORED_SPECIAL Set g_iPlayerHasLastGenSpecialContentBitset = ", g_iPlayerHasLastGenSpecialContentBitset, " " )
SET_BIT(iChecksStatus,ENUM_TO_INT(PLATFORM_UPGRADE_LB_CHECK_PS3_SPECIAL))
LEADERBOARDS2_READ_GET_ROW_DATA_END( )
ELSE
PRINTLN("RUN_PLATFORM_UPGRADE_LB_CHECKS - No data found for PS3 SPECIAL. (A)")
PRINTLN("RUN_PLATFORM_UPGRADE_LB_CHECKS - iPlatformUpdateLBData.bSuccessful = ", iPlatformUpdateLBData.bSuccessful)
PRINTLN("RUN_PLATFORM_UPGRADE_LB_CHECKS - LEADERBOARDS2_READ_GET_ROW_DATA_START(readInfo) = ", LEADERBOARDS2_READ_GET_ROW_DATA_START(readInfo))
#IF USE_FINAL_PRINTS
PRINTLN_FINAL("[LASTGEN][SE-CE] No data found for PS3 SPECIAL. (A)")
PRINTLN_FINAL("[LASTGEN][SE-CE] iPlatformUpdateLBData.bSuccessful = ", iPlatformUpdateLBData.bSuccessful)
PRINTLN_FINAL("[LASTGEN][SE-CE] LEADERBOARDS2_READ_GET_ROW_DATA_START(readInfo) = ", LEADERBOARDS2_READ_GET_ROW_DATA_START(readInfo))
#ENDIF
ENDIF
iPlatformUpdateLBData.bSuccessful = FALSE
iPlatformUpdateLBData.iTotalStage = 3
END_LEADERBOARD_READ(iPlatformUpdateLBData.iReadStage,iPlatformUpdateLBData.bSuccessful,lbReadData)
ENDIF
ELSE
PRINTLN("RUN_PLATFORM_UPGRADE_LB_CHECKS - Already run check for PS3 SPECIAL. Moving to next check.")
#IF USE_FINAL_PRINTS
PRINTLN_FINAL("[LASTGEN][SE-CE] Already run check for PS3 SPECIAL. Moving to next check.")
#ENDIF
iPlatformUpdateLBData.bSuccessful = FALSE
iPlatformUpdateLBData.iTotalStage = 3
ENDIF
BREAK
CASE 3
IF g_struct_Save_transfer_data_XBOX360.m_totalProgressMadeInSp <= 0
OR IS_STRING_NULL_OR_EMPTY(g_struct_Save_transfer_data_XBOX360.m_gamerHandle)
PRINTLN("RUN_PLATFORM_UPGRADE_LB_CHECKS - 360 SP progress made: ", g_struct_Save_transfer_data_XBOX360.m_totalProgressMadeInSp)
PRINTLN("RUN_PLATFORM_UPGRADE_LB_CHECKS - 360 gamer handle: ", g_struct_Save_transfer_data_XBOX360.m_gamerHandle)
PRINTLN("RUN_PLATFORM_UPGRADE_LB_CHECKS - Xbox360 gamer-handle invalid. Skipping 360 checks.")
#IF USE_FINAL_PRINTS
PRINTLN_FINAL("[LASTGEN][SE-CE] 360 SP progress made: ", g_struct_Save_transfer_data_XBOX360.m_totalProgressMadeInSp)
PRINTLN_FINAL("[LASTGEN][SE-CE] 360 gamer handle: ", g_struct_Save_transfer_data_XBOX360.m_gamerHandle)
PRINTLN_FINAL("[LASTGEN][SE-CE] Xbox360 gamer-handle invalid. Skipping 360 checks.")
#ENDIF
iPlatformUpdateLBData.iTotalStage = 6
RETURN FALSE
ENDIF
gamerName = g_struct_Save_transfer_data_XBOX360.m_gamerHandle
platform = ("xbox360")
lbReadData.m_GroupSelector.m_NumGroups = 1
lbReadData.m_GroupSelector.m_Group[0].m_Category = "ProductId"
lbReadData.m_GroupSelector.m_Group[0].m_Id = "atomic_blimp"
#IF USE_FINAL_PRINTS
PRINTLN_FINAL("[LASTGEN][SE-CE] ------- Leaderboard Query -------")
PRINTLN_FINAL("[LASTGEN][SE-CE] GamerHandle: ", gamerName)
PRINTLN_FINAL("[LASTGEN][SE-CE] Platform: ", platform)
PRINTLN_FINAL("[LASTGEN][SE-CE] Id: ", lbReadData.m_GroupSelector.m_Group[0].m_Id)
PRINTLN_FINAL("[LASTGEN][SE-CE] Category: ", lbReadData.m_GroupSelector.m_Group[0].m_Category)
PRINTLN_FINAL("[LASTGEN][SE-CE] NumbeOfGroups: ", lbReadData.m_GroupSelector.m_NumGroups)
PRINTLN_FINAL("[LASTGEN][SE-CE] ---------------------------------")
#ENDIF
IF NOT IS_BIT_SET(iChecksStatus,ENUM_TO_INT(PLATFORM_UPGRADE_LB_CHECK_XBOX360_BLIMP))
IF START_SC_LEADERBOARD_READ_BY_PLATFORM(iPlatformUpdateLBData.iReadStage,iPlatformUpdateLBData.bSuccessful,lbReadData,
gamerName,platform)
#IF IS_DEBUG_BUILD
println("RUN_PLATFORM_UPGRADE_LB_CHECKS LEADERBOARD ID = ", lbReadData.m_LeaderboardId)
#ENDIF
FILL_READ_INFO_STRUCT(readInfo,lbReadData)
IF iPlatformUpdateLBData.bSuccessful
AND LEADERBOARDS2_READ_GET_ROW_DATA_START(readInfo)
IF readInfo.m_ReturnedRows > 0
LEADERBOARDS2_READ_GET_ROW_DATA_INFO(0, initRowData)
IF LEADERBOARDS2_READ_GET_ROW_DATA_INT(0, 0) > 0
println("START_SC_LEADERBOARD_READ_BY_PLATFORM: Row: ", 0, " Column: ",0)
#IF IS_DEBUG_BUILD
DEBUG_PRINT_SC_LB_RETURNED_VALUES("RUN_PLATFORM_UPGRADE_LB_CHECKS","Current Run",0,0,
LEADERBOARDS2_READ_GET_ROW_DATA_INT(0, 0),0.0,TRUE )
#ENDIF
PRINTLN("[LASTGEN][SE-CE] RUN_PLATFORM_UPGRADE_LB_CHECKS - Setting player has 360 BLIMP.")
#IF USE_FINAL_PRINTS
PRINTLN_FINAL("[LASTGEN][SE-CE] Setting player has 360 BLIMP.")
#ENDIF
SET_BIT(iChecksStatus,ENUM_TO_INT(PLATFORM_UPGRADE_LB_HAS_BLIMP))
IF NOT bSPCheck
SET_MP_INT_PLAYER_STAT(MPPLY_PLAT_UP_LB_CHECK,iChecksStatus)
ENDIF
ELSE
PRINTLN("[LASTGEN][SE-CE] RUN_PLATFORM_UPGRADE_LB_CHECKS - No data found for 360 BLIMP. (C)")
#IF USE_FINAL_PRINTS
PRINTLN_FINAL("[LASTGEN][SE-CE] No data found for 360 BLIMP. (C)")
#ENDIF
ENDIF
ELSE
PRINTLN("[LASTGEN][SE-CE] RUN_PLATFORM_UPGRADE_LB_CHECKS - No data found for 360 BLIMP. (B)")
#IF USE_FINAL_PRINTS
PRINTLN_FINAL("[LASTGEN][SE-CE] No data found for 360 BLIMP. (B)")
#ENDIF
ENDIF
SET_BIT(iChecksStatus,ENUM_TO_INT(PLATFORM_UPGRADE_LB_CHECK_XBOX360_BLIMP))
LEADERBOARDS2_READ_GET_ROW_DATA_END( )
ELSE
PRINTLN("RUN_PLATFORM_UPGRADE_LB_CHECKS - No data found for 360 BLIMP. (A)")
PRINTLN("RUN_PLATFORM_UPGRADE_LB_CHECKS - iPlatformUpdateLBData.bSuccessful = ", iPlatformUpdateLBData.bSuccessful)
PRINTLN("RUN_PLATFORM_UPGRADE_LB_CHECKS - LEADERBOARDS2_READ_GET_ROW_DATA_START(readInfo) = ", LEADERBOARDS2_READ_GET_ROW_DATA_START(readInfo))
#IF USE_FINAL_PRINTS
PRINTLN_FINAL("[LASTGEN][SE-CE] No data found for 360 BLIMP. (A)")
PRINTLN_FINAL("[LASTGEN][SE-CE] iPlatformUpdateLBData.bSuccessful = ", iPlatformUpdateLBData.bSuccessful)
PRINTLN_FINAL("[LASTGEN][SE-CE] LEADERBOARDS2_READ_GET_ROW_DATA_START(readInfo) = ", LEADERBOARDS2_READ_GET_ROW_DATA_START(readInfo))
#ENDIF
ENDIF
iPlatformUpdateLBData.bSuccessful = FALSE
iPlatformUpdateLBData.iTotalStage = 4
END_LEADERBOARD_READ(iPlatformUpdateLBData.iReadStage,iPlatformUpdateLBData.bSuccessful,lbReadData)
ENDIF
ELSE
PRINTLN("RUN_PLATFORM_UPGRADE_LB_CHECKS - Already run check for 360 BLIMP. Moving to next check.")
#IF USE_FINAL_PRINTS
PRINTLN_FINAL("[LASTGEN][SE-CE] Already run check for 360 BLIMP. Moving to next check.")
#ENDIF
iPlatformUpdateLBData.bSuccessful = FALSE
iPlatformUpdateLBData.iTotalStage = 4
ENDIF
BREAK
CASE 4
gamerName = g_struct_Save_transfer_data_XBOX360.m_gamerHandle
platform = ("xbox360")
lbReadData.m_GroupSelector.m_NumGroups = 1
lbReadData.m_GroupSelector.m_Group[0].m_Category = "ProductId"
lbReadData.m_GroupSelector.m_Group[0].m_Id = "collectors_ed"
#IF USE_FINAL_PRINTS
PRINTLN_FINAL("[LASTGEN][SE-CE] ------- Leaderboard Query -------")
PRINTLN_FINAL("[LASTGEN][SE-CE] GamerHandle: ", gamerName)
PRINTLN_FINAL("[LASTGEN][SE-CE] Platform: ", platform)
PRINTLN_FINAL("[LASTGEN][SE-CE] Id: ", lbReadData.m_GroupSelector.m_Group[0].m_Id)
PRINTLN_FINAL("[LASTGEN][SE-CE] Category: ", lbReadData.m_GroupSelector.m_Group[0].m_Category)
PRINTLN_FINAL("[LASTGEN][SE-CE] NumbeOfGroups: ", lbReadData.m_GroupSelector.m_NumGroups)
PRINTLN_FINAL("[LASTGEN][SE-CE] ---------------------------------")
#ENDIF
CLEAR_BIT(g_iPlayerHasLastGenSpecialContentBitset, BIT_LAST_GEN_SPECIAL_CONTENT_360_COLLECTORS)
IF NOT IS_BIT_SET(iChecksStatus,ENUM_TO_INT(PLATFORM_UPGRADE_LB_CHECK_XBOX360_COLLECT))
IF START_SC_LEADERBOARD_READ_BY_PLATFORM(iPlatformUpdateLBData.iReadStage,iPlatformUpdateLBData.bSuccessful,lbReadData,
gamerName,platform)
#IF IS_DEBUG_BUILD
println("RUN_PLATFORM_UPGRADE_LB_CHECKS LEADERBOARD ID = ", lbReadData.m_LeaderboardId)
#ENDIF
FILL_READ_INFO_STRUCT(readInfo,lbReadData)
IF iPlatformUpdateLBData.bSuccessful
AND LEADERBOARDS2_READ_GET_ROW_DATA_START(readInfo)
IF readInfo.m_ReturnedRows > 0
LEADERBOARDS2_READ_GET_ROW_DATA_INFO(0, initRowData)
IF LEADERBOARDS2_READ_GET_ROW_DATA_INT(0, 0) > 0
println("START_SC_LEADERBOARD_READ_BY_PLATFORM: Row: ", 0, " Column: ",0)
#IF IS_DEBUG_BUILD
DEBUG_PRINT_SC_LB_RETURNED_VALUES("RUN_PLATFORM_UPGRADE_LB_CHECKS","Current Run",0,0,
LEADERBOARDS2_READ_GET_ROW_DATA_INT(0, 0),0.0,TRUE )
#ENDIF
PRINTLN("[LASTGEN][SE-CE] RUN_PLATFORM_UPGRADE_LB_CHECKS - Setting player has 360 COLLECTORS.")
#IF USE_FINAL_PRINTS
PRINTLN_FINAL("[LASTGEN][SE-CE] Setting player has 360 COLLECTORS.")
#ENDIF
SET_BIT(iChecksStatus,ENUM_TO_INT(PLATFORM_UPGRADE_LB_HAS_COLLECT))
SET_BIT(g_iPlayerHasLastGenSpecialContentBitset, BIT_LAST_GEN_SPECIAL_CONTENT_360_COLLECTORS)
IF NOT bSPCheck
SET_MP_INT_PLAYER_STAT(MPPLY_PLAT_UP_LB_CHECK,iChecksStatus)
ELSE
PRINTLN("RUN_PLATFORM_UPGRADE_LB_CHECKS - Setting player has 360 COLLECTORS.")
#IF USE_FINAL_PRINTS
PRINTLN_FINAL("[LASTGEN][SE-CE] Setting player has 360 COLLECTORS.")
#ENDIF
IF ARE_PROFILE_SETTINGS_VALID()
CPRINTLN(DEBUG_LASTGEN, "<LastGen-SE-CE> Updated profile settings.")
#IF USE_FINAL_PRINTS
PRINTLN_FINAL("[LASTGEN][SE-CE] Updated profile settings.")
#ENDIF
SET_HAS_SPECIALEDITION_CONTENT(g_iPlayerHasLastGenSpecialContentBitset)
ENDIF
ENDIF
ELSE
PRINTLN("[LASTGEN][SE-CE] RUN_PLATFORM_UPGRADE_LB_CHECKS - No data found for 360 COLLECTORS. (C)")
#IF USE_FINAL_PRINTS
PRINTLN_FINAL("[LASTGEN][SE-CE] No data found for 360 COLLECTORS. (C)")
#ENDIF
ENDIF
ELSE
PRINTLN("[LASTGEN][SE-CE] RUN_PLATFORM_UPGRADE_LB_CHECKS - No data found for 360 COLLECTORS. (B)")
#IF USE_FINAL_PRINTS
PRINTLN_FINAL("[LASTGEN][SE-CE] No data found for 360 COLLECTORS. (B)")
#ENDIF
ENDIF
SET_BIT(g_iPlayerHasLastGenSpecialContentBitset, BIT_LAST_GEN_SPECIAL_CONTENT_STAT_STORED_COLLECTOR)
STAT_SET_INT(SP_UNLOCK_EXCLUS_CONTENT, g_iPlayerHasLastGenSpecialContentBitset)
CPRINTLN(DEBUG_LASTGEN, "[LASTGEN][SE-CE] 360 STAT_STORED_COLLECTOR Set g_iPlayerHasLastGenSpecialContentBitset = ", g_iPlayerHasLastGenSpecialContentBitset, " " )
SET_BIT(iChecksStatus,ENUM_TO_INT(PLATFORM_UPGRADE_LB_CHECK_XBOX360_COLLECT))
LEADERBOARDS2_READ_GET_ROW_DATA_END( )
ELSE
PRINTLN("RUN_PLATFORM_UPGRADE_LB_CHECKS - No data found for 360 COLLECTORS. (A)")
PRINTLN("RUN_PLATFORM_UPGRADE_LB_CHECKS - iPlatformUpdateLBData.bSuccessful = ", iPlatformUpdateLBData.bSuccessful)
PRINTLN("RUN_PLATFORM_UPGRADE_LB_CHECKS - LEADERBOARDS2_READ_GET_ROW_DATA_START(readInfo) = ", LEADERBOARDS2_READ_GET_ROW_DATA_START(readInfo))
#IF USE_FINAL_PRINTS
PRINTLN_FINAL("[LASTGEN][SE-CE] No data found for 360 COLLECTORS. (A)")
PRINTLN_FINAL("[LASTGEN][SE-CE] iPlatformUpdateLBData.bSuccessful = ", iPlatformUpdateLBData.bSuccessful)
PRINTLN_FINAL("[LASTGEN][SE-CE] LEADERBOARDS2_READ_GET_ROW_DATA_START(readInfo) = ", LEADERBOARDS2_READ_GET_ROW_DATA_START(readInfo))
#ENDIF
ENDIF
iPlatformUpdateLBData.bSuccessful = FALSE
iPlatformUpdateLBData.iTotalStage = 5
END_LEADERBOARD_READ(iPlatformUpdateLBData.iReadStage,iPlatformUpdateLBData.bSuccessful,lbReadData)
ENDIF
ELSE
iPlatformUpdateLBData.bSuccessful = FALSE
iPlatformUpdateLBData.iTotalStage = 5
println("RUN_PLATFORM_UPGRADE_LB_CHECKS -- already checked blimp moving to stage 5 ")
ENDIF
BREAK
CASE 5
gamerName = g_struct_Save_transfer_data_XBOX360.m_gamerHandle
platform = ("xbox360")
lbReadData.m_GroupSelector.m_NumGroups = 1
lbReadData.m_GroupSelector.m_Group[0].m_Category = "ProductId"
lbReadData.m_GroupSelector.m_Group[0].m_Id = "special_ed"
#IF USE_FINAL_PRINTS
PRINTLN_FINAL("[LASTGEN][SE-CE] ------- Leaderboard Query -------")
PRINTLN_FINAL("[LASTGEN][SE-CE] GamerHandle: ", gamerName)
PRINTLN_FINAL("[LASTGEN][SE-CE] Platform: ", platform)
PRINTLN_FINAL("[LASTGEN][SE-CE] Id: ", lbReadData.m_GroupSelector.m_Group[0].m_Id)
PRINTLN_FINAL("[LASTGEN][SE-CE] Category: ", lbReadData.m_GroupSelector.m_Group[0].m_Category)
PRINTLN_FINAL("[LASTGEN][SE-CE] NumbeOfGroups: ", lbReadData.m_GroupSelector.m_NumGroups)
PRINTLN_FINAL("[LASTGEN][SE-CE] ---------------------------------")
#ENDIF
CLEAR_BIT(g_iPlayerHasLastGenSpecialContentBitset, BIT_LAST_GEN_SPECIAL_CONTENT_360_SPECIAL)
IF NOT IS_BIT_SET(iChecksStatus,ENUM_TO_INT(PLATFORM_UPGRADE_LB_CHECK_XBOX360_SPECIAL))
IF START_SC_LEADERBOARD_READ_BY_PLATFORM(iPlatformUpdateLBData.iReadStage,iPlatformUpdateLBData.bSuccessful,lbReadData,
gamerName,platform)
#IF IS_DEBUG_BUILD
println("RUN_PLATFORM_UPGRADE_LB_CHECKS LEADERBOARD ID = ", lbReadData.m_LeaderboardId)
#ENDIF
FILL_READ_INFO_STRUCT(readInfo,lbReadData)
IF iPlatformUpdateLBData.bSuccessful
AND LEADERBOARDS2_READ_GET_ROW_DATA_START(readInfo)
IF readInfo.m_ReturnedRows > 0
LEADERBOARDS2_READ_GET_ROW_DATA_INFO(0, initRowData)
IF LEADERBOARDS2_READ_GET_ROW_DATA_INT(0, 0) > 0
println("START_SC_LEADERBOARD_READ_BY_PLATFORM: Row: ", 0, " Column: ",0)
#IF IS_DEBUG_BUILD
DEBUG_PRINT_SC_LB_RETURNED_VALUES("RUN_PLATFORM_UPGRADE_LB_CHECKS","Current Run",0,0,
LEADERBOARDS2_READ_GET_ROW_DATA_INT(0, 0),0.0,TRUE )
#ENDIF
PRINTLN("[LASTGEN][SE-CE] RUN_PLATFORM_UPGRADE_LB_CHECKS - Setting player has 360 SPECIAL.")
#IF USE_FINAL_PRINTS
PRINTLN_FINAL("[LASTGEN][SE-CE] Setting player has 360 SPECIAL.")
#ENDIF
SET_BIT(iChecksStatus,ENUM_TO_INT(PLATFORM_UPGRADE_LB_HAS_SPECIAL))
SET_BIT(g_iPlayerHasLastGenSpecialContentBitset, BIT_LAST_GEN_SPECIAL_CONTENT_360_SPECIAL)
IF NOT bSPCheck
SET_MP_INT_PLAYER_STAT(MPPLY_PLAT_UP_LB_CHECK,iChecksStatus)
ELSE
CPRINTLN(DEBUG_LASTGEN, "<LastGen-SE-CE> Flagging that player's last gen account had 360 SPECIAL in SP stat.")
#IF USE_FINAL_PRINTS
PRINTLN_FINAL("[LASTGEN][SE-CE] Flagging that player's last gen account had 360 SPECIAL in SP stat.")
#ENDIF
IF ARE_PROFILE_SETTINGS_VALID()
CPRINTLN(DEBUG_LASTGEN, "<LastGen-SE-CE> Updated profile settings.")
#IF USE_FINAL_PRINTS
PRINTLN_FINAL("[LASTGEN][SE-CE] Updated profile settings.")
#ENDIF
SET_HAS_SPECIALEDITION_CONTENT(g_iPlayerHasLastGenSpecialContentBitset)
ENDIF
ENDIF
ELSE
PRINTLN("[LASTGEN][SE-CE] RUN_PLATFORM_UPGRADE_LB_CHECKS - No data found for 360 SPECIAL. (C)")
#IF USE_FINAL_PRINTS
PRINTLN_FINAL("[LASTGEN][SE-CE] No data found for 360 SPECIAL. (C)")
#ENDIF
ENDIF
ELSE
PRINTLN("[LASTGEN][SE-CE] RUN_PLATFORM_UPGRADE_LB_CHECKS - No data found for 360 SPECIAL. (B)")
#IF USE_FINAL_PRINTS
PRINTLN_FINAL("[LASTGEN][SE-CE] No data found for 360 SPECIAL. (B)")
#ENDIF
ENDIF
SET_BIT(g_iPlayerHasLastGenSpecialContentBitset,BIT_LAST_GEN_SPECIAL_CONTENT_STAT_STORED_SPECIAL)
STAT_SET_INT(SP_UNLOCK_EXCLUS_CONTENT, g_iPlayerHasLastGenSpecialContentBitset)
CPRINTLN(DEBUG_LASTGEN, "[LASTGEN][SE-CE] 360 STAT_STORED_SPECIAL Set g_iPlayerHasLastGenSpecialContentBitset = ", g_iPlayerHasLastGenSpecialContentBitset, " " )
SET_BIT(iChecksStatus,ENUM_TO_INT(PLATFORM_UPGRADE_LB_CHECK_XBOX360_SPECIAL))
LEADERBOARDS2_READ_GET_ROW_DATA_END( )
ELSE
PRINTLN("RUN_PLATFORM_UPGRADE_LB_CHECKS - No data found for 360 SPECIAL. (A)")
PRINTLN("RUN_PLATFORM_UPGRADE_LB_CHECKS - iPlatformUpdateLBData.bSuccessful = ", iPlatformUpdateLBData.bSuccessful)
PRINTLN("RUN_PLATFORM_UPGRADE_LB_CHECKS - LEADERBOARDS2_READ_GET_ROW_DATA_START(readInfo) = ", LEADERBOARDS2_READ_GET_ROW_DATA_START(readInfo))
#IF USE_FINAL_PRINTS
PRINTLN_FINAL("[LASTGEN][SE-CE] No data found for 360 SPECIAL. (A)")
PRINTLN_FINAL("[LASTGEN][SE-CE] iPlatformUpdateLBData.bSuccessful = ", iPlatformUpdateLBData.bSuccessful)
PRINTLN_FINAL("[LASTGEN][SE-CE] LEADERBOARDS2_READ_GET_ROW_DATA_START(readInfo) = ", LEADERBOARDS2_READ_GET_ROW_DATA_START(readInfo))
#ENDIF
ENDIF
iPlatformUpdateLBData.bSuccessful = FALSE
iPlatformUpdateLBData.iTotalStage = 6
END_LEADERBOARD_READ(iPlatformUpdateLBData.iReadStage,iPlatformUpdateLBData.bSuccessful,lbReadData)
IF NOT bSPCheck
REQUEST_SAVE(SSR_REASON_LEADERBOARD)
ENDIF
ENDIF
ELSE
iPlatformUpdateLBData.bSuccessful = FALSE
iPlatformUpdateLBData.iTotalStage = 6
IF NOT bSPCheck
PRINTLN("RUN_PLATFORM_UPGRADE_LB_CHECKS - Requesting save in final stage.")
#IF USE_FINAL_PRINTS
PRINTLN_FINAL("[LASTGEN][SE-CE] Requesting save in final stage.")
#ENDIF
REQUEST_SAVE(SSR_REASON_LEADERBOARD)
ENDIF
ENDIF
BREAK
CASE 6
PRINTLN("RUN_PLATFORM_UPGRADE_LB_CHECKS - Check ran to completion. Finished.")
#IF USE_FINAL_PRINTS
PRINTLN_FINAL("[LASTGEN][SE-CE] Check ran to completion. Finished.")
#ENDIF
RETURN TRUE
BREAK
ENDSWITCH
RETURN FALSE
ENDFUNC
#IF FEATURE_TUNER
STRUCT CAR_MEET_LEADERBOARD_WRITE_DATA
INT iFMMCType
INT iSubType
INT iBestTime //fastest lap/best time
INT iWins //# of wins (generally will be 1 if you won, 0 if you lost)
INT iLoses //# of loses (generally will be 0 if you won, 1 if you lost)
INT iMatches //# of matches (generally will be 1)
INT iVehModel //Int value of the vehicle model used
BOOL bCustomVeh //Was custom or stock vehicle used TRUE = custom
INT iClubXP //Club XP after event
TEXT_LABEL_31 tlOverwriteUGCID //USED FOR TESTING/OVERWRITING IF NEEDED ONLY
ENDSTRUCT
/// PURPOSE:
/// Write to the car meet membership leaderboard
/// PARAMS:
PROC WRITE_TO_CAR_MEET_LEADERBOARDS(CAR_MEET_LEADERBOARD_WRITE_DATA &data #IF IS_DEBUG_BUILD, BOOL bBypassXPSafetyCheck = FALSE #endif )
//EXIT //exitng LBS dont exist yet.
TEXT_LABEL_31 categoryNames[2]
TEXT_LABEL_23 uniqueIdentifiers[2]
INT iNumCategories
IF g_bAllowWriteToCarMeetMembershipLB //so we can disable this in BG script if needed
#IF IS_DEBUG_BUILD
IF NOT bBypassXPSafetyCheck
#ENDIF
IF data.iClubXP < GET_PLAYERS_CAR_CLUB_REP(PLAYER_ID())
PRINTLN("WRITE_TO_CAR_MEET_LEADERBOARDS: INVALID XP USED!! See Conor stored XP: ",GET_PLAYERS_CAR_CLUB_REP(PLAYER_ID())," written XP: ",data.iClubXP)
SCRIPT_ASSERT("WRITE_TO_CAR_MEET_LEADERBOARDS: INVALID XP USED!! See Conor")
ELSE
PRINTLN("WRITE_TO_CAR_MEET_LEADERBOARDS: stored XP: ",GET_PLAYERS_CAR_CLUB_REP(PLAYER_ID())," written XP: ",data.iClubXP)
ENDIF
#IF IS_DEBUG_BUILD
ENDIF
#ENDIF
categoryNames[0] = ""
uniqueIdentifiers[0] = ""
IF data.iFMMCType = FMMC_TYPE_SANDBOX_ACTIVITY
AND data.iSubType = ENUM_TO_INT(SAS_TT_LOCATION_1)
//Time trials don't "win" or "lose"
data.iWins = 0
data.iLoses = 0
data.iMatches = 0
ENDIF
IF INIT_LEADERBOARD_WRITE(LEADERBOARD_FREEMODE_TUNER_CAR_CLUB,uniqueIdentifiers,categoryNames,0) //LEADERBOARD_FREEMODE_TUNER_CAR_CLUB
PRINTLN("WRITE_TO_CAR_MEET_MEMBERSHIP_LEADERBOARD Writing to SC Leaderboard for CAR MEET MEMBERSHIP")
LEADERBOARDS_WRITE_ADD_COLUMN(LB_INPUT_COL_SCORE, data.iClubXP, 0)
PRINTLN("WRITE_TO_CAR_MEET_MEMBERSHIP_LEADERBOARD XP value = ", data.iClubXP)
LEADERBOARDS_WRITE_ADD_COLUMN(LB_INPUT_COL_NUM_WINS, data.iWins, 0)
PRINTLN("WRITE_TO_CAR_MEET_MEMBERSHIP_LEADERBOARD wins incremented by ",data.iWins)
LEADERBOARDS_WRITE_ADD_COLUMN(LB_INPUT_COL_NUM_MATCHES_LOST, data.iLoses, 0)
PRINTLN("WRITE_TO_CAR_MEET_MEMBERSHIP_LEADERBOARD loses incremented by ",data.iLoses)
LEADERBOARDS_WRITE_ADD_COLUMN(LB_INPUT_COL_NUM_MATCHES, data.iMatches, 0)
PRINTLN("WRITE_TO_CAR_MEET_MEMBERSHIP_LEADERBOARD matches incremented by ", data.iMatches)
ENDIF
ENDIF
IF g_bAllowWriteToTunerRaceLB
AND data.iFMMCType != 0
categoryNames[0] = "GameType"
SWITCH data.iFMMCType
CASE FMMC_TYPE_SANDBOX_ACTIVITY
iNumCategories = 1
uniqueIdentifiers[0] = "TUNER_SANDB_SVAR"
IF data.iSubType = ENUM_TO_INT(SAS_HH_LOCATION_1)
OR data.iSubType = ENUM_TO_INT(SAS_HH_LOCATION_2)
uniqueIdentifiers[0] += ENUM_TO_INT(SAS_HH_LOCATION_1)
ELSE
uniqueIdentifiers[0] += data.iSubType
ENDIF
PRINTLN("WRITE_TO_CAR_MEET_MEMBERSHIP_LEADERBOARD Writing to SC Leaderboard for Sandbox Activity: ",uniqueIdentifiers[0])
BREAK
CASE FMMC_TYPE_STREET_RACE_SERIES
CASE FMMC_TYPE_PURSUIT_SERIES
iNumCategories = 2
categoryNames[1] = "Mission"
IF data.iFMMCType = FMMC_TYPE_STREET_RACE_SERIES
uniqueIdentifiers[0] = "TUNER_SRS"
ELSE
uniqueIdentifiers[0] = "TUNER_PS"
ENDIF
IF NOT IS_STRING_NULL_OR_EMPTY(data.tlOverwriteUGCID)
PRINTLN("WRITE_TO_CAR_MEET_MEMBERSHIP_LEADERBOARD: Overwriting UGC content ID to: ",data.tlOverwriteUGCID)
uniqueIdentifiers[1] = data.tlOverwriteUGCID
ELSE
uniqueIdentifiers[1] = g_FMMC_STRUCT.tl31LoadedContentID
ENDIF
PRINTLN("WRITE_TO_CAR_MEET_MEMBERSHIP_LEADERBOARD Writing to SC Leaderboard for Tuner Race type: ",data.iFMMCType," content ID: ",uniqueIdentifiers[0])
BREAK
ENDSWITCH
IF INIT_LEADERBOARD_WRITE(LEADERBOARD_FREEMODE_TUNER_RACES,uniqueIdentifiers,categoryNames,iNumCategories) //LEADERBOARD_FREEMODE_TUNER_CAR_CLUB
//TUNER_SANDB_SVAR2
LEADERBOARDS_WRITE_ADD_COLUMN(LB_INPUT_COL_SCORE, -data.iBestTime, 0)
PRINTLN("WRITE_TO_CAR_MEET_MEMBERSHIP_LEADERBOARD score (neg best time) = ", -data.iBestTime)
LEADERBOARDS_WRITE_ADD_COLUMN(LB_INPUT_COL_BEST_TIME, data.iBestTime, 0)
PRINTLN("WRITE_TO_CAR_MEET_MEMBERSHIP_LEADERBOARD best time = ",data.iBestTime)
LEADERBOARDS_WRITE_ADD_COLUMN(LB_INPUT_COL_NUM_WINS, data.iWins, 0)
PRINTLN("WRITE_TO_CAR_MEET_MEMBERSHIP_LEADERBOARD wins = ",data.iWins)
LEADERBOARDS_WRITE_ADD_COLUMN(LB_INPUT_COL_VEHICLE_ID, data.iVehModel, 0)
PRINTLN("WRITE_TO_CAR_MEET_MEMBERSHIP_LEADERBOARD data.iVehModel = ", data.iVehModel)
IF data.bCustomVeh
LEADERBOARDS_WRITE_ADD_COLUMN(LB_INPUT_COL_CUSTOM_VEHICLE, 1, 0)
PRINTLN("WRITE_TO_CAR_MEET_MEMBERSHIP_LEADERBOARD custom vehicle ")
ELSE
LEADERBOARDS_WRITE_ADD_COLUMN(LB_INPUT_COL_CUSTOM_VEHICLE, 0, 0)
PRINTLN("WRITE_TO_CAR_MEET_MEMBERSHIP_LEADERBOARD NOT custom vehicle ")
ENDIF
ENDIF
ENDIF
ENDPROC
CONST_INT CM_SCLB_BS_SETUP_READ 0
CONST_INT CM_SCLB_BS_RUNNING_LB 1
CONST_INT CM_SCLB_BS_NOT_SAFE_TO_DISPLAY 2
CONST_INT CM_SCLB_BS_STARTED_RUNNING 3
CONST_INT CM_SCLB_TRIGGER_CAREER 0
CONST_INT CM_SCLB_TRIGGER_SANDBOX 1
CONST_INT CM_SCLB_TRIGGER_SERIES 2
CONST_INT CM_SCLB_TIME_TRIAL 0
CONST_INT CM_SCLB_CHECKPOINT_DASH 1
CONST_INT CM_SCLB_HEAD_TO_HEAD1 2
//CONST_INT CM_SCLB_HEAD_TO_HEAD2 3
CONST_INT CM_SCLB_SERIES_STREET_RACES 0
CONST_INT CM_SCLB_SERIES_PURSUIT 1
STRUCT CAR_MEET_SCLB_DATA
INT iBS
SC_LEADERBOARD_CONTROL_STRUCT scLB_control
SCALEFORM_INDEX scLB_ScaleformID[2]
SCALEFORM_INSTRUCTIONAL_BUTTONS scaleformStruct
INT iFMMCType
INT iSubType
TEXT_LABEL_31 FileName
TEXT_LABEL_63 MissionName
INT iTriggerType
INT iCurrentSelection
ENDSTRUCT
FUNC BOOL IS_SAFE_TO_DISPLAY_SCLB_IN_CAR_MEET(CAR_MEET_SCLB_DATA &cmSCLBData)
IF g_BG_ForceCleanupCarMeetLB
RETURN FALSE
ENDIF
IF IS_BIT_SET(cmSCLBData.iBS,CM_SCLB_BS_NOT_SAFE_TO_DISPLAY)
PRINTLN("IS_SAFE_TO_DISPLAY_SCLB_IN_CAR_MEET: FALSE cmSCLBData.iBS,CM_SCLB_BS_NOT_SAFE_TO_DISPLAY ")
RETURN FALSE
ENDIF
IF NOT IS_SKYSWOOP_AT_GROUND()
PRINTLN("IS_SAFE_TO_DISPLAY_SCLB_IN_CAR_MEET: FALSE NOT IS_SKYSWOOP_AT_GROUND() ")
RETURN FALSE
ENDIF
IF IS_PLAYER_SWITCH_IN_PROGRESS()
PRINTLN("IS_SAFE_TO_DISPLAY_SCLB_IN_CAR_MEET: FALSE IS_PLAYER_SWITCH_IN_PROGRESS")
RETURN FALSE
ENDIF
IF IS_PAUSE_MENU_ACTIVE_EX()
PRINTLN("IS_SAFE_TO_DISPLAY_SCLB_IN_CAR_MEET: FALSE IS_PAUSE_MENU_ACTIVE_EX")
RETURN FALSE
ENDIF
//add any conditions here
RETURN TRUE
ENDFUNC
PROC GET_CAR_MEET_SC_LEADERBOARD_UGC_DATA(INT iFMMCType,INT iArrayID,TEXT_LABEL_31 &fileName,TEXT_LABEL_63 &missionName)
INT iArray
INT iContentID
IF iFMMCType = FMMC_TYPE_PURSUIT_SERIES
iContentID = g_sMPTunables.iFmCoronaPlaylistProffesionalRootContentId[ciCV2_SERIES_PURSUIT][iArrayID]
ELIF iFMMCType = FMMC_TYPE_STREET_RACE_SERIES
iContentID = g_sMPTunables.iFmCoronaPlaylistProffesionalRootContentId[ciCV2_SERIES_STREET_RACE][iArrayID]
ELSE
fileName = ""
missionName = ""
EXIT
ENDIF
iArray = GET_CONTENT_ID_INDEX(iContentID)
IF iArray != -1
fileName = g_FMMC_ROCKSTAR_CREATED.sMissionHeaderVars[iArray].tlName
missionName = g_FMMC_ROCKSTAR_CREATED.sMissionHeaderVars[iArray].tlMissionName
EXIT
ENDIF
ENDPROC
CONST_INT CAR_MEET_SCLB_RESET_NEW_BOARD 100
PROC CLEANUP_CAR_MEET_SC_LEADERBOARD(CAR_MEET_SCLB_DATA &cmSCLBData,INT iReason = 0)
PRINTLN("CLEANUP_CAR_MEET_SC_LEADERBOARD: called for iReason = ",iReason)
IF iReason = CAR_MEET_SCLB_RESET_NEW_BOARD
scLB_DisplayedData.bResetTriggered = TRUE
CLEAR_BIT(cmSCLBData.scLB_Control.ibs,SC_LEADERBOARD_CONTROL_SETUP_BUTTONS)
CLEAR_BIT(cmSCLBData.scLB_Control.ibs,SC_LEADERBOARD_CONTROL_SETUP_LOADING_MENU)
CLEAR_BIT(cmSCLBData.scLB_Control.ibs,SC_LEADERBOARD_CONTROL_SETUP_DATA_MENU)
scLB_DisplayedData.iReadFailedBS = 0
SOCIAL_CLUB_CLEAR_CONTROL_STRUCT(cmSCLBData.scLB_Control)
//CLEANUP_SOCIAL_CLUB_LEADERBOARD(cmSCLBData.scLB_control,TRUE)
CLEAR_BIT(cmSCLBData.iBS,CM_SCLB_BS_SETUP_READ)
ELSE
CLEAR_BIT(cmSCLBData.iBS, CM_SCLB_BS_RUNNING_LB)
scLB_DisplayedData.bResetTriggered = TRUE
IF IS_BIT_SET(cmSCLBData.scLB_Control.ibs,SC_LEADERBOARD_CONTROL_SETUP_DATA_MENU)
OR IS_BIT_SET(cmSCLBData.scLB_Control.ibs,SC_LEADERBOARD_CONTROL_SETUP_LOADING_MENU)
IF HAS_SCALEFORM_MOVIE_LOADED(cmSCLBData.scLB_ScaleformID[0])
SET_SCALEFORM_MOVIE_AS_NO_LONGER_NEEDED(cmSCLBData.scLB_ScaleformID[0])
ENDIF
IF HAS_SCALEFORM_MOVIE_LOADED(cmSCLBData.scLB_ScaleformID[1])
BEGIN_SCALEFORM_MOVIE_METHOD(cmSCLBData.scLB_ScaleformID[1], "CLEAR_ALL")
END_SCALEFORM_MOVIE_METHOD()
ENDIF
REFRESH_SCALEFORM_INSTRUCTIONAL_BUTTONS(cmSCLBData.scaleformStruct)
ENDIF
CLEANUP_SOCIAL_CLUB_LEADERBOARD(cmSCLBData.scLB_control,TRUE)
cmSCLBData.iBS = 0
ENDIF
ENDPROC
PROC RUN_CAR_MEET_SC_LEADERBOARD(CAR_MEET_SCLB_DATA &cmSCLBData)
IF IS_BIT_SET(cmSCLBData.iBS, CM_SCLB_BS_RUNNING_LB)
IF IS_SAFE_TO_DISPLAY_SCLB_IN_CAR_MEET(cmSCLBData)
// Do any leaderboard per-frame processing
IF NOT IS_BIT_SET(cmSCLBData.iBS,CM_SCLB_BS_SETUP_READ)
SWITCH cmSCLBData.iTriggerType
CASE CM_SCLB_TRIGGER_CAREER
cmSCLBData.iFMMCType = SCLB_TYPE_CAR_MEET_MEMBERSHIP
BREAK
CASE CM_SCLB_TRIGGER_SANDBOX
cmSCLBData.iFMMCType = FMMC_TYPE_SANDBOX_ACTIVITY
SWITCH cmSCLBData.iCurrentSelection
CASE CM_SCLB_TIME_TRIAL
cmSCLBData.iSubType = ENUM_TO_INT(SAS_TT_LOCATION_1)
BREAK
CASE CM_SCLB_CHECKPOINT_DASH
cmSCLBData.iSubType = ENUM_TO_INT(SAS_CD_LOCATION_1)
BREAK
CASE CM_SCLB_HEAD_TO_HEAD1
cmSCLBData.iSubType = ENUM_TO_INT(SAS_HH_LOCATION_1) //just one?
//SAS_HH_LOCATION_2
BREAK
// CASE CM_SCLB_HEAD_TO_HEAD2
// cmSCLBData.iSubType = ENUM_TO_INT(SAS_HH_LOCATION_2)
// //SAS_HH_LOCATION_2
// BREAK
ENDSWITCH
BREAK
CASE CM_SCLB_TRIGGER_SERIES
SWITCH cmSCLBData.iCurrentSelection
CASE CM_SCLB_SERIES_STREET_RACES
cmSCLBData.iFMMCType = FMMC_TYPE_STREET_RACE_SERIES
BREAK
CASE CM_SCLB_SERIES_PURSUIT
cmSCLBData.iFMMCType = FMMC_TYPE_PURSUIT_SERIES
BREAK
ENDSWITCH
BREAK
ENDSWITCH
GET_CAR_MEET_SC_LEADERBOARD_UGC_DATA(cmSCLBData.iFMMCType,cmSCLBData.iSubType,cmSCLBData.FileName,cmSCLBData.MissionName)
PRINTLN("RUN_CAR_MEET_SC_LEADERBOARD: cmSCLBData.iFMMCType = ",cmSCLBData.iFMMCType," cmSCLBData.iSubType = ",cmSCLBData.iSubType,
" cmSCLBData.FileName = ",cmSCLBData.FileName, " cmSCLBData.MissionName = ",cmSCLBData.MissionName)
SETUP_SOCIAL_CLUB_LEADERBOARD_READ_DATA(cmSCLBData.scLB_control, cmSCLBData.iFMMCType,cmSCLBData.FileName,cmSCLBData.MissionName,cmSCLBData.iSubType)
SET_BIT(cmSCLBData.iBS,CM_SCLB_BS_SETUP_READ)
DRAW_SOCIAL_CLUB_LEADERBOARD(cmSCLBData.scLB_control,cmSCLBData.scLB_ScaleformID)
ELSE
DRAW_SOCIAL_CLUB_LEADERBOARD(cmSCLBData.scLB_control,cmSCLBData.scLB_ScaleformID)
SPRITE_PLACEMENT ScaleformSprite
ScaleformSprite = GET_SCALEFORM_INSTRUCTIONAL_BUTTON_POSITION()
IF NOT IS_BIT_SET(cmSCLBData.scLB_control.ibs,SC_LEADERBOARD_CONTROL_SETUP_BUTTONS)
REFRESH_SCALEFORM_INSTRUCTIONAL_BUTTONS(cmSCLBData.scaleformStruct)
SET_BIT(cmSCLBData.scLB_control.ibs,SC_LEADERBOARD_CONTROL_SETUP_BUTTONS)
IF IS_BIT_SET(cmSCLBData.scLB_control.ibs,SC_LEADERBOARD_CONTROL_SETUP_DATA_MENU)
AND scLB_DisplayedData.iSectionEntries[0] > 0
AND cmSCLBData.scLB_control.navigation.iCurrentVertSel >= 0
ADD_SCALEFORM_INSTRUCTIONAL_INPUT(FRONTEND_CONTROL, INPUT_FRONTEND_SELECT,"SCLB_PROFILE",cmSCLBData.scaleformStruct, TRUE)
ENDIF
ADD_SCALEFORM_INSTRUCTIONAL_INPUT(FRONTEND_CONTROL, INPUT_FRONTEND_CANCEL,"BB_BACK",cmSCLBData.scaleformStruct, TRUE)
IF cmSCLBData.iTriggerType = CM_SCLB_TRIGGER_SANDBOX
SWITCH cmSCLBData.iCurrentSelection
CASE CM_SCLB_TIME_TRIAL
ADD_SCALEFORM_INSTRUCTIONAL_BUTTON(GET_CONTROL_INSTRUCTIONAL_BUTTONS_STRING(FRONTEND_CONTROL, INPUT_FRONTEND_X),"SCLB_T_CD",cmSCLBData.scaleformStruct)
BREAK
CASE CM_SCLB_CHECKPOINT_DASH
ADD_SCALEFORM_INSTRUCTIONAL_BUTTON(GET_CONTROL_INSTRUCTIONAL_BUTTONS_STRING(FRONTEND_CONTROL, INPUT_FRONTEND_X),"SCLB_T_HH1",cmSCLBData.scaleformStruct)
BREAK
CASE CM_SCLB_HEAD_TO_HEAD1
ADD_SCALEFORM_INSTRUCTIONAL_BUTTON(GET_CONTROL_INSTRUCTIONAL_BUTTONS_STRING(FRONTEND_CONTROL, INPUT_FRONTEND_X),"SCLB_T_TT",cmSCLBData.scaleformStruct)
BREAK
ENDSWITCH
ELIF cmSCLBData.iTriggerType = CM_SCLB_TRIGGER_SERIES
ADD_SCALEFORM_INSTRUCTIONAL_BUTTON(GET_CONTROL_INSTRUCTIONAL_BUTTONS_STRING(FRONTEND_CONTROL, INPUT_FRONTEND_X),"SCLB_B_NEXT",cmSCLBData.scaleformStruct)
SWITCH cmSCLBData.iCurrentSelection
CASE CM_SCLB_SERIES_STREET_RACES
ADD_SCALEFORM_INSTRUCTIONAL_BUTTON(GET_CONTROL_INSTRUCTIONAL_BUTTONS_STRING(FRONTEND_CONTROL, INPUT_FRONTEND_Y),"SCLB_T_PURSA",cmSCLBData.scaleformStruct)
BREAK
CASE CM_SCLB_SERIES_PURSUIT
ADD_SCALEFORM_INSTRUCTIONAL_BUTTON(GET_CONTROL_INSTRUCTIONAL_BUTTONS_STRING(FRONTEND_CONTROL, INPUT_FRONTEND_Y),"SCLB_T_SRSA",cmSCLBData.scaleformStruct)
BREAK
ENDSWITCH
ENDIF
ENDIF
RUN_SCALEFORM_INSTRUCTIONAL_BUTTONS(cmSCLBData.scLB_ScaleformID[1], ScaleformSprite, cmSCLBData.scaleformStruct)
ENDIF
// IF scLB_control.ReadDataStruct.m_LeaderboardId = ENUM_TO_INT(LEADERBOARD_MINI_GAMES_MP_SRANGE)
// SWITCH iState
// CASE 0
// ADD_SCALEFORM_INSTRUCTIONAL_BUTTON(GET_CONTROL_INSTRUCTIONAL_BUTTONS_STRING(FRONTEND_CONTROL, INPUT_FRONTEND_X),"FMMC_COR_SCLB7a",scaleformStruct)
// BREAK
// CASE 1
// ADD_SCALEFORM_INSTRUCTIONAL_BUTTON(GET_CONTROL_INSTRUCTIONAL_BUTTONS_STRING(FRONTEND_CONTROL, INPUT_FRONTEND_X),"FMMC_COR_SCLB7b",scaleformStruct)
// BREAK
// CASE 2
// ADD_SCALEFORM_INSTRUCTIONAL_BUTTON(GET_CONTROL_INSTRUCTIONAL_BUTTONS_STRING(FRONTEND_CONTROL, INPUT_FRONTEND_X),"FMMC_COR_SCLB7c",scaleformStruct)
// BREAK
// ENDSWITCH
// SWITCH iRangeWeap
// CASE 0
// ADD_SCALEFORM_INSTRUCTIONAL_BUTTON(GET_CONTROL_INSTRUCTIONAL_BUTTONS_STRING(FRONTEND_CONTROL, INPUT_FRONTEND_Y),"HUD_MG_SMG",scaleformStruct) //off by one as this is for NEXT selection not current
// BREAK
// CASE 1
// ADD_SCALEFORM_INSTRUCTIONAL_BUTTON(GET_CONTROL_INSTRUCTIONAL_BUTTONS_STRING(FRONTEND_CONTROL, INPUT_FRONTEND_Y),"HUD_MG_ASSAULT",scaleformStruct) //off by one as this is for NEXT selection not current
// BREAK
// CASE 2
// ADD_SCALEFORM_INSTRUCTIONAL_BUTTON(GET_CONTROL_INSTRUCTIONAL_BUTTONS_STRING(FRONTEND_CONTROL, INPUT_FRONTEND_Y),"HUD_MG_SHOTGUN",scaleformStruct) //off by one as this is for NEXT selection not current
// BREAK
// CASE 3
// ADD_SCALEFORM_INSTRUCTIONAL_BUTTON(GET_CONTROL_INSTRUCTIONAL_BUTTONS_STRING(FRONTEND_CONTROL, INPUT_FRONTEND_Y),"HUD_MG_LMG",scaleformStruct) //off by one as this is for NEXT selection not current
// BREAK
// CASE 4
// ADD_SCALEFORM_INSTRUCTIONAL_BUTTON(GET_CONTROL_INSTRUCTIONAL_BUTTONS_STRING(FRONTEND_CONTROL, INPUT_FRONTEND_Y),"HUD_MG_HEAVY",scaleformStruct) //off by one as this is for NEXT selection not current
// BREAK
// CASE 5
// ADD_SCALEFORM_INSTRUCTIONAL_BUTTON(GET_CONTROL_INSTRUCTIONAL_BUTTONS_STRING(FRONTEND_CONTROL, INPUT_FRONTEND_Y),"HUD_MG_PISTOL",scaleformStruct) //off by one as this is for NEXT selection not current
// BREAK
// ENDSWiTCH
// ENDIF
IF cmSCLBData.iTriggerType = CM_SCLB_TRIGGER_SANDBOX
IF IS_CONTROL_JUST_RELEASED(FRONTEND_CONTROL, INPUT_FRONTEND_X)
OR IS_DISABLED_CONTROL_JUST_RELEASED(FRONTEND_CONTROL, INPUT_FRONTEND_X)
cmSCLBData.iCurrentSelection++
IF cmSCLBData.iCurrentSelection > CM_SCLB_HEAD_TO_HEAD1
cmSCLBData.iCurrentSelection = CM_SCLB_TIME_TRIAL
ENDIF
CLEANUP_CAR_MEET_SC_LEADERBOARD(cmSCLBData,2)//,CAR_MEET_SCLB_RESET_NEW_BOARD)
ENDIF
ELIF cmSCLBData.iTriggerType = CM_SCLB_TRIGGER_SERIES
IF IS_CONTROL_JUST_RELEASED(FRONTEND_CONTROL, INPUT_FRONTEND_X)
OR IS_DISABLED_CONTROL_JUST_RELEASED(FRONTEND_CONTROL, INPUT_FRONTEND_X)
cmSCLBData.iSubType++
IF cmSCLBData.iCurrentSelection = CM_SCLB_SERIES_STREET_RACES
IF cmSCLBData.iSubType > g_sMPTunables.iFmCoronaPlaylistProffesionalLength[ciCV2_SERIES_STREET_RACE]
cmSCLBData.iSubType = 0
ENDIF
ELIF cmSCLBData.iCurrentSelection = CM_SCLB_SERIES_PURSUIT
IF cmSCLBData.iSubType > g_sMPTunables.iFmCoronaPlaylistProffesionalLength[ciCV2_SERIES_PURSUIT]
cmSCLBData.iSubType = 0
ENDIF
ENDIF
CLEANUP_CAR_MEET_SC_LEADERBOARD(cmSCLBData,3)//,CAR_MEET_SCLB_RESET_NEW_BOARD)
ENDIF
IF IS_CONTROL_JUST_RELEASED(FRONTEND_CONTROL, INPUT_FRONTEND_Y)
OR IS_DISABLED_CONTROL_JUST_RELEASED(FRONTEND_CONTROL, INPUT_FRONTEND_Y)
cmSCLBData.iCurrentSelection++
IF cmSCLBData.iCurrentSelection > CM_SCLB_SERIES_PURSUIT
cmSCLBData.iCurrentSelection = CM_SCLB_SERIES_STREET_RACES
ENDIF
cmSCLBData.iSubType = 0
CLEANUP_CAR_MEET_SC_LEADERBOARD(cmSCLBData,4)//,CAR_MEET_SCLB_RESET_NEW_BOARD)
ENDIF
ENDIF
// XBOX B to go back to wall control
IF IS_CONTROL_JUST_RELEASED(FRONTEND_CONTROL, INPUT_FRONTEND_CANCEL)
OR IS_DISABLED_CONTROL_JUST_RELEASED(FRONTEND_CONTROL, INPUT_FRONTEND_CANCEL)
CLEANUP_CAR_MEET_SC_LEADERBOARD(cmSCLBData,0)
ENDIF
ELSE
CLEANUP_CAR_MEET_SC_LEADERBOARD(cmSCLBData,1)
ENDIF
ENDIF
ENDPROC
#ENDIF
//
//EOF