USING "commands_graphics.sch" USING "commands_debug.sch" USING "globals.sch" USING "script_useContext.sch" USING "minigame_big_message.sch" USING "minigame_midsized_message.sch" USING "tennis_player.sch" USING "end_screen.sch" USING "net_celebration_screen.sch" ENUM TENNIS_HEADSET_ENUM THE_NONE = 0, THE_INACTIVE, THE_ACTIVE, THE_MUTED, THE_MAX_STATES ENDENUM FUNC STRING GET_STRING_FROM_TENNIS_HEADSET_ENUM( TENNIS_HEADSET_ENUM eState ) SWITCH eState CASE THE_NONE RETURN "THE_NONE" CASE THE_INACTIVE RETURN "THE_INACTIVE" CASE THE_ACTIVE RETURN "THE_ACTIVE" CASE THE_MUTED RETURN "THE_MUTED" CASE THE_MAX_STATES RETURN "THE_MAX_STATES" ENDSWITCH RETURN "unknown TENNIS_HEADSET_ENUM" ENDFUNC /// PURPOSE: ENUM UI_STATE_ENUM TENNIS_UI_SET_INIT, //0 TENNIS_UI_SET_SELECT, TENNIS_UI_SET_CONVO, TENNIS_UI_DIFF_INIT, TENNIS_UI_DIFF_SELECT, TENNIS_UI_REMATCH, //5 TENNIS_UI_AIM, TENNIS_UI_SPIN1, TENNIS_UI_SPIN2, TENNIS_UI_STROKES, TENNIS_UI_HELP_SERVE, //10 TENNIS_UI_PLAYING, TENNIS_UI_STRONG_SWING, TENNIS_UI_VETERAN, TENNIS_UI_SCOREBOARD, TENNIS_UI_FAR_AWAY, //15 TENNIS_UI_STR_INFO, TENNIS_UI_QUIT ENDENUM ENUM TENNIS_UI_FLAGS TUF_SHOW_SCOREBOARD = BIT0, TUF_SHOW_SERVE_METER = BIT1, TUF_NO_SPLASH = BIT2, TUF_ANALOG_UP = BIT3, TUF_ANALOG_DOWN = BIT4, TUF_QUIT_WAIT = BIT5, TUF_MP_QUIT_BUTTON_SET = BIT6, TUF_SWING_METER_POS_SET = BIT7, TUF_UI_POST_SERVE = BIT8, TUF_NO_DYNA_CAM = BIT9, TUF_SECOND_SERVE = BIT10, TUF_FOULED = BIT11, TUF_SIDE_CHANGING = BIT12, TUF_SHOW_SERVE_MESSAGE = BIT13, TUF_TIMER_SOUND_PLAYED = BIT14, TUF_ANALOG_LEFT = BIT15, TUF_PLAYER_CARD_SHOULD_SHOW = BIT16, // Quit Flag TUF_SCOREBOARD_SHOULD_SHOW = BIT17, // Quit Flag TUF_HIDING_SCORE_UI = BIT18, TUF_SHOW_OPP_X_MARKER = BIT19, // Used when we want to show the opponent's X Marker (MP Tutorial only right now) TUF_HIT_BEFORE_BOUNCE = BIT20, // Used when the opponent hit the ball before a bounce on a serve TUF_SCLB_BUTTONS_INITED = BIT21, TUF_QUIT_OUTSIDE_COURT = BIT22, TUF_RETURNING_FROM_QUIT = BIT23, TUF_GAME_WON = BIT24, // MP ONLY TUF_SET_WON = BIT25, // MP ONLY TUF_MATCH_WON = BIT26, // Function differs between MP and SP. In MP it's a trigger, in SP it's a gate. TUF_TIEBREAK_HELP_SHOULD_SHOW = BIT27, TUF_STATE_CONTROL_FLAG = BIT28, TUF_ANALOG_RIGHT = BIT29, TUF_SHOW_SCLB = BIT30 ENDENUM FUNC STRING GET_STRING_FROM_TENNIS_UI_FLAG(TENNIS_UI_FLAGS eFlag) RETURN PICK_STRING(eFlag = TUF_SHOW_SCOREBOARD, "TUF_SHOW_SCOREBOARD", PICK_STRING(eFlag = TUF_SHOW_SERVE_METER, "TUF_SHOW_SERVE_METER", PICK_STRING(eFlag = TUF_NO_SPLASH, "TUF_NO_SPLASH", PICK_STRING(eFlag = TUF_ANALOG_UP, "TUF_ANALOG_UP", PICK_STRING(eFlag = TUF_ANALOG_DOWN, "TUF_ANALOG_DOWN", PICK_STRING(eFlag = TUF_QUIT_WAIT, "TUF_QUIT_WAIT", PICK_STRING(eFlag = TUF_MP_QUIT_BUTTON_SET, "TUF_MP_QUIT_BUTTON_SET", PICK_STRING(eFlag = TUF_SWING_METER_POS_SET, "TUF_SWING_METER_POS_SET", PICK_STRING(eFlag = TUF_UI_POST_SERVE, "TUF_UI_POST_SERVE", PICK_STRING(eFlag = TUF_NO_DYNA_CAM, "TUF_NO_DYNA_CAM", PICK_STRING(eFlag = TUF_SECOND_SERVE, "TUF_SECOND_SERVE", PICK_STRING(eFlag = TUF_FOULED, "TUF_FOULED", PICK_STRING(eFlag = TUF_SIDE_CHANGING, "TUF_SIDE_CHANGING", PICK_STRING(eFlag = TUF_SHOW_SERVE_MESSAGE, "TUF_SHOW_SERVE_MESSAGE", PICK_STRING(eFlag = TUF_TIMER_SOUND_PLAYED, "TUF_TIMER_SOUND_PLAYED", PICK_STRING(eFlag = TUF_ANALOG_LEFT, "TUF_ANALOG_LEFT", PICK_STRING(eFlag = TUF_PLAYER_CARD_SHOULD_SHOW, "TUF_PLAYER_CARD_SHOULD_SHOW", PICK_STRING(eFlag = TUF_SCOREBOARD_SHOULD_SHOW, "TUF_SCOREBOARD_SHOULD_SHOW", PICK_STRING(eFlag = TUF_HIDING_SCORE_UI, "TUF_HIDING_SCORE_UI", PICK_STRING(eFlag = TUF_SHOW_OPP_X_MARKER, "TUF_SHOW_OPP_X_MARKER", PICK_STRING(eFlag = TUF_HIT_BEFORE_BOUNCE, "TUF_HIT_BEFORE_BOUNCE", PICK_STRING(eFlag = TUF_SCLB_BUTTONS_INITED, "TUF_SCLB_BUTTONS_INITED", PICK_STRING(eFlag = TUF_QUIT_OUTSIDE_COURT, "TUF_QUIT_OUTSIDE_COURT", PICK_STRING(eFlag = TUF_RETURNING_FROM_QUIT, "TUF_RETURNING_FROM_QUIT", PICK_STRING(eFlag = TUF_GAME_WON, "TUF_GAME_WON", PICK_STRING(eFlag = TUF_SET_WON, "TUF_SET_WON", PICK_STRING(eFlag = TUF_MATCH_WON, "TUF_MATCH_WON", PICK_STRING(eFlag = TUF_TIEBREAK_HELP_SHOULD_SHOW, "TUF_TIEBREAK_HELP_SHOULD_SHOW", PICK_STRING(eFlag = TUF_STATE_CONTROL_FLAG, "TUF_STATE_CONTROL_FLAG", PICK_STRING(eFlag = TUF_ANALOG_RIGHT, "TUF_ANALOG_RIGHT", PICK_STRING(eFlag = TUF_SHOW_SCLB, "TUF_SHOW_SCLB", "Unknown TENNIS_UI_FLAGS enum"))))))))))))))))))))))))))))))) ENDFUNC ENUM TENNIS_HEADSHOT_STATE THS_REGISTER_PEDHEADSHOT = 0, THS_IS_PEDHEADSHOT_VALID, THS_IS_PEDHEADSHOT_READY, THS_REQUEST_STREAMED_TEXTURE_DICT, THS_HAS_STREAMED_TEXTURE_DICT_LOADED, THS_FINISHED ENDENUM STRUCT TENNIS_MP_HEADSHOT_STRUCT TEXT_LABEL_31 headShotTxd PEDHEADSHOT_ID myPedHeadshot INT iFailSafe TENNIS_HEADSHOT_STATE eHeadshotState ENDSTRUCT ENUM TENNIS_UI_SECONDARY_FLAGS TUSF_END_SCREEN_INITED = BIT0, TUSF_MISSION_END_STINGER = BIT1, TUSF_STOP_PROCESS_SCOREBOARD_THIS_FRAME = BIT2, TUSF_SCLB_BUTTONS_INITED_OFFLINE = BIT3, TUSF_SCLB_PROFILE_BUTTON_SHOWN = BIT4 ENDENUM FUNC STRING GET_STRING_FROM_TENNIS_UI_FLAG_SET_TWO(TENNIS_UI_SECONDARY_FLAGS eFlag) SWITCH eFlag CASE TUSF_END_SCREEN_INITED RETURN "TUSF_END_SCREEN_INITED" CASE TUSF_MISSION_END_STINGER RETURN "TUSF_MISSION_END_STINGER" CASE TUSF_STOP_PROCESS_SCOREBOARD_THIS_FRAME RETURN "TUSF_STOP_PROCESS_SCOREBOARD_THIS_FRAME" CASE TUSF_SCLB_BUTTONS_INITED_OFFLINE RETURN "TUSF_SCLB_BUTTONS_INITED_OFFLINE" CASE TUSF_SCLB_PROFILE_BUTTON_SHOWN RETURN "TUSF_SCLB_PROFILE_BUTTON_SHOWN" ENDSWITCH RETURN "Unknown TENNIS_UI_SECONDARY_FLAGS enum" ENDFUNC STRUCT TENNIS_UI BLIP_INDEX oppBlip SIMPLE_USE_CONTEXT useContext SCALEFORM_INDEX scorePanelSF SCALEFORM_INDEX leaderboardUI SCRIPT_SHARD_BIG_MESSAGE matchUI INT iUIFlags INT iPrevUIFlags structTimer sUITimer FLOAT fAwardViewTime TEXT_LABEL_31 sHeadTextures[TENNIS_PLAYERS] INT iBeepWait, iBeepTimeStamp, iMenuStamp #IF IS_TENNIS_MULTIPLAYER TENNIS_MP_HEADSHOT_STRUCT sHeadshots[2] #ENDIF END_SCREEN_DATASET thisEsd TENNIS_UI_SECONDARY_FLAGS eUISecFlags INT iXPToGive INT iBets INT iScorecardInputLockoutFrameStamp // #IF IS_TENNIS_MULTIPLAYER SCRIPT_SHARD_BIG_MESSAGE uiShardMS // #ENDIF ENDSTRUCT PROC SET_TENNIS_UI_SCORECARD_INPUT_LOCKOUT_FRAME_STAMP(TENNIS_UI &thisUI, INT iNewStamp) CDEBUG2LN(DEBUG_TENNIS, "SET_TENNIS_UI_SCORECARD_INPUT_LOCKOUT_FRAME_STAMP with iNewStamp=", iNewStamp) thisUI.iScorecardInputLockoutFrameStamp = iNewStamp ENDPROC FUNC INT GET_TENNIS_UI_SCORECARD_INPUT_LOCKOUT_FRAME_STAMP(TENNIS_UI &thisUI) RETURN thisUI.iScorecardInputLockoutFrameStamp ENDFUNC PROC DRAW_TENNIS_HELP_KEYS(INT iTimer = 0) IF g_bResultScreenDisplaying SET_RESULT_SCREEN_DISPLAYING_STATE(FALSE) ENDIF INT iScreenX, iDummy GET_SCREEN_RESOLUTION(iScreenX, iDummy) DRAW_MENU_HELP_SCALEFORM(iScreenX, -1, iTimer) ENDPROC PROC DRAW_TENNIS_INTRO_UI() DRAW_MENU(TRUE, -1, TRUE) ENDPROC PROC UPDATE_TENNIS_SIMPLE_USE_CONTEXT(SIMPLE_USE_CONTEXT& useContext, BOOL bJPButtonSwitch = TRUE) // CDEBUG3LN(DEBUG_TENNIS, "UPDATE_TENNIS_SIMPLE_USE_CONTEXT called, bJPButtonSwitch=", PICK_STRING(bJPBUttonSwitch, "TRUE", "FALSE")) #IF IS_TENNIS_MULTIPLAYER IF NETWORK_TEXT_CHAT_IS_TYPING() EXIT ENDIF #ENDIF UPDATE_SIMPLE_USE_CONTEXT(useContext, default, default, default, bJPButtonSwitch) ENDPROC PROC SET_TENNIS_UI_XP_TO_GIVE(TENNIS_UI &thisUI, INT iNewXP) CPRINTLN(DEBUG_TENNIS, "SET_TENNIS_UI_XP_TO_GIVE :: iNewXP=", iNewXP) thisUI.iXPToGive = iNewXP ENDPROC FUNC INT GET_TENNIS_UI_XP_TO_GIVE(TENNIS_UI &thisUI) RETURN thisUI.iXPToGive ENDFUNC PROC SET_TENNIS_UI_BETS_DATA(TENNIS_UI &thisUI, INT iNewBetsData) CPRINTLN(DEBUG_TENNIS, "SET_TENNIS_UI_BETS_DATA :: iNewBetsData=", iNewBetsData) thisUI.iBets = iNewBetsData ENDPROC FUNC INT GET_TENNIS_UI_BETS_DATA(TENNIS_UI &thisUI) RETURN thisUI.iBets ENDFUNC PROC SET_TENNIS_UI_SECONDARY_FLAG(TENNIS_UI &thisUI, TENNIS_UI_SECONDARY_FLAGS eFlag) CDEBUG2LN(DEBUG_TENNIS, "SET_TENNIS_UI_SECONDARY_FLAG :: Setting ", GET_STRING_FROM_TENNIS_UI_FLAG_SET_TWO(eFlag)) thisUI.eUISecFlags = thisUI.eUISecFlags | eFlag ENDPROC PROC CLEAR_TENNIS_UI_SECONDARY_FLAG(TENNIS_UI &thisUI, TENNIS_UI_SECONDARY_FLAGS eFlag) CDEBUG2LN(DEBUG_TENNIS, "CLEAR_TENNIS_UI_SECONDARY_FLAG :: Clearing ", GET_STRING_FROM_TENNIS_UI_FLAG_SET_TWO(eFlag)) thisUI.eUISecFlags -= thisUI.eUISecFlags & eFlag ENDPROC FUNC BOOL IS_TENNIS_UI_SECONDARY_FLAG_SET(TENNIS_UI &thisUI, TENNIS_UI_SECONDARY_FLAGS eFlag) RETURN (ENUM_TO_INT(thisUI.eUISecFlags) & ENUM_TO_INT(eFlag)) <> 0 ENDFUNC PROC DESTROY_TENNIS_BLIP(BLIP_INDEX& blip) IF DOES_BLIP_EXIST(blip) REMOVE_BLIP(blip) ENDIF ENDPROC PROC SET_TENNIS_UI_MENU_STAMP(TENNIS_UI &thisUI, INT iNewStamp) thisUI.iMenuStamp = iNewStamp ENDPROC FUNC INT GET_TENNIS_UI_MENU_STAMP(TENNIS_UI &thisUI) RETURN thisUI.iMenuStamp ENDFUNC