////////////////////////////////////////////////////////////////////// /* 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