Files
gtav-src/script/dev_ng/singleplayer/include/public/scaleform_helper.sch
T
2025-09-29 00:52:08 +02:00

101 lines
3.8 KiB
XML
Executable File

//////////////////////////////////////////////////////////////////////////////////////////
// //
// SCRIPT NAME : scaleform_helper.sch //
// AUTHOR : Kenneth Ross //
// DESCRIPTION : A quick way to load/unload scaleform movies. //
// Prevents scripts from having to setup additional control //
// enums and flags. //
// //
//////////////////////////////////////////////////////////////////////////////////////////
USING "rage_builtins.sch"
USING "globals.sch"
/// PURPOSE: Helper function used to make sure a scaleform movie is ready to use
/// Ideally this function should be called each frame, and have
/// the calling script perform the movie specifics when TRUE is returned.
/// NOTE: Currently, this header doesn't check to see if the specific movie name
/// has been requested from another script - an assert will be thrown if it has
///
/// PARAMS:
/// sData - Fill this data struct with the movie name and required load settings
/// RETURNS: TRUE when the specified movie has loaded
FUNC BOOL SETUP_SCALEFORM_MOVIE(SCALEFORM_DATA_STRUCT &sData)
SWITCH sData.stage
CASE SF_REQUEST
PRINTSTRING("\n*****************")
PRINTSTRING("\n[ScaleformHelper] SETUP_SCALEFORM_MOVIE - Setup movie '")PRINTSTRING(sData.filename)PRINTSTRING("'")
// We only need to request the movie once
IF NOT HAS_SCALEFORM_MOVIE_LOADED(sData.movieID)
PRINTSTRING("\n[ScaleformHelper] SETUP_SCALEFORM_MOVIE - Requesting movie...")
sData.movieID = REQUEST_SCALEFORM_MOVIE(sData.filename)
sData.stage = SF_WAIT
// If we requested the movie to block load then skip to loaded stage
IF sData.blockLoad
IF HAS_SCALEFORM_MOVIE_LOADED(sData.movieID)
sData.loadTimer = GET_GAME_TIMER()
sData.stage = SF_LOADED
ENDIF
ENDIF
ELSE
PRINTSTRING("\n[ScaleformHelper] SETUP_SCALEFORM_MOVIE - Movie already loaded")
// Movie has already been loaded
sData.loadTimer = GET_GAME_TIMER()
sData.stage = SF_LOADED
ENDIF
PRINTSTRING("\n***************************************************")PRINTNL()
BREAK
CASE SF_WAIT
// Wait for the movie to load
IF HAS_SCALEFORM_MOVIE_LOADED(sData.movieID)
PRINTSTRING("\n*****************")
PRINTSTRING("\n[ScaleformHelper] SETUP_SCALEFORM_MOVIE - Setup movie '")PRINTSTRING(sData.filename)PRINTSTRING("'")
PRINTSTRING("\n[ScaleformHelper] SETUP_SCALEFORM_MOVIE - Movie loaded")
PRINTSTRING("\n***************************************************")PRINTNL()
sData.loadTimer = GET_GAME_TIMER()
sData.stage = SF_LOADED
ENDIF
BREAK
CASE SF_LOADED
// Waiting for script to call CLEANUP_SCALEFORM_MOVIE()...
// Detect if the movie has been cleaned up...
IF NOT HAS_SCALEFORM_MOVIE_LOADED(sData.movieID)
#IF IS_DEBUG_BUILD
SCRIPT_ASSERT("[ScaleformHelper] SETUP_SCALEFORM_MOVIE - movie was cleanud up!")
#ENDIF
sData.stage = SF_REQUEST
ENDIF
BREAK
ENDSWITCH
RETURN (sData.stage = SF_LOADED)
ENDFUNC
/// PURPOSE: Helper function used to unload a scaleform movie
///
/// PARAMS:
/// sData - This should be the same data struct used to load the scaleform movie using LOAD_SCALEFORM_MOVIE_HELPER()
PROC CLEANUP_SCALEFORM_MOVIE(SCALEFORM_DATA_STRUCT &sData)
IF sData.stage <> SF_REQUEST
// Cleanup the movie and return to the default stage
IF HAS_SCALEFORM_MOVIE_LOADED(sData.movieID)
SET_SCALEFORM_MOVIE_AS_NO_LONGER_NEEDED(sData.movieID)
ENDIF
sData.movieID = NULL
sData.stage = SF_REQUEST
PRINTSTRING("\n[ScaleformHelper] CLEANUP_SCALEFORM_MOVIE - Cleaned up movie")
ELSE
PRINTSTRING("\n[ScaleformHelper] CLEANUP_SCALEFORM_MOVIE - Failed cleanup! in request stage")
ENDIF
ENDPROC