101 lines
3.8 KiB
XML
Executable File
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
|