USING "rage_builtins.sch" USING "globals.sch" USING "script_player.sch" USING "commands_camera.sch" USING "tennis_debug.sch" ENUM TENNIS_CUTSCENE_STATE CUT_SET_FRIEND_OUTFIT, CUT_WAIT_FOR_OUTFITS, CUT_INIT_FRIEND_ACT, CUT_START_FRIEND_CONVO, CUT_INIT, CUT_LOAD_HEADSHOTS, CUT_INIT_CAMS_AND_CONVO, CUT_SHOW_OPPONENT, CUT_SHOW_PLAYER, CUT_SIDE_SLIDE_1, WAIT_FOR_SLIDE_1, WAIT_FOR_INPUT, WAIT_FOR_FLOAT_ABOVE, CUT_FINISH ENDENUM ENUM CAMERA_STATE_ENUM TENNIS_CAMERA_OPTION, TENNIS_CAMERA_FAR, TENNIS_CAMERA_FAR_OTHER_SIDE, TENNIS_CAMERA_QUICK_CUT, TENNIS_CAMERA_DYNAMIC, TENNIS_CAMERA_MP_CHEAT, TENNIS_CAMERA_SIDE_CHANGE, TENNIS_CAMERA_DEBUG ENDENUM ENUM TENNIS_MENU_WANDERING_STATE TMWS_ORBIT_RIGHT_LEFT = 0, TMWS_SLOW_DOLLY_PLAYER, TMWS_SLOW_DOLLY_OPP, TMWS_SLOW_PUSH_OPP, TMWS_SLOW_PUSH_PLAYER ENDENUM FUNC STRING GET_STRING_FROM_TENNIS_MENU_WANDERING_STATE(TENNIS_MENU_WANDERING_STATE eState) RETURN PICK_STRING(eState = TMWS_ORBIT_RIGHT_LEFT, "TMWS_ORBIT_RIGHT_LEFT", PICK_STRING(eState = TMWS_SLOW_DOLLY_PLAYER, "TMWS_SLOW_DOLLY_PLAYER", PICK_STRING(eState = TMWS_SLOW_DOLLY_OPP, "TMWS_SLOW_DOLLY_OPP", PICK_STRING(eState = TMWS_SLOW_PUSH_OPP, "TMWS_SLOW_PUSH_OPP", PICK_STRING(eState = TMWS_SLOW_PUSH_PLAYER, "TMWS_SLOW_PUSH_PLAYER", "Unknown TMWS"))))) ENDFUNC ENUM TENNIS_TUTORIAL_ENUM TUT_INIT = 0, TUT_DEMO_HIT_TOWARD_PED, TUT_DEMO_SWING_PREDICTION, TUT_DEMO_SWING_CUT_TO_MARKERS, TUT_SET_GREEN_MARKER, TUT_CUT_TO_RED_MARKER, TUT_DEMO_TOPSPIN, TUT_PREDICT_TOPSPIN_MARKER, TUT_CUT_TO_BACKSPIN_MARKER, TUT_DEMO_BACKSPIN, TUT_PREDICT_BACKSPIN_MARKER, TUT_UPDATE_BACKSPIN_CUT_STRATS, TUT_HIT_STRATS_BALL_1, TUT_PREDICT_STRATS_BALL_1, TUT_CUT_BETWEEN_STRATS, TUT_HIT_STRATS_BALL_2, TUT_PREDICT_STRATS_BALL_2, TUT_CLOSE_UP_RETURN, TUT_FINAL_HIT_GLHF, TUT_FINISH, TUT_FINISH_INTRO_THEN_WAIT, TUT_WAIT_FOR_OTHER_PLAYER, TUT_CLEANUP_WAIT, TUT_CLEANUP ENDENUM FUNC STRING GET_LITERAL_STRING_FROM_TENNIS_TUTORIAL_STATE( TENNIS_TUTORIAL_ENUM eState ) SWITCH eState CASE TUT_INIT RETURN "TUT_INIT" CASE TUT_DEMO_HIT_TOWARD_PED RETURN "TUT_DEMO_HIT_TOWARD_PED" CASE TUT_DEMO_SWING_PREDICTION RETURN "TUT_DEMO_SWING_PREDICTION" CASE TUT_DEMO_SWING_CUT_TO_MARKERS RETURN "TUT_DEMO_SWING_CUT_TO_MARKERS" CASE TUT_SET_GREEN_MARKER RETURN "TUT_SET_GREEN_MARKER" CASE TUT_CUT_TO_RED_MARKER RETURN "TUT_CUT_TO_RED_MARKER" CASE TUT_DEMO_TOPSPIN RETURN "TUT_DEMO_TOPSPIN" CASE TUT_PREDICT_TOPSPIN_MARKER RETURN "TUT_PREDICT_TOPSPIN_MARKER" CASE TUT_CUT_TO_BACKSPIN_MARKER RETURN "TUT_CUT_TO_BACKSPIN_MARKER" CASE TUT_DEMO_BACKSPIN RETURN "TUT_DEMO_BACKSPIN" CASE TUT_PREDICT_BACKSPIN_MARKER RETURN "TUT_PREDICT_BACKSPIN_MARKER" CASE TUT_UPDATE_BACKSPIN_CUT_STRATS RETURN "TUT_UPDATE_BACKSPIN_CUT_STRATS" CASE TUT_HIT_STRATS_BALL_1 RETURN "TUT_HIT_STRATS_BALL_1" CASE TUT_PREDICT_STRATS_BALL_1 RETURN "TUT_PREDICT_STRATS_BALL_1" CASE TUT_CUT_BETWEEN_STRATS RETURN "TUT_CUT_BETWEEN_STRATS" CASE TUT_HIT_STRATS_BALL_2 RETURN "TUT_HIT_STRATS_BALL_2" CASE TUT_PREDICT_STRATS_BALL_2 RETURN "TUT_PREDICT_STRATS_BALL_2" CASE TUT_CLOSE_UP_RETURN RETURN "TUT_CLOSE_UP_RETURN" CASE TUT_FINAL_HIT_GLHF RETURN "TUT_FINAL_HIT_GLHF" CASE TUT_FINISH RETURN "TUT_FINISH" CASE TUT_FINISH_INTRO_THEN_WAIT RETURN "TUT_FINISH_INTRO_THEN_WAIT" CASE TUT_WAIT_FOR_OTHER_PLAYER RETURN "TUT_WAIT_FOR_OTHER_PLAYER" CASE TUT_CLEANUP_WAIT RETURN "TUT_CLEANUP_WAIT" CASE TUT_CLEANUP RETURN "TUT_CLEANUP" ENDSWITCH RETURN "unknown TENNIS_TUTORIAL_ENUM" ENDFUNC STRUCT TENNIS_CAMERAS CAMERA_INDEX tennisCamFar CAMERA_INDEX tennisCamFarOtherSide CAMERA_INDEX tennisCamDyna CAMERA_INDEX tennisCamTut structTimer tennisCamTimer SEQUENCE_INDEX iTaskSeq TENNIS_CUTSCENE_STATE eCutState = CUT_INIT CAMERA_STATE_ENUM eTennisCam = TENNIS_CAMERA_OPTION CAMERA_STATE_ENUM eChosenCam = TENNIS_CAMERA_OPTION VECTOR vCamFocusPos FLOAT fFarCamUp, fFarCamLookAt, fFarCamForward, fFOV BOOL DEBUG_CUTSCENE_BOOL = TRUE BOOL bFlag = FALSE //Used for Dynamic camera FLOAT fDynaCamSwing FLOAT fDynaNudgeRSLR, fDynaNudgeRSUD FLOAT fDynaDolly INT iWanderCamStamp TENNIS_TUTORIAL_ENUM eTutCut TENNIS_MENU_WANDERING_STATE eWanderingCam BOOL bSetChosenCam ENDSTRUCT PROC SET_TENNIS_TUTORIAL_STATE(TENNIS_CAMERAS& thisCam, TENNIS_TUTORIAL_ENUM eNewState) CDEBUG2LN( DEBUG_TENNIS, "SET_TENNIS_TUTORIAL_STATE setting to ", GET_LITERAL_STRING_FROM_TENNIS_TUTORIAL_STATE( eNewState ) ) thisCam.eTutCut = eNewState ENDPROC FUNC TENNIS_TUTORIAL_ENUM GET_TENNIS_TUTORIAL_STATE(TENNIS_CAMERAS& thisCam) RETURN thisCam.eTutCut ENDFUNC PROC SET_TENNIS_CAMERA_STATE(TENNIS_CAMERAS &thisCams, CAMERA_STATE_ENUM eNewCam, BOOL bSetChosenCam = TRUE) IF bSetChosenCam thisCams.eChosenCam = eNewCam CPRINTLN(DEBUG_TENNIS, "eChosenCam Stored") ENDIF thisCams.eTennisCam = eNewCam thisCams.bSetChosenCam = bSetChosenCam CPRINTLN(DEBUG_TENNIS, "eTennisCam switched to ", PICK_STRING(eNewCam = TENNIS_CAMERA_OPTION, "TENNIS_CAMERA_OPTION", PICK_STRING(eNewCam = TENNIS_CAMERA_FAR, "TENNIS_CAMERA_FAR", PICK_STRING(eNewCam = TENNIS_CAMERA_FAR_OTHER_SIDE, "TENNIS_CAMERA_FAR_OTHER_SIDE", PICK_STRING(eNewCam = TENNIS_CAMERA_QUICK_CUT, "TENNIS_CAMERA_QUICK_CUT", PICK_STRING(eNewCam = TENNIS_CAMERA_DYNAMIC, "TENNIS_CAMERA_DYNAMIC", PICK_STRING(eNewCam = TENNIS_CAMERA_MP_CHEAT, "TENNIS_CAMERA_MP_CHEAT", PICK_STRING(eNewCam = TENNIS_CAMERA_SIDE_CHANGE, "TENNIS_CAMERA_SIDE_CHANGE", "Unknown Camera Enum"))))))), " ", eNewCam) ENDPROC FUNC CAMERA_STATE_ENUM GET_TENNIS_CAMERA_STATE(TENNIS_CAMERAS &thisCams) RETURN thisCams.eTennisCam ENDFUNC PROC SET_TENNIS_CUTSCENE_STATE(TENNIS_CAMERAS &thisCam, TENNIS_CUTSCENE_STATE newCutState) thisCam.eCutState = newCutState CPRINTLN(DEBUG_TENNIS, "eCutsceneState set to ", PICK_STRING(newCutState = CUT_SET_FRIEND_OUTFIT, "CUT_SET_FRIEND_OUTFIT", PICK_STRING(newCutState = CUT_INIT, "CUT_INIT ", PICK_STRING(newCutState = CUT_WAIT_FOR_OUTFITS, "CUT_WAIT_FOR_OUTFITS", PICK_STRING(newCutState = CUT_SHOW_OPPONENT, "CUT_SHOW_OPPONENT ", PICK_STRING(newCutState = CUT_SHOW_PLAYER, "CUT_SHOW_PLAYER ", PICK_STRING(newCutState = CUT_SIDE_SLIDE_1, "CUT_SIDE_SLIDE_1 ", PICK_STRING(newCutState = WAIT_FOR_SLIDE_1, "WAIT_FOR_SLIDE_1 ", PICK_STRING(newCutState = CUT_INIT_FRIEND_ACT, "CUT_INIT_FRIEND_ACT ", PICK_STRING(newCutState = CUT_START_FRIEND_CONVO, "CUT_START_FRIEND_CONVO ", PICK_STRING(newCutState = CUT_INIT_CAMS_AND_CONVO, "CUT_INIT_CAMS_AND_CONVO ", PICK_STRING(newCutState = WAIT_FOR_INPUT, "WAIT_FOR_INPUT ", PICK_STRING(newCutState = WAIT_FOR_FLOAT_ABOVE, "WAIT_FOR_FLOAT_ABOVE ", PICK_STRING(newCutState = CUT_LOAD_HEADSHOTS, "CUT_LOAD_HEADSHOTS ", "unknown TENNIS_CUTSCENE_STATE: "))))))))))))), newCutState) ENDPROC FUNC TENNIS_CUTSCENE_STATE GET_TENNIS_CUTSCENE_STATE(TENNIS_CAMERAS &thisCam) RETURN thisCam.eCutState ENDFUNC PROC RESET_CUTSCENE_STATE(TENNIS_CAMERAS &thisCam) thisCam.eCutState = CUT_INIT CPRINTLN(DEBUG_TENNIS, "Tennis Cutscene State reset") ENDPROC