Hi, I have something usefull for you probably: You just have to call InitFade(), then either FadeIn() or FadeOut() and then before every RenderWorld Command RenderFade()
You can also check if a fade is done or not if you check the value of FadeScreen\Alpha.
Hope that helps:
Type FadeScreen
Field sprite
Field alpha#
Field status
Field speed#
End Type
Global FadeScreen.FadeScreen = New FadeScreen
Function InitFade()
FadeScreen\Sprite = CreateSprite()
EntityColor FadeScreen\Sprite,0,0,0
MoveEntity FadeScreen\Sprite,0,0,0 ; move to just before camera
EntityOrder FadeScreen\Sprite,-100 ; make sure it gets drawn last
HideEntity FadeScreen\Sprite
End Function
Function FadeIn()
FadeScreen\alpha=1
FadeScreen\status=1
FadeScreen\speed#=0.05
End Function
Function FadeOut()
FadeScreen\alpha=0
FadeScreen\status=2
FadeScreen\speed#=0.05
End Function
Function RenderFade()
EntityAlpha FadeScreen\Sprite,FadeScreen\Alpha#
ShowEntity FadeScreen\Sprite
If FadeScreen\Status=2
FadeScreen\Alpha#=FadeScreen\Alpha#+FadeScreen\Speed#
If FadeScreen\Alpha#>1 Then FadeScreen\Status=3
End If
If FadeScreen\Status=1
FadeScreen\Alpha#=FadeScreen\Alpha#-FadeScreen\Speed#
If FadeScreen\Alpha#<0 Then FadeScreen\Status=0
End If
End Function
Function DestroyFade()
FreeEntity FadeScreen\Sprite
End Function
|