899 lines
37 KiB
XML
Executable File
899 lines
37 KiB
XML
Executable File
|
|
USING "arcade_cabinet_minigame_common.sch"
|
|
USING "arcade_games_sound.sch"
|
|
USING "arcade_games_help_text.sch"
|
|
USING "gunslinger_arcade_using.sch"
|
|
// ------------------------------ LEADERBOARD ------------------------------
|
|
|
|
CONST_INT ciARCADE_GAMES_LBD_DEFAULT_RANK 99
|
|
CONST_INT ciARCADE_GAMES_RESEND_LEADERBOARD_REQUEST_TIME 5000
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//ARCADE_GAMES_LEADERBOARD_DATA lbData
|
|
|
|
FUNC CASINO_ARCADE_GAME ARCADE_GAMES_LEADERBOARD_GET_CASINO_ARCADE_GAME()
|
|
RETURN CASINO_ARCADE_GAME_TLG
|
|
ENDFUNC
|
|
|
|
//FUNC STRING ARCADE_GAMES_GAME_NAME_TO_STRING(CASINO_ARCADE_GAME eEnum)
|
|
// RETURN "Badlands Revenge II"
|
|
//ENDFUNC
|
|
|
|
FUNC STRING ARCADE_GAMES_LEADERBOARD_GET_TITLE_TEXTURE_NAME()
|
|
RETURN "LEADERBOARDS"
|
|
ENDFUNC
|
|
|
|
FUNC VECTOR_2D ARCADE_GAMES_LEADERBOARD_GET_TITLE_TEXTURE_POSITION()
|
|
RETURN INIT_VECTOR_2D(960.0,200.0)
|
|
ENDFUNC
|
|
|
|
FUNC VECTOR_2D ARCADE_GAMES_LEADERBOARD_GET_TITLE_TEXTURE_SIZE()
|
|
RETURN INIT_VECTOR_2D(276, 48)
|
|
ENDFUNC
|
|
|
|
FUNC VECTOR_2D ARCADE_GAMES_LEADERBOARD_GET_CHAR_TEXTURE_SIZE()
|
|
RETURN INIT_VECTOR_2D(24, 48)
|
|
ENDFUNC
|
|
|
|
FUNC VECTOR_2D ARCADE_GAMES_LEADERBOARD_GET_CHAR_TEXTURE_SEPARATION()
|
|
RETURN INIT_VECTOR_2D(24, 48*1.1)
|
|
ENDFUNC
|
|
|
|
FUNC VECTOR_2D ARCADE_GAMES_LEADERBOARD_GET_RANK_COLUMN_POSITION()
|
|
RETURN INIT_VECTOR_2D(600.0,350.0)
|
|
ENDFUNC
|
|
|
|
FUNC VECTOR_2D ARCADE_GAMES_LEADERBOARD_GET_INITIALS_COLUMN_POSITION()
|
|
RETURN INIT_VECTOR_2D(750.0,350.0)
|
|
ENDFUNC
|
|
|
|
FUNC VECTOR_2D ARCADE_GAMES_LEADERBOARD_GET_SCORE_COLUMN_POSITION()
|
|
RETURN INIT_VECTOR_2D(1220.0,350.0)
|
|
ENDFUNC
|
|
|
|
FUNC RGBA_COLOUR_STRUCT ARCADE_GAMES_LEADERBOARD_GET_DEFAULT_COLOR()
|
|
RGBA_COLOUR_STRUCT rgba
|
|
|
|
INIT_RGBA_STRUCT(rgba,255,255,255,255)
|
|
RETURN rgba
|
|
ENDFUNC
|
|
|
|
FUNC RGBA_COLOUR_STRUCT ARCADE_GAMES_LEADERBOARD_GET_ENTRY_COLOR(BOOL bIsPlayerTwo)
|
|
RGBA_COLOUR_STRUCT rgba
|
|
IF bIsPlayerTwo
|
|
INIT_RGBA_STRUCT(rgba,0,0,255,255)
|
|
ELSE
|
|
INIT_RGBA_STRUCT(rgba,255,0,0,255)
|
|
ENDIF
|
|
|
|
RETURN rgba
|
|
ENDFUNC
|
|
|
|
FUNC STRING ARCADE_GAMES_LEADERBOARD_GET_TEXTURE_DICTIONARY()
|
|
RETURN "MPLastGunslingersHud"
|
|
ENDFUNC
|
|
|
|
FUNC STRING ARCADE_GAMES_LEADERBOARD_GET_TEXTURE_NUMBER()
|
|
RETURN "FONT_"
|
|
ENDFUNC
|
|
|
|
FUNC STRING ARCADE_GAMES_LEADERBOARD_GET_TEXTURE_LETTER()
|
|
RETURN "FONT_"
|
|
ENDFUNC
|
|
|
|
FUNC INT ARCADE_GAMES_LEADERBOARD_GET_SCORE_MAX_CHARS()
|
|
RETURN 0
|
|
ENDFUNC
|
|
|
|
/// PURPOSE:
|
|
/// Returns the default initials for a leaderboard position
|
|
FUNC INT ARCADE_GAMES_GET_DEFAULT_INITIALS_FOR_POSITION(INT iPosition)
|
|
|
|
SWITCH iPosition
|
|
CASE 0 RETURN 46034 //SPL
|
|
CASE 1 RETURN 53519 //PEN
|
|
CASE 2 RETURN 53635 //DGN
|
|
CASE 3 RETURN 70547 //TOR
|
|
CASE 4 RETURN 57490 //SCO
|
|
CASE 5 RETURN 17924 //EYE
|
|
CASE 6 RETURN 49681 //RIM
|
|
CASE 7 RETURN 5001 //JOB
|
|
CASE 8 RETURN 73932 //MDS
|
|
CASE 9 RETURN 13522 //STD
|
|
ENDSWITCH
|
|
|
|
|
|
RETURN 0
|
|
|
|
ENDFUNC
|
|
|
|
/// PURPOSE:
|
|
/// Returns the default score for a leaderboard position
|
|
FUNC INT ARCADE_GAMES_GET_DEFAULT_SCORE_FOR_POSITION(INT iPosition)
|
|
|
|
SWITCH iPosition
|
|
CASE 0 RETURN 1000
|
|
CASE 1 RETURN 900
|
|
CASE 2 RETURN 800
|
|
CASE 3 RETURN 700
|
|
CASE 4 RETURN 600
|
|
CASE 5 RETURN 500
|
|
CASE 6 RETURN 400
|
|
CASE 7 RETURN 300
|
|
CASE 8 RETURN 200
|
|
CASE 9 RETURN 100
|
|
ENDSWITCH
|
|
|
|
RETURN 0
|
|
ENDFUNC
|
|
|
|
FUNC ARCADE_GAMES_SOUND ARCADE_GAMES_LEADERBAORD_GET_SOUND_LETTER_CHANGE()
|
|
RETURN ARCADE_GAMES_SOUND_TLG_HIGH_SCORE_LETTER_CHANGE
|
|
ENDFUNC
|
|
|
|
FUNC ARCADE_GAMES_SOUND ARCADE_GAMES_LEADERBAORD_GET_SOUND_LETTER_SET()
|
|
RETURN ARCADE_GAMES_SOUND_TLG_HIGH_SCORE_LETTER_SET
|
|
ENDFUNC
|
|
|
|
FUNC ARCADE_GAMES_SOUND ARCADE_GAMES_LEADERBAORD_GET_SOUND_STORE()
|
|
RETURN ARCADE_GAMES_SOUND_TLG_HIGH_SCORE_STORE
|
|
ENDFUNC
|
|
|
|
//FUNC INT ARCADE_GAMES_GET_PLAYER_LEADERBOARD_POSITION(ARCADE_GAMES_LEADERBOARD_DATA &lbData)
|
|
//
|
|
// IF lbData.iLocalLbdPos != -1
|
|
// RETURN lbData.iLocalLbdPos
|
|
// ENDIF
|
|
//
|
|
// INT i
|
|
// FOR i = 0 TO ciCASINO_ARCADE_LEADERBOARD_POSITIONS - 1
|
|
// IF lbData.sLeaderboard[i].bPlayer
|
|
// lbData.iLocalLbdPos = i
|
|
// RETURN i
|
|
// ENDIF
|
|
// ENDFOR
|
|
//
|
|
// RETURN ciARCADE_GAMES_LBD_DEFAULT_RANK
|
|
//
|
|
//ENDFUNC
|
|
|
|
|
|
/// PURPOSE:
|
|
/// Initialise the leaderboard data
|
|
PROC ARCADE_GAMES_LEADERBOARD_INITIALISE(ARCADE_GAMES_LEADERBOARD_DATA &lbData, INT &iInitials[ciCASINO_ARCADE_LEADERBOARD_POSITIONS], INT &iScores[ciCASINO_ARCADE_LEADERBOARD_POSITIONS])
|
|
CDEBUG1LN(DEBUG_MINIGAME, "[ARCADE_GAMES_LEADERBOARD_INITIALISE][LEADERBOARD] - ARCADE_GAMES_LEADERBOARD_INITIALISE ")
|
|
INT i
|
|
FOR i = 0 TO ciCASINO_ARCADE_LEADERBOARD_POSITIONS - 1
|
|
|
|
IF iScores[i] <= 0
|
|
#IF IS_DEBUG_BUILD
|
|
OR lbData.bForceDefaultLeaderboard
|
|
#ENDIF
|
|
CDEBUG1LN(DEBUG_MINIGAME, "[ARCADE_GAMES_LEADERBOARD_INITIALISE][LEADERBOARD] - ARCADE_GAMES_LEADERBOARD_INITIALISE - iScores[",i,"] <= 0")
|
|
//First time - Initialise
|
|
lbData.sLeaderboard[i].iScore = ARCADE_GAMES_GET_DEFAULT_SCORE_FOR_POSITION(i)
|
|
|
|
lbData.sLeaderboard[i].iInitials = ARCADE_GAMES_GET_DEFAULT_INITIALS_FOR_POSITION(i)
|
|
BROADCAST_CASINO_ARCADE_UPDATE_LEADERBOARD_EVENT(GET_OWNER_OF_SIMPLE_INTERIOR_PLAYER_IS_IN(PLAYER_ID()), ARCADE_GAMES_LEADERBOARD_GET_CASINO_ARCADE_GAME(), i, lbData.sLeaderboard[i].iInitials, lbData.sLeaderboard[i].iScore)
|
|
ELSE
|
|
CDEBUG1LN(DEBUG_MINIGAME, "[ARCADE_GAMES_LEADERBOARD_INITIALISE][LEADERBOARD] - ARCADE_GAMES_LEADERBOARD_INITIALISE - iScores[",i,"] = ",iScores[i])
|
|
lbData.sLeaderboard[i].iScore = iScores[i]
|
|
lbData.sLeaderboard[i].iInitials = iInitials[i]
|
|
ENDIF
|
|
|
|
ENDFOR
|
|
|
|
ENDPROC
|
|
|
|
|
|
|
|
PROC QUICK_SORT_LEADERBOARD(ARCADE_GAMES_LEADERBOARD_STRUCT &sArray[], INT iLeft, INT iRight)
|
|
|
|
INT i, j
|
|
INT p = sArray[((iLeft + iRight) / 2)].iScore
|
|
ARCADE_GAMES_LEADERBOARD_STRUCT q
|
|
i = iLeft
|
|
j = iRight
|
|
|
|
WHILE (i <= j)
|
|
|
|
WHILE ((sArray[i].iScore > p) AND (i < iRight))
|
|
i++
|
|
ENDWHILE
|
|
|
|
WHILE ((p > sArray[j].iScore) AND (j > iLeft))
|
|
j--
|
|
ENDWHILE
|
|
|
|
IF (i <= j)
|
|
|
|
q.iInitials = sArray[i].iInitials
|
|
q.iPlayer = sArray[i].iPlayer
|
|
q.iScore = sArray[i].iScore
|
|
|
|
sArray[i].iInitials = sArray[j].iInitials
|
|
sArray[i].iPlayer = sArray[j].iPlayer
|
|
sArray[i].iScore = sArray[j].iScore
|
|
|
|
sArray[j].iInitials = q.iInitials
|
|
sArray[j].iPlayer = q.iPlayer
|
|
sArray[j].iScore = q.iScore
|
|
|
|
i++
|
|
j--
|
|
ENDIF
|
|
|
|
ENDWHILE
|
|
|
|
IF (i < iRight)
|
|
QUICK_SORT_LEADERBOARD(sArray, i, iRight)
|
|
ENDIF
|
|
|
|
IF (iLeft < j)
|
|
QUICK_SORT_LEADERBOARD(sArray, iLeft, j)
|
|
ENDIF
|
|
|
|
ENDPROC
|
|
|
|
/// PURPOSE:
|
|
/// Sorts the leaderboard once players' final scores are set
|
|
PROC TLG_SORT_SERVER_LEADERBOARD(TLG_PLAYER_BROADCAST_DATA &lbPlayerBd[ciTLG_MAX_MP_PLAYERS], ARCADE_GAMES_LEADERBOARD_STRUCT &serverLbData[ciCASINO_ARCADE_LEADERBOARD_POSITIONS], INT iSortForPart)
|
|
|
|
IF NOT NETWORK_IS_HOST_OF_THIS_SCRIPT()
|
|
CDEBUG1LN(DEBUG_MINIGAME, "[TLG_SORT_SERVER_LEADERBOARD] Exit - not host")
|
|
EXIT
|
|
ENDIF
|
|
|
|
ARCADE_GAMES_LEADERBOARD_STRUCT sTempArray[ciCASINO_ARCADE_LEADERBOARD_POSITIONS + ciTLG_MAX_MP_PLAYERS]
|
|
|
|
INT i
|
|
|
|
CDEBUG1LN(DEBUG_MINIGAME, "[TLG_SORT_SERVER_LEADERBOARD]")
|
|
CDEBUG1LN(DEBUG_MINIGAME, "[TLG_SORT_SERVER_LEADERBOARD] {dsw} TLG_SORT_SERVER_LEADERBOARD - Init. iSortForPart: ", iSortForPart, " Score: ", lbPlayerBd[iSortForPart].iLeaderboardScore, " Min Score Req'd: ", serverLbData[ciCASINO_ARCADE_LEADERBOARD_POSITIONS-1].iScore)
|
|
// FOR i = 0 TO ciCASINO_ARCADE_LEADERBOARD_POSITIONS - 1
|
|
//
|
|
// IF serverLbData[i].iPlayer != -1
|
|
// serverLbData[i].iPlayer = -1
|
|
// ENDIF
|
|
//
|
|
// ENDFOR
|
|
|
|
|
|
// FOR i = 0 TO ciTLG_MAX_MP_PLAYERS - 1
|
|
//
|
|
// IF NOT NETWORK_IS_PARTICIPANT_ACTIVE(INT_TO_PARTICIPANTINDEX(i))
|
|
// RELOOP
|
|
// ENDIF
|
|
//
|
|
// IF lbPlayerBd[i].iLeaderboardScore > serverLbData[ciCASINO_ARCADE_LEADERBOARD_POSITIONS-1].iScore
|
|
//
|
|
// sTempArray[i].iInitials = lbPlayerBd[i].iLeaderboardInitials
|
|
// sTempArray[i].iScore = lbPlayerBd[i].iLeaderboardScore
|
|
// sTempArray[i].iPlayer = i
|
|
// iValidPlayerScores++
|
|
// CDEBUG1LN(DEBUG_MINIGAME, "[TLG_SORT_SERVER_LEADERBOARD] sTempArray[", i, "].iPlayer = ", sTempArray[i].iPlayer)
|
|
// CDEBUG1LN(DEBUG_MINIGAME, "[TLG_SORT_SERVER_LEADERBOARD] sTempArray[", i, "].iScore = ", sTempArray[i].iScore)
|
|
// ELSE
|
|
// CDEBUG1LN(DEBUG_MINIGAME, "[TLG_SORT_SERVER_LEADERBOARD] Not Adding score for part ",i, ": ", lbPlayerBd[i].iLeaderboardScore, " as not > ", serverLbData[ciCASINO_ARCADE_LEADERBOARD_POSITIONS-1].iScore)
|
|
// ENDIF
|
|
//
|
|
// ENDFOR
|
|
|
|
sTempArray[0].iInitials = lbPlayerBd[iSortForPart].iLeaderboardInitials
|
|
sTempArray[0].iScore = lbPlayerBd[iSortForPart].iLeaderboardScore
|
|
sTempArray[0].iPlayer = iSortForPart
|
|
INT iValidPlayerScores = 1
|
|
|
|
FOR i = 0 TO ciCASINO_ARCADE_LEADERBOARD_POSITIONS - 1
|
|
sTempArray[i + iValidPlayerScores].iInitials = serverLbData[i].iInitials
|
|
sTempArray[i + iValidPlayerScores].iPlayer = serverLbData[i].iPlayer
|
|
sTempArray[i + iValidPlayerScores].iScore = serverLbData[i].iScore
|
|
ENDFOR
|
|
|
|
CDEBUG1LN(DEBUG_MINIGAME, "[TLG_SORT_SERVER_LEADERBOARD] {dsw} TLG_SORT_SERVER_LEADERBOARD - Before sort")
|
|
FOR i = 0 TO ciCASINO_ARCADE_LEADERBOARD_POSITIONS - 1
|
|
CDEBUG1LN(DEBUG_MINIGAME, "[TLG_SORT_SERVER_LEADERBOARD] sTempArray[", i, "].iScore = ", sTempArray[i].iScore)
|
|
CDEBUG1LN(DEBUG_MINIGAME, "[TLG_SORT_SERVER_LEADERBOARD] sTempArray[", i, "].iPlayer = ", sTempArray[i].iPlayer)
|
|
ENDFOR
|
|
|
|
|
|
QUICK_SORT_LEADERBOARD(sTempArray, 0, ciCASINO_ARCADE_LEADERBOARD_POSITIONS + ciTLG_MAX_MP_PLAYERS - 1)
|
|
|
|
|
|
CDEBUG1LN(DEBUG_MINIGAME, "[TLG_SORT_SERVER_LEADERBOARD] {dsw} TLG_SORT_SERVER_LEADERBOARD - Sorting")
|
|
FOR i = 0 TO ciCASINO_ARCADE_LEADERBOARD_POSITIONS - 1
|
|
serverLbData[i].iInitials = sTempArray[i].iInitials
|
|
serverLbData[i].iPlayer = sTempArray[i].iPlayer
|
|
serverLbData[i].iScore = sTempArray[i].iScore
|
|
CDEBUG1LN(DEBUG_MINIGAME, "[TLG_SORT_SERVER_LEADERBOARD] serverLbData[", i, "].iScore = ", serverLbData[i].iScore)
|
|
CDEBUG1LN(DEBUG_MINIGAME, "[TLG_SORT_SERVER_LEADERBOARD] serverLbData[", i, "].iPlayer = ", serverLbData[i].iPlayer)
|
|
|
|
BROADCAST_CASINO_ARCADE_UPDATE_LEADERBOARD_EVENT(GET_OWNER_OF_SIMPLE_INTERIOR_PLAYER_IS_IN(PLAYER_ID()), CASINO_ARCADE_GAME_TLG, i, serverLbData[i].iInitials, serverLbData[i].iScore)
|
|
ENDFOR
|
|
|
|
ENDPROC
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//PROC ARCADE_GAMES_LEADERBOARD_PROCESS_ENTRY(ARCADE_GAMES_LEADERBOARD_DATA &lbData, ARCADE_GAMES_LEADERBOARD_STRUCT &serverLbData[ciCASINO_ARCADE_LEADERBOARD_POSITIONS], TLG_PLAYER_BROADCAST_DATA &lbPlayerBd[ciTLG_MAX_MP_PLAYERS], INT &iLbInitials, INT &iScore, BOOL bServerReady)
|
|
PROC ARCADE_GAMES_LEADERBOARD_PROCESS_ENTRY(ARCADE_GAMES_LEADERBOARD_DATA &lbData, ARCADE_GAMES_LEADERBOARD_STRUCT &lbHost[ciCASINO_ARCADE_LEADERBOARD_POSITIONS], INT &iLbInitials, INT &iScore, BOOL bServerReady)
|
|
// CDEBUG1LN(DEBUG_MINIGAME, "[ARCADE_GAMES_LEADERBOARD_PROCESS_ENTRY][LEADERBOARD] - ARCADE_GAMES_LEADERBOARD_PROCESS_ENTRY - iScore:",iScore)
|
|
|
|
// CDEBUG1LN(DEBUG_MINIGAME, "[ARCADE_GAMES_LEADERBOARD_PROCESS_ENTRY][LEADERBOARD] Called. Editing: ", lbData.bEditing, " iScore: ", iScore)
|
|
IF NOT lbData.bEditing
|
|
IF lbHost[ciCASINO_ARCADE_LEADERBOARD_POSITIONS-1].iScore < iScore
|
|
IF iScore != lbData.iMylastLbScore
|
|
lbData.bEditing = TRUE
|
|
lbData.iMylastLbScore = iScore
|
|
IF NOT IS_BIT_SET(playerBD[PARTICIPANT_ID_TO_INT()].iPlayerBitset, ENUM_TO_INT(TLG_PLAYER_BD_BIT_EDITING_LEADERBOARD))
|
|
SET_BIT(playerBD[PARTICIPANT_ID_TO_INT()].iPlayerBitset, ENUM_TO_INT(TLG_PLAYER_BD_BIT_EDITING_LEADERBOARD))
|
|
CDEBUG1LN(DEBUG_MINIGAME, "[ARCADE_GAMES_LEADERBOARD_PROCESS_ENTRY][LEADERBOARD] Set TLG_PLAYER_BD_BIT_EDITING_LEADERBOARD. My Score: ", iScore, " Compare with score: ", lbHost[ciCASINO_ARCADE_LEADERBOARD_POSITIONS-1].iScore)
|
|
ENDIF
|
|
// BROADCAST_TLG_REQUEST_LB_SORT()
|
|
// TLG_SORT_SERVER_LEADERBOARD(lbPlayerBd, serverLbData)
|
|
ELSE
|
|
CDEBUG1LN(DEBUG_MINIGAME, "[ARCADE_GAMES_LEADERBOARD_PROCESS_ENTRY][LEADERBOARD] Not editing because my score: ", iScore, " = last score = ", lbData.iMylastLbScore)
|
|
EXIT
|
|
ENDIF
|
|
ELSE
|
|
CDEBUG1LN(DEBUG_MINIGAME, "[ARCADE_GAMES_LEADERBOARD_PROCESS_ENTRY][LEADERBOARD] Not editing because my score: ", iScore, " < ", lbHost[ciCASINO_ARCADE_LEADERBOARD_POSITIONS-1].iScore)
|
|
EXIT
|
|
ENDIF
|
|
ENDIF
|
|
//
|
|
|
|
// IF ARCADE_GAMES_GET_PLAYER_LEADERBOARD_POSITION() >= ciCASINO_ARCADE_LEADERBOARD_POSITIONS
|
|
// EXIT
|
|
// ENDIF
|
|
//
|
|
IF bServerReady
|
|
INT iUnpackedInitials[ciARCADE_CABINET_LEADERBOARD_INITIALS]
|
|
|
|
IF SC_PROFANITY_GET_CHECK_IS_VALID(lbData.iLbdInitialProfanityToken)
|
|
// CDEBUG1LN(DEBUG_MINIGAME, "[ARCADE_GAMES_LEADERBOARD_PROCESS_ENTRY][LEADERBOARD] 1")
|
|
IF SC_PROFANITY_GET_CHECK_IS_PENDING(lbData.iLbdInitialProfanityToken)
|
|
// CDEBUG1LN(DEBUG_MINIGAME, "[ARCADE_GAMES_LEADERBOARD_PROCESS_ENTRY][LEADERBOARD] EXIT 2")
|
|
EXIT
|
|
ENDIF
|
|
|
|
IF SC_PROFANITY_GET_STRING_PASSED(lbData.iLbdInitialProfanityToken)
|
|
CDEBUG1LN(DEBUG_MINIGAME, "[ARCADE_GAMES_LEADERBOARD_PROCESS_ENTRY][LEADERBOARD] - ARCADE_GAMES_LEADERBOARD_PROCESS_ENTRY - Profanity: Initials OK")
|
|
CDEBUG1LN(DEBUG_MINIGAME, "[ARCADE_GAMES_LEADERBOARD_PROCESS_ENTRY][LEADERBOARD] - ARCADE_GAMES_LEADERBOARD_PROCESS_ENTRY - iInitials: ",iLbInitials)
|
|
CDEBUG1LN(DEBUG_MINIGAME, "[ARCADE_GAMES_LEADERBOARD_PROCESS_ENTRY][LEADERBOARD] - ARCADE_GAMES_LEADERBOARD_PROCESS_ENTRY - iScore: ",iScore)
|
|
// lbData.sLeaderboard[ARCADE_GAMES_GET_PLAYER_LEADERBOARD_POSITION(lbData)].iInitials = lbData.iInitials
|
|
// BROADCAST_CASINO_ARCADE_UPDATE_LEADERBOARD_EVENT(GET_OWNER_OF_SIMPLE_INTERIOR_PLAYER_IS_IN(PLAYER_ID()), ARCADE_GAMES_LEADERBOARD_GET_CASINO_ARCADE_GAME(), ARCADE_GAMES_GET_PLAYER_LEADERBOARD_POSITION(lbData), lbData.sLeaderboard[ARCADE_GAMES_GET_PLAYER_LEADERBOARD_POSITION(lbData)].iInitials, lbData.sLeaderboard[ARCADE_GAMES_GET_PLAYER_LEADERBOARD_POSITION(lbData)].iScore,TRUE)
|
|
|
|
BROADCAST_TLG_INITIALS_ENTERED(iLbInitials)
|
|
// BROADCAST_TLG_CLEAR_REQUEST_LB_SORT()
|
|
lbData.bEditing = FALSE
|
|
|
|
IF IS_BIT_SET(playerBD[PARTICIPANT_ID_TO_INT()].iPlayerBitset, ENUM_TO_INT(TLG_PLAYER_BD_BIT_EDITING_LEADERBOARD))
|
|
CLEAR_BIT(playerBD[PARTICIPANT_ID_TO_INT()].iPlayerBitset, ENUM_TO_INT(TLG_PLAYER_BD_BIT_EDITING_LEADERBOARD))
|
|
ENDIF
|
|
|
|
lbData.iCurrentInitial = 0
|
|
lbData.iInitials = 0
|
|
lbData.iLbdInitialProfanityToken = 0
|
|
iLbInitials = 0
|
|
iScore = 0
|
|
ELSE
|
|
CDEBUG1LN(DEBUG_MINIGAME, "[ARCADE_GAMES_LEADERBOARD_PROCESS_ENTRY][LEADERBOARD] - ARCADE_GAMES_LEADERBOARD_PROCESS_ENTRY - Profanity: Initials BAD")
|
|
// ARCADE_GAMES_PLAY_FIRE_AND_FORGET_FRONTEND_SOUND("Frontend_Change_Letter")
|
|
lbData.iCurrentInitial = 0
|
|
lbData.iInitials = 0
|
|
lbData.iLbdInitialProfanityToken = 0
|
|
ENDIF
|
|
|
|
// CDEBUG1LN(DEBUG_MINIGAME, "[ARCADE_GAMES_LEADERBOARD_PROCESS_ENTRY][LEADERBOARD] EXIT 3")
|
|
EXIT
|
|
ELSE
|
|
// CDEBUG1LN(DEBUG_MINIGAME, "[ARCADE_GAMES_LEADERBOARD_PROCESS_ENTRY][LEADERBOARD] SC_PROFANITY_GET_CHECK_IS_VALID not valid. Token: ", lbData.iLbdInitialProfanityToken)
|
|
ENDIF
|
|
//
|
|
// IF sDegenatronGamesData.lbData.iCurrentInitial >= ciARCADE_CABINET_LEADERBOARD_INITIALS - 1
|
|
// EXIT
|
|
// ENDIF
|
|
//
|
|
|
|
// CDEBUG1LN(DEBUG_MINIGAME, "[ARCADE_GAMES_LEADERBOARD_PROCESS_ENTRY][LEADERBOARD] 4")
|
|
CONTROL_ACTION CA_InitialUp = INPUT_SCRIPT_RB
|
|
CONTROL_ACTION CA_InitialDown = INPUT_SCRIPT_LB
|
|
CONTROL_ACTION CA_InitialAccept = INPUT_FRONTEND_ACCEPT
|
|
CONTROL_ACTION CA_InitialBack = INPUT_FRONTEND_CANCEL
|
|
IF IS_USING_KEYBOARD_AND_MOUSE(FRONTEND_CONTROL)
|
|
CA_InitialAccept = INPUT_CURSOR_ACCEPT
|
|
CA_InitialBack = INPUT_CURSOR_CANCEL
|
|
CA_InitialUp = INPUT_FRONTEND_UP
|
|
CA_InitialDown = INPUT_FRONTEND_DOWN
|
|
ENDIF
|
|
|
|
IF IS_DISABLED_CONTROL_JUST_PRESSED(FRONTEND_CONTROL, CA_InitialAccept)
|
|
lbData.iCurrentInitial ++
|
|
CDEBUG1LN(DEBUG_MINIGAME, "[ARCADE_GAMES_LEADERBOARD_PROCESS_ENTRY] lbData.iCurrentInitial: ", lbData.iCurrentInitial)
|
|
IF lbData.iCurrentInitial >= ciARCADE_CABINET_LEADERBOARD_INITIALS - 1
|
|
ARCADE_GAMES_SOUND_PLAY(ARCADE_GAMES_LEADERBAORD_GET_SOUND_STORE())
|
|
lbData.iCurrentInitial = ciARCADE_CABINET_LEADERBOARD_INITIALS - 1
|
|
|
|
ARCADE_UNPACK_LEADERBOARD_INITIALS(iLbInitials, iUnpackedInitials)
|
|
TEXT_LABEL_3 tl3Initials = ARCADE_GET_CHAR_FROM_INT(iUnpackedInitials[0])
|
|
tl3Initials += ARCADE_GET_CHAR_FROM_INT(iUnpackedInitials[1])
|
|
tl3Initials += ARCADE_GET_CHAR_FROM_INT(iUnpackedInitials[2])
|
|
|
|
IF SC_PROFANITY_CHECK_STRING(tl3Initials, lbData.iLbdInitialProfanityToken)
|
|
CDEBUG1LN(DEBUG_MINIGAME, "[ARCADE_GAMES_LEADERBOARD_PROCESS_ENTRY][LEADERBOARD] - ARCADE_GAMES_LEADERBOARD_PROCESS_ENTRY - Profanity: Starting check")
|
|
ENDIF
|
|
ELSE
|
|
ARCADE_GAMES_SOUND_PLAY(ARCADE_GAMES_LEADERBAORD_GET_SOUND_LETTER_SET())
|
|
ENDIF
|
|
EXIT
|
|
ENDIF
|
|
|
|
IF IS_DISABLED_CONTROL_JUST_PRESSED(FRONTEND_CONTROL, CA_InitialBack)
|
|
IF lbData.iCurrentInitial > 0
|
|
ARCADE_GAMES_SOUND_PLAY(ARCADE_GAMES_LEADERBAORD_GET_SOUND_LETTER_SET())
|
|
lbData.iCurrentInitial --
|
|
ENDIF
|
|
EXIT
|
|
ENDIF
|
|
|
|
INT iDelta = 0
|
|
IF IS_DISABLED_CONTROL_JUST_PRESSED(FRONTEND_CONTROL, CA_InitialUp)
|
|
ARCADE_GAMES_SOUND_PLAY(ARCADE_GAMES_LEADERBAORD_GET_SOUND_LETTER_CHANGE())
|
|
iDelta = 1
|
|
ELIF IS_DISABLED_CONTROL_JUST_PRESSED(FRONTEND_CONTROL, CA_InitialDown)
|
|
ARCADE_GAMES_SOUND_PLAY(ARCADE_GAMES_LEADERBAORD_GET_SOUND_LETTER_CHANGE())
|
|
iDelta = -1
|
|
ENDIF
|
|
|
|
IF iDelta = 0
|
|
// CDEBUG1LN(DEBUG_MINIGAME, "[ARCADE_GAMES_LEADERBOARD_PROCESS_ENTRY][LEADERBOARD] EXIT 5 Editing: ", lbData.bEditing)
|
|
EXIT
|
|
ENDIF
|
|
|
|
// ARCADE_GAMES_PLAY_FIRE_AND_FORGET_FRONTEND_SOUND("Frontend_Change_Letter")
|
|
|
|
ARCADE_UNPACK_LEADERBOARD_INITIALS(iLbInitials, iUnpackedInitials)
|
|
|
|
iUnpackedInitials[lbData.iCurrentInitial] += iDelta
|
|
|
|
IF iUnpackedInitials[lbData.iCurrentInitial] >= ciARCADE_CABINET_LEADERBOARD_INITIALS_MAX
|
|
iUnpackedInitials[lbData.iCurrentInitial] = 0
|
|
ELIF iUnpackedInitials[lbData.iCurrentInitial] < 0
|
|
iUnpackedInitials[lbData.iCurrentInitial] = ciARCADE_CABINET_LEADERBOARD_INITIALS_MAX - 1
|
|
ENDIF
|
|
|
|
CDEBUG1LN(DEBUG_MINIGAME, "[ARCADE_GAMES_LEADERBOARD_PROCESS_ENTRY][LEADERBOARD] lbData.iCurrentInitial: ", lbData.iCurrentInitial)
|
|
CDEBUG1LN(DEBUG_MINIGAME, "[ARCADE_GAMES_LEADERBOARD_PROCESS_ENTRY][LEADERBOARD] iUnpackedInitials = ", iUnpackedInitials[lbData.iCurrentInitial])
|
|
iLbInitials = ARCADE_PACK_LEADERBOARD_INITIALS(iUnpackedInitials)
|
|
|
|
CDEBUG1LN(DEBUG_MINIGAME, "[ARCADE_GAMES_LEADERBOARD_PROCESS_ENTRY][LEADERBOARD] Packed Initials = ", iLbInitials)
|
|
// CDEBUG1LN(DEBUG_MINIGAME, "[ARCADE_GAMES_LEADERBOARD_PROCESS_ENTRY][LEADERBOARD] EXIT 6")
|
|
ELSE
|
|
CDEBUG1LN(DEBUG_MINIGAME, "[ARCADE_GAMES_LEADERBOARD_PROCESS_ENTRY][LEADERBOARD] Server not ready")
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
PROC ARCADE_GAMES_DRAW_INTEGER(INT iValue, INT iDigits, VECTOR_2D vCenter,RGBA_COLOUR_STRUCT rgba)
|
|
VECTOR_2D vCharCenter = vCenter
|
|
VECTOR_2D vCharSize = ARCADE_GAMES_LEADERBOARD_GET_CHAR_TEXTURE_SIZE()
|
|
VECTOR_2D vCharSeparation = ARCADE_GAMES_LEADERBOARD_GET_CHAR_TEXTURE_SEPARATION()
|
|
BOOL bZero = (iValue = 0)
|
|
INT iChar
|
|
|
|
IF iDigits = 0
|
|
INT currentValue
|
|
currentValue = iValue
|
|
WHILE currentValue > 0 OR bZero
|
|
bZero = FALSE
|
|
vCharCenter.x = vCenter.x + vCharSeparation.x * (iDigits-1)/2.0 - vCharSeparation.x * iChar
|
|
TEXT_LABEL_63 tlTextureName
|
|
tlTextureName = ARCADE_GAMES_LEADERBOARD_GET_TEXTURE_NUMBER()
|
|
tlTextureName += currentValue % 10
|
|
currentValue /= 10
|
|
ARCADE_DRAW_PIXELSPACE_SPRITE(ARCADE_GAMES_LEADERBOARD_GET_TEXTURE_DICTIONARY(), tlTextureName,vCharCenter,vCharSize,0.0, rgba)
|
|
iChar++
|
|
ENDWHILE
|
|
ELSE
|
|
REPEAT iDigits iChar
|
|
vCharCenter.x = vCenter.x + vCharSeparation.x * (iDigits-1)/2.0 - vCharSeparation.x * iChar
|
|
TEXT_LABEL_63 tlTextureName
|
|
tlTextureName = ARCADE_GAMES_LEADERBOARD_GET_TEXTURE_NUMBER()
|
|
tlTextureName += (iValue / ROUND(POW(10.0,to_float(iChar)))) % 10
|
|
ARCADE_DRAW_PIXELSPACE_SPRITE(ARCADE_GAMES_LEADERBOARD_GET_TEXTURE_DICTIONARY(), tlTextureName,vCharCenter,vCharSize,0.0, rgba)
|
|
ENDREPEAT
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
PROC ARCADE_GAMES_LEADERBOARD_DRAW_UNPACKED_INITIALS(ARCADE_GAMES_LEADERBOARD_DATA &lbData, INT &iUnpackedInitials[ciARCADE_CABINET_LEADERBOARD_INITIALS], VECTOR_2D vCenter,RGBA_COLOUR_STRUCT rgba,RGBA_COLOUR_STRUCT rgbaHighlight, BOOL editing)
|
|
VECTOR_2D vCharCenter = vCenter
|
|
VECTOR_2D vCharSize = ARCADE_GAMES_LEADERBOARD_GET_CHAR_TEXTURE_SIZE()
|
|
VECTOR_2D vCharSeparation = ARCADE_GAMES_LEADERBOARD_GET_CHAR_TEXTURE_SEPARATION()
|
|
|
|
RGBA_COLOUR_STRUCT color
|
|
|
|
INT iChar
|
|
|
|
REPEAT 3 iChar
|
|
vCharCenter.x = vCenter.x + vCharSeparation.x * (3-1)/2.0 + vCharSeparation.x * iChar
|
|
TEXT_LABEL_63 tlTextureName
|
|
IF iUnpackedInitials[iChar] < 26
|
|
tlTextureName = ARCADE_GAMES_LEADERBOARD_GET_TEXTURE_LETTER()
|
|
|
|
ELSE
|
|
tlTextureName = ARCADE_GAMES_LEADERBOARD_GET_TEXTURE_NUMBER()
|
|
|
|
ENDIF
|
|
tlTextureName += ARCADE_GET_CHAR_FROM_INT(iUnpackedInitials[iChar])
|
|
IF editing
|
|
IF lbData.iCurrentInitial = iChar
|
|
IF lbData.iTickTimer = 0
|
|
color = rgba
|
|
ELSE
|
|
color = rgbaHighlight
|
|
ENDIF
|
|
ELSE
|
|
color = rgbaHighlight
|
|
ENDIF
|
|
ELSE
|
|
color = rgba
|
|
ENDIF
|
|
|
|
ARCADE_DRAW_PIXELSPACE_SPRITE(ARCADE_GAMES_LEADERBOARD_GET_TEXTURE_DICTIONARY(), tlTextureName,vCharCenter,vCharSize,0.0, color)
|
|
ENDREPEAT
|
|
ENDPROC
|
|
|
|
PROC ARCADE_GAMES_LEADERBOARD_DRAW_RANK(INT iPosition, VECTOR_2D vCenter,RGBA_COLOUR_STRUCT rgba,RGBA_COLOUR_STRUCT rgbaHighlight, BOOL editing)
|
|
// CDEBUG1LN(DEBUG_MINIGAME, "[ARCADE_GAMES_LEADERBOARD_DRAW_RANK][LEADERBOARD] - ARCADE_GAMES_LEADERBOARD_DRAW_RANK ")
|
|
VECTOR_2D vCharCenter = vCenter
|
|
VECTOR_2D vCharSize = ARCADE_GAMES_LEADERBOARD_GET_CHAR_TEXTURE_SIZE()
|
|
VECTOR_2D vCharSeparation = ARCADE_GAMES_LEADERBOARD_GET_CHAR_TEXTURE_SEPARATION()
|
|
RGBA_COLOUR_STRUCT color
|
|
IF editing
|
|
color = rgbaHighlight
|
|
ELSE
|
|
color = rgba
|
|
ENDIF
|
|
|
|
TEXT_LABEL_63 tlTextureName
|
|
IF iPosition = 10
|
|
tlTextureName = ARCADE_GAMES_LEADERBOARD_GET_TEXTURE_NUMBER()
|
|
tlTextureName += 1
|
|
vCharCenter.x = vCharCenter.x - vCharSeparation.x
|
|
ARCADE_DRAW_PIXELSPACE_SPRITE(ARCADE_GAMES_LEADERBOARD_GET_TEXTURE_DICTIONARY(), tlTextureName,vCharCenter,vCharSize,0.0, color)
|
|
vCharCenter = vCenter
|
|
iPosition = 0
|
|
ENDIF
|
|
tlTextureName = ARCADE_GAMES_LEADERBOARD_GET_TEXTURE_NUMBER()
|
|
tlTextureName += iPosition
|
|
ARCADE_DRAW_PIXELSPACE_SPRITE(ARCADE_GAMES_LEADERBOARD_GET_TEXTURE_DICTIONARY(), tlTextureName,vCharCenter,vCharSize,0.0, color)
|
|
|
|
vCharCenter.x = vCenter.x + vCharSeparation.x * 1
|
|
tlTextureName = ARCADE_GAMES_LEADERBOARD_GET_TEXTURE_LETTER()
|
|
IF iPosition = 1
|
|
tlTextureName += "S"
|
|
ELIF iPosition = 2
|
|
tlTextureName += "N"
|
|
ELIF iPosition = 3
|
|
tlTextureName += "R"
|
|
ELSE
|
|
tlTextureName += "T"
|
|
ENDIF
|
|
ARCADE_DRAW_PIXELSPACE_SPRITE(ARCADE_GAMES_LEADERBOARD_GET_TEXTURE_DICTIONARY(), tlTextureName,vCharCenter,vCharSize,0.0, color)
|
|
|
|
vCharCenter.x = vCenter.x + vCharSeparation.x * 2
|
|
tlTextureName = ARCADE_GAMES_LEADERBOARD_GET_TEXTURE_LETTER()
|
|
IF iPosition = 1
|
|
tlTextureName += "T"
|
|
ELIF iPosition = 2
|
|
tlTextureName += "D"
|
|
ELIF iPosition = 3
|
|
tlTextureName += "D"
|
|
ELSE
|
|
tlTextureName += "H"
|
|
ENDIF
|
|
ARCADE_DRAW_PIXELSPACE_SPRITE(ARCADE_GAMES_LEADERBOARD_GET_TEXTURE_DICTIONARY(), tlTextureName,vCharCenter,vCharSize,0.0, color)
|
|
ENDPROC
|
|
|
|
PROC ARCADE_GAMES_LEADERBOARD_DRAW_SCORE(INT iScore, VECTOR_2D vCenter,RGBA_COLOUR_STRUCT rgba,RGBA_COLOUR_STRUCT rgbaHighlight, BOOL editing)
|
|
VECTOR_2D vCharCenter = vCenter
|
|
VECTOR_2D vCharSize = ARCADE_GAMES_LEADERBOARD_GET_CHAR_TEXTURE_SIZE()
|
|
VECTOR_2D vCharSeparation = ARCADE_GAMES_LEADERBOARD_GET_CHAR_TEXTURE_SEPARATION()
|
|
RGBA_COLOUR_STRUCT color
|
|
IF editing
|
|
color = rgbaHighlight
|
|
ELSE
|
|
color = rgba
|
|
ENDIF
|
|
|
|
ARCADE_GAMES_DRAW_INTEGER(iScore,ARCADE_GAMES_LEADERBOARD_GET_SCORE_MAX_CHARS(),vCenter,color)
|
|
//PTS
|
|
TEXT_LABEL_63 tlTextureName
|
|
vCharCenter.x = vCenter.x + vCharSeparation.x * (ARCADE_GAMES_LEADERBOARD_GET_SCORE_MAX_CHARS()/2 + 1)
|
|
tlTextureName = ARCADE_GAMES_LEADERBOARD_GET_TEXTURE_LETTER()
|
|
tlTextureName += "P"
|
|
ARCADE_DRAW_PIXELSPACE_SPRITE(ARCADE_GAMES_LEADERBOARD_GET_TEXTURE_DICTIONARY(), tlTextureName,vCharCenter,vCharSize,0.0, color)
|
|
vCharCenter.x = vCenter.x + vCharSeparation.x * (ARCADE_GAMES_LEADERBOARD_GET_SCORE_MAX_CHARS()/2 + 2)
|
|
tlTextureName = ARCADE_GAMES_LEADERBOARD_GET_TEXTURE_LETTER()
|
|
tlTextureName += "T"
|
|
ARCADE_DRAW_PIXELSPACE_SPRITE(ARCADE_GAMES_LEADERBOARD_GET_TEXTURE_DICTIONARY(), tlTextureName,vCharCenter,vCharSize,0.0, color)
|
|
vCharCenter.x = vCenter.x + vCharSeparation.x * (ARCADE_GAMES_LEADERBOARD_GET_SCORE_MAX_CHARS()/2 + 3)
|
|
tlTextureName = ARCADE_GAMES_LEADERBOARD_GET_TEXTURE_LETTER()
|
|
tlTextureName += "S"
|
|
ARCADE_DRAW_PIXELSPACE_SPRITE(ARCADE_GAMES_LEADERBOARD_GET_TEXTURE_DICTIONARY(), tlTextureName,vCharCenter,vCharSize,0.0, color)
|
|
ENDPROC
|
|
|
|
/// PURPOSE:
|
|
/// Draws the leaderboard
|
|
PROC ARCADE_GAMES_LEADERBOARD_DRAW(ARCADE_GAMES_LEADERBOARD_DATA &lbData, INT iLocalInitials, ARCADE_GAMES_LEADERBOARD_STRUCT &lbHost[ciCASINO_ARCADE_LEADERBOARD_POSITIONS], BOOL bIsPlayerTwo = FALSE)
|
|
// CDEBUG1LN(DEBUG_MINIGAME, "[ARCADE_GAMES_LEADERBOARD_DRAW][LEADERBOARD] - ARCADE_GAMES_LEADERBOARD_DRAW ")
|
|
|
|
IF lbData.bEditing
|
|
ARCADE_GAMES_HELP_TEXT_PRINT_FOREVER(ARCADE_GAMES_HELP_TEXT_ENUM_LEADERBOARD_ENTRY)
|
|
ELSE
|
|
ARCADE_GAMES_HELP_TEXT_PRINT_FOREVER(ARCADE_GAMES_HELP_TEXT_ENUM_LEADERBOARD)
|
|
ENDIF
|
|
|
|
VECTOR_2D vCharSeparation = ARCADE_GAMES_LEADERBOARD_GET_CHAR_TEXTURE_SEPARATION()
|
|
lbData.iTickTimer = ((lbData.iTickTimer + ROUND(GET_FRAME_TIME() * 1000))% 1000) / 500
|
|
|
|
ARCADE_DRAW_PIXELSPACE_SPRITE(ARCADE_GAMES_LEADERBOARD_GET_TEXTURE_DICTIONARY(),ARCADE_GAMES_LEADERBOARD_GET_TITLE_TEXTURE_NAME(),ARCADE_GAMES_LEADERBOARD_GET_TITLE_TEXTURE_POSITION(),ARCADE_GAMES_LEADERBOARD_GET_TITLE_TEXTURE_SIZE(),0.0,ARCADE_GAMES_LEADERBOARD_GET_DEFAULT_COLOR())
|
|
// CDEBUG1LN(DEBUG_MINIGAME, "[ARCADE_GAMES_LEADERBOARD_DRAW][LEADERBOARD] My Initials: ", iLocalInitials)
|
|
|
|
INT iUnpackedInitials[ciARCADE_CABINET_LEADERBOARD_INITIALS]
|
|
INT iPositionLoop = 0
|
|
BOOL bEditing = FALSE
|
|
FOR iPositionLoop = 0 TO ciCASINO_ARCADE_LEADERBOARD_POSITIONS - 1
|
|
|
|
bEditing = lbHost[iPositionLoop].iPlayer = PARTICIPANT_ID_TO_INT() AND lbData.bEditing
|
|
// bEditing = lbData.bEditing
|
|
|
|
CDEBUG1LN(DEBUG_MINIGAME, "[ARCADE_GAMES_LEADERBOARD_DRAW][LEADERBOARD]")
|
|
CDEBUG1LN(DEBUG_MINIGAME, "[ARCADE_GAMES_LEADERBOARD_DRAW][LEADERBOARD] iPositionLoop: ",iPositionLoop, " bEditing: ", bEditing, " lbData.bEditing: ", lbData.bEditing, " Local part: ", PARTICIPANT_ID_TO_INT())
|
|
CDEBUG1LN(DEBUG_MINIGAME, "[ARCADE_GAMES_LEADERBOARD_DRAW][LEADERBOARD] lbHost[",iPositionLoop, "].iPlayer = ", lbHost[iPositionLoop].iPlayer)
|
|
CDEBUG1LN(DEBUG_MINIGAME, "[ARCADE_GAMES_LEADERBOARD_DRAW][LEADERBOARD] lbHost[",iPositionLoop, "].iScore = ", lbHost[iPositionLoop].iScore)
|
|
CDEBUG1LN(DEBUG_MINIGAME, "[ARCADE_GAMES_LEADERBOARD_DRAW][LEADERBOARD] lbHost[",iPositionLoop, "].iInitials = ", lbHost[iPositionLoop].iInitials)
|
|
|
|
|
|
IF (lbData.iCurrentInitial < ciARCADE_CABINET_LEADERBOARD_INITIALS - 1 OR SC_PROFANITY_GET_CHECK_IS_VALID(lbData.iLbdInitialProfanityToken))
|
|
AND bEditing
|
|
CDEBUG1LN(DEBUG_MINIGAME, "[ARCADE_GAMES_LEADERBOARD_DRAW][LEADERBOARD] Editing, iInitials: ", iLocalInitials)
|
|
ARCADE_UNPACK_LEADERBOARD_INITIALS(iLocalInitials, iUnpackedInitials)
|
|
ELSE
|
|
ARCADE_UNPACK_LEADERBOARD_INITIALS(lbHost[iPositionLoop].iInitials, iUnpackedInitials)
|
|
ENDIF
|
|
|
|
// ARCADE_UNPACK_LEADERBOARD_INITIALS(lbHost[iPositionLoop].iInitials, iUnpackedInitials)
|
|
|
|
//Rank
|
|
ARCADE_GAMES_LEADERBOARD_DRAW_RANK(iPositionLoop+1,ADD_VECTOR_2D(ARCADE_GAMES_LEADERBOARD_GET_RANK_COLUMN_POSITION(),INIT_VECTOR_2D(0.0,vCharSeparation.y*iPositionLoop)),ARCADE_GAMES_LEADERBOARD_GET_DEFAULT_COLOR(),ARCADE_GAMES_LEADERBOARD_GET_ENTRY_COLOR(bIsPlayerTwo),bEditing)
|
|
|
|
//Initials
|
|
ARCADE_GAMES_LEADERBOARD_DRAW_UNPACKED_INITIALS(lbData, iUnpackedInitials,ADD_VECTOR_2D(ARCADE_GAMES_LEADERBOARD_GET_INITIALS_COLUMN_POSITION(),INIT_VECTOR_2D(0.0,vCharSeparation.y*iPositionLoop)),ARCADE_GAMES_LEADERBOARD_GET_DEFAULT_COLOR(),ARCADE_GAMES_LEADERBOARD_GET_ENTRY_COLOR(bIsPlayerTwo),bEditing)
|
|
|
|
//Score
|
|
ARCADE_GAMES_LEADERBOARD_DRAW_SCORE(lbHost[iPositionLoop].iScore,ADD_VECTOR_2D(ARCADE_GAMES_LEADERBOARD_GET_SCORE_COLUMN_POSITION(),INIT_VECTOR_2D(0.0,vCharSeparation.y*iPositionLoop)),ARCADE_GAMES_LEADERBOARD_GET_DEFAULT_COLOR(),ARCADE_GAMES_LEADERBOARD_GET_ENTRY_COLOR(bIsPlayerTwo),bEditing)
|
|
|
|
ENDFOR
|
|
|
|
ENDPROC
|
|
|
|
PROC ARCADE_GAMES_LEADERBOARD_LOAD(ARCADE_GAMES_LEADERBOARD_DATA &lbData, CASINO_ARCADE_GAME eGame, BOOL &bReceived)
|
|
UNUSED_PARAMETER(eGame)
|
|
|
|
IF NOT bReceived
|
|
AND NETWORK_IS_HOST_OF_THIS_SCRIPT()
|
|
AND (lbData.iLastLeaderboardRequest = -HIGHEST_INT
|
|
OR NATIVE_TO_INT(GET_NETWORK_TIME()) - lbData.iLastLeaderboardRequest > ciARCADE_GAMES_RESEND_LEADERBOARD_REQUEST_TIME)
|
|
BROADCAST_CASINO_ARCADE_REQUEST_LEADERBOARD_EVENT(GET_OWNER_OF_SIMPLE_INTERIOR_PLAYER_IS_IN(PLAYER_ID()), ARCADE_GAMES_LEADERBOARD_GET_CASINO_ARCADE_GAME())
|
|
lbData.iLastLeaderboardRequest = NATIVE_TO_INT(GET_NETWORK_TIME())
|
|
ENDIF
|
|
|
|
ENDPROC
|
|
|
|
// ------------------------------ EVENT PROCESSING ------------------------------
|
|
|
|
/// PURPOSE:
|
|
/// Initialise the leaderboard data in ServerBD
|
|
PROC TLG_INITIALISE_SERVER_LEADERBOARD(ARCADE_GAMES_LEADERBOARD_STRUCT &sLeaderboard[ciCASINO_ARCADE_LEADERBOARD_POSITIONS], INT &iInitials[ciCASINO_ARCADE_LEADERBOARD_POSITIONS], INT &iScores[ciCASINO_ARCADE_LEADERBOARD_POSITIONS], BOOL &bReceived)
|
|
|
|
IF !NETWORK_IS_HOST_OF_THIS_SCRIPT()
|
|
EXIT
|
|
ENDIF
|
|
|
|
INT i
|
|
FOR i = 0 TO ciCASINO_ARCADE_LEADERBOARD_POSITIONS - 1
|
|
|
|
IF iScores[i] <= 0
|
|
//First time - Initialise
|
|
sLeaderboard[i].iScore = 50 - (i * 2)
|
|
sLeaderboard[i].iInitials = ARCADE_GAMES_GET_DEFAULT_INITIALS_FOR_POSITION(i)
|
|
BROADCAST_CASINO_ARCADE_UPDATE_LEADERBOARD_EVENT(GET_OWNER_OF_SIMPLE_INTERIOR_PLAYER_IS_IN(PLAYER_ID()), CASINO_ARCADE_GAME_TLG, i, sLeaderboard[i].iInitials, sLeaderboard[i].iScore)
|
|
ELSE
|
|
sLeaderboard[i].iScore = iScores[i]
|
|
sLeaderboard[i].iInitials = iInitials[i]
|
|
ENDIF
|
|
|
|
ENDFOR
|
|
|
|
bReceived = TRUE
|
|
|
|
ENDPROC
|
|
|
|
|
|
|
|
FUNC INT TLG_GET_PLAYER_LEADERBOARD_POSITION(ARCADE_GAMES_LEADERBOARD_STRUCT &sLeaderboard[ciCASINO_ARCADE_LEADERBOARD_POSITIONS], INT iParticipant)
|
|
|
|
INT i
|
|
FOR i = 0 TO ciCASINO_ARCADE_LEADERBOARD_POSITIONS - 1
|
|
IF sLeaderboard[i].iPlayer = iParticipant
|
|
RETURN i
|
|
ENDIF
|
|
ENDFOR
|
|
|
|
RETURN 99
|
|
|
|
ENDFUNC
|
|
|
|
PROC TLG_PROCESS_INITIALS_ENTERED_EVENT(PLAYER_INDEX piFromPlayer, ARCADE_GAMES_LEADERBOARD_STRUCT &sLeaderboard[ciCASINO_ARCADE_LEADERBOARD_POSITIONS], TLG_PLAYER_BROADCAST_DATA &tlgPlayerBd[2], INT iInitials)
|
|
|
|
IF NOT NETWORK_IS_HOST_OF_THIS_SCRIPT()
|
|
CDEBUG1LN(DEBUG_MINIGAME, "{dsw} [TLG_PROCESS_INITIALS_ENTERED_EVENT] Exit as not host")
|
|
EXIT
|
|
ENDIF
|
|
INT iParticipant = NATIVE_TO_INT(NETWORK_GET_PARTICIPANT_INDEX(piFromPlayer))
|
|
|
|
INT iPosition = TLG_GET_PLAYER_LEADERBOARD_POSITION(sLeaderboard, iParticipant)
|
|
|
|
CDEBUG1LN(DEBUG_MINIGAME, "{dsw} [TLG_PROCESS_INITIALS_ENTERED_EVENT] iPosition: ", iPosition, " Initials: ", iInitials)
|
|
IF iPosition < 0
|
|
OR iPosition >= ciCASINO_ARCADE_LEADERBOARD_POSITIONS
|
|
EXIT
|
|
ENDIF
|
|
|
|
sLeaderboard[iPosition].iInitials = iInitials //tlgPlayerBd[iParticipant].iLeaderboardInitials
|
|
CDEBUG1LN(DEBUG_MINIGAME, "{dsw} [TLG_PROCESS_INITIALS_ENTERED_EVENT] sLeaderboard[ ", iPosition, "].iInitials = ", tlgPlayerBd[iParticipant].iLeaderboardInitials , " Part: ", iParticipant)
|
|
BROADCAST_CASINO_ARCADE_UPDATE_LEADERBOARD_EVENT(GET_OWNER_OF_SIMPLE_INTERIOR_PLAYER_IS_IN(PLAYER_ID()), CASINO_ARCADE_GAME_TLG, iPosition, sLeaderboard[iPosition].iInitials, sLeaderboard[iPosition].iScore)
|
|
|
|
ENDPROC
|
|
|
|
///// PURPOSE:
|
|
///// Priot to editing the leaderboard, it needs to be sorted by the host. Clieients can request the leaderboard be sorted by sending an event
|
|
///// PARAMS:
|
|
///// piFromPlayer -
|
|
///// sLeaderboard -
|
|
///// tlgPlayerBd -
|
|
///// serverBitset -
|
|
//PROC TLG_PROCESS_REQ_LB_SORT_EVENT(PLAYER_INDEX piFromPlayer, ARCADE_GAMES_LEADERBOARD_STRUCT &sLeaderboard[ciCASINO_ARCADE_LEADERBOARD_POSITIONS], TLG_PLAYER_BROADCAST_DATA &tlgPlayerBd[2],INT &serverBitset)
|
|
// IF NOT NETWORK_IS_HOST_OF_THIS_SCRIPT()
|
|
// CDEBUG1LN(DEBUG_MINIGAME, "{dsw} [TLG_PROCESS_REQ_LB_SORT_EVENT] Exit as not host")
|
|
// EXIT
|
|
// ENDIF
|
|
//
|
|
// //UNUSED_PARAMETER(piFromPlayer)
|
|
// INT iParticipant = NATIVE_TO_INT(NETWORK_GET_PARTICIPANT_INDEX(piFromPlayer))
|
|
//
|
|
// TLG_SORT_SERVER_LEADERBOARD(tlgPlayerBd, sLeaderboard, iParticipant)
|
|
//
|
|
// CDEBUG1LN(DEBUG_MINIGAME, "{dsw} [TLG_PROCESS_REQ_LB_SORT_EVENT] setting bit: ", iParticipant)
|
|
// SET_BIT(serverBitset, iParticipant)
|
|
//
|
|
//
|
|
//ENDPROC
|
|
//
|
|
///// PURPOSE:
|
|
///// After editing the leaderboard, clients need to clear that they've requested the LB be sorted, so that it will be appropriately
|
|
///// sorted the next time the client needs to edit the LB
|
|
///// PARAMS:
|
|
///// piFromPlayer -
|
|
///// sLeaderboard -
|
|
///// tlgPlayerBd -
|
|
///// serverBitset -
|
|
//PROC TLG_PROCESS_CLEAR_REQ_LB_SORT_EVENT(PLAYER_INDEX piFromPlayer, INT &serverBitset)
|
|
// IF NOT NETWORK_IS_HOST_OF_THIS_SCRIPT()
|
|
// CDEBUG1LN(DEBUG_MINIGAME, "{dsw} [TLG_PROCESS_CLEAR_REQ_LB_SORT_EVENT] Exit as not host")
|
|
// EXIT
|
|
// ENDIF
|
|
//
|
|
// //UNUSED_PARAMETER(piFromPlayer)
|
|
// INT iParticipant = NATIVE_TO_INT(NETWORK_GET_PARTICIPANT_INDEX(piFromPlayer))
|
|
//
|
|
// CDEBUG1LN(DEBUG_MINIGAME, "{dsw} [TLG_PROCESS_CLEAR_REQ_LB_SORT_EVENT] Clearing bit: ", iParticipant)
|
|
// CLEAR_BIT(serverBitset, iParticipant)
|
|
//ENDPROC
|
|
|
|
|
|
/// PURPOSE:
|
|
/// Processes all incoming events
|
|
PROC ARCADE_GAMES_LEADERBOARD_PROCESS_EVENTS(ARCADE_GAMES_LEADERBOARD_DATA &lbData, ARCADE_GAMES_LEADERBOARD_STRUCT &sLeaderboard[ciCASINO_ARCADE_LEADERBOARD_POSITIONS], TLG_PLAYER_BROADCAST_DATA &tlgPlayerBd[2], BOOL &bReceived)
|
|
|
|
UNUSED_PARAMETER(lbData)
|
|
|
|
|
|
INT iCount
|
|
SCRIPT_EVENT_DATA_CASINO_ARCADE_SEND_LEADERBOARD_EVENT EventDataLeaderboardSend
|
|
SCRIPT_EVENT_DATA_TLG_INITIALS_ENTERED EventDataInitialsEntered
|
|
// SCRIPT_EVENT_DATA_TLG_REQUEST_LB_SORT EventDataReqLbSort
|
|
// SCRIPT_EVENT_DATA_TLG_CLEAR_REQUEST_LB_SORT EventDataClearReqLbSort
|
|
REPEAT GET_NUMBER_OF_EVENTS(SCRIPT_EVENT_QUEUE_NETWORK) iCount
|
|
|
|
IF GET_EVENT_AT_INDEX(SCRIPT_EVENT_QUEUE_NETWORK, iCount) != EVENT_NETWORK_SCRIPT_EVENT
|
|
RELOOP
|
|
ENDIF
|
|
|
|
|
|
IF GET_EVENT_DATA(SCRIPT_EVENT_QUEUE_NETWORK, iCount, EventDataLeaderboardSend, SIZE_OF(EventDataLeaderboardSend))
|
|
/*
|
|
Gets sent via BROADCAST_CASINO_ARCADE_SEND_LEADERBOARD_EVENT(), which gets called via
|
|
PROCESS_SCRIPT_EVENT_CASINO_ARCADE_REQUEST_LEADERBOARD_EVENT, called via
|
|
BROADCAST_CASINO_ARCADE_REQUEST_LEADERBOARD_EVENT, called via
|
|
ARCADE_GAMES_LEADERBOARD_LOAD
|
|
*/
|
|
IF EventDataLeaderboardSend.Details.Type = SCRIPT_EVENT_CASINO_ARCADE_SEND_LEADERBOARD_EVENT
|
|
IF bReceived
|
|
RELOOP
|
|
ENDIF
|
|
CDEBUG1LN(DEBUG_MINIGAME, "{dsw} [ARCADE_GAMES_LEADERBOARD_PROCESS_EVENTS] - Found event: LEADERBOARD")
|
|
CDEBUG1LN(DEBUG_MINIGAME, "{dsw} [ARCADE_GAMES_LEADERBOARD_PROCESS_EVENTS] - Player = ", NATIVE_TO_INT(EventDataLeaderboardSend.Details.FromPlayerIndex))
|
|
IF EventDataLeaderboardSend.eGameType != CASINO_ARCADE_GAME_TLG
|
|
RELOOP
|
|
ENDIF
|
|
TLG_INITIALISE_SERVER_LEADERBOARD(sLeaderboard, EventDataLeaderboardSend.iInitials, EventDataLeaderboardSend.iScores, bReceived)
|
|
RELOOP
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF GET_EVENT_DATA(SCRIPT_EVENT_QUEUE_NETWORK, iCount, EventDataInitialsEntered, SIZE_OF(EventDataInitialsEntered))
|
|
IF EventDataInitialsEntered.Details.Type = SCRIPT_EVENT_TLG_INITIALS_ENTERED
|
|
CDEBUG1LN(DEBUG_MINIGAME, "{dsw} [ARCADE_GAMES_LEADERBOARD_PROCESS_EVENTS] - Found event: INITIALS")
|
|
CDEBUG1LN(DEBUG_MINIGAME, "{dsw} [ARCADE_GAMES_LEADERBOARD_PROCESS_EVENTS] - Player = ", NATIVE_TO_INT(EventDataInitialsEntered.Details.FromPlayerIndex))
|
|
TLG_PROCESS_INITIALS_ENTERED_EVENT(EventDataInitialsEntered.Details.FromPlayerIndex, sLeaderboard, tlgPlayerBd, EventDataInitialsEntered.iInitials)
|
|
RELOOP
|
|
ENDIF
|
|
ENDIF
|
|
|
|
|
|
ENDREPEAT
|
|
ENDPROC
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
PROC ARCADE_GAMES_LEADERBOARD_WIDGET_CREATE(ARCADE_GAMES_LEADERBOARD_DATA &lbData)
|
|
START_WIDGET_GROUP("Leaderboard")
|
|
ADD_WIDGET_BOOL("Force Default Leaderboard", lbData.bForceDefaultLeaderboard)
|
|
ADD_WIDGET_BOOL("Test server sort", lbData.bDebugTestServerSort)
|
|
STOP_WIDGET_GROUP()
|
|
ENDPROC
|
|
|
|
PROC ARCADE_GAMES_LEADERBOARD_WIDGET_UPDATE(ARCADE_GAMES_LEADERBOARD_DATA &lbData, TLG_PLAYER_BROADCAST_DATA &lbPlayerBd[ciTLG_MAX_MP_PLAYERS], ARCADE_GAMES_LEADERBOARD_STRUCT &lbHostData[ciCASINO_ARCADE_LEADERBOARD_POSITIONS])
|
|
BOOL bReceived
|
|
IF lbData.bForceDefaultLeaderboard
|
|
INT iInitials[ciCASINO_ARCADE_LEADERBOARD_POSITIONS]
|
|
INT iScores[ciCASINO_ARCADE_LEADERBOARD_POSITIONS]
|
|
//ARCADE_GAMES_LEADERBOARD_INITIALISE(lbData, iInitials,iScores)
|
|
TLG_INITIALISE_SERVER_LEADERBOARD(lbHostData, iInitials, iScores, bReceived)
|
|
lbData.bForceDefaultLeaderboard = FALSE
|
|
ENDIF
|
|
|
|
IF lbData.bDebugTestServerSort
|
|
TLG_SORT_SERVER_LEADERBOARD(lbPlayerBd, lbHostData, PARTICIPANT_ID_TO_INT())
|
|
ENDIF
|
|
ENDPROC
|
|
#ENDIF
|
|
|
|
|
|
//
|