395 lines
11 KiB
Scheme
Executable File
395 lines
11 KiB
Scheme
Executable File
// _________________________________________________________________________________________
|
|
// _________________________________________________________________________________________
|
|
// ___
|
|
// ___ Author: Adam Westwoood & Ross Wallace
|
|
// ___ Date: 07/12/2009
|
|
// _________________________________________________________________________________________
|
|
// ___
|
|
// ___ Overlay Effects
|
|
// ___ A collection of analogue and digital
|
|
// ___
|
|
// ___
|
|
// ___
|
|
// ___ Notes: Placeholder effects
|
|
// ___
|
|
// _________________________________________________________________________________________
|
|
|
|
// ____________________________________ INCLUDES ___________________________________________
|
|
|
|
|
|
USING "commands_graphics.sch"
|
|
|
|
CONST_FLOAT videoCameraZoomMax 45.0
|
|
CONST_FLOAT videoCameraZoomMin 10.00
|
|
|
|
BOOL bFlipHoriz
|
|
BOOL bFlipVert
|
|
BOOL bInterlaceFlip
|
|
BOOL bFXHasFadedIn
|
|
BOOL bHasRecFadedIn = FALSE
|
|
|
|
INT iNoSignal
|
|
INT iGrime
|
|
INT iGrimeLastValue
|
|
INT iFXTimer
|
|
INT iFXRandom
|
|
INT iRecAlpha = 0
|
|
|
|
FLOAT scuzzYpos1
|
|
FLOAT scuzzYpos2
|
|
FLOAT scuzzYpos3
|
|
|
|
INT iOverlaysAssigned
|
|
|
|
|
|
ENUM LOAD_OVERLAY_ENUM
|
|
FX_LOAD_SCANLINES,
|
|
FX_LOAD_NO_SIGNAL,
|
|
FX_LOAD_STATIC,
|
|
FX_LOAD_SCUZZ,
|
|
FX_LOAD_SET_SECURITY_CAM,
|
|
FX_LOAD_SET_LOSING_SIGNAL
|
|
ENDENUM
|
|
|
|
|
|
ENUM TEXTURE_OVERLAY_LIST
|
|
TX_NSCANLINE1,
|
|
TX_NSCANLINE2,
|
|
TX_NSCANLINE3,
|
|
TX_STATIC1,
|
|
TX_STATIC2,
|
|
TX_STATIC3,
|
|
TX_STATIC4,
|
|
TX_STATIC5,
|
|
TX_FATSCAN1,
|
|
TX_SIGNAL1,
|
|
TX_SIGNAL2,
|
|
TX_SIGNAL3,
|
|
TX_SIGNAL4,
|
|
TX_LINE1,
|
|
TX_LINE2,
|
|
TX_LIGHT_LEAK1,
|
|
TX_LIGHT_LEAK2
|
|
ENDENUM
|
|
|
|
|
|
PROC MARK_TEXTURE_OVERLAY_AS_ASSIGNED(TEXTURE_OVERLAY_LIST e_text)
|
|
|
|
IF ENUM_TO_INT(e_text) < 32
|
|
SET_BIT(iOverlaysAssigned, ENUM_TO_INT(e_text))
|
|
ELSE
|
|
SCRIPT_ASSERT("EXTEND TEXTURE ASSIGNED ARRAY!- SEE ADAM W")
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
|
|
FUNC BOOL HAS_TEXTURE_OVERLAY_BEEN_ASSIGNED(TEXTURE_OVERLAY_LIST e_text)
|
|
IF IS_BIT_SET(iOverlaysAssigned, ENUM_TO_INT(e_text))
|
|
RETURN TRUE
|
|
ENDIF
|
|
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
|
|
|
|
//Load all the overlay effects
|
|
FUNC BOOL LOAD_OVERLAY_EFFECTS()
|
|
REQUEST_STREAMED_TEXTURE_DICT("digitalOverlay")
|
|
IF HAS_STREAMED_TEXTURE_DICT_LOADED("digitalOverlay")
|
|
RETURN TRUE
|
|
ENDIF
|
|
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
|
|
|
|
// flipping and
|
|
FUNC INT GET_RANDOM_GRIME_VALUES(INT iMaxTexture)
|
|
|
|
IF GET_RANDOM_INT_IN_RANGE(0,50) > 25
|
|
bFlipHoriz = TRUE
|
|
ELSE
|
|
bFlipHoriz = FALSE
|
|
ENDIF
|
|
|
|
IF GET_RANDOM_INT_IN_RANGE(0,50) > 25
|
|
bFlipVert = TRUE
|
|
ELSE
|
|
bFlipVert = FALSE
|
|
ENDIF
|
|
|
|
RETURN GET_RANDOM_INT_IN_RANGE(0, iMaxTexture)
|
|
|
|
ENDFUNC
|
|
|
|
|
|
FUNC FLOAT FLIP_IF_TRUE(BOOL bFlipThis)
|
|
|
|
IF bFlipThis
|
|
RETURN (-1.0)
|
|
ELSE
|
|
RETURN 1.0
|
|
ENDIF
|
|
|
|
RETURN 1.0
|
|
|
|
ENDFUNC
|
|
|
|
|
|
//////////////////////////////////
|
|
//DIGITAL EFFECTS
|
|
//////////////////////////////////
|
|
|
|
//Draw Scan lines on the screen
|
|
PROC OVERLAY_SCAN_LINES(BOOL bEnableScanLines,INT iScanLineAlpha = 200)
|
|
IF NOT LOAD_OVERLAY_EFFECTS()
|
|
LOAD_OVERLAY_EFFECTS()
|
|
ELSE
|
|
IF bEnableScanLines
|
|
//HUD EFFECTS
|
|
IF bInterlaceFlip
|
|
IF NOT HAS_TEXTURE_OVERLAY_BEEN_ASSIGNED(TX_FATSCAN1)
|
|
MARK_TEXTURE_OVERLAY_AS_ASSIGNED(TX_FATSCAN1)
|
|
ELSE
|
|
DRAW_SPRITE("digitalOverlay","nscanline1", 0.5,0.5,1.0,1.0,0.0,255,255,255,iScanLineAlpha)
|
|
ENDIF
|
|
bInterlaceFlip = FALSE
|
|
ELSE
|
|
IF NOT HAS_TEXTURE_OVERLAY_BEEN_ASSIGNED(TX_FATSCAN1)
|
|
MARK_TEXTURE_OVERLAY_AS_ASSIGNED(TX_FATSCAN1)
|
|
ELSE
|
|
DRAW_SPRITE("digitalOverlay","nscanline1", 0.5,0.5,-1.0,-1.0,0.0,255,255,255,iScanLineAlpha)
|
|
ENDIF
|
|
bInterlaceFlip = TRUE
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
|
|
//Draw the no signal overlay to the screen, use with noise and scuzz lines for full effect
|
|
PROC OVERLAY_NO_SIGNAL(BOOL bEnableNoSignal,INT iNoSignalAlpha = 255)
|
|
IF NOT LOAD_OVERLAY_EFFECTS(FX_LOAD_NO_SIGNAL)
|
|
LOAD_OVERLAY_EFFECTS(FX_LOAD_NO_SIGNAL)
|
|
ELSE
|
|
IF bEnableNoSignal = TRUE
|
|
iNoSignal = GET_RANDOM_INT_IN_RANGE(0,4)
|
|
IF iNoSignal = 0
|
|
IF NOT HAS_TEXTURE_OVERLAY_BEEN_ASSIGNED(TX_SIGNAL1)
|
|
MARK_TEXTURE_OVERLAY_AS_ASSIGNED(TX_SIGNAL1)
|
|
ELSE
|
|
DRAW_SPRITE("digitalOverlay", "Signal1", 0.5,0.5,1.0,1.0,0.0,255,255,255,iNoSignalAlpha)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF iNoSignal = 1
|
|
IF NOT HAS_TEXTURE_OVERLAY_BEEN_ASSIGNED(TX_SIGNAL2)
|
|
MARK_TEXTURE_OVERLAY_AS_ASSIGNED(TX_SIGNAL2)
|
|
ELSE
|
|
DRAW_SPRITE("digitalOverlay", "Signal2", 0.5,0.5,1.0,1.0,0.0,255,255,255,iNoSignalAlpha)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF iNoSignal = 2
|
|
IF NOT HAS_TEXTURE_OVERLAY_BEEN_ASSIGNED(TX_SIGNAL3)
|
|
MARK_TEXTURE_OVERLAY_AS_ASSIGNED(TX_SIGNAL3)
|
|
ELSE
|
|
DRAW_SPRITE("digitalOverlay", "Signal3", 0.5,0.5,1.0,1.0,0.0,255,255,255,iNoSignalAlpha)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF iNoSignal = 3
|
|
IF NOT HAS_TEXTURE_OVERLAY_BEEN_ASSIGNED(TX_SIGNAL4)
|
|
MARK_TEXTURE_OVERLAY_AS_ASSIGNED(TX_SIGNAL4)
|
|
ELSE
|
|
DRAW_SPRITE("digitalOverlay", "Signal4", 0.5,0.5,1.0,1.0,0.0,255,255,255,iNoSignalAlpha)
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
|
|
//Draw grime effect on the screen.
|
|
PROC OVERLAY_STATIC(BOOL bEnableStatic,INT iStaticStrength = 26)
|
|
IF NOT LOAD_OVERLAY_EFFECTS()
|
|
LOAD_OVERLAY_EFFECTS()
|
|
ELSE
|
|
IF bEnableStatic
|
|
iGrime = GET_RANDOM_GRIME_VALUES(5)
|
|
iNoSignal = GET_RANDOM_INT_IN_RANGE(0,4)
|
|
WHILE iGrimeLastValue = iGrime
|
|
iGrime = GET_RANDOM_GRIME_VALUES(5)
|
|
ENDWHILE
|
|
|
|
IF iGrime = 0
|
|
IF NOT HAS_TEXTURE_OVERLAY_BEEN_ASSIGNED(TX_STATIC1)
|
|
MARK_TEXTURE_OVERLAY_AS_ASSIGNED(TX_STATIC1)
|
|
ELSE
|
|
DRAW_SPRITE("digitalOverlay", "Static1", 0.5,0.5,1.0*FLIP_IF_TRUE(bFlipHoriz),1.0*FLIP_IF_TRUE(bFlipVert),0.0,255,255,255,iStaticStrength)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF iGrime = 1
|
|
IF NOT HAS_TEXTURE_OVERLAY_BEEN_ASSIGNED(TX_STATIC2)
|
|
MARK_TEXTURE_OVERLAY_AS_ASSIGNED(TX_STATIC2)
|
|
ELSE
|
|
DRAW_SPRITE("digitalOverlay", "Static2", 0.5,0.5,1.0*FLIP_IF_TRUE(bFlipHoriz),1.0*FLIP_IF_TRUE(bFlipVert),0.0,255,255,255,iStaticStrength)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF iGrime = 2
|
|
IF NOT HAS_TEXTURE_OVERLAY_BEEN_ASSIGNED(TX_STATIC3)
|
|
MARK_TEXTURE_OVERLAY_AS_ASSIGNED(TX_STATIC3)
|
|
ELSE
|
|
DRAW_SPRITE("digitalOverlay", "Static3", 0.5,0.5,1.0*FLIP_IF_TRUE(bFlipHoriz),1.0*FLIP_IF_TRUE(bFlipVert),0.0,255,255,255,iStaticStrength)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF iGrime = 3
|
|
IF NOT HAS_TEXTURE_OVERLAY_BEEN_ASSIGNED(TX_STATIC4)
|
|
MARK_TEXTURE_OVERLAY_AS_ASSIGNED(TX_STATIC4)
|
|
ELSE
|
|
DRAW_SPRITE("digitalOverlay", "Static4", 0.5,0.5,1.0*FLIP_IF_TRUE(bFlipHoriz),1.0*FLIP_IF_TRUE(bFlipVert),0.0,255,255,255,iStaticStrength)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF iGrime = 4
|
|
IF NOT HAS_TEXTURE_OVERLAY_BEEN_ASSIGNED(TX_STATIC5)
|
|
MARK_TEXTURE_OVERLAY_AS_ASSIGNED(TX_STATIC5)
|
|
ELSE
|
|
DRAW_SPRITE("digitalOverlay", "Static5", 0.5,0.5,1.0*FLIP_IF_TRUE(bFlipHoriz),1.0*FLIP_IF_TRUE(bFlipVert),0.0,255,255,255,iStaticStrength)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
ENDIF
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
|
|
//Draw scuzz effects to the screen
|
|
PROC OVERLAY_SCUZZ(BOOL bEnableScuzz, INT iScuzzAlpha = 128, BOOL bEnabledScuzz1 = TRUE,BOOL bEnabledScuzz2= TRUE,BOOL bEnabledScuzz3= TRUE)
|
|
IF NOT LOAD_OVERLAY_EFFECTS()
|
|
LOAD_OVERLAY_EFFECTS()
|
|
ELSE
|
|
IF bEnableScuzz
|
|
IF bEnabledScuzz1
|
|
IF NOT HAS_TEXTURE_OVERLAY_BEEN_ASSIGNED(TX_NSCANLINE1)
|
|
MARK_TEXTURE_OVERLAY_AS_ASSIGNED(TX_NSCANLINE1)
|
|
ELSE
|
|
DRAW_SPRITE("digitalOverlay","nscuzz1", 0.5,scuzzYpos1,1.0,0.2,0.0,255,255,255,iScuzzAlpha)
|
|
ENDIF
|
|
|
|
IF scuzzYpos1 < 1.0
|
|
scuzzYpos1 += 0.01
|
|
ELSE
|
|
scuzzYpos1 = 0.0
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF bEnabledScuzz2
|
|
IF NOT HAS_TEXTURE_OVERLAY_BEEN_ASSIGNED(TX_NSCANLINE2)
|
|
MARK_TEXTURE_OVERLAY_AS_ASSIGNED(TX_NSCANLINE2)
|
|
ELSE
|
|
DRAW_SPRITE("digitalOverlay", "nscuzz2", 0.5,scuzzYpos2,1.0,0.2,0.0,255,255,255,iScuzzAlpha)
|
|
ENDIF
|
|
|
|
IF scuzzYpos2 < 1.0
|
|
scuzzYpos2 += 0.02
|
|
ELSE
|
|
scuzzYpos2 = 0.0
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF bEnabledScuzz3
|
|
IF NOT HAS_TEXTURE_OVERLAY_BEEN_ASSIGNED(TX_NSCANLINE3)
|
|
MARK_TEXTURE_OVERLAY_AS_ASSIGNED(TX_NSCANLINE3)
|
|
ELSE
|
|
DRAW_SPRITE("digitalOverlay", "nscuzz3", 0.5,scuzzYpos3,1.0,0.2,0.0,255,255,255,iScuzzAlpha)
|
|
ENDIF
|
|
|
|
IF scuzzYpos3 < 1.0
|
|
scuzzYpos3 += 0.028
|
|
ELSE
|
|
scuzzYpos3 = 0.0
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
|
|
////Enables and sets the game noise value, default value is moderate screen noise
|
|
//PROC OVERLAY_GAME_NOISE(BOOL bEnableGameNoise,FLOAT fNoise = 0.38)
|
|
// SET_NOISEOVERIDE(bEnableGameNoise)
|
|
// SET_NOISINESSOVERIDE(fNoise)
|
|
//ENDPROC
|
|
|
|
|
|
/// PURPOSE:
|
|
/// To be called every frame, enables the security camera overlay. Ensure you call LOAD_OVERLAY_EFFECTS(FX_LOAD_SET_SECURITY_CAM) before you call this.
|
|
/// PARAMS:
|
|
/// bEnableSecurityCam - Enable or disable the camera
|
|
/// bEnableLowTech - If enabled allows the display of scuzz lines
|
|
/// iMaxStatic, Sets the maximum alpha of static level. (MAX 255) - Default 30
|
|
/// iMinStatic, Sets the mimimum alpha of static level. (MIN 0) - Default 5
|
|
/// bShowRec, Displays the recording symbol, - Default - FALSE
|
|
///
|
|
PROC OVERLAY_SET_SECURITY_CAM(BOOL bEnableSecurityCam,BOOL bEnableLowTech = FALSE, INT iMaxStatic = 30, INT iMinStatic = 5, BOOL bShowRec = FALSE)
|
|
IF NOT LOAD_OVERLAY_EFFECTS()
|
|
LOAD_OVERLAY_EFFECTS()
|
|
ELSE
|
|
IF bEnableSecurityCam
|
|
IF bShowRec = TRUE
|
|
IF iRecAlpha <= 225 AND bHasRecFadedIn = FALSE
|
|
iRecAlpha = iRecAlpha + 30
|
|
|
|
//DRAW_SPRITE(txdRec, 0.5,0.5,1.0,1.0,0.0,255,255,255,iRecAlpha)
|
|
IF iRecAlpha >= 225
|
|
bHasRecFadedIn = TRUE
|
|
ENDIF
|
|
ELSE
|
|
IF iRecAlpha >= 30
|
|
iRecAlpha = iRecAlpha - 30
|
|
//DRAW_SPRITE(txdRec, 0.5,0.5,1.0,1.0,0.0,255,255,255,iRecAlpha)
|
|
IF iRecAlpha <= 30
|
|
bHasRecFadedIn = FALSE
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
OVERLAY_SCAN_LINES(TRUE)
|
|
|
|
IF iFXTimer <= iMaxStatic AND bFXHasFadedIn = FALSE
|
|
iFXTimer ++
|
|
OVERLAY_STATIC(TRUE,iFXTimer)
|
|
IF iFXTimer = iMaxStatic
|
|
bFXHasFadedIn = TRUE
|
|
iFXRandom = GET_RANDOM_INT_IN_RANGE(iMinStatic,iMaxStatic)
|
|
ENDIF
|
|
ELSE
|
|
IF iFXTimer > 0
|
|
IF iFXTimer > iFXRandom
|
|
iFXTimer --
|
|
OVERLAY_STATIC(TRUE,iFXTimer)
|
|
IF iFXTimer = iFXRandom
|
|
bFXHasFadedIn = FALSE
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
|
|
IF bEnableLowTech
|
|
OVERLAY_SCUZZ(TRUE,40)
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
|
|
//Clean up all the effects
|
|
PROC CLEAN_UP_OVERLAYS()
|
|
SET_STREAMED_TEXTURE_DICT_AS_NO_LONGER_NEEDED("digitalOverlay")
|
|
ENDPROC
|