197 lines
6.4 KiB
Scheme
Executable File
197 lines
6.4 KiB
Scheme
Executable File
USING "hud_drawing.sch"
|
|
USING "screen_placements.sch"
|
|
USING "UIUtil.sch"
|
|
USING "script_usecontext.sch"
|
|
USING "minigame_uiinputs.sch"
|
|
USING "socialclub_leaderboard.sch"
|
|
USING "minigame_big_message.sch"
|
|
USING "minigame_midsized_message.sch"
|
|
|
|
// Range_UI.sch
|
|
CONST_INT MAX_WEAPONS_PER_CAT 4
|
|
//CONST_INT STICK_DEAD_ZONE 33
|
|
CONST_INT MAX_NUM_SPT 4
|
|
CONST_INT COUNTDOWN_TIMER_LEN 3
|
|
|
|
//TWEAK_FLOAT fScorecardScale 0.8
|
|
|
|
/// PURPOSE: The main panes of our menus.
|
|
ENUM RANGE_MENU_INDEX
|
|
RANGE_MENU_WEAPCAT = 0,
|
|
RANGE_MENU_WEAPONS,
|
|
RANGE_MENU_CHALLENGES
|
|
ENDENUM
|
|
|
|
ENUM RANGE_MENU_FLAGS
|
|
RMF_SHOWING_SCLB = BIT0,
|
|
RMF_SET_RANGE_SCLB_BUTTONS = BIT1,
|
|
RMF_SHOWED_MEDAL_SPLASH = BIT2,
|
|
RMF_EXITED_SIGNIN = BIT3,
|
|
RMF_SCLB_PROFILE_BUTTON_SHOWN = BIT4
|
|
ENDENUM
|
|
|
|
FUNC STRING GET_STRING_FROM_RANGE_MENU_FLAG(RANGE_MENU_FLAGS eFlag)
|
|
SWITCH eFlag
|
|
CASE RMF_SHOWING_SCLB RETURN "RMF_SHOWING_SCLB"
|
|
CASE RMF_SET_RANGE_SCLB_BUTTONS RETURN "RMF_SET_RANGE_SCLB_BUTTONS"
|
|
CASE RMF_SHOWED_MEDAL_SPLASH RETURN "RMF_SHOWED_MEDAL_SPLASH"
|
|
CASE RMF_EXITED_SIGNIN RETURN "RMF_EXITED_SIGNIN"
|
|
CASE RMF_SCLB_PROFILE_BUTTON_SHOWN RETURN "RMF_SCLB_PROFILE_BUTTON_SHOWN"
|
|
ENDSWITCH
|
|
RETURN "Unknown RANGE_MENU_FLAGS Flag"
|
|
ENDFUNC
|
|
|
|
STRUCT Range_Menu_Element_NoLabel
|
|
BOOL bActive
|
|
ENDSTRUCT
|
|
|
|
/// PURPOSE: OUR WEAPONS CATEGORIES MENU
|
|
STRUCT Range_WeaponCat_Menu
|
|
// Sme noLabel magic you'll find below. We don't store it because it's a common string. We simply poll the system for it.
|
|
Range_Menu_Element_NoLabel menuElement[NUM_WEAPON_CATS]
|
|
INT iNumElements
|
|
INT iCurElement
|
|
ENDSTRUCT
|
|
|
|
/// PURPOSE: OUR ACTUAL WEAPONS MENU. THIS WILL BE RE-INIT EVERYTIME WE PICK A NEW CATEGORY.
|
|
STRUCT Range_Weapons_Menu
|
|
// Bit of magic here. Because the weapon strings are already stored in the shop, we retreive those.
|
|
// Thusly, there's no reason to store weapon strings all over again.
|
|
// Can be confusing, but there's translation functions for it. Namely: GET_WEAPON_STRING_INFO
|
|
// this function uses the position in the cat menu and the position in the weapon menu to tell us what we're on.
|
|
|
|
Range_Menu_Element_NoLabel menuElement[MAX_WEAPONS_PER_CAT]
|
|
INT iNumElements
|
|
INT iCurElement
|
|
ENDSTRUCT
|
|
|
|
/// PURPOSE: OUR CHALLENGES MENU.
|
|
STRUCT Range_Challenges_Menu
|
|
Range_Menu_Element_NoLabel menuElement[NUM_WEAPON_CHALLS]
|
|
TEXT_LABEL_23 challengeDesc[NUM_WEAPON_CHALLS]
|
|
RANGE_ROUND_TYPE roundType[NUM_WEAPON_CHALLS]
|
|
|
|
INT iNumElements
|
|
INT iCurElement = -1
|
|
ENDSTRUCT
|
|
|
|
STRUCT SPT_OBJECT
|
|
FLOAT fPosX
|
|
FLOAT fPosY
|
|
FLOAT fFrameTime
|
|
HUD_COLOURS color
|
|
INT iAlpha
|
|
INT iPtValue
|
|
BOOL bActive
|
|
ENDSTRUCT
|
|
|
|
STRUCT Range_SPTData
|
|
INT iActiveSPT
|
|
SPT_OBJECT sSptQueue[MAX_NUM_SPT]
|
|
ENDSTRUCT
|
|
|
|
STRUCT Range_MenuData
|
|
RANGE_MENU_INDEX curMenu = RANGE_MENU_WEAPCAT
|
|
Range_WeaponCat_Menu catMenu
|
|
Range_Weapons_Menu weapMenu
|
|
Range_Challenges_Menu chalMenu
|
|
BOOL bInitMenu
|
|
//SCRIPT_SCALEFORM_UI uiMenuChoices
|
|
SIMPLE_USE_CONTEXT menuContext
|
|
|
|
SCALEFORM_INDEX uiLeaderboard
|
|
SCRIPT_SHARD_BIG_MESSAGE uiSplashText
|
|
BOOL bTransitionOut = FALSE
|
|
BOOL bTransitionUp = FALSE
|
|
BOOL bFlashEffect = FALSE
|
|
|
|
COUNTDOWN_UI uiCountdown
|
|
|
|
MEGA_PLACEMENT_TOOLS uiPlacement // Placements
|
|
UI_INPUT_DATA uiInput // Replaces bAcceptStickInput
|
|
|
|
FLOAT fXPlacement = 302.0
|
|
FLOAT fXSpacing = 79.0
|
|
|
|
// When the player selects something locked, we use this as the red value for the Challenge bar. It will be set to 255, and go down by 1 every
|
|
// frame until it's black again.
|
|
INT iMenuHoldDelay
|
|
RANGE_MENU_FLAGS eFlags
|
|
|
|
INT iMedalFeed
|
|
|
|
StructTimer tQuitDelay
|
|
|
|
INT iLeaderboardWarningBitset
|
|
|
|
BOOL bTransitionActive = FALSE
|
|
//#IF IS_DEBUG_BUILD
|
|
// RESTORE THIS!
|
|
FLOAT fMenuRightOffset = 0.394
|
|
FLOAT fMenuUpOffset = -0.02
|
|
//#ENDIF
|
|
ENDSTRUCT
|
|
|
|
PROC SET_RANGE_MENU_FLAG(Range_MenuData &thisMenu, RANGE_MENU_FLAGS eFlag)
|
|
CDEBUG2LN(DEBUG_SHOOTRANGE, "SET_RANGE_MENU_FLAG setting ", GET_STRING_FROM_RANGE_MENU_FLAG(eFlag))
|
|
thisMenu.eFlags = thisMenu.eFlags | eFlag
|
|
ENDPROC
|
|
|
|
PROC CLEAR_RANGE_MENU_FLAG(Range_MenuData &thisMenu, RANGE_MENU_FLAGS eFlag)
|
|
thisMenu.eFlags -= thisMenu.eFlags & eFlag
|
|
ENDPROC
|
|
|
|
FUNC BOOL IS_RANGE_MENU_FLAG_SET(Range_MenuData &thisMenu, RANGE_MENU_FLAGS eFlag)
|
|
RETURN (ENUM_TO_INT(thisMenu.eFlags) & ENUM_TO_INT(eFlag)) <> 0
|
|
ENDFUNC
|
|
|
|
/// PURPOSE:
|
|
/// Lets the script know if the medal toast is displaying
|
|
/// RETURNS:
|
|
/// TRUE if displaying, FALSE when finished.
|
|
FUNC INT UPDATE_RANGE_MEDAL_TOAST(RANGE_ROUND_MEDAL eMedal, Range_RoundInfo & sRndInfo)
|
|
CDEBUG2LN(DEBUG_SHOOTRANGE, "UPDATE_RANGE_MEDAL_TOAST called")
|
|
|
|
TEXT_LABEL_15 txtWeapon
|
|
GET_WEAPON_STRING_INFO(sRndInfo.eWeaponCat, sRndInfo.eWeaponType, txtWeapon)
|
|
INT iChallenge = ENUM_TO_INT(sRndInfo.eChallengeType) + 1
|
|
|
|
IF (eMedal = RRM_BRONZE)
|
|
PLAY_SOUND_FRONTEND(-1, "MEDAL_BRONZE", "HUD_AWARDS")
|
|
BEGIN_TEXT_COMMAND_THEFEED_POST("SHR_CHALL_NAME")
|
|
ADD_TEXT_COMPONENT_SUBSTRING_TEXT_LABEL(txtWeapon)
|
|
ADD_TEXT_COMPONENT_INTEGER(iChallenge)
|
|
RETURN END_TEXT_COMMAND_THEFEED_POST_AWARD("MPMedals_FEED", "Feed_Medal_ShootingRange", 0, HUD_COLOUR_BRONZE, "HUD_MED_UNLKED")
|
|
ELIF (eMedal = RRM_SILVER)
|
|
PLAY_SOUND_FRONTEND(-1, "MEDAL_SILVER", "HUD_AWARDS")
|
|
BEGIN_TEXT_COMMAND_THEFEED_POST("SHR_CHALL_NAME")
|
|
ADD_TEXT_COMPONENT_SUBSTRING_TEXT_LABEL(txtWeapon)
|
|
ADD_TEXT_COMPONENT_INTEGER(iChallenge)
|
|
RETURN END_TEXT_COMMAND_THEFEED_POST_AWARD("MPMedals_FEED", "Feed_Medal_ShootingRange", 0, HUD_COLOUR_SILVER, "HUD_MED_UNLKED")
|
|
ELIF (eMedal = RRM_GOLD)
|
|
PLAY_SOUND_FRONTEND(-1, "MEDAL_GOLD", "HUD_AWARDS")
|
|
BEGIN_TEXT_COMMAND_THEFEED_POST("SHR_CHALL_NAME")
|
|
ADD_TEXT_COMPONENT_SUBSTRING_TEXT_LABEL(txtWeapon)
|
|
ADD_TEXT_COMPONENT_INTEGER(iChallenge)
|
|
RETURN END_TEXT_COMMAND_THEFEED_POST_AWARD("MPMedals_FEED", "Feed_Medal_ShootingRange", 0, HUD_COLOUR_GOLD, "HUD_MED_UNLKED")
|
|
ENDIF
|
|
|
|
RETURN -1
|
|
ENDFUNC
|
|
|
|
PROC SET_RANGE_SP_MENU_HOLD_DELAY(Range_MenuData & sMenuInfo, INT iNewHoldDelay)
|
|
// CDEBUG2LN(DEBUG_SHOOTRANGE, "SET_RANGE_SP_MENU_HOLD_DELAY :: iNewHoldDelay=", iNewHoldDelay)
|
|
sMenuInfo.iMenuHoldDelay = iNewHoldDelay
|
|
ENDPROC
|
|
|
|
FUNC INT GET_RANGE_SP_MENU_HOLD_DELAY(Range_MenuData & sMenuInfo)
|
|
RETURN sMenuInfo.iMenuHoldDelay
|
|
ENDFUNC
|
|
|
|
PROC RANGE_CLEAN_UI(Range_MenuData & sMenuInfo)
|
|
CLEANUP_SC_LEADERBOARD_UI(sMenuInfo.uiLeaderboard)
|
|
ENDPROC
|
|
|
|
|
|
|