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

329 lines
11 KiB
XML
Executable File

//////////////////////////////////////////////////////////////////////
/* tennis_broadcast.sch */
/* Authors: Rob Pearsall */
/* Multiplayer definitions of broadcast msgs for tennis. */
//////////////////////////////////////////////////////////////////////
USING "tennis_client.sch"
USING "net_events.sch"
USING "tennis.sch"
ENUM TENNIS_BALL_UPDATE_ENUM
TBU_INITIAL_POSITION = 0,
TBU_BALL_VELOCITY_VECTOR,
TBU_NET_RICOCHET,
TBU_MAKE_BALL
ENDENUM
ENUM BALL_UPDATE_IMPACT_TYPE
BALL_UPDATE_IMPACT_TYPE_SERVE,
BALL_UPDATE_IMPACT_TYPE_UPDATE,
BALL_UPDATE_IMPACT_TYPE_SCTV_CREATE,
BALL_UPDATE_IMPACT_TYPE_SCTV_LAUNCH,
BALL_UPDATE_IMPACT_TYPE_SCTV_UI_UPDATE_UTIL_FLAGS,
BALL_UPDATE_IMPACT_TYPE_SCTV_UI_UPDATE_UI_FLAGS,
BALL_UPDATE_IMPACT_TYPE_SCTV_UI_UPDATE_POINTS,
BALL_UPDATE_IMPACT_TYPE_SCTV_UI_SHOW_SERVE_MESSAGE,
BALL_UPDATE_IMPACT_TYPE_SCTV_UI_SHOW_SECOND_SERVE_MESSAGE,
BALL_UPDATE_IMPACT_TYPE_SCTV_UI_SHOW_SIDE_CHANGE,
BALL_UPDATE_IMPACT_TYPE_SCTV_UI_SET_CAMERA_STATE,
BALL_UPDATE_IMPACT_TYPE_SCTV_REQUEST_UPDATE,
BALL_UPDATE_IMPACT_TYPE_SCTV_UI_SHOW_PLAYER_CARD,
BALL_UPDATE_IMPACT_TYPE_SCTV_UI_SHOW_SCOREBOARD,
BALL_UPDATE_IMPACT_TYPE_SEQ_DONE,
BALL_UPDATE_IMPACT_TYPE_BALL_DESYNC
ENDENUM
FUNC STRING GET_STRING_FROM_TENNIS_BALL_UPDATE_IMPACT_TYPE(BALL_UPDATE_IMPACT_TYPE eType)
SWITCH eType
CASE BALL_UPDATE_IMPACT_TYPE_SERVE RETURN "BALL_UPDATE_IMPACT_TYPE_SERVE"
CASE BALL_UPDATE_IMPACT_TYPE_UPDATE RETURN "BALL_UPDATE_IMPACT_TYPE_UPDATE"
CASE BALL_UPDATE_IMPACT_TYPE_SCTV_CREATE RETURN "BALL_UPDATE_IMPACT_TYPE_SCTV_CREATE"
CASE BALL_UPDATE_IMPACT_TYPE_SCTV_LAUNCH RETURN "BALL_UPDATE_IMPACT_TYPE_SCTV_LAUNCH"
CASE BALL_UPDATE_IMPACT_TYPE_SCTV_UI_UPDATE_UTIL_FLAGS RETURN "BALL_UPDATE_IMPACT_TYPE_SCTV_UI_UPDATE_UTIL_FLAGS"
CASE BALL_UPDATE_IMPACT_TYPE_SCTV_UI_UPDATE_UI_FLAGS RETURN "BALL_UPDATE_IMPACT_TYPE_SCTV_UI_UPDATE_UI_FLAGS"
CASE BALL_UPDATE_IMPACT_TYPE_SCTV_UI_UPDATE_POINTS RETURN "BALL_UPDATE_IMPACT_TYPE_SCTV_UI_UPDATE_POINTS"
CASE BALL_UPDATE_IMPACT_TYPE_SCTV_UI_SHOW_SERVE_MESSAGE RETURN "BALL_UPDATE_IMPACT_TYPE_SCTV_UI_SHOW_SERVE_MESSAGE"
CASE BALL_UPDATE_IMPACT_TYPE_SCTV_UI_SHOW_SECOND_SERVE_MESSAGE RETURN "BALL_UPDATE_IMPACT_TYPE_SCTV_UI_SHOW_SECOND_SERVE_MESSAGE"
CASE BALL_UPDATE_IMPACT_TYPE_SCTV_UI_SHOW_SIDE_CHANGE RETURN "BALL_UPDATE_IMPACT_TYPE_SCTV_UI_SHOW_SIDE_CHANGE"
CASE BALL_UPDATE_IMPACT_TYPE_SCTV_UI_SET_CAMERA_STATE RETURN "BALL_UPDATE_IMPACT_TYPE_SCTV_UI_SET_CAMERA_STATE"
CASE BALL_UPDATE_IMPACT_TYPE_SCTV_REQUEST_UPDATE RETURN "BALL_UPDATE_IMPACT_TYPE_SCTV_REQUEST_UPDATE"
CASE BALL_UPDATE_IMPACT_TYPE_SCTV_UI_SHOW_PLAYER_CARD RETURN "BALL_UPDATE_IMPACT_TYPE_SCTV_UI_SHOW_PLAYER_CARD"
CASE BALL_UPDATE_IMPACT_TYPE_SCTV_UI_SHOW_SCOREBOARD RETURN "BALL_UPDATE_IMPACT_TYPE_SCTV_UI_SHOW_SCOREBOARD"
CASE BALL_UPDATE_IMPACT_TYPE_SEQ_DONE RETURN "BALL_UPDATE_IMPACT_TYPE_SEQ_DONE"
CASE BALL_UPDATE_IMPACT_TYPE_BALL_DESYNC RETURN "BALL_UPDATE_IMPACT_TYPE_BALL_DESYNC"
ENDSWITCH
RETURN "Unknown BALL_UPDATE_IMPACT_TYPE enum"
ENDFUNC
FUNC STRING GET_STRING_FROM_TENNIS_BALL_UPDATE_ENUM(TENNIS_BALL_UPDATE_ENUM eThisUpdate)
SWITCH eThisUpdate
CASE TBU_INITIAL_POSITION RETURN "TBU_INITIAL_POSITION"
CASE TBU_BALL_VELOCITY_VECTOR RETURN "TBU_BALL_VELOCITY_VECTOR"
CASE TBU_NET_RICOCHET RETURN "TBU_NET_RICOCHET"
ENDSWITCH
RETURN "Unknown TENNIS_BALL_UPDATE_ENUM"
ENDFUNC
STRUCT TENNIS_BROADCAST_EVENT
SCRIPTED_EVENT_TYPES eEventType
//-- Player ID added for B* 3600951
PLAYER_INDEX playerID
// Used for the ball impact event
VECTOR vPosition
VECTOR vVelocity
TENNIS_BALL_SPIN broadcastSpin
INT iImpactID
INT iLRAngle
INT iNetworkTime
INT iDummy0
INT iDummy1
FLOAT fDummy
BOOL bDummy
BALL_UPDATE_IMPACT_TYPE eBallUpdateType
ENDSTRUCT
ENUM TENNIS_GENERAL_EVENT_ENUM
TGEE_REACT_EVENT = 0,
TGEE_MAX_EVENT
ENDENUM
FUNC STRING GET_STRING_FROM_TENNIS_GENERAL_EVENT_ENUM(TENNIS_GENERAL_EVENT_ENUM eEvent)
SWITCH eEvent
CASE TGEE_REACT_EVENT RETURN "TGEE_REACT_EVENT"
CASE TGEE_MAX_EVENT RETURN "TGEE_MAX_EVENT"
ENDSWITCH
RETURN "Unknown TENNIS_GENERAL_EVENT_ENUM"
ENDFUNC
PROC SET_TENNIS_BROADCAST_TIME_DATATYPE(TENNIS_BROADCAST_EVENT &event, TIME_DATATYPE &newTimeData)
event.iNetworkTime = NATIVE_TO_INT(newTimeData)
CPRINTLN( DEBUG_TENNIS, "SET_TENNIS_BROADCAST_TIME_DATATYPE set to ", event.iNetworkTime )
ENDPROC
FUNC INT GET_TENNIS_BROADCAST_TIME_DATATYPE(TENNIS_BROADCAST_EVENT &event)
RETURN event.iNetworkTime
ENDFUNC
/// PURPOSE:
/// co-opts iLRAngle
/// PARAMS:
/// event -
/// launchGrade -
PROC SET_TENNIS_BROADCAST_BALL_UPDATE_ENUM(TENNIS_BROADCAST_EVENT &event, TENNIS_BALL_UPDATE_ENUM eNewUpdate)
event.iLRAngle = ENUM_TO_INT(eNewUpdate)
ENDPROC
/// PURPOSE:
/// co-opts iLRAngle
/// PARAMS:
/// event -
/// RETURNS:
///
FUNC TENNIS_BALL_UPDATE_ENUM GET_TENNIS_BROADCAST_BALL_UPDATE_ENUM(TENNIS_BROADCAST_EVENT &event)
RETURN INT_TO_ENUM(TENNIS_BALL_UPDATE_ENUM, event.iLRAngle)
ENDFUNC
/// PURPOSE:
/// co-opts iImpactID
/// PARAMS:
/// event -
/// ePointWinner -
PROC SET_TENNIS_BROADCAST_POINT_WINNER(TENNIS_BROADCAST_EVENT &event, TENNIS_PLAYER_ID ePointWinner)
event.iImpactID = ENUM_TO_INT(ePointWinner)
ENDPROC
/// PURPOSE:
/// co-opts iImpactID
/// PARAMS:
/// event -
/// RETURNS:
///
FUNC TENNIS_PLAYER_ID GET_TENNIS_BROADCAST_POINT_WINNER(TENNIS_BROADCAST_EVENT &event)
RETURN INT_TO_ENUM(TENNIS_PLAYER_ID, event.iImpactID)
ENDFUNC
PROC SET_TENNIS_BROADCAST_SERVE_ANGLE(TENNIS_BROADCAST_EVENT &event, INT iNewAngle)
event.iLRAngle = iNewAngle
ENDPROC
FUNC INT GET_TENNIS_BROADCAST_SERVE_ANGLE(TENNIS_BROADCAST_EVENT &event)
RETURN event.iLRAngle
ENDFUNC
/// PURPOSE:
/// co-opts iImpactID
/// PARAMS:
/// eventDetails -
/// eServeGrade -
PROC SET_TENNIS_BROADCAST_SERVE_GRADE(TENNIS_BROADCAST_EVENT &eventDetails, LAUNCH_DETAIL_ENUM eServeGrade)
eventDetails.iDummy0 = ENUM_TO_INT(eServeGrade)
ENDPROC
/// PURPOSE:
/// co-opts iImpactID
/// PARAMS:
/// eventDetails -
/// RETURNS:
///
FUNC LAUNCH_DETAIL_ENUM GET_TENNIS_BROADCAST_SERVE_GRADE(TENNIS_BROADCAST_EVENT &eventDetails)
RETURN INT_TO_ENUM(LAUNCH_DETAIL_ENUM, eventDetails.iDummy0)
ENDFUNC
/// PURPOSE:
/// co-opts iImpactID
/// PARAMS:
/// eventDetails -
/// RETURNS:
///
FUNC INT GET_TENNIS_BROADCAST_OFFENDER(TENNIS_BROADCAST_EVENT &eventDetails)
RETURN eventDetails.iImpactID
ENDFUNC
/// PURPOSE:
/// co-opts iImpactID
/// PARAMS:
/// eventDetails -
/// iOffender -
PROC SET_TENNIS_BROADCAST_OFFENDER(TENNIS_BROADCAST_EVENT &eventDetails, INT iOffender)
eventDetails.iImpactID = iOffender
CPRINTLN(DEBUG_TENNIS, "iOffender: ", iOffender)
ENDPROC
/// PURPOSE:
/// Mutator for the serve count the sender sees
/// DO NOT CALL THIS AND SET_IMPACT_ID, one will overwrite the other
/// PARAMS:
/// eventDetails -
/// newServeCount -
PROC SET_TENNIS_BROADCAST_SERVE_COUNT(TENNIS_BROADCAST_EVENT &eventDetails, INT newServeCount)
eventDetails.iImpactID = newServeCount
ENDPROC
/// PURPOSE:
/// Accessor for the serve count
/// PARAMS:
/// eventDetails -
/// RETURNS:
///
FUNC INT GET_TENNIS_BROADCAST_SERVE_COUNT(TENNIS_BROADCAST_EVENT &eventDetails)
RETURN eventDetails.iImpactID
ENDFUNC
/// PURPOSE:
/// Mutator for Broadcast Ball Spin
/// PARAMS:
/// eventDetails -
/// newSpin -
PROC SET_TENNIS_BROADCAST_SPIN(TENNIS_BROADCAST_EVENT &eventDetails, TENNIS_BALL_SPIN newSpin)
eventDetails.broadcastSpin = newSpin
ENDPROC
/// PURPOSE:
/// Accessor for the Broadcast Ball Spin
/// PARAMS:
/// eventDetails -
/// RETURNS:
///
FUNC TENNIS_BALL_SPIN GET_TENNIS_BROADCAST_SPIN(TENNIS_BROADCAST_EVENT &eventDetails)
RETURN eventDetails.broadcastSpin
ENDFUNC
// Accessor for the event type.
FUNC SCRIPTED_EVENT_TYPES GET_TENNIS_BROADCAST_EVENT_TYPE(TENNIS_BROADCAST_EVENT& eventDetails)
RETURN eventDetails.eEventType
ENDFUNC
/// PURPOSE:
/// Mutator for the event type.
/// PARAMS:
/// eventDetails -
/// eType -
PROC SET_TENNIS_BROADCAST_EVENT_TYPE(TENNIS_BROADCAST_EVENT& eventDetails, SCRIPTED_EVENT_TYPES eType)
eventDetails.eEventType = eType
ENDPROC
/// PURPOSE:
/// Mutator to mark an event as a hit by bounce event
/// PARAMS:
/// eventDetails -
PROC SET_TENNIS_BEFORE_BOUNCE_HIT_BY_FLAG(TENNIS_BROADCAST_EVENT& eventDetails)
eventDetails.iImpactID = 1
ENDPROC
/// PURPOSE:
/// returns whether an event is a hit by bounce event
/// PARAMS:
/// eventDetails -
/// RETURNS:
/// 1 if the sending player was hit by the ball
FUNC INT GET_TENNIS_BEFORE_BOUNCE_HIT_BY_FLAG(TENNIS_BROADCAST_EVENT& eventDetails)
RETURN eventDetails.iImpactID
ENDFUNC
/// PURPOSE:
/// mutator method
/// PARAMS:
/// eventDetails -
/// iServerMessage - use 1 to say this was sent by a server action, 0 otherwise
PROC SET_TENNIS_QUIT_EVENT_SERVER_FLAG(TENNIS_BROADCAST_EVENT& eventDetails, INT iServerMessage)
eventDetails.iImpactID = iServerMessage
ENDPROC
/// PURPOSE:
/// accessor method
/// PARAMS:
/// eventDetails -
/// RETURNS:
/// 1 if this event was a server action, 0 otherwise
FUNC INT GET_TENNIS_QUIT_EVENT_SERVER_FLAG(TENNIS_BROADCAST_EVENT& eventDetails)
RETURN eventDetails.iImpactID
ENDFUNC
// Accessor for ball position.
FUNC VECTOR GET_TENNIS_BROADCAST_BALL_POSITION(TENNIS_BROADCAST_EVENT& eventDetails)
RETURN eventDetails.vPosition
ENDFUNC
/// PURPOSE:
/// Mutator for ball position.
/// PARAMS:
/// eventDetails -
/// vBallPos -
PROC SET_TENNIS_BROADCAST_BALL_POSITION(TENNIS_BROADCAST_EVENT& eventDetails, VECTOR vBallPos)
eventDetails.vPosition = vBallPos
ENDPROC
// Accessor for ball velocity.
FUNC VECTOR GET_TENNIS_BROADCAST_BALL_VELOCITY(TENNIS_BROADCAST_EVENT& eventDetails)
RETURN eventDetails.vVelocity
ENDFUNC
/// PURPOSE:
/// Mutator for ball velocity.
/// PARAMS:
/// eventDetails -
/// vBallVel -
PROC SET_TENNIS_BROADCAST_BALL_VELOCITY(TENNIS_BROADCAST_EVENT& eventDetails, VECTOR vBallVel)
eventDetails.vVelocity = vBallVel
ENDPROC
// Accessor for ball impact ID (used to play impact sfx).
FUNC INT GET_TENNIS_BROADCAST_IMPACT_ID(TENNIS_BROADCAST_EVENT& eventDetails)
RETURN eventDetails.iImpactID
ENDFUNC
/// PURPOSE:
/// Mutator for ball impact ID (used to play impact sfx).
/// PARAMS:
/// eventDetails -
/// iImpactID -
PROC SET_TENNIS_BROADCAST_IMPACT_ID(TENNIS_BROADCAST_EVENT& eventDetails, INT iImpactID)
eventDetails.iImpactID = iImpactID
ENDPROC