Files
gtav-src/script/dev_ng/singleplayer/scripts/Minigames/Tennis/tennis_cameras.sch
T
2025-09-29 00:52:08 +02:00

193 lines
7.1 KiB
Scheme
Executable File

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