1492 lines
58 KiB
Scheme
Executable File
1492 lines
58 KiB
Scheme
Executable File
USING "minigames_helpers.sch"
|
|
USING "golf.sch"
|
|
USING "golf_buddies_lib.sch"
|
|
|
|
ENUM GOLF_PLAYERCARD_BITS
|
|
|
|
PCB_NONE = 0,
|
|
PCB_HIGHLiGHT = BIT0,
|
|
PCB_MP = BIT1,
|
|
PCB_CREWTAG = BIT2,
|
|
PCB_READY = BIT3,
|
|
PCB_HIDE_BALL = BIT4,
|
|
|
|
PCB_INACTIVE_HEADSET = BIT24,
|
|
PCB_TALKING_HEADSET = BIT25
|
|
|
|
ENDENUM
|
|
|
|
ENUM GOLF_HEADSET_STATE
|
|
|
|
GOLF_HEADSET_NONE = 0,
|
|
GOLF_HEADSET_INACTIVE = 1,
|
|
GOLF_HEADSET_ACTIVE = 2,
|
|
GOLF_HEADSET_MUTE = 3
|
|
|
|
ENDENUM
|
|
|
|
PROC PLAY_GOLF_SPLASH_SOUND(GOLF_SPLASH_TEXT_ENUM eSplashEnum)
|
|
IF eSplashEnum = GOLF_SPLASH_HOLE_IN_ONE
|
|
CDEBUG1LN(DEBUG_GOLF,"Play hole in one sound")
|
|
PLAY_SOUND_FRONTEND(-1, "GOLF_HUD_HOLE_IN_ONE_MASTER")
|
|
ELIF eSplashEnum = GOLF_SPLASH_EAGLE2
|
|
OR eSplashEnum = GOLF_SPLASH_EAGLE
|
|
CDEBUG1LN(DEBUG_GOLF,"Play eagle sound")
|
|
PLAY_SOUND_FRONTEND(-1, "GOLF_EAGLE", "HUD_AWARDS")
|
|
ELIF eSplashEnum = GOLF_SPLASH_BIRDIE
|
|
CDEBUG1LN(DEBUG_GOLF,"Play birdie sound")
|
|
PLAY_SOUND_FRONTEND(-1, "GOLF_BIRDIE", "HUD_AWARDS")
|
|
ELIF eSplashEnum = GOLF_SPLASH_CLOSEST_TO_PIN
|
|
OR eSplashEnum = GOLF_SPLASH_LONGEST_DIVE
|
|
OR eSplashEnum = GOLF_SPLASH_LONGEST_HOLE
|
|
CDEBUG1LN(DEBUG_GOLF,"Play new record sound")
|
|
PLAY_SOUND_FRONTEND(-1, "GOLF_NEW_RECORD", "HUD_AWARDS")
|
|
ELSE
|
|
CDEBUG1LN(DEBUG_GOLF,"Play other splash sound")
|
|
PLAY_SOUND_FRONTEND(-1, "OTHER_TEXT", "HUD_AWARDS")
|
|
ENDIF
|
|
|
|
ENDPROC
|
|
|
|
|
|
PROC SET_SPLASH_TEXT(GOLF_HELPERS &thisHelpers, GOLF_SPLASH_TEXT_ENUM eSplashEnum = GOLF_SPLASH_NONE, STRING sSplash = NULL, STRING sStrapline = NULL, INT iNumInStrap = -1, INT iDuration = 4000)
|
|
|
|
CDEBUG1LN(DEBUG_GOLF, "SPLASH - ", sSplash)
|
|
|
|
HUD_COLOURS eHudColor = HUD_COLOUR_YELLOW
|
|
|
|
IF (eSplashEnum >= GOLF_SPLASH_BOGEY AND eSplashEnum <= GOLF_SPLASH_BOGEY5)
|
|
OR (eSplashEnum >= GOLF_SPLASH_OOB AND eSplashEnum <= GOLF_SPLASH_SCORE_LIMIT)
|
|
eHudColor = HUD_COLOUR_RED
|
|
ENDIF
|
|
|
|
IF IS_STRING_NULL(sSplash)
|
|
sSplash = ""
|
|
CLEAR_GOLF_SPLASH()
|
|
ELSE
|
|
thisHelpers.eLastSplashText = eSplashEnum
|
|
SET_GOLF_UI_FLAG(thisHelpers, GUC_SPLASH_TEXT_DISPLAYED_THIS_TURN)
|
|
IF iNumInStrap >= 0
|
|
PLAY_GOLF_SPLASH_WITH_INT_IN_STRAP(sSplash, iNumInStrap, sStrapline, GOLF_SPLASH_SHARD_MIDSIZED, eHudColor, iDuration)
|
|
ELSE
|
|
IF eSplashEnum = GOLF_SPLASH_HOLE_IN_ONE OR eSplashEnum = GOLF_SPLASH_EAGLE2
|
|
OR eSplashEnum = GOLF_SPLASH_EAGLE OR eSplashEnum = GOLF_SPLASH_BIRDIE
|
|
HUD_COLOURS eEndHudColor = HUD_COLOUR_YELLOW
|
|
IF IS_GOLF_FOURSOME_MP()
|
|
eEndHudColor = HUD_COLOUR_BLUE
|
|
ENDIF
|
|
PLAY_GOLF_SPLASH(sSplash, sStrapline, GOLF_SPLASH_SHARD_MIDSIZED, eHudColor, iDuration, FALSE, eEndHudColor)
|
|
ELSE
|
|
PLAY_GOLF_SPLASH(sSplash, sStrapline, GOLF_SPLASH_SHARD_MIDSIZED, eHudColor, iDuration)
|
|
ENDIF
|
|
ENDIF
|
|
IF eSplashEnum != GOLF_SPLASH_NONE
|
|
PLAY_GOLF_SPLASH_SOUND(eSplashEnum)
|
|
ENDIF
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
PROC OVERWRITE_GOLF_UI_DISPLAY(GOLF_HELPERS &thisHelpers, GOLF_UI_DISPLAY_STATE uiState)
|
|
thisHelpers.eCurrentGolfUIDisplay = uiState
|
|
ENDPROC
|
|
|
|
PROC SET_GOLF_UI_DISPLAY(GOLF_HELPERS &thisHelpers, GOLF_UI_DISPLAY_STATE uiState)
|
|
thisHelpers.eCurrentGolfUIDisplay = thisHelpers.eCurrentGolfUIDisplay | uiState
|
|
ENDPROC
|
|
|
|
PROC CLEAR_GOLF_UI_DISPLAY(GOLF_HELPERS &thisHelpers, GOLF_UI_DISPLAY_STATE uiState)
|
|
thisHelpers.eCurrentGolfUIDisplay -= thisHelpers.eCurrentGolfUIDisplay & uiState
|
|
ENDPROC
|
|
|
|
PROC MANAGE_GOLF_UI_DISPLAY(GOLF_HELPERS &thisHelpers)
|
|
GOLF_UI_DISPLAY_STATE eDisplayUI = thisHelpers.eCurrentGolfUIDisplay
|
|
|
|
IF NOT IS_MINIMAP_RENDERING()
|
|
eDisplayUI -= eDisplayUI & GOLF_DISPLAY_HOLE //don't show the box if the minimap isn't rendering
|
|
ENDIF
|
|
|
|
IF eDisplayUI != thisHelpers.ePreviousGolfUIDisplay
|
|
CDEBUG1LN(DEBUG_GOLF,"Change ui display state")
|
|
IF (thisHelpers.eCurrentGolfUIDisplay & GOLF_DISPLAY_HOLE) != GOLF_DISPLAY_NONE
|
|
CDEBUG1LN(DEBUG_GOLF,"GOLF_DISPLAY_HOLE")
|
|
ENDIF
|
|
IF (thisHelpers.eCurrentGolfUIDisplay & GOLF_DISPLAY_SHOT) != GOLF_DISPLAY_NONE
|
|
CDEBUG1LN(DEBUG_GOLF,"GOLF_DISPLAY_SHOT")
|
|
ENDIF
|
|
IF (thisHelpers.eCurrentGolfUIDisplay & GOLF_DISPLAY_METER) != GOLF_DISPLAY_NONE
|
|
CDEBUG1LN(DEBUG_GOLF,"GOLF_DISPLAY_METER")
|
|
ENDIF
|
|
IF (thisHelpers.eCurrentGolfUIDisplay & GOLF_DISPLAY_PLAYERCARD) != GOLF_DISPLAY_NONE
|
|
CDEBUG1LN(DEBUG_GOLF,"GOLF_DISPLAY_PLAYERCARD")
|
|
ENDIF
|
|
|
|
//When the scoreboard is up, we don't want anything else up
|
|
IF (thisHelpers.eCurrentGolfUIDisplay & GOLF_DISPLAY_SCOREBOARD) != GOLF_DISPLAY_NONE
|
|
CDEBUG1LN(DEBUG_GOLF,"GOLF_DISPLAY_SCOREBOARD")
|
|
|
|
BEGIN_SCALEFORM_MOVIE_METHOD(thisHelpers.golfUI, "SET_DISPLAY")
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(ENUM_TO_INT(GOLF_DISPLAY_SCOREBOARD))
|
|
END_SCALEFORM_MOVIE_METHOD()
|
|
ELSE
|
|
CDEBUG1LN(DEBUG_GOLF,"GOLF_DISPLAY_UI")
|
|
|
|
BEGIN_SCALEFORM_MOVIE_METHOD(thisHelpers.golfUI, "SET_DISPLAY")
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(ENUM_TO_INT(eDisplayUI))
|
|
END_SCALEFORM_MOVIE_METHOD()
|
|
ENDIF
|
|
|
|
thisHelpers.ePreviousGolfUIDisplay = eDisplayUI
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
FUNC TEXT_LABEL GET_SCORE_TEXT(INT iScore, INT iCurrentPar, HUD_COLOURS &eScoreColour)
|
|
TEXT_LABEL txtScore
|
|
|
|
IF iScore != iCurrentPar
|
|
IF iScore < iCurrentPar
|
|
eScoreColour = HUD_COLOUR_GREEN
|
|
txtScore = "-"
|
|
ELSE
|
|
eScoreColour = HUD_COLOUR_RED
|
|
txtScore = "+"
|
|
ENDIF
|
|
|
|
txtScore += ABSI(iScore - iCurrentPar)
|
|
ELSE
|
|
eScoreColour = HUD_COLOUR_BLACK
|
|
txtScore = "E"
|
|
ENDIF
|
|
|
|
RETURN txtScore
|
|
ENDFUNC
|
|
|
|
FUNC INT GET_SCORE_ICON_FOR_HOLE(INT iHole, INT iScore, INT iPar)
|
|
|
|
CDEBUG1LN(DEBUG_GOLF,"Checking icon for hole ", iHole , " score " ,iScore , " par ", iPar)
|
|
|
|
IF iPar = iScore
|
|
CDEBUG1LN(DEBUG_GOLF,"Par on hole ", iHole)
|
|
RETURN 0 //no mark
|
|
ENDIF
|
|
|
|
INT iBit = BIT6 //mark hole in one
|
|
iBit = SHIFT_LEFT(iBit, (iHole*2)) //shift for current hole, each hole is two bits
|
|
IF iScore = 1
|
|
//we are good
|
|
ELSE
|
|
IF iScore < iPar
|
|
CDEBUG1LN(DEBUG_GOLF,"Below on hole ", iHole)
|
|
iBit = SHIFT_LEFT(iBit, 1) //shift one for below par
|
|
ELSE
|
|
//mark the next bit as well as the current for above par
|
|
CDEBUG1LN(DEBUG_GOLF,"Above on hole ", iHole)
|
|
iBit |= SHIFT_LEFT(iBit, 1)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
RETURN iBit
|
|
ENDFUNC
|
|
|
|
#IF NOT GOLF_IS_AI_ONLY
|
|
PROC INITIALISE_PLAYERCARD_SCORES(GOLF_FOURSOME &thisFoursome)
|
|
INT iPlayerIndex
|
|
|
|
REPEAT GET_GOLF_FOURSOME_NUM_PLAYERS(thisFoursome) iPlayerIndex
|
|
thisFoursome.playerCore[iPlayerIndex].playerCard.iCardScore = 0
|
|
ENDREPEAT
|
|
ENDPROC
|
|
|
|
PROC SET_PLAYERCARD_SCORES(GOLF_FOURSOME &thisFoursome, GOLF_HELPERS &thisHelpers, INT iPlayerIndex, INT iScore, BOOL bNextHole)
|
|
|
|
INT iHole, iCurrentPar, iCurrentHole
|
|
|
|
iCurrentHole = GET_GOLF_FOURSOME_CURRENT_HOLE(thisFoursome)
|
|
IF bNextHole
|
|
iCurrentHole = GET_GOLF_FOURSOME_CURRENT_HOLE(thisFoursome) + 1
|
|
ENDIF
|
|
REPEAT iCurrentHole iHole
|
|
IF IS_HOLE_IN_PLAY(thisHelpers, iHole)
|
|
iCurrentPar += GET_GOLF_HOLE_PAR_STATIC(iHole)
|
|
ENDIF
|
|
ENDREPEAT
|
|
|
|
CDEBUG1LN(DEBUG_GOLF,"Setting card score of player ", iPlayerIndex ," to ", (iScore - iCurrentPar))
|
|
thisFoursome.playerCore[iPlayerIndex].playerCard.iCardScore = (iScore - iCurrentPar)
|
|
ENDPROC
|
|
|
|
FUNC INT GET_SLOT_FOR_SCORE(GOLF_FOURSOME &thisFoursome, GOLF_PLAYER_SCORECARD &playerCard)
|
|
|
|
INT iPlayerIndex
|
|
INT iSlot = 0
|
|
|
|
REPEAT GET_GOLF_FOURSOME_NUM_PLAYERS(thisFoursome) iPlayerIndex
|
|
IF NOT IS_GOLF_FOURSOME_INDEXED_PLAYER_CONTROL_FLAG_SET(thisFoursome, iPlayerIndex, GOLF_PLAYER_REMOVED)
|
|
IF iPlayerIndex != playerCard.ID
|
|
|
|
IF thisFoursome.playerCore[iPlayerIndex].playerCard.iCardScore < playerCard.iCardScore
|
|
iSlot++ //my score is bigger then someones, increase my index
|
|
ELIF thisFoursome.playerCore[iPlayerIndex].playerCard.iCardScore = playerCard.iCardScore
|
|
//my score is equal to someones
|
|
CDEBUG1LN(DEBUG_GOLF,"PLayer ", iPlayerIndex, " and player ", playerCard.ID, " have equal scores")
|
|
IF iPlayerIndex < playerCard.ID
|
|
//I have the larger player id
|
|
iSlot++
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDREPEAT
|
|
|
|
RETURN iSlot
|
|
ENDFUNC
|
|
|
|
PROC SET_PLAYERCARD_SLOT(GOLF_HELPERS &thisHelpers, GOLF_FOURSOME &thisFoursome, GOLF_PLAYER_SCORECARD &playerCard, INT iScore, BOOL bUseLiteralName, BOOL bNextHole, INT netIndex = -1)
|
|
|
|
TEXT_LABEL txtScore
|
|
HUD_COLOURS eScoreColour
|
|
GOLF_PLAYERCARD_BITS eStatus
|
|
|
|
INT iHole, iCurrentPar, iCurrentHole
|
|
|
|
IF playerCard.ID < 0
|
|
CDEBUG1LN(DEBUG_GOLF,"Trying to set card of invalid player")
|
|
EXIT
|
|
ENDIF
|
|
|
|
iCurrentHole = GET_GOLF_FOURSOME_CURRENT_HOLE(thisFoursome)
|
|
IF bNextHole
|
|
iCurrentHole = GET_GOLF_FOURSOME_CURRENT_HOLE(thisFoursome) + 1
|
|
ENDIF
|
|
REPEAT iCurrentHole iHole
|
|
IF IS_HOLE_IN_PLAY(thisHelpers, iHole)
|
|
iCurrentPar += GET_GOLF_HOLE_PAR_STATIC(iHole)
|
|
ENDIF
|
|
ENDREPEAT
|
|
|
|
CDEBUG1LN(DEBUG_GOLF,"Finding score after hole ", iCurrentHole, " Score passed in is ", iScore)
|
|
|
|
txtScore = GET_SCORE_TEXT(iScore, iCurrentPar, eScoreColour)
|
|
|
|
CDEBUG1LN(DEBUG_GOLF,"Current player is ", GET_GOLF_FOURSOME_CURRENT_PLAYER(thisFoursome))
|
|
IF GET_GOLF_FOURSOME_CURRENT_PLAYER(thisFoursome) = playerCard.ID
|
|
eStatus |= PCB_HIGHLiGHT
|
|
ENDIF
|
|
|
|
IF IS_GOLF_FOURSOME_MP()
|
|
eStatus |= PCB_MP
|
|
|
|
IF NOT IS_STRING_EMPTY(playerCard.crewTag)
|
|
eStatus |= PCB_CREWTAG
|
|
ENDIF
|
|
|
|
PARTICIPANT_INDEX partIndex = INT_TO_PARTICIPANTINDEX(netIndex)
|
|
|
|
IF NETWORK_IS_PARTICIPANT_ACTIVE(partIndex)
|
|
GAMER_HANDLE gamer = GET_GAMER_HANDLE_PLAYER( NETWORK_GET_PLAYER_INDEX(partIndex) )
|
|
|
|
IF NETWORK_PLAYER_HAS_HEADSET(NETWORK_GET_PLAYER_INDEX(partIndex))
|
|
IF NETWORK_IS_PLAYER_MUTED_BY_ME(NETWORK_GET_PLAYER_INDEX(partIndex))
|
|
eStatus |= (PCB_INACTIVE_HEADSET | PCB_TALKING_HEADSET) //muted headset
|
|
ELSE
|
|
IF NETWORK_IS_PLAYER_TALKING(NETWORK_GET_PLAYER_INDEX(partIndex))
|
|
OR NETWORK_IS_CHATTING_IN_PLATFORM_PARTY(gamer) OR NETWORK_IS_GAMER_TALKING(gamer)
|
|
eStatus |= PCB_TALKING_HEADSET //talking headset
|
|
ELSE
|
|
eStatus |= PCB_INACTIVE_HEADSET //inactive headset
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
INT iSlot = GET_SLOT_FOR_SCORE(thisFoursome, playerCard)
|
|
playerCard.iCurrentSlot = iSlot
|
|
|
|
CDEBUG1LN(DEBUG_GOLF,"Head shot texture for player ", playerCard.ID, " ", playerCard.mugShotName)
|
|
CDEBUG1LN(DEBUG_GOLF,"Crew tag for player, ", playerCard.crewTag)
|
|
CDEBUG1LN(DEBUG_GOLF,"Slot, ", iSlot)
|
|
|
|
BEGIN_SCALEFORM_MOVIE_METHOD(thisHelpers.golfUI, "SET_PLAYERCARD_SLOT")
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(iSlot) //spot on card
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(ENUM_TO_INT(eStatus)) //state
|
|
IF bUseLiteralName
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_PLAYER_NAME(playerCard.sPlayerName) //Player name
|
|
ELSE
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING(playerCard.sPlayerName) //Player name from text file
|
|
ENDIF
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_PLAYER_NAME(playerCard.crewTag) //Crew Tag
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_PLAYER_NAME(playerCard.mugShotDic)
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_PLAYER_NAME(playerCard.mugShotName)
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(ENUM_TO_INT(playerCard.eBallColour)) //ball colour
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_PLAYER_NAME(txtScore) //score text
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(ENUM_TO_INT(eScoreColour)) //score colour
|
|
END_SCALEFORM_MOVIE_METHOD()
|
|
ENDPROC
|
|
|
|
PROC SET_SCOREBOARD_SLOT(GOLF_HELPERS &thisHelpers, GOLF_COURSE &thisCourse, GOLF_FOURSOME &thisFoursome, GOLF_PLAYER &Player, GOLF_PLAYER_SCORECARD &playerCard, BOOL bUseLiteralName, BOOL bNextHole, BOOL bSetReady = FALSE)
|
|
|
|
TEXT_LABEL txtScore
|
|
TEXT_LABEL txtStrokes[18]
|
|
HUD_COLOURS eScoreColour
|
|
INT iScore = 0
|
|
INT iCurrentPar = 0
|
|
GOLF_PLAYERCARD_BITS eStatus
|
|
INT iHole, iCurrentHole
|
|
|
|
CDEBUG1LN(DEBUG_GOLF,"set scoreboard slot")
|
|
DEBUG_PRINTCALLSTACK()
|
|
|
|
IF playerCard.ID < 0
|
|
CDEBUG1LN(DEBUG_GOLF,"Trying to set scoreboard of invalid player")
|
|
EXIT
|
|
ENDIF
|
|
|
|
IF bNextHole
|
|
CDEBUG1LN(DEBUG_GOLF,"Set scoreboard slot for next hole")
|
|
iCurrentHole = GET_GOLF_FOURSOME_CURRENT_HOLE(thisFoursome) + 1
|
|
ELSE
|
|
iCurrentHole = GET_GOLF_FOURSOME_CURRENT_HOLE(thisFoursome)
|
|
ENDIF
|
|
|
|
IF GET_GOLF_FOURSOME_LOCAL_PLAYER(thisFoursome) = playerCard.ID
|
|
eStatus |= PCB_HIGHLiGHT
|
|
ENDIF
|
|
|
|
IF IS_GOLF_FOURSOME_MP()
|
|
eStatus |= PCB_MP
|
|
|
|
IF NOT IS_STRING_EMPTY(playerCard.crewTag)
|
|
eStatus |= PCB_CREWTAG
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF bSetReady
|
|
eStatus |= PCB_READY
|
|
ENDIF
|
|
|
|
REPEAT GET_GOLF_COURSE_NUM_HOLES(thisCourse) iHole
|
|
IF IS_HOLE_IN_PLAY(thisHelpers, iHole)
|
|
CDEBUG1LN(DEBUG_GOLF,"Score on hole ", iHole, " is ", Player.iCourseScore[iHole].iHoleScore)
|
|
|
|
IF Player.iCourseScore[iHole].iHoleScore != 0
|
|
AND iHole < iCurrentHole //causes problems in total par slot when looping
|
|
txtStrokes[iHole] = Player.iCourseScore[iHole].iHoleScore
|
|
iScore += Player.iCourseScore[iHole].iHoleScore
|
|
|
|
eStatus |= INT_TO_ENUM(GOLF_PLAYERCARD_BITS, GET_SCORE_ICON_FOR_HOLE(iHole, Player.iCourseScore[iHole].iHoleScore, GET_GOLF_HOLE_PAR(thisCourse, iHole)))
|
|
iCurrentPar += GET_GOLF_HOLE_PAR(thisCourse, iHole)
|
|
ELSE
|
|
txtStrokes[iHole] = " "
|
|
ENDIF
|
|
ELSE
|
|
txtStrokes[iHole] = ""
|
|
ENDIF
|
|
ENDREPEAT
|
|
|
|
txtScore = GET_SCORE_TEXT(iScore, iCurrentPar, eScoreColour)
|
|
txtScore += " ("
|
|
txtScore += iScore
|
|
txtScore += ")"
|
|
|
|
INT iSlot = GET_SLOT_FOR_SCORE(thisFoursome, playerCard)
|
|
playerCard.iScoreboardSlot = iSlot
|
|
CDEBUG1LN(DEBUG_GOLF,"iScore! ",iScore, " iCurrentPar ", iCurrentPar, " txtScore ", txtScore, " slot ", iSlot)
|
|
|
|
BEGIN_SCALEFORM_MOVIE_METHOD(thisHelpers.golfUI, "SET_SCOREBOARD_SLOT")
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(iSlot) //slot
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(ENUM_TO_INT(eStatus)) //state
|
|
IF bUseLiteralName
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_PLAYER_NAME(playerCard.sPlayerName) //Player name
|
|
ELSE
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING(playerCard.sPlayerName) //Player name from text file
|
|
ENDIF
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_PLAYER_NAME(playerCard.crewTag) //Crew Tag
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("PLAYER_READY") //Ready string
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(ENUM_TO_INT(playerCard.eBallColour)) //Ball colour
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_PLAYER_NAME(txtScore) //Total Score
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(ENUM_TO_INT(eScoreColour)) //Score Colour
|
|
|
|
REPEAT GET_GOLF_COURSE_NUM_HOLES(thisCourse) iHole
|
|
IF IS_STRING_NULL_OR_EMPTY(txtStrokes[iHole])
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("GOLF_ENDASH")
|
|
ELSE
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_PLAYER_NAME(txtStrokes[iHole])
|
|
ENDIF
|
|
|
|
ENDREPEAT
|
|
END_SCALEFORM_MOVIE_METHOD()
|
|
|
|
ENDPROC
|
|
|
|
PROC REMOVE_PLAYER(SCALEFORM_INDEX golfUI, INT iPlayerIndex)
|
|
|
|
BEGIN_SCALEFORM_MOVIE_METHOD(golfUI, "CLEAR_PLAYERCARD_SLOT")
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(iPlayerIndex)
|
|
END_SCALEFORM_MOVIE_METHOD()
|
|
|
|
BEGIN_SCALEFORM_MOVIE_METHOD(golfUI, "CLEAR_SCOREBOARD_SLOT")
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(iPlayerIndex)
|
|
END_SCALEFORM_MOVIE_METHOD()
|
|
ENDPROC
|
|
#ENDIF
|
|
PROC SET_SHOT_DISPLAY(GOLF_HELPERS &thisHelpers, SHOT_DISPLAY_STATE shotDisplayState, STRING sLie, GOLF_LIE_TYPE shotLieDisplay,
|
|
FLOAT fWindDirection, INT iWindSpeed, STRING sClubName, eCLUB_TYPE shotClubDisplay,
|
|
STRING sShotName, INT iSpinPower, FLOAT fSpinDirection, INT iShotNum, BOOL bUseArrows)
|
|
|
|
INT iClub = ENUM_TO_INT(shotClubDisplay)
|
|
|
|
IF shotLieDisplay = LIE_UNKNOWN
|
|
shotLieDisplay = LIE_UNKNOWN_UI
|
|
ENDIF
|
|
shotLieDisplay += INT_TO_ENUM(GOLF_LIE_TYPE, 2) //ui is off from script enum
|
|
|
|
BEGIN_SCALEFORM_MOVIE_METHOD(thisHelpers.golfUI, "SET_SWING_DISPLAY")
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(ENUM_TO_INT(shotDisplayState)) //shot display state
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING(sLie) //Lie name
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(ENUM_TO_INT(shotLieDisplay)) //Lie picture
|
|
|
|
BEGIN_TEXT_COMMAND_SCALEFORM_STRING("GOLF_WIND_PLUS") //Wind speed
|
|
ADD_TEXT_COMPONENT_INTEGER(iWindSpeed)
|
|
END_TEXT_COMMAND_SCALEFORM_STRING()
|
|
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(fWindDirection) //Wind Heading
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING(sClubName) //Club Name
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(iClub) //Club picture
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING(sShotName) //normal, power, punch approach
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(bUseArrows) //left right arrows next to shot name
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("GOLF_SPIN") //Spin name
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(iSpinPower) //Spin power
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(fSpinDirection) //Spin direction
|
|
|
|
BEGIN_TEXT_COMMAND_SCALEFORM_STRING("SHOT_NUM") //Shot Number
|
|
ADD_TEXT_COMPONENT_INTEGER(iShotNum)
|
|
END_TEXT_COMMAND_SCALEFORM_STRING()
|
|
END_SCALEFORM_MOVIE_METHOD()
|
|
ENDPROC
|
|
|
|
PROC UPDATE_SHOT_DISPLAY(GOLF_HELPERS &thisHelpers, GOLF_FOURSOME &thisFoursome, GOLF_GAME &thisGame, GOLF_PLAYER_CORE &thisPlayerCore, SWING_METER &swingMeter)
|
|
|
|
eCLUB_TYPE eClub = GET_GOLF_CLUB_TYPE(thisGame.golfBag, GET_GOLF_PLAYER_CURRENT_CLUB(thisPlayerCore))
|
|
|
|
TEXT_LABEL_23 txtLie = GET_LIE_STRING_FROM_ENUM(GET_GOLF_PLAYER_LIE(thisPlayerCore))
|
|
TEXT_LABEL_23 txtClub = GET_CLUB_STRING_FROM_ENUM(eClub)
|
|
TEXT_LABEL_23 txtSwing = GET_STYLE_STRING_FROM_ENUM(GET_GOLF_PLAYER_SWING_STYLE(thisPlayerCore))
|
|
|
|
FLOAT windSpeed = thisGame.fWindStrength
|
|
IF windSpeed < 1.0
|
|
windSpeed = 1.0
|
|
ELIF windSpeed > 12.0 //wind speed should never really get higher then this but just incase it does, cap it
|
|
windSpeed = 12.0
|
|
ENDIF
|
|
|
|
BOOL bUseArrows = FALSE
|
|
// IF GET_GOLF_FOURSOME_CURRENT_PLAYER(thisFoursome) != GET_GOLF_FOURSOME_LOCAL_PLAYER(thisFoursome)
|
|
// bUseArrows = FALSE
|
|
// ENDIF
|
|
|
|
FLOAT fSpinHeading, fSpinPower
|
|
fSpinHeading = GET_HEADING_FROM_VECTOR_2D(swingMeter.fXSpin, swingMeter.fYSpin) + 90
|
|
fSpinPower = (SQRT(swingMeter.fXSpin*swingMeter.fXSpin + swingMeter.fYSpin*swingMeter.fYSpin) / 128) * 200
|
|
fSpinPower = FMIN(100.0, fSpinPower+0.1)
|
|
|
|
SET_SHOT_DISPLAY(thisHelpers, thisHelpers.eShotDisplayState, txtLie, GET_GOLF_PLAYER_LIE(thisPlayerCore),
|
|
thisGame.fOldWindHeading, FLOOR(windSpeed), txtClub, eClub, txtSwing,
|
|
FLOOR(fSpinPower), fSpinHeading, GET_GOLF_FOURSOME_CURRENT_PLAYER_SHOTS_ON_HOLE(thisFoursome)+1, bUseArrows)
|
|
|
|
ENDPROC
|
|
|
|
PROC SET_HOLE_DISPLAY(GOLF_HELPERS &thisHelpers, INT iHole = -1, INT iPar = -1, INT iDistance = -1)
|
|
BEGIN_SCALEFORM_MOVIE_METHOD(thisHelpers.golfUI, "SET_HOLE_DISPLAY")
|
|
BEGIN_TEXT_COMMAND_SCALEFORM_STRING("GOLF_HOLE_NUM")
|
|
ADD_TEXT_COMPONENT_INTEGER(iHole)
|
|
END_TEXT_COMMAND_SCALEFORM_STRING()
|
|
|
|
BEGIN_TEXT_COMMAND_SCALEFORM_STRING("GOLF_PAR_NUM")
|
|
ADD_TEXT_COMPONENT_INTEGER(iPar)
|
|
END_TEXT_COMMAND_SCALEFORM_STRING()
|
|
|
|
TEXT_LABEL_23 sUnits = "GOLF_HOLE_DIST"
|
|
IF GOLF_SHOULD_USE_FOREIGN_DISTANCE()
|
|
sUnits = "DIST_METER"
|
|
iDistance = FLOOR(YARDS_TO_METERS( TO_FLOAT(iDistance)))
|
|
ENDIF
|
|
|
|
BEGIN_TEXT_COMMAND_SCALEFORM_STRING(sUnits)
|
|
ADD_TEXT_COMPONENT_INTEGER(iDistance)
|
|
END_TEXT_COMMAND_SCALEFORM_STRING()
|
|
END_SCALEFORM_MOVIE_METHOD()
|
|
ENDPROC
|
|
|
|
PROC SET_SCOREBOARD_TITLE(GOLF_HELPERS &thisHelpers)
|
|
BEGIN_SCALEFORM_MOVIE_METHOD(thisHelpers.golfUI, "SET_SCOREBOARD_TITLE")
|
|
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("TITLE_STANDING") //Title
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("HOLE_ALLCAPS")
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("PAR_ALLCAPS")
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("SCORE_ALLCAPS")
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("SCORE_HOLEINONE")
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("SCORE_BELOW_PAR")
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("SCORE_ABOVE_PAR")
|
|
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("HOLE_1")
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("HOLE_2")
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("HOLE_3")
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("HOLE_4")
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("HOLE_5")
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("HOLE_6")
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("HOLE_7")
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("HOLE_8")
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("HOLE_9")
|
|
END_SCALEFORM_MOVIE_METHOD()
|
|
ENDPROC
|
|
|
|
PROC SET_COURSE_PAR(GOLF_HELPERS &thisHelpers)
|
|
BEGIN_SCALEFORM_MOVIE_METHOD(thisHelpers.golfUI, "COURSE_PAR")
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("PAR_5")
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("PAR_4")
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("PAR_3")
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("PAR_4")
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("PAR_4")
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("PAR_3")
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("PAR_4")
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("PAR_5")
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("PAR_4")
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("PAR_TOTAL")
|
|
END_SCALEFORM_MOVIE_METHOD()
|
|
ENDPROC
|
|
|
|
PROC DISPLAY_SCOREBOARD(GOLF_HELPERS &thisHelpers, BOOL bVisible = FALSE)
|
|
|
|
CDEBUG1LN(DEBUG_GOLF, "Seting display scoreboard to ", bVisible)
|
|
|
|
IF bVisible = TRUE
|
|
SET_SPLASH_TEXT(thisHelpers)
|
|
//ui display flag is to let scaleform know what ui elements to display
|
|
SET_GOLF_UI_DISPLAY(thisHelpers, GOLF_DISPLAY_SCOREBOARD)
|
|
|
|
//this flag is for checking to see if the scoreboard is up
|
|
SET_GOLF_UI_FLAG(thisHelpers, GUC_SCOREBOARD_DISPLAYED)
|
|
//SET_RESULT_SCREEN_DISPLAYING_STATE(TRUE)
|
|
ELSE
|
|
CLEAR_GOLF_UI_DISPLAY(thisHelpers, GOLF_DISPLAY_SCOREBOARD)
|
|
|
|
CLEAR_GOLF_UI_FLAG(thisHelpers, GUC_SCOREBOARD_DISPLAYED)
|
|
//SET_RESULT_SCREEN_DISPLAYING_STATE(FALSE)
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
PROC MANAGE_PLAYERCARD(GOLF_HELPERS &thisHelpers, GOLF_GAME &thisGame)
|
|
|
|
IF IS_HELP_MESSAGE_BEING_DISPLAYED()
|
|
CLEAR_GOLF_UI_DISPLAY(thisHelpers, GOLF_DISPLAY_PLAYERCARD)
|
|
ELIF NOT IS_GOLF_CONTROL_FLAG_SET(thisGame, GCF_DISPLAY_QUITTER)
|
|
SET_GOLF_UI_DISPLAY(thisHelpers, GOLF_DISPLAY_PLAYERCARD)
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
PROC SET_GOLF_HEADSET_STATE(GOLF_HELPERS &thisHelpers, INT ID, GOLF_HEADSET_STATE state)
|
|
CDEBUG1LN(DEBUG_GOLF, "Setting headset state of ", ID, " to ", state, ".")
|
|
BEGIN_SCALEFORM_MOVIE_METHOD(thisHelpers.golfUI, "SET_PLAYERCARD_HEADSET")
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(ID)
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(ENUM_TO_INT(state))
|
|
END_SCALEFORM_MOVIE_METHOD()
|
|
ENDPROC
|
|
|
|
PROC SET_APEX_MARKER(SCALEFORM_INDEX golfUI, BOOL bVisible = FALSE, FLOAT fYLocation = 0.0)
|
|
/*
|
|
SWING_METER_SET_APEX_MARKER(visible:Boolean, position:Number, rotation:Number):Void
|
|
Set characteristics of apex marker (black)
|
|
visible - show or hide marker
|
|
position on bar (0 = top, 1 = bottom)
|
|
rotation of marker in degrees (-values = counter-clockwise) (lets not go more than -30 thru 30 to start).
|
|
//*/
|
|
|
|
BEGIN_SCALEFORM_MOVIE_METHOD(golfUI, "SWING_METER_SET_APEX_MARKER")
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(bVisible)
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(fYLocation)
|
|
END_SCALEFORM_MOVIE_METHOD()
|
|
|
|
ENDPROC
|
|
|
|
PROC SET_SWING_METER_FILL(SCALEFORM_INDEX golfUI, FLOAT fYLocation = 0.0, FLOAT fShotQuality = -1.0)
|
|
/*
|
|
SWING_METER_SET_FILL(span:Number, state:Number):Void
|
|
span percentage of bar filled from top (.2 = 20%)
|
|
state color to display (-1 = transparent white; 0 = white gradates to 1 = red)
|
|
fromTop boolean that determines if fill comes from top or bottom (default top)
|
|
//*/
|
|
|
|
BEGIN_SCALEFORM_MOVIE_METHOD(golfUI, "SWING_METER_SET_FILL")
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(fYLocation)
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(fShotQuality)
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(TRUE)//true = fill from top, false = fill from bottom
|
|
END_SCALEFORM_MOVIE_METHOD()
|
|
|
|
|
|
ENDPROC
|
|
|
|
PROC SET_PUTTMETER(GOLF_HELPERS &thisHelpers, SCALEFORM_INDEX golfUI, BOOL bVisible = FALSE, BOOL bForceSlowTransition = FALSE, FLOAT fXLocation = 0.0, FLOAT fYLocation = 0.0, FLOAT fHotspot = 0.0, FLOAT fHotspotSpan = 0.1)
|
|
|
|
//BEGIN_SCALEFORM_MOVIE_METHOD(golfUI, "SWING_METER_IS_TRANSITIOING")
|
|
//SCALEFORM_RETURN_INDEX scaleformRetIndex = END_SCALEFORM_MOVIE_METHOD_RETURN_VALUE()
|
|
//WHILE NOT IS_SCALEFORM_MOVIE_METHOD_RETURN_VALUE_READY(scaleformRetIndex)
|
|
//ENDWHILE
|
|
|
|
//BOOL isTransition = GET_SCALEFORM_MOVIE_METHOD_RETURN_VALUE_BOOL(scaleformRetIndex)
|
|
//BOOL isTransition = END_SCALEFORM_MOVIE_METHOD_BOOL()
|
|
|
|
INT TransitionTime = 0
|
|
BOOL useFill = IS_GOLF_UI_FLAG_SET(thisHelpers, GUC_USE_FILL_QUALITY)
|
|
IF useFill OR thisHelpers.bShotPreviewCam OR bForceSlowTransition
|
|
TransitionTime = 1000
|
|
ENDIF
|
|
|
|
FLOAT adjustedHotspot = fHotSpot * (1 -(fHotspotSpan/2))
|
|
FLOAT shotQuality = ABSF(fYLocation - (adjustedHotspot + (fHotspotSpan/2)))
|
|
IF NOT useFill
|
|
shotQuality = -1.0
|
|
ENDIF
|
|
|
|
IF NOT bVisible AND IS_GOLF_UI_FLAG_SET(thisHelpers, GUC_SWING_METER_DISPLAYED) //AND NOT isTransition
|
|
BEGIN_SCALEFORM_MOVIE_METHOD(golfUI, "SWING_METER_TRANSITION_OUT")
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(TransitionTime)
|
|
END_SCALEFORM_MOVIE_METHOD()
|
|
CLEAR_GOLF_UI_FLAG(thisHelpers, GUC_SWING_METER_DISPLAYED)
|
|
ELIF bVisible AND NOT IS_GOLF_UI_FLAG_SET(thisHelpers, GUC_SWING_METER_DISPLAYED)
|
|
FLOAT fWideScreenAdjust = 0.0
|
|
FLOAT fResolutionAdjust = 0.0
|
|
|
|
IF GET_IS_WIDESCREEN()
|
|
fWideScreenAdjust = 0.095
|
|
ELIF IS_PC_VERSION()
|
|
fResolutionAdjust = 0.045
|
|
ENDIF
|
|
|
|
BEGIN_SCALEFORM_MOVIE_METHOD(golfUI, "SWING_METER_TRANSITION_IN")
|
|
END_SCALEFORM_MOVIE_METHOD()
|
|
SET_GOLF_UI_FLAG(thisHelpers, GUC_SWING_METER_DISPLAYED)
|
|
|
|
BEGIN_SCALEFORM_MOVIE_METHOD(golfUI,"SWING_METER_POSITION")
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(SWING_METER_POS_X - fResolutionAdjust) //x
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(SWING_METER_POS_Y - fWideScreenAdjust) //y
|
|
// SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(TRUE) //position from center of swing meter
|
|
END_SCALEFORM_MOVIE_METHOD()
|
|
ENDIF
|
|
|
|
IF NOT IS_GOLF_UI_FLAG_SET(thisHelpers, GUC_SWING_METER_DISPLAYED)
|
|
EXIT
|
|
ENDIF
|
|
|
|
SET_SWING_METER_FILL( golfUI, fYLocation, shotQuality)
|
|
|
|
BEGIN_SCALEFORM_MOVIE_METHOD(golfUI, "SWING_METER_SET_MARKER")
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(bVisible)
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(fYLocation)
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(bVisible)
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(fXLocation)
|
|
END_SCALEFORM_MOVIE_METHOD()
|
|
|
|
/*
|
|
The top of the hot spot is located at fHotspot and stretches down fHotspotSpan.
|
|
We need to reposition the hot spot so that it evenly goes from 0 to 1 without going outside the meter.
|
|
V = min*(1-t) + t *max, where t = fHotSpot, min = 0, max = (1-fHotspotSpan)
|
|
*/
|
|
|
|
BEGIN_SCALEFORM_MOVIE_METHOD(golfUI, "SWING_METER_SET_TARGET")
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(fHotspotSpan)
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(adjustedHotspot)
|
|
END_SCALEFORM_MOVIE_METHOD()
|
|
|
|
/*default is yellow
|
|
BEGIN_SCALEFORM_MOVIE_METHOD(golfUI, "SWING_METER_SET_TARGET_COLOR")
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(255) //r
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(0) //g
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(0) //b
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(100) //a
|
|
END_SCALEFORM_MOVIE_METHOD()
|
|
//*/
|
|
|
|
ENDPROC
|
|
|
|
PROC SET_DISTANCE(SCALEFORM_INDEX golfUI, BOOL bVisible = FALSE, FLOAT fDistance = 0.0, FLOAT fCarry = 0.0, STRING sDistanceLable = NULL, STRING sCarryLabel = NULL, STRING sRecordLabel = NULL)
|
|
IF IS_STRING_NULL(sDistanceLable)
|
|
sDistanceLable = ""
|
|
ENDIF
|
|
IF IS_STRING_NULL(sCarryLabel)
|
|
sCarryLabel = ""
|
|
ENDIF
|
|
IF IS_STRING_NULL(sRecordLabel)
|
|
sRecordLabel = ""
|
|
ENDIF
|
|
BEGIN_SCALEFORM_MOVIE_METHOD(golfUI, "SET_DISTANCE")
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_BOOL(bVisible)
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(fDistance)
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(fCarry)
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING(sDistanceLable)
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING(sCarryLabel)
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING(sRecordLabel)
|
|
END_SCALEFORM_MOVIE_METHOD()
|
|
ENDPROC
|
|
|
|
FUNC STRING GET_DRIVE_PIN_TEXT_LABEL(INT iDistance)
|
|
|
|
IF iDistance = 1
|
|
IF GOLF_SHOULD_USE_FOREIGN_DISTANCE()
|
|
RETURN "DRIVE_PIN_M_SHORT"
|
|
ELSE
|
|
RETURN "DRIVE_PIN_SHORT"
|
|
ENDIF
|
|
ELSE
|
|
IF GOLF_SHOULD_USE_FOREIGN_DISTANCE()
|
|
RETURN "DRIVE_PIN_M"
|
|
ELSE
|
|
RETURN "DRIVE_PIN"
|
|
ENDIF
|
|
ENDIF
|
|
|
|
RETURN ""
|
|
ENDFUNC
|
|
|
|
//Keeps track of which splash text need to be displayed
|
|
PROC MANAGE_SPLASH_TEXT(GOLF_HELPERS &thisHelpers, GOLF_FOURSOME &thisFoursome)
|
|
|
|
UNUSED_PARAMETER(thisHelpers)
|
|
UNUSED_PARAMETER(thisFoursome)
|
|
#IF NOT GOLF_IS_AI_ONLY
|
|
INT iDist
|
|
|
|
IF IS_GOLF_UI_FLAG_SET(thisHelpers, GUC_DISPLAY_LONGEST_DRIVE)
|
|
CLEAR_GOLF_UI_FLAG(thisHelpers, GUC_DISPLAY_LONGEST_DRIVE | GUC_DISPLAY_LONGEST_HOLE | GUC_DISPLAY_GIR | GUC_DISPLAY_FIR)
|
|
SET_SPLASH_TEXT(thisHelpers, GOLF_SPLASH_LONGEST_DIVE, "GOLF_NEW_RECORD", PICK_STRING(GOLF_SHOULD_USE_FOREIGN_DISTANCE(), "DRIVE_LONG_M", "DRIVE_LONG"), FLOOR(GET_GOLF_STAT_LONGEST_DRIVE()), 10000)
|
|
EXIT
|
|
ENDIF
|
|
|
|
IF IS_GOLF_UI_FLAG_SET(thisHelpers, GUC_DISPLAY_LONGEST_HOLE)
|
|
CLEAR_GOLF_UI_FLAG(thisHelpers, GUC_DISPLAY_LONGEST_HOLE | GUC_DISPLAY_GIR | GUC_DISPLAY_FIR)
|
|
SET_SPLASH_TEXT(thisHelpers, GOLF_SPLASH_LONGEST_HOLE, "GOLF_NEW_RECORD", PICK_STRING(GOLF_SHOULD_USE_FOREIGN_DISTANCE(), "DRIVE_HOLE_M", "DRIVE_HOLE"), FLOOR(GET_GOLF_STAT_LONGEST_DRIVE_ON_HOLE(GET_GOLF_FOURSOME_CURRENT_HOLE(thisFoursome))), 10000)
|
|
EXIT
|
|
ENDIF
|
|
|
|
IF IS_GOLF_UI_FLAG_SET(thisHelpers, GUC_DISPLAY_CLOSEST_TO_PIN)
|
|
iDist = FLOOR(GET_GOLF_STAT_LONGEST_DRIVE_ON_HOLE(GET_GOLF_FOURSOME_CURRENT_HOLE(thisFoursome)))
|
|
CLEAR_GOLF_UI_FLAG(thisHelpers, GUC_DISPLAY_CLOSEST_TO_PIN | GUC_DISPLAY_GIR | GUC_DISPLAY_FIR)
|
|
CDEBUG1LN(DEBUG_GOLF, "Use drive to pin line ", GET_DRIVE_PIN_TEXT_LABEL(iDist))
|
|
SET_SPLASH_TEXT(thisHelpers, GOLF_SPLASH_CLOSEST_TO_PIN, "GOLF_NEW_RECORD", GET_DRIVE_PIN_TEXT_LABEL(iDist), iDist)
|
|
EXIT
|
|
ENDIF
|
|
|
|
IF IS_GOLF_UI_FLAG_SET(thisHelpers, GUC_DISPLAY_GIR)
|
|
CLEAR_GOLF_UI_FLAG(thisHelpers, GUC_DISPLAY_GIR | GUC_DISPLAY_FIR)
|
|
IF GET_GOLF_FOURSOME_CURRENT_PLAYER_CONTROL(thisFoursome) = HUMAN_LOCAL OR GET_GOLF_FOURSOME_CURRENT_PLAYER_CONTROL(thisFoursome) = HUMAN_LOCAL_MP
|
|
OR GET_GOLF_FOURSOME_CURRENT_PLAYER_CONTROL(thisFoursome) = HUMAN_NETWORK
|
|
SET_SPLASH_TEXT(thisHelpers, GOLF_SPLASH_GIR, "GIR", "GOLF_G_REGULATION", -1, 2000)
|
|
ENDIF
|
|
EXIT
|
|
ENDIF
|
|
|
|
IF IS_GOLF_UI_FLAG_SET(thisHelpers, GUC_DISPLAY_FIR)
|
|
CLEAR_GOLF_UI_FLAG(thisHelpers, GUC_DISPLAY_FIR)
|
|
IF GET_GOLF_FOURSOME_CURRENT_PLAYER_CONTROL(thisFoursome) = HUMAN_LOCAL OR GET_GOLF_FOURSOME_CURRENT_PLAYER_CONTROL(thisFoursome) = HUMAN_LOCAL_MP
|
|
OR GET_GOLF_FOURSOME_CURRENT_PLAYER_CONTROL(thisFoursome) = HUMAN_NETWORK
|
|
SET_SPLASH_TEXT(thisHelpers, GOLF_SPLASH_FIR, "FIR", "GOLF_F_REGULATION", -1, 10000)
|
|
ENDIF
|
|
EXIT
|
|
ENDIF
|
|
#ENDIF
|
|
ENDPROC
|
|
|
|
PROC GOLFUI_FLOATING_SET_STRENGTH(SCALEFORM_INDEX golfUI, STRING sLabel, FLOAT fStrength, FLOAT fShotTypeScalar)
|
|
|
|
IF IS_STRING_NULL(sLabel)
|
|
sLabel = ""
|
|
ENDIF
|
|
IF fStrength > 100.0
|
|
fStrength = 100.0
|
|
ELIF fStrength < 0.0
|
|
fStrength = 0.0
|
|
ENDIF
|
|
|
|
fStrength *= fShotTypeScalar
|
|
|
|
BEGIN_SCALEFORM_MOVIE_METHOD(golfUI, "SET_STRENGTH")
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING(sLabel)
|
|
|
|
BEGIN_TEXT_COMMAND_SCALEFORM_STRING("STRENGTH_PER")
|
|
ADD_TEXT_COMPONENT_INTEGER(CEIL(fStrength))
|
|
END_TEXT_COMMAND_SCALEFORM_STRING()
|
|
|
|
END_SCALEFORM_MOVIE_METHOD()
|
|
ENDPROC
|
|
|
|
PROC GOLFUI_FLOATING_SET_SLOT_ONE(SCALEFORM_INDEX floatingUI, STRING sLabel, FLOAT fDistance, BOOL bLong)
|
|
IF IS_STRING_NULL(sLabel)
|
|
sLabel = ""
|
|
ENDIF
|
|
|
|
TEXT_LABEL sUnits
|
|
|
|
IF bLong
|
|
sUnits = "DIST"
|
|
ELSE
|
|
sUnits = "DIST_SHORT"
|
|
ENDIF
|
|
|
|
IF fDistance > 1000
|
|
CDEBUG1LN(DEBUG_GOLF,"Absured value for distance")
|
|
// DEBUG_PRINTCALLSTACK()
|
|
ENDIF
|
|
|
|
IF GOLF_SHOULD_USE_FOREIGN_DISTANCE()
|
|
sUnits = "DIST_METER"
|
|
|
|
IF bLong
|
|
fDistance = YARDS_TO_METERS(fDistance)
|
|
ELSE
|
|
fDistance = FEET_TO_METERS(fDistance)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
BEGIN_SCALEFORM_MOVIE_METHOD(floatingUI, "SET_SWING_DISTANCE")
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING(sLabel)
|
|
|
|
BEGIN_TEXT_COMMAND_SCALEFORM_STRING(sUnits)
|
|
ADD_TEXT_COMPONENT_INTEGER(FLOOR(fDistance))
|
|
END_TEXT_COMMAND_SCALEFORM_STRING()
|
|
|
|
END_SCALEFORM_MOVIE_METHOD()
|
|
ENDPROC
|
|
|
|
PROC GOLFUI_FLOATING_SET_SLOT_TWO(SCALEFORM_INDEX floatingUI, STRING sLabel, FLOAT fDistance, BOOL bLong)
|
|
IF IS_STRING_NULL(sLabel)
|
|
sLabel = ""
|
|
ENDIF
|
|
|
|
TEXT_LABEL sUnits
|
|
|
|
IF bLong
|
|
sUnits = "DIST"
|
|
ELSE
|
|
sUnits = "DIST_SHORT"
|
|
ENDIF
|
|
|
|
IF GOLF_SHOULD_USE_FOREIGN_DISTANCE()
|
|
sUnits = "DIST_METER"
|
|
|
|
IF bLong
|
|
fDistance = YARDS_TO_METERS(fDistance)
|
|
ELSE
|
|
fDistance = FEET_TO_METERS(fDistance)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
BEGIN_SCALEFORM_MOVIE_METHOD(floatingUI, "SET_PIN_DISTANCE")
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING(sLabel)
|
|
|
|
BEGIN_TEXT_COMMAND_SCALEFORM_STRING(sUnits)
|
|
ADD_TEXT_COMPONENT_INTEGER(FLOOR(fDistance))
|
|
END_TEXT_COMMAND_SCALEFORM_STRING()
|
|
|
|
END_SCALEFORM_MOVIE_METHOD()
|
|
ENDPROC
|
|
|
|
PROC GOLFUI_FLOATING_SET_SLOT_THREE(SCALEFORM_INDEX floatingUI, STRING sLabel, FLOAT fHeight, BOOL bLong)
|
|
IF IS_STRING_NULL(sLabel)
|
|
sLabel = ""
|
|
ENDIF
|
|
|
|
TEXT_LABEL sUnits
|
|
|
|
IF bLong
|
|
sUnits = "DIST_SHORT"
|
|
ELSE
|
|
sUnits = "DIST_INCH"
|
|
ENDIF
|
|
|
|
IF GOLF_SHOULD_USE_FOREIGN_DISTANCE()
|
|
IF bLong
|
|
sUnits = "DIST_METER"
|
|
fHeight = FEET_TO_METERS(fHeight)
|
|
ELSE
|
|
sUnits = "DIST_CM"
|
|
fHeight = INCH_TO_CM(fHeight)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
INT iDirection = 0
|
|
IF CEIL(fHeight) > 0
|
|
iDirection = 1//up arrow
|
|
ELIF CEIL(fHeight) < 0
|
|
iDirection = 2//down arrow
|
|
ENDIF
|
|
|
|
BEGIN_SCALEFORM_MOVIE_METHOD(floatingUI, "SET_HEIGHT")
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING(sLabel)
|
|
|
|
BEGIN_TEXT_COMMAND_SCALEFORM_STRING(sUnits)
|
|
ADD_TEXT_COMPONENT_INTEGER(CEIL(fHeight))
|
|
END_TEXT_COMMAND_SCALEFORM_STRING()
|
|
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(iDirection)
|
|
END_SCALEFORM_MOVIE_METHOD()
|
|
ENDPROC
|
|
|
|
PROC GOLFUI_FLOATING_TRANSITION_IN(SCALEFORM_INDEX floatingUI, INT iTimeMS)
|
|
BEGIN_SCALEFORM_MOVIE_METHOD(floatingUI, "TRANSITION_IN")
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(iTimeMS)
|
|
END_SCALEFORM_MOVIE_METHOD()
|
|
ENDPROC
|
|
|
|
PROC GOLFUI_FLOATING_TRANSITION_OUT(SCALEFORM_INDEX floatingUI, INT iTimeMS)
|
|
BEGIN_SCALEFORM_MOVIE_METHOD(floatingUI, "TRANSITION_OUT")
|
|
SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(iTimeMS)
|
|
END_SCALEFORM_MOVIE_METHOD()
|
|
ENDPROC
|
|
|
|
|
|
FUNC FLOAT GET_GOLF_UI_POWER_SCALAR(GOLF_FOURSOME &thisFoursome)
|
|
RETURN GET_GOLF_LIE_MULTIPLIER(GET_GOLF_PLAYER_LIE(thisFoursome.playerCore[GET_GOLF_FOURSOME_CURRENT_PLAYER(thisFoursome)]))
|
|
* GET_SWING_STYLE_POWER_MULTIPLIER(GET_GOLF_FOURSOME_CURRENT_PLAYER_SWING_STYLE(thisFoursome))
|
|
ENDFUNC
|
|
|
|
PROC GOLFUI_FLOATING_INIT_STRENGTH( SCALEFORM_INDEX floatingUI, GOLF_FOURSOME &thisFoursome)
|
|
FLOAT scalar = 1.0
|
|
IF NOT IS_GOLF_FOURSOME_CURRENT_PLAYER_PUTTING(thisFoursome)
|
|
AND GET_GOLF_FOURSOME_CURRENT_PLAYER_SWING_STYLE(thisFoursome) != SWING_STYLE_PUNCH
|
|
scalar = GET_GOLF_UI_POWER_SCALAR(thisFoursome)
|
|
ENDIF
|
|
|
|
GOLFUI_FLOATING_SET_STRENGTH(floatingUI, "PREVIEW_PCT", GET_GOLF_FOURSOME_CURRENT_PLAYER_METER_GOAL(thisFoursome), scalar)
|
|
ENDPROC
|
|
|
|
PROC GOLFUI_FLOATING_INIT_SHOT_STRENGTH( SCALEFORM_INDEX floatingUI, GOLF_FOURSOME &thisFoursome)
|
|
FLOAT scalar = 1.0
|
|
FLOAT currentPower = thisFoursome.swingMeter.fCurrentPowerRel
|
|
IF NOT IS_GOLF_FOURSOME_CURRENT_PLAYER_PUTTING(thisFoursome)
|
|
AND GET_GOLF_FOURSOME_CURRENT_PLAYER_SWING_STYLE(thisFoursome) != SWING_STYLE_PUNCH
|
|
scalar = GET_GOLF_UI_POWER_SCALAR(thisFoursome)
|
|
ELSE
|
|
ENDIF
|
|
|
|
GOLFUI_FLOATING_SET_STRENGTH(floatingUI, "PREVIEW_PCT", currentPower, scalar)
|
|
ENDPROC
|
|
|
|
|
|
PROC GOLFUI_FLOATING_INIT_SWING_DISTANCE(SCALEFORM_INDEX floatingUI, GOLF_FOURSOME &thisFoursome)
|
|
GOLFUI_FLOATING_SET_SLOT_ONE(floatingUI, "PREVIEW_DIST", MAGIC_DISTANCE_CONVERSION* METERS_TO_YARDS(VDIST( GET_GOLF_FOURSOME_CURRENT_PLAYER_BALL_POSITION(thisFoursome), GET_GOLF_FOURSOME_CURRENT_PLAYER_SHOT_ESTIMATE(thisFoursome))), GET_GOLF_FOURSOME_CURRENT_PLAYER_LIE(thisFoursome) != LIE_GREEN)
|
|
ENDPROC
|
|
|
|
PROC GOLFUI_FLOATING_INIT_HIT_DISTANCE(SCALEFORM_INDEX floatingUI, GOLF_FOURSOME &thisFoursome)
|
|
GOLFUI_FLOATING_SET_SLOT_ONE(floatingUI, "PREVIEW_DIST", 0, GET_GOLF_FOURSOME_CURRENT_PLAYER_LIE(thisFoursome) != LIE_GREEN)
|
|
ENDPROC
|
|
|
|
PROC GOLFUI_FLOATING_UPDATE_HIT_DISTANCE(SCALEFORM_INDEX floatingUI, GOLF_FOURSOME &thisFoursome)
|
|
|
|
VECTOR vHitPos = GET_GOLF_FOURSOME_CURRENT_PLAYER_BALL_POSITION(thisFoursome)
|
|
VECTOR vBallPos = GET_ENTITY_COORDS( GET_GOLF_FOURSOME_CURRENT_PLAYER_BALL(thisFoursome))
|
|
|
|
FLOAT fActualDist = MAGIC_DISTANCE_CONVERSION * METERS_TO_YARDS(VDIST( vHitPos, vBallPos))
|
|
fActualDist = TO_FLOAT(FLOOR(fActualDist)) //truncate
|
|
|
|
GOLFUI_FLOATING_SET_SLOT_ONE(floatingUI, "PREVIEW_DIST", fActualDist, GET_GOLF_FOURSOME_CURRENT_PLAYER_LAST_LIE(thisFoursome) != LIE_GREEN)
|
|
|
|
ENDPROC
|
|
|
|
|
|
PROC GOLFUI_FLOATING_INIT_PIN_DISTANCE(SCALEFORM_INDEX floatingUI, GOLF_FOURSOME &thisFoursome)
|
|
GOLFUI_FLOATING_SET_SLOT_TWO(floatingUI, "PREVIEW_PIN", MAGIC_DISTANCE_CONVERSION* METERS_TO_YARDS(GET_GOLF_FOURSOME_CURRENT_PLAYER_DISTANCE_TO_HOLE(thisFoursome)), GET_GOLF_FOURSOME_CURRENT_PLAYER_LIE(thisFoursome) != LIE_GREEN)
|
|
ENDPROC
|
|
|
|
PROC GOLFUI_FLOATING_INIT_CARRY_DISTANCE(SCALEFORM_INDEX floatingUI, GOLF_FOURSOME &thisFoursome)
|
|
GOLFUI_FLOATING_SET_SLOT_TWO(floatingUI, "CARRY_DIST", MAGIC_DISTANCE_CONVERSION* METERS_TO_YARDS(GET_GOLF_FOURSOME_CURRENT_PLAYER_SHOT_CARRY(thisFoursome)), TRUE)
|
|
ENDPROC
|
|
|
|
|
|
PROC GOLFUI_FLOATING_INIT_HEIGHT(SCALEFORM_INDEX floatingUI, GOLF_FOURSOME &thisFoursome, GOLF_COURSE &thisCourse)
|
|
VECTOR ballPos = GET_GOLF_FOURSOME_CURRENT_PLAYER_BALL_POSITION(thisFoursome)
|
|
VECTOR previewPos = GET_GOLF_FOURSOME_CURRENT_PLAYER_SHOT_ESTIMATE(thisFoursome)
|
|
VECTOR vHolePos = GET_GOLF_HOLE_PIN_POSITION(thisCourse, GET_GOLF_FOURSOME_CURRENT_HOLE(thisFoursome))
|
|
|
|
IF VDIST2(previewPos, vHolePos) < (0.15*0.15) //player is near hole, don't count its dip as part of the hieght
|
|
previewPos += <<0.5, 0.5, 1.0>> //find ground pos near hole
|
|
GET_GROUND_Z_FOR_3D_COORD(previewPos, previewPos.z)
|
|
ENDIF
|
|
|
|
FLOAT fDistance = MAGIC_DISTANCE_CONVERSION* METERS_TO_YARDS(previewPos.z - ballPos.z)
|
|
|
|
IF GET_GOLF_FOURSOME_CURRENT_PLAYER_LIE(thisFoursome) = LIE_GREEN
|
|
//convert yards to inches
|
|
fDistance *= (12*3)
|
|
ENDIF
|
|
|
|
GOLFUI_FLOATING_SET_SLOT_THREE(floatingUI, "PREVIEW_HT", fDistance, GET_GOLF_FOURSOME_CURRENT_PLAYER_LIE(thisFoursome) != LIE_GREEN)
|
|
ENDPROC
|
|
|
|
PROC GOLFUI_FLOATING_CLEAR_PIN_DISTANCE(SCALEFORM_INDEX floatingUI)
|
|
GOLFUI_FLOATING_SET_SLOT_TWO(floatingUI, "", 0, FALSE)
|
|
ENDPROC
|
|
|
|
PROC GOLFUI_FLOATING_CLEAR_HEIGHT(SCALEFORM_INDEX floatingUI)
|
|
GOLFUI_FLOATING_SET_SLOT_THREE(floatingUI, "", 0, FALSE)
|
|
ENDPROC
|
|
PROC GOLFUI_FLOATING_CLEAR_SWING_DISTANCE(SCALEFORM_INDEX floatingUI)
|
|
GOLFUI_FLOATING_SET_SLOT_ONE(floatingUI, "", 0, FALSE)
|
|
ENDPROC
|
|
|
|
//When putting don't use the swing distnace stat
|
|
PROC INITIALIZE_FLOATING_HELP_FOR_PUTTING(GOLF_FOURSOME &thisFoursome, GOLF_HELPERS &thisHelpers, GOLF_COURSE &thisCourse)
|
|
|
|
GOLFUI_FLOATING_INIT_STRENGTH(thisHelpers.floatingUI, thisFoursome)
|
|
|
|
//GOLFUI_FLOATING_CLEAR_SWING_DISTANCE(thisHelpers.floatingUI)
|
|
GOLFUI_FLOATING_INIT_SWING_DISTANCE(thisHelpers.floatingUI, thisFoursome)
|
|
GOLFUI_FLOATING_INIT_PIN_DISTANCE(thisHelpers.floatingUI, thisFoursome)
|
|
GOLFUI_FLOATING_INIT_HEIGHT(thisHelpers.floatingUI, thisFoursome, thisCourse)
|
|
|
|
/*
|
|
VECTOR ballPos = GET_GOLF_FOURSOME_CURRENT_PLAYER_BALL_POSITION(thisFoursome)
|
|
VECTOR previewPos = GET_GOLF_FOURSOME_CURRENT_PLAYER_SHOT_ESTIMATE(thisFoursome)
|
|
//first slot is distance to pin, second is height
|
|
GOLFUI_FLOATING_SET_SLOT_ONE(thisHelpers.floatingUI, "PREVIEW_PIN", MAGIC_DISTANCE_CONVERSION* METERS_TO_YARDS(GET_GOLF_FOURSOME_CURRENT_PLAYER_DISTANCE_TO_HOLE(thisFoursome)), "DIST_SHORT")
|
|
GOLFUI_FLOATING_SET_SLOT_TWO(thisHelpers.floatingUI, "PREVIEW_HT", MAGIC_DISTANCE_CONVERSION* METERS_TO_YARDS(previewPos.z - ballPos.z), "DIST_SHORT")
|
|
GOLFUI_FLOATING_SET_SLOT_THREE(thisHelpers.floatingUI, "", 0, "") //clear slot three
|
|
//*/
|
|
ENDPROC
|
|
|
|
PROC INITIALIZE_FLOATING_HELP_FOR_SHOT(GOLF_FOURSOME &thisFoursome, GOLF_HELPERS &thisHelpers, GOLF_COURSE &thisCourse)
|
|
IF NOT IS_GOLF_UI_FLAG_SET(thisHelpers, GUC_REFRESH_FLOATING)
|
|
EXIT
|
|
ENDIF
|
|
|
|
IF IS_GOLF_FOURSOME_CURRENT_PLAYER_PUTTING(thisFoursome)
|
|
INITIALIZE_FLOATING_HELP_FOR_PUTTING(thisFoursome,thisHelpers, thisCourse)
|
|
ELSE
|
|
GOLFUI_FLOATING_INIT_STRENGTH(thisHelpers.floatingUI, thisFoursome)
|
|
GOLFUI_FLOATING_INIT_SWING_DISTANCE(thisHelpers.floatingUI, thisFoursome)
|
|
GOLFUI_FLOATING_INIT_PIN_DISTANCE(thisHelpers.floatingUI, thisFoursome)
|
|
GOLFUI_FLOATING_INIT_HEIGHT(thisHelpers.floatingUI, thisFoursome, thisCourse)
|
|
ENDIF
|
|
|
|
CLEAR_GOLF_UI_FLAG(thisHelpers, GUC_REFRESH_FLOATING)
|
|
ENDPROC
|
|
|
|
PROC INITIALIZE_FLOATING_HELP_FOR_FLIGHT(GOLF_FOURSOME &thisFoursome, GOLF_HELPERS &thisHelpers)
|
|
GOLFUI_FLOATING_INIT_SHOT_STRENGTH(thisHelpers.floatingUI, thisFoursome)
|
|
GOLFUI_FLOATING_INIT_HIT_DISTANCE(thisHelpers.floatingUI, thisFoursome)
|
|
GOLFUI_FLOATING_CLEAR_PIN_DISTANCE(thisHelpers.floatingUI)
|
|
GOLFUI_FLOATING_CLEAR_HEIGHT(thisHelpers.floatingUI)
|
|
ENDPROC
|
|
|
|
PROC DRAW_PUTT_METER(BOOL bEnable, GOLF_HELPERS &thisHelpers, SWING_METER &swingMeter, FLOAT fPowerMeterGoal)
|
|
|
|
FLOAT XLocation = swingMeter.fCurrentAccurRel
|
|
FLOAT YLocation = swingMeter.fCurrentMeterPosition
|
|
|
|
YLocation /=100.0
|
|
IF XLocation < -1.0
|
|
XLocation = -1.0
|
|
ELIF XLocation > 1.0
|
|
XLocation = 1.0
|
|
ENDIF
|
|
|
|
IF YLocation < 0.0
|
|
YLocation = 0.0
|
|
ELIF YLocation > 1.0
|
|
YLocation = 1.0
|
|
ENDIF
|
|
|
|
SET_PUTTMETER(thisHelpers, thisHelpers.golfUI, bEnable, FALSE, XLocation, YLocation, fPowerMeterGoal/100.0)
|
|
CLEAR_GOLF_UI_FLAG(thisHelpers, GUC_REFRESH_PUTT)
|
|
ENDPROC
|
|
|
|
PROC DRAW_SWING_METER(BOOL bEnable, GOLF_HELPERS &thisHelpers, SWING_METER &swingMeter, FLOAT fPowerMeterGoal)
|
|
|
|
FLOAT XLocation = swingMeter.fCurrentAccurRel
|
|
FLOAT YLocation = swingMeter.fCurrentMeterPosition
|
|
|
|
YLocation /=100.0
|
|
IF XLocation < -1.0
|
|
XLocation = -1.0
|
|
ELIF XLocation > 1.0
|
|
XLocation = 1.0
|
|
ENDIF
|
|
|
|
IF YLocation < 0.0
|
|
YLocation = 0.0
|
|
ELIF YLocation > 1.0
|
|
YLocation = 1.0
|
|
ENDIF
|
|
|
|
SET_PUTTMETER(thisHelpers, thisHelpers.golfUI,bEnable, FALSE, XLocation, YLocation, fPowerMeterGoal/100.0)
|
|
ENDPROC
|
|
|
|
PROC GOLF_SETUP_INTRO_KEYS(GOLF_HELPERS &thisHelpers)
|
|
|
|
STRING eSelectButton = GET_CONTROL_INSTRUCTIONAL_BUTTONS_STRING(FRONTEND_CONTROL, INPUT_FRONTEND_ACCEPT)
|
|
STRING eQuitButton = GET_CONTROL_INSTRUCTIONAL_BUTTONS_STRING(FRONTEND_CONTROL, INPUT_FRONTEND_CANCEL)
|
|
|
|
INIT_COMPLEX_USE_CONTEXT(thisHelpers.useContext, "BUDDY_SELECT", eSelectButton, FALSE, DEFAULT, TRUE, INPUT_FRONTEND_ACCEPT)
|
|
ADD_LABEL_TO_COMPLEX_USE_CONTEXT(thisHelpers.useContext, "GOLF_QUIT", eQuitButton, 1, INPUT_FRONTEND_CANCEL )
|
|
|
|
thisHelpers.golfDisplayedControls= GDCS_SETUP_INTRO_KEYS
|
|
|
|
ENDPROC
|
|
|
|
PROC GOLF_SETUP_SCOREBOARD_KEYS(GOLF_HELPERS &thisHelpers, BOOL bAllowContinue, BOOL bAllowQuit, BOOL bAllowScroll, BOOL bReplay, BOOL bAllowLeaderboard)
|
|
STRING eQuitButton = GET_CONTROL_INSTRUCTIONAL_BUTTONS_STRING(FRONTEND_CONTROL, INPUT_SCRIPT_PAD_RIGHT)
|
|
//This is being manually set, so for the Japanese version these buttons need to be swapped
|
|
STRING eContinueButton = GET_CONTROL_INSTRUCTIONAL_BUTTONS_STRING(FRONTEND_CONTROL, INPUT_SCRIPT_RDOWN)
|
|
//Swap the X/O buttons for JPN Orbis
|
|
#IF IS_JAPANESE_BUILD
|
|
IF IS_PLAYSTATION_PLATFORM()
|
|
eContinueButton = GET_CONTROL_INSTRUCTIONAL_BUTTONS_STRING(FRONTEND_CONTROL, INPUT_SCRIPT_RRIGHT)
|
|
ENDIF
|
|
#ENDIF
|
|
STRING eScorecardButon = GET_CONTROL_INSTRUCTIONAL_BUTTONS_STRING(FRONTEND_CONTROL, INPUT_SCRIPT_RB)
|
|
STRING eReplayButton = GET_CONTROL_INSTRUCTIONAL_BUTTONS_STRING(FRONTEND_CONTROL, INPUT_SCRIPT_RLEFT)
|
|
// STRING eScrollbButton = GET_CONTROL_GROUP_INSTRUCTIONAL_BUTTONS_STRING(FRONTEND_CONTROL, INPUTGROUP_FRONTEND_GENERIC_UD)
|
|
|
|
INT iSlot
|
|
|
|
IF bAllowContinue
|
|
INIT_COMPLEX_USE_CONTEXT(thisHelpers.useContext, "GOLF_CONTINUE", eContinueButton, FALSE)
|
|
iSlot++
|
|
SET_BITMASK_AS_ENUM(thisHelpers.golfKeysInUse, GOLF_KEY_CONTINUE)
|
|
ELSE
|
|
CLEAR_BITMASK_AS_ENUM(thisHelpers.golfKeysInUse, GOLF_KEY_CONTINUE)
|
|
ENDIF
|
|
|
|
IF bReplay
|
|
IF iSlot = 0
|
|
INIT_COMPLEX_USE_CONTEXT(thisHelpers.useContext, "REPLAY_TITLE", eReplayButton, FALSE)
|
|
ELSE
|
|
ADD_LABEL_TO_COMPLEX_USE_CONTEXT(thisHelpers.useContext, "REPLAY_TITLE", eReplayButton, iSlot)
|
|
ENDIF
|
|
iSlot++
|
|
SET_BITMASK_AS_ENUM(thisHelpers.golfKeysInUse, GOLF_KEY_REPLAY)
|
|
ELSE
|
|
CLEAR_BITMASK_AS_ENUM(thisHelpers.golfKeysInUse, GOLF_KEY_REPLAY)
|
|
ENDIF
|
|
|
|
IF bAllowQuit
|
|
IF iSlot = 0
|
|
INIT_COMPLEX_USE_CONTEXT(thisHelpers.useContext, "GOLF_QUIT", eQuitButton, FALSE)
|
|
ELSE
|
|
ADD_LABEL_TO_COMPLEX_USE_CONTEXT(thisHelpers.useContext, "GOLF_QUIT", eQuitButton, iSlot)
|
|
ENDIF
|
|
iSlot++
|
|
SET_BITMASK_AS_ENUM(thisHelpers.golfKeysInUse, GOLF_KEY_QUIT)
|
|
ELSE
|
|
CLEAR_BITMASK_AS_ENUM(thisHelpers.golfKeysInUse, GOLF_KEY_QUIT)
|
|
ENDIF
|
|
IF bAllowLeaderboard
|
|
IF iSlot = 0
|
|
INIT_COMPLEX_USE_CONTEXT(thisHelpers.useContext, "GOLF_SC_INST", eScorecardButon, FALSE)
|
|
ELSE
|
|
ADD_LABEL_TO_COMPLEX_USE_CONTEXT(thisHelpers.useContext, "GOLF_SC_INST", eScorecardButon, iSlot)
|
|
ENDIF
|
|
iSlot++
|
|
SET_BITMASK_AS_ENUM(thisHelpers.golfKeysInUse, GOLF_KEY_SOCIAL_CLUB)
|
|
ELSE
|
|
CLEAR_BITMASK_AS_ENUM(thisHelpers.golfKeysInUse, GOLF_KEY_SOCIAL_CLUB)
|
|
ENDIF
|
|
IF bAllowScroll
|
|
// ADD_LABEL_TO_COMPLEX_USE_CONTEXT(thisHelpers.useContext, "MENU_SCROLL", eScrollbButton, iSlot)
|
|
// iSlot++
|
|
SET_BITMASK_AS_ENUM(thisHelpers.golfKeysInUse, GOLF_KEY_SCROLL)
|
|
ELSE
|
|
CLEAR_BITMASK_AS_ENUM(thisHelpers.golfKeysInUse, GOLF_KEY_SCROLL)
|
|
ENDIF
|
|
|
|
thisHelpers.golfDisplayedControls = GDCS_SETUP_SCOREBOARD_KEYS
|
|
ENDPROC
|
|
|
|
PROC GOLF_SETUP_SOCIAL_CLUB_KEYS(GOLF_HELPERS &thisHelpers, BOOL bAllowQuit, BOOL bAllowProfile)
|
|
|
|
STRING eBackButton = GET_CONTROL_INSTRUCTIONAL_BUTTONS_STRING(FRONTEND_CONTROL, INPUT_FRONTEND_CANCEL)
|
|
STRING eQuitButton = GET_CONTROL_INSTRUCTIONAL_BUTTONS_STRING(FRONTEND_CONTROL, INPUT_SCRIPT_PAD_RIGHT)
|
|
STRING eOpenGamerCardButton = GET_CONTROL_INSTRUCTIONAL_BUTTONS_STRING(FRONTEND_CONTROL, INPUT_FRONTEND_SELECT)
|
|
|
|
CONTROL_ACTION caQuitInput = INPUT_SCRIPT_PAD_RIGHT
|
|
|
|
// Quit uses a different input on PC when on the frontend.
|
|
IF IS_USING_KEYBOARD_AND_MOUSE(FRONTEND_CONTROL)
|
|
eQuitButton = GET_CONTROL_INSTRUCTIONAL_BUTTONS_STRING(FRONTEND_CONTROL, INPUT_FRONTEND_LEADERBOARD)
|
|
caQuitInput = INPUT_FRONTEND_LEADERBOARD
|
|
ENDIF
|
|
|
|
INT iSlot
|
|
INIT_COMPLEX_USE_CONTEXT(thisHelpers.useContext, "GOLF_BACK", eBackButton, FALSE, FALSE, TRUE, INPUT_FRONTEND_CANCEL)
|
|
iSlot++
|
|
|
|
IF bAllowProfile
|
|
ADD_LABEL_TO_COMPLEX_USE_CONTEXT(thisHelpers.useContext, "SCLB_PROFILE", eOpenGamerCardButton, iSlot, INPUT_FRONTEND_SELECT)
|
|
iSlot++
|
|
SET_BITMASK_AS_ENUM(thisHelpers.golfKeysInUse, GOLF_KEY_PROFILE)
|
|
ELSE
|
|
CLEAR_BITMASK_AS_ENUM(thisHelpers.golfKeysInUse, GOLF_KEY_PROFILE)
|
|
ENDIF
|
|
|
|
IF bAllowQuit
|
|
ADD_LABEL_TO_COMPLEX_USE_CONTEXT(thisHelpers.useContext, "GOLF_QUIT", eQuitButton, iSlot, caQuitInput)
|
|
iSlot++
|
|
SET_BITMASK_AS_ENUM(thisHelpers.golfKeysInUse, GOLF_KEY_QUIT)
|
|
ELSE
|
|
CLEAR_BITMASK_AS_ENUM(thisHelpers.golfKeysInUse, GOLF_KEY_QUIT)
|
|
ENDIF
|
|
|
|
thisHelpers.golfDisplayedControls = GDCS_SETUP_SOCIAL_CLUB_KEYS
|
|
ENDPROC
|
|
|
|
PROC GOLF_RESET_SOCIAL_CLUB_KEYS(GOLF_HELPERS &thisHelpers)
|
|
|
|
CLEAR_GOLF_UI_FLAG(thisHelpers, GUC_SOCIAL_CLUB_UI_DISPLAYED)
|
|
|
|
GOLF_SETUP_SCOREBOARD_KEYS(thisHelpers, IS_BITMASK_AS_ENUM_SET(thisHelpers.golfKeysInUse, GOLF_KEY_CONTINUE),
|
|
IS_BITMASK_AS_ENUM_SET(thisHelpers.golfKeysInUse, GOLF_KEY_QUIT),
|
|
IS_BITMASK_AS_ENUM_SET(thisHelpers.golfKeysInUse, GOLF_KEY_SCROLL),
|
|
IS_BITMASK_AS_ENUM_SET(thisHelpers.golfKeysInUse, GOLF_KEY_REPLAY),
|
|
IS_BITMASK_AS_ENUM_SET(thisHelpers.golfKeysInUse, GOLF_KEY_SOCIAL_CLUB))
|
|
ENDPROC
|
|
|
|
PROC SETUP_GOLF_SCOREBOARD_CONTROLS(GOLF_HELPERS &thisHelpers)
|
|
|
|
STRING eScorecardButon = GET_CONTROL_INSTRUCTIONAL_BUTTONS_STRING(FRONTEND_CONTROL, INPUT_SCRIPT_RRIGHT)
|
|
STRING eQuitButton = GET_CONTROL_INSTRUCTIONAL_BUTTONS_STRING(FRONTEND_CONTROL, INPUT_SCRIPT_PAD_RIGHT)
|
|
|
|
// Different control checked on PC, so we can use the same control to quit the scoreboard as activate it. Also ensures we use a sensible key.
|
|
IF IS_USING_KEYBOARD_AND_MOUSE(FRONTEND_CONTROL)
|
|
eScorecardButon = GET_CONTROL_INSTRUCTIONAL_BUTTONS_STRING(FRONTEND_CONTROL, INPUT_SCRIPT_RB)
|
|
ENDIF
|
|
|
|
//In Japan X on playstation X is back, not O
|
|
#IF IS_JAPANESE_BUILD
|
|
IF IS_PLAYSTATION_PLATFORM()
|
|
eScorecardButon = GET_CONTROL_INSTRUCTIONAL_BUTTONS_STRING(FRONTEND_CONTROL, INPUT_SCRIPT_RDOWN)
|
|
ENDIF
|
|
#ENDIF
|
|
|
|
INIT_COMPLEX_USE_CONTEXT(thisHelpers.useContext, "GOLF_BACK", eScorecardButon, FALSE)
|
|
|
|
IF IS_GOLF_FOURSOME_MP()
|
|
ADD_LABEL_TO_COMPLEX_USE_CONTEXT(thisHelpers.useContext, "INST_QUIT", eQuitButton, 1)
|
|
ENDIF
|
|
|
|
thisHelpers.golfDisplayedControls = GDCS_SETUP_GOLF_SCOREBOARD_CONTROLS
|
|
ENDPROC
|
|
|
|
PROC SETUP_GOLF_NAV_CONTROLS(GOLF_HELPERS &thisHelpers, BOOL bOnTee, BOOl bCart)
|
|
|
|
STRING eQuitButton = GET_CONTROL_INSTRUCTIONAL_BUTTONS_STRING(FRONTEND_CONTROL, INPUT_SCRIPT_PAD_RIGHT)
|
|
STRING eSkipToShottButton = GET_CONTROL_INSTRUCTIONAL_BUTTONS_STRING(FRONTEND_CONTROL, INPUT_SCRIPT_LB)
|
|
STRING eScorecardButon = GET_CONTROL_INSTRUCTIONAL_BUTTONS_STRING(FRONTEND_CONTROL, INPUT_SCRIPT_RB)
|
|
|
|
INIT_COMPLEX_USE_CONTEXT(thisHelpers.useContext, "INST_QUIT", eQuitButton, FALSE)
|
|
|
|
IF bCart
|
|
|
|
ELSE
|
|
ADD_LABEL_TO_COMPLEX_USE_CONTEXT(thisHelpers.useContext, "INST_SCORECARD", eScorecardButon, 1)
|
|
ENDIF
|
|
|
|
IF bOnTee
|
|
ADD_LABEL_TO_COMPLEX_USE_CONTEXT(thisHelpers.useContext, "INST_SKIP_T", eSkipToShottButton, 2)
|
|
SET_BITMASK_AS_ENUM(thisHelpers.golfKeysInUse, GOLF_KEY_ON_TEE)
|
|
ELSE
|
|
ADD_LABEL_TO_COMPLEX_USE_CONTEXT(thisHelpers.useContext, "INST_SKIP_S", eSkipToShottButton, 2)
|
|
CLEAR_BITMASK_AS_ENUM(thisHelpers.golfKeysInUse, GOLF_KEY_ON_TEE)
|
|
ENDIF
|
|
|
|
thisHelpers.golfDisplayedControls = GDCS_SETUP_GOLF_NAV_CONTROLS
|
|
ENDPROC
|
|
|
|
PROC SETUP_GOLF_ADRESS_CONTROLS(GOLF_HELPERS &thisHelpers, BOOL bPutting, BOOL bAllowPreviewHole, BOOL bInShotPreview)
|
|
|
|
INT iStartingIndex = 0
|
|
STRING eResetButton = GET_CONTROL_INSTRUCTIONAL_BUTTONS_STRING(FRONTEND_CONTROL, INPUT_SCRIPT_RRIGHT)
|
|
STRING eQuitButton = GET_CONTROL_INSTRUCTIONAL_BUTTONS_STRING(FRONTEND_CONTROL, INPUT_SCRIPT_PAD_RIGHT)
|
|
STRING eSwingButton = GET_CONTROL_INSTRUCTIONAL_BUTTONS_STRING(PLAYER_CONTROL, INPUT_MOVE_DOWN_ONLY)
|
|
STRING eChangeShotButton = GET_CONTROL_INSTRUCTIONAL_BUTTONS_STRING(FRONTEND_CONTROL, INPUT_SCRIPT_LB)
|
|
STRING ePreviewShotButton = GET_CONTROL_INSTRUCTIONAL_BUTTONS_STRING(FRONTEND_CONTROL, INPUT_SCRIPT_RT)
|
|
STRING ePreviewHoleButton = GET_CONTROL_INSTRUCTIONAL_BUTTONS_STRING(FRONTEND_CONTROL, INPUT_SCRIPT_LT)
|
|
STRING eScorecardButon = GET_CONTROL_INSTRUCTIONAL_BUTTONS_STRING(FRONTEND_CONTROL, INPUT_SCRIPT_RB)
|
|
|
|
STRING eChangeClubButton = GET_CONTROL_GROUP_INSTRUCTIONAL_BUTTONS_STRING(FRONTEND_CONTROL, INPUTGROUP_SCRIPT_DPAD_UD)
|
|
STRING eAimButton = GET_CONTROL_GROUP_INSTRUCTIONAL_BUTTONS_STRING(PLAYER_CONTROL, INPUTGROUP_LOOK)
|
|
|
|
// Different input used for Swing on PC mouse and keyboard The actual input is defined in dynamic.meta
|
|
// If that input is changed then we must change this input to match.
|
|
IF IS_USING_KEYBOARD_AND_MOUSE(FRONTEND_CONTROL)
|
|
eSwingButton = GET_CONTROL_INSTRUCTIONAL_BUTTONS_STRING(PLAYER_CONTROL, INPUT_ATTACK)
|
|
ENDIF
|
|
|
|
INIT_COMPLEX_USE_CONTEXT(thisHelpers.useContext, "INST_RESET_AIM", eResetButton, FALSE)
|
|
iStartingIndex++
|
|
|
|
ADD_LABEL_TO_COMPLEX_USE_CONTEXT(thisHelpers.useContext, "INST_CLUB", eChangeClubButton, iStartingIndex)
|
|
iStartingIndex++
|
|
|
|
ADD_LABEL_TO_COMPLEX_USE_CONTEXT(thisHelpers.useContext, "INST_QUIT", eQuitButton, iStartingIndex)
|
|
iStartingIndex++
|
|
|
|
ADD_LABEL_TO_COMPLEX_USE_CONTEXT(thisHelpers.useContext, "INST_AIM", eAimButton, iStartingIndex)
|
|
iStartingIndex++
|
|
|
|
IF NOT bInShotPreview
|
|
IF bPutting
|
|
ADD_LABEL_TO_COMPLEX_USE_CONTEXT(thisHelpers.useContext, "INST_PUTT", eSwingButton, iStartingIndex)
|
|
ELSE
|
|
ADD_LABEL_TO_COMPLEX_USE_CONTEXT(thisHelpers.useContext, "INST_SWING", eSwingButton, iStartingIndex)
|
|
ENDIF
|
|
iStartingIndex++
|
|
ENDIF
|
|
|
|
ADD_LABEL_TO_COMPLEX_USE_CONTEXT(thisHelpers.useContext, "INST_SHOT", eChangeShotButton, iStartingIndex)
|
|
iStartingIndex++
|
|
|
|
IF NOT bInShotPreview
|
|
|
|
ADD_LABEL_TO_COMPLEX_USE_CONTEXT(thisHelpers.useContext, "INST_SCORECARD", eScorecardButon, iStartingIndex)
|
|
iStartingIndex++
|
|
|
|
IF bAllowPreviewHole
|
|
ADD_LABEL_TO_COMPLEX_USE_CONTEXT(thisHelpers.useContext, "INST_PREVIEW_SH", ePreviewShotButton, iStartingIndex)
|
|
ADD_BUTTON_TO_COMPLEX_USE_CONTEXT(thisHelpers.useContext, CUCB_BUTTON7_2, ePreviewHoleButton)
|
|
ELSE
|
|
ADD_LABEL_TO_COMPLEX_USE_CONTEXT(thisHelpers.useContext, "INST_PREVIEW_S", ePreviewShotButton, iStartingIndex)
|
|
ENDIF
|
|
iStartingIndex++
|
|
ENDIF
|
|
|
|
thisHelpers.golfDisplayedControls = GDCS_SETUP_GOLF_ADRESS_CONTROLS
|
|
ENDPROC
|
|
|
|
PROC SETUP_GOLF_SPECTATE_COMPUTER_CONTROLS(GOLF_HELPERS &thisHelpers)
|
|
STRING eSkipButton = GET_CONTROL_INSTRUCTIONAL_BUTTONS_STRING(FRONTEND_CONTROL, INPUT_FRONTEND_ACCEPT)
|
|
INIT_COMPLEX_USE_CONTEXT(thisHelpers.useContext, "INSTR_SKIP_AI", eSkipButton, FALSE)
|
|
|
|
thisHelpers.golfDisplayedControls = GDCS_SETUP_GOLF_SPECTATE_COMPUTER_CONTROLS
|
|
ENDPROC
|
|
|
|
PROC SETUP_GOLF_SPECTATE_MP_CONTROLS(GOLF_HELPERS &thisHelpers)
|
|
|
|
STRING eCahngeViewButton = GET_CONTROL_INSTRUCTIONAL_BUTTONS_STRING(FRONTEND_CONTROL, INPUT_SCRIPT_SELECT)
|
|
STRING eScorecardButon = GET_CONTROL_INSTRUCTIONAL_BUTTONS_STRING(FRONTEND_CONTROL, INPUT_SCRIPT_RB)
|
|
STRING eQuitButton = GET_CONTROL_INSTRUCTIONAL_BUTTONS_STRING(FRONTEND_CONTROL, INPUT_SCRIPT_PAD_RIGHT)
|
|
|
|
INIT_COMPLEX_USE_CONTEXT(thisHelpers.useContext, "INST_VIEW", eCahngeViewButton, FALSE)
|
|
ADD_LABEL_TO_COMPLEX_USE_CONTEXT(thisHelpers.useContext, "INST_SCORECARD", eScorecardButon, 1)
|
|
ADD_LABEL_TO_COMPLEX_USE_CONTEXT(thisHelpers.useContext, "INST_QUIT", eQuitButton, 2)
|
|
|
|
thisHelpers.golfDisplayedControls = GDCS_SETUP_GOLF_SPECTATE_MP_CONTROLS
|
|
ENDPROC
|
|
|
|
PROC SETUP_GOLF_BALL_IN_FLIGHT_CONTROLS(GOLF_HELPERS &thisHelpers)
|
|
|
|
//don't flip controls when ball is in flight
|
|
STRING eDirection = GET_CONTROL_GROUP_INSTRUCTIONAL_BUTTONS_STRING(FRONTEND_CONTROL, INPUTGROUP_MOVE) //GET_CONTROL_GROUP_INSTRUCTIONAL_BUTTONS_STRING(PLAYER_CONTROL, INPUTGROUP_MOVE)
|
|
STRING eSpinButton = GET_CONTROL_INSTRUCTIONAL_BUTTONS_STRING(FRONTEND_CONTROL, INPUT_SCRIPT_RDOWN)
|
|
|
|
INIT_COMPLEX_USE_CONTEXT(thisHelpers.useContext, "GOLF_PLUS", eSpinButton, FALSE)
|
|
ADD_LABEL_TO_COMPLEX_USE_CONTEXT(thisHelpers.useContext, "INSTR_SPIN", eDirection, 1)
|
|
//ADD_LABEL_TO_COMPLEX_USE_CONTEXT(thisHelpers.useContext, "", , 2)
|
|
|
|
//ADD_BUTTON_TO_COMPLEX_USE_CONTEXT(thisHelpers.useContext, CUCB_BUTTON0_2, GET_CONTROL_GROUP_INSTRUCTIONAL_BUTTONS_STRING(FRONTEND_CONTROL, INPUTGROUP_FRONTEND_LSTICK_ALL), "GOLF_PLUS")
|
|
|
|
thisHelpers.golfDisplayedControls = GDCS_SETUP_GOLF_BALL_IN_FLIGHT_CONTROLS
|
|
ENDPROC
|
|
|
|
PROC SETUP_GOLF_FAIL_CONTROLS(GOLF_HELPERS &thisHelpers)
|
|
STRING eResetButton = GET_CONTROL_INSTRUCTIONAL_BUTTONS_STRING(FRONTEND_CONTROL, INPUT_FRONTEND_ACCEPT)
|
|
STRING eQuitButton = GET_CONTROL_INSTRUCTIONAL_BUTTONS_STRING(FRONTEND_CONTROL, INPUT_FRONTEND_CANCEL)
|
|
|
|
INIT_COMPLEX_USE_CONTEXT(thisHelpers.useContext, "FAIL_RESET", eResetButton, FALSE)
|
|
ADD_LABEL_TO_COMPLEX_USE_CONTEXT(thisHelpers.useContext, "FAIL_QUIT", eQuitButton, 1)
|
|
|
|
thisHelpers.golfDisplayedControls = GDCS_SETUP_GOLF_FAIL_CONTROLS
|
|
ENDPROC
|
|
|
|
PROC GOLF_DISPLAY_CONTROLS(GOLF_HELPERS &thisHelpers, BOOL bJapan)
|
|
IF NOT IS_PLAYER_SCTV(PLAYER_ID())
|
|
AND NOT IS_TRANSITION_ACTIVE()
|
|
FLOAT fWidth = 1.0
|
|
IF NOT GET_IS_WIDESCREEN()
|
|
fWidth = 0.6
|
|
SET_HUD_COMPONENT_POSITION(NEW_HUD_SUBTITLE_TEXT, 0.0, -0.0375)
|
|
ENDIF
|
|
|
|
IF HAVE_CONTROLS_CHANGED(FRONTEND_CONTROL) OR HAVE_CONTROLS_CHANGED(PLAYER_CONTROL)
|
|
CDEBUG1LN(DEBUG_GOLF, "Golf Controls Switched")
|
|
SWITCH thisHelpers.golfDisplayedControls
|
|
CASE GDCS_SETUP_INTRO_KEYS
|
|
GOLF_SETUP_INTRO_KEYS(thisHelpers)
|
|
BREAK
|
|
CASE GDCS_SETUP_SCOREBOARD_KEYS
|
|
GOLF_SETUP_SCOREBOARD_KEYS(thisHelpers, IS_BITMASK_AS_ENUM_SET(thisHelpers.golfKeysInUse, GOLF_KEY_CONTINUE),
|
|
IS_BITMASK_AS_ENUM_SET(thisHelpers.golfKeysInUse, GOLF_KEY_QUIT),
|
|
IS_BITMASK_AS_ENUM_SET(thisHelpers.golfKeysInUse, GOLF_KEY_SCROLL),
|
|
IS_BITMASK_AS_ENUM_SET(thisHelpers.golfKeysInUse, GOLF_KEY_REPLAY),
|
|
IS_BITMASK_AS_ENUM_SET(thisHelpers.golfKeysInUse, GOLF_KEY_SOCIAL_CLUB))
|
|
BREAK
|
|
CASE GDCS_SETUP_SOCIAL_CLUB_KEYS
|
|
GOLF_SETUP_SOCIAL_CLUB_KEYS(thisHelpers, IS_BITMASK_AS_ENUM_SET(thisHelpers.golfKeysInUse, GOLF_KEY_QUIT),
|
|
IS_BITMASK_AS_ENUM_SET(thisHelpers.golfKeysInUse, GOLF_KEY_PROFILE))
|
|
BREAK
|
|
CASE GDCS_SETUP_GOLF_SCOREBOARD_CONTROLS
|
|
SETUP_GOLF_SCOREBOARD_CONTROLS(thisHelpers)
|
|
BREAK
|
|
CASE GDCS_SETUP_GOLF_NAV_CONTROLS
|
|
SETUP_GOLF_NAV_CONTROLS(thisHelpers, IS_BITMASK_AS_ENUM_SET(thisHelpers.golfKeysInUse, GOLF_KEY_ON_TEE), IS_PED_IN_ANY_VEHICLE(PLAYER_PED_ID()))
|
|
BREAK
|
|
CASE GDCS_SETUP_GOLF_ADRESS_CONTROLS
|
|
CLEAR_GOLF_UI_FLAG(thisHelpers, GUC_REFRESH_INPUT)
|
|
BREAK
|
|
CASE GDCS_SETUP_GOLF_SPECTATE_COMPUTER_CONTROLS
|
|
SETUP_GOLF_SPECTATE_COMPUTER_CONTROLS(thisHelpers)
|
|
BREAK
|
|
CASE GDCS_SETUP_GOLF_SPECTATE_MP_CONTROLS
|
|
SETUP_GOLF_SPECTATE_MP_CONTROLS(thisHelpers)
|
|
BREAK
|
|
CASE GDCS_SETUP_GOLF_BALL_IN_FLIGHT_CONTROLS
|
|
SETUP_GOLF_BALL_IN_FLIGHT_CONTROLS(thisHelpers)
|
|
BREAK
|
|
CASE GDCS_SETUP_GOLF_FAIL_CONTROLS
|
|
SETUP_GOLF_FAIL_CONTROLS(thisHelpers)
|
|
BREAK
|
|
ENDSWITCH
|
|
|
|
ENDIF
|
|
|
|
// Fix for B* 2309115
|
|
IF NETWORK_TEXT_CHAT_IS_TYPING()
|
|
EXIT
|
|
ENDIF
|
|
|
|
UPDATE_COMPLEX_USE_CONTEXT(thisHelpers.useContext, 200.0, GFX_ORDER_BEFORE_HUD, FALSE, bJapan, fWidth)
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
FUNC INT GOLF_INSTRUCTIONS_BUTTONS_GET_LINES(GOLF_FOURSOME &thisFoursome)
|
|
|
|
IF NOT GET_IS_WIDESCREEN()
|
|
IF NOT IS_GOLF_FOURSOME_STATE_AT_END(thisFoursome)
|
|
AND GET_GOLF_FOURSOME_LOCAL_PLAYER(thisFoursome) = GET_GOLF_FOURSOME_CURRENT_PLAYER(thisFoursome)
|
|
|
|
IF GET_CURRENT_LANGUAGE() = LANGUAGE_ITALIAN
|
|
OR GET_CURRENT_LANGUAGE() = LANGUAGE_GERMAN
|
|
OR GET_CURRENT_LANGUAGE() = LANGUAGE_SPANISH
|
|
OR GET_CURRENT_LANGUAGE() = LANGUAGE_MEXICAN
|
|
OR GET_CURRENT_LANGUAGE() = LANGUAGE_PORTUGUESE
|
|
OR GET_CURRENT_LANGUAGE() = LANGUAGE_POLISH
|
|
OR GET_CURRENT_LANGUAGE() = LANGUAGE_RUSSIAN
|
|
RETURN 2
|
|
ENDIF
|
|
|
|
IF GET_ASPECT_RATIO(TRUE) <= 1.7
|
|
RETURN 2
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
RETURN 1
|
|
ENDFUNC
|