Files
gtav-src/script/dev_ng/singleplayer/scripts/debug/line_activation_test.sc
T
2025-09-29 00:52:08 +02:00

229 lines
8.0 KiB
Python
Executable File

//////////////////////////////////////////////////////////////////////////////////
// //
// SCRIPT NAME : line_activation_test.sc //
// AUTHOR : Kenneth Ross //
// DESCRIPTION : Used to setup line activation locates. Displays //
// locate outline and spheres when player activates. //
// //
//////////////////////////////////////////////////////////////////////////////////
USING "buildtype.sch"
#IF IS_FINAL_BUILD
SCRIPT
ENDSCRIPT
#ENDIF
#IF IS_DEBUG_BUILD
CONST_INT MAX_ACTIVATION_TESTS 5
USING "rage_builtins.sch"
USING "globals.sch"
USING "commands_script.sch"
USING "lineactivation.sch"
USING "shared_debug.sch"
ENUM STAGE_CONTROL_ENUM
STAGE_INIT = 0,
STAGE_UPDATE,
STAGE_CLEANUP
ENDENUM
STAGE_CONTROL_ENUM eStage = STAGE_INIT
STRUCT ACTIVATION_PARAM_STRUCT
VECTOR vCoord
FLOAT fCoordHeading
FLOAT fLocateSize
INT iDirection
INT iActiveSide
INT iEaseOfActivation
BOOL bCheckStationary
BOOL bActive
BOOL bSnapToPlayer
ENDSTRUCT
ACTIVATION_PARAM_STRUCT sActivationParams[MAX_ACTIVATION_TESTS]
WIDGET_GROUP_ID widgetID
BOOL bOutputData
/// PURPOSE: Output all the data so we can copy/paste
PROC DO_OUTPUT_TO_SCRIPT()
INT i
TEXT_LABEL_31 sDirection, sActiveSide, sEaseOfActivation, sStationary
OPEN_DEBUG_FILE()
SAVE_NEWLINE_TO_DEBUG_FILE()
SAVE_STRING_TO_DEBUG_FILE("/* LINE ACTIVATION TEST */")
SAVE_NEWLINE_TO_DEBUG_FILE()
REPEAT MAX_ACTIVATION_TESTS i
IF sActivationParams[i].bActive
IF sActivationParams[i].iDirection = 0 sDirection = "ECOMPASS_NORTH"
ELIF sActivationParams[i].iDirection = 0 sDirection = "ECOMPASS_EAST"
ELIF sActivationParams[i].iDirection = 0 sDirection = "ECOMPASS_WEST"
ELIF sActivationParams[i].iDirection = 0 sDirection = "ECOMPASS_SOUTH"
ENDIF
IF sActivationParams[i].iActiveSide = 0 sActiveSide = "EACTIVESIDE_ONEWAY"
ELIF sActivationParams[i].iActiveSide = 0 sActiveSide = "EACTIVESIDE_OPPOSITES"
ELIF sActivationParams[i].iActiveSide = 0 sActiveSide = "EACTIVESIDE_FOURCORNERS"
ENDIF
IF sActivationParams[i].iEaseOfActivation = 0 sEaseOfActivation = "EACTIVATIONEASE_HARD"
ELIF sActivationParams[i].iEaseOfActivation = 0 sEaseOfActivation = "EACTIVATIONEASE_MEDIUM"
ELIF sActivationParams[i].iEaseOfActivation = 0 sEaseOfActivation = "EACTIVATIONEASE_EASY"
ENDIF
IF sActivationParams[i].bCheckStationary sStationary = "TRUE"
ELIF NOT sActivationParams[i].bCheckStationary sStationary = "FALSE"
ENDIF
SAVE_STRING_TO_DEBUG_FILE("Coord = ") SAVE_VECTOR_TO_DEBUG_FILE(sActivationParams[i].vCoord) SAVE_NEWLINE_TO_DEBUG_FILE()
SAVE_STRING_TO_DEBUG_FILE("CoordHeading = ") SAVE_FLOAT_TO_DEBUG_FILE(sActivationParams[i].fCoordHeading) SAVE_NEWLINE_TO_DEBUG_FILE()
SAVE_STRING_TO_DEBUG_FILE("Direction = ") SAVE_STRING_TO_DEBUG_FILE(sDirection) SAVE_NEWLINE_TO_DEBUG_FILE()
SAVE_STRING_TO_DEBUG_FILE("LocateSize = ") SAVE_FLOAT_TO_DEBUG_FILE(sActivationParams[i].fLocateSize) SAVE_NEWLINE_TO_DEBUG_FILE()
SAVE_STRING_TO_DEBUG_FILE("activeSide = ") SAVE_STRING_TO_DEBUG_FILE(sActiveSide) SAVE_NEWLINE_TO_DEBUG_FILE()
SAVE_STRING_TO_DEBUG_FILE("Ease_of_activation = ") SAVE_STRING_TO_DEBUG_FILE(sEaseOfActivation) SAVE_NEWLINE_TO_DEBUG_FILE()
SAVE_STRING_TO_DEBUG_FILE("Check_stationary = ") SAVE_STRING_TO_DEBUG_FILE(sStationary) SAVE_NEWLINE_TO_DEBUG_FILE()
SAVE_STRING_TO_DEBUG_FILE("IF IS_PLAYER_ACTIVATING_COORD(Coord, CoordHeading, Direction, LocateSize, activeSide, Ease_of_activation, Check_stationary)")
SAVE_NEWLINE_TO_DEBUG_FILE()
SAVE_STRING_TO_DEBUG_FILE("IF IS_PLAYER_ACTIVATING_COORD(")
SAVE_VECTOR_TO_DEBUG_FILE(sActivationParams[i].vCoord)
SAVE_STRING_TO_DEBUG_FILE(", ")
SAVE_FLOAT_TO_DEBUG_FILE(sActivationParams[i].fCoordHeading)
SAVE_STRING_TO_DEBUG_FILE(", ")
SAVE_STRING_TO_DEBUG_FILE(sDirection)
SAVE_STRING_TO_DEBUG_FILE(", ")
SAVE_FLOAT_TO_DEBUG_FILE(sActivationParams[i].fLocateSize)
SAVE_STRING_TO_DEBUG_FILE(", ")
SAVE_STRING_TO_DEBUG_FILE(sActiveSide)
SAVE_STRING_TO_DEBUG_FILE(", ")
SAVE_STRING_TO_DEBUG_FILE(sEaseOfActivation)
SAVE_STRING_TO_DEBUG_FILE(", ")
SAVE_STRING_TO_DEBUG_FILE(sStationary)
SAVE_STRING_TO_DEBUG_FILE(")")
SAVE_NEWLINE_TO_DEBUG_FILE()
SAVE_NEWLINE_TO_DEBUG_FILE()
ENDIF
CLOSE_DEBUG_FILE()
ENDREPEAT
ENDPROC
/// PURPOSE: Setup the widgets and default data
PROC DO_INITIALISE()
INT i
TEXT_LABEL_31 sTempLabel
// Set up widgets
START_WIDGET_GROUP("Line Activation Test")
ADD_WIDGET_BOOL("Output data", bOutputData)
REPEAT MAX_ACTIVATION_TESTS i
// Set some default states
sActivationParams[i].bSnapToPlayer = TRUE
sActivationParams[i].fLocateSize = 0.4
sTempLabel = "Test[" sTempLabel += i sTempLabel += "]"
widgetID = START_WIDGET_GROUP(sTempLabel)
ADD_WIDGET_BOOL("Active", sActivationParams[i].bActive)
ADD_WIDGET_BOOL("Snap To Player", sActivationParams[i].bSnapToPlayer)
ADD_WIDGET_VECTOR_SLIDER("Coord", sActivationParams[i].vCoord, -10000.0, 10000.0, 0.01)
ADD_WIDGET_FLOAT_SLIDER("Heading", sActivationParams[i].fCoordHeading, 0.0, 360.0, 1.0)
ADD_WIDGET_FLOAT_SLIDER("Locate Size", sActivationParams[i].fLocateSize, 0.0, 50.0, 0.2)
ADD_WIDGET_INT_SLIDER("Direction", sActivationParams[i].iDirection, 0, 3, 1)
ADD_WIDGET_INT_SLIDER("Side", sActivationParams[i].iActiveSide, 0, 2, 1)
ADD_WIDGET_INT_SLIDER("Ease", sActivationParams[i].iEaseOfActivation, 0, 2, 1)
ADD_WIDGET_BOOL("Check Stationary", sActivationParams[i].bCheckStationary)
STOP_WIDGET_GROUP()
ENDREPEAT
STOP_WIDGET_GROUP()
SETTIMERA(0)
eStage = STAGE_UPDATE
ENDPROC
/// PURPOSE: Update locate positions, play anims, set anim phase etc.
PROC DO_UPDATE()
IF (TIMERA() < 8000)
SET_TEXT_SCALE(0.35,0.35)
SET_TEXT_CENTRE(TRUE)
DISPLAY_TEXT_WITH_LITERAL_STRING(0.5, 0.05, "STRING", "Turn on debug lines and spheres in RAG/Script/Draw Debug Lines And Spheres")
ENDIF
IF NOT IS_PED_INJURED(PLAYER_PED_ID())
IF bOutputData
DO_OUTPUT_TO_SCRIPT()
bOutputData = FALSE
ENDIF
INT i
REPEAT MAX_ACTIVATION_TESTS i
IF sActivationParams[i].bSnapToPlayer
sActivationParams[i].vCoord = GET_ENTITY_COORDS(PLAYER_PED_ID())
sActivationParams[i].bSnapToPlayer = FALSE
ENDIF
IF sActivationParams[i].bActive
IF IS_PLAYER_ACTIVATING_COORD(sActivationParams[i].vCoord, sActivationParams[i].fCoordHeading, INT_TO_ENUM(ECOMPASS, sActivationParams[i].iDirection),sActivationParams[i].fLocateSize, INT_TO_ENUM(EACTIVESIDE, sActivationParams[i].iActiveSide), INT_TO_ENUM(EACTIVATIONEASE, sActivationParams[i].iEaseOfActivation), sActivationParams[i].bCheckStationary)
DRAW_DEBUG_SPHERE(sActivationParams[i].vCoord, 0.1, 0, 255, 0, 255)
DRAW_DEBUG_LINE(sActivationParams[i].vCoord, GET_OFFSET_FROM_COORD_AND_HEADING_IN_WORLD_COORDS(sActivationParams[i].vCoord, sActivationParams[i].fCoordHeading, <<0.0, 0.5, 0.0>>), 0, 255, 0, 255)
ELSE
DRAW_DEBUG_SPHERE(sActivationParams[i].vCoord, 0.1, 255, 0, 0, 255)
DRAW_DEBUG_LINE(sActivationParams[i].vCoord, GET_OFFSET_FROM_COORD_AND_HEADING_IN_WORLD_COORDS(sActivationParams[i].vCoord, sActivationParams[i].fCoordHeading, <<0.0, 0.5, 0.0>>), 255, 0, 0, 255)
ENDIF
ENDIF
ENDREPEAT
IF IS_KEYBOARD_KEY_JUST_PRESSED(KEY_F)
eStage = STAGE_CLEANUP
ENDIF
ENDIF
ENDPROC
/// PURPOSE: Remove any widgets and terminate
PROC DO_CLEANUP()
// Remove widgets
IF DOES_WIDGET_GROUP_EXIST(widgetID)
DELETE_WIDGET_GROUP(widgetID)
ENDIF
TERMINATE_THIS_THREAD()
ENDPROC
SCRIPT
WHILE TRUE
WAIT(0)
SWITCH eStage
CASE STAGE_INIT
DO_INITIALISE()
BREAK
CASE STAGE_UPDATE
DO_UPDATE()
BREAK
CASE STAGE_CLEANUP
DO_CLEANUP()
BREAK
ENDSWITCH
ENDWHILE
ENDSCRIPT
#ENDIF